update bomTech edit

This commit is contained in:
lb 2023-07-19 14:46:40 +08:00
parent f1e588a716
commit 5f1acde7c0
4 changed files with 219 additions and 77 deletions

View File

@ -109,7 +109,7 @@ export default {
default: 0,
},
},
inject: ["urls"],
// inject: ["urls"],
data() {
return {
dataList: [],

View File

@ -5,21 +5,171 @@
description:
-->
<template></template>
<template>
<el-dialog
class="dialog-just-form"
:visible="dialogVisible"
@close="handleClose"
:destroy-on-close="false"
:close-on-click-modal="false"
width="'50%'">
<!-- title -->
<div slot="title" class="dialog-title">
<h1 class="">编辑</h1>
</div>
<!-- form -->
<el-form ref="dataForm" :model="dataForm" v-loading="loading">
<el-row :gutter="20">
<el-col>
<el-form-item label="bom" prop="bomId" :rules="rules.bom">
<el-input v-model="dataForm.bomId" clearable disabled></el-input>
</el-form-item>
</el-col>
<el-col>
<el-form-item label="工艺" prop="techId" :rules="rules.tech">
<el-select v-model="dataForm.techId" filterable clearable>
<el-option
v-for="(tech, index) in techList"
:key="index"
:label="tech.label"
:value="tech.value"></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
</el-form>
<!-- footer -->
<div slot="footer">
<!-- <el-button @click="handleBtnClick('保存')">保存</el-button> -->
<el-button type="primary" @click="handleBtnClick('更新')">更新</el-button>
<el-button @click="handleBtnClick('取消')">取消</el-button>
</div>
</el-dialog>
</template>
<script>
import { ref } from "vue";
export default {
name: "BomTechAndFiringEdit",
components: {},
props: {},
data() {
return {}
return {
dialogVisible: false,
loading: false,
dataForm: {
id: null,
bomId: null,
techId: null,
},
rules: {
bom: [],
tech: [{ required: true, message: "必填项不能为空", trigger: "blur" }],
},
techList: [],
};
},
computed: {},
methods: {},
}
mounted() {
this.getTechList().then(() => {
this.dialogVisible = true;
});
},
methods: {
//
init({ id, bomId, techId }) {
this.$set(this.dataForm, "id", id);
this.$set(this.dataForm, "bomId", bomId);
this.$set(this.dataForm, "techId", techId);
},
//
async getTechList() {
const { data: res } = await this.$http.post("/pms/equipmentTech/pageView", {
wsId: 3,
bom: "",
key: "",
limit: 999,
page: 1,
});
if (res.code == 0) {
console.log("res", res);
this.techList = res.data.list.map((item) => {
return {
label: item.code,
value: item.id,
};
});
}
},
//
async push(type = "add") {
if (type == "add") {
} else if (type == "update") {
}
},
//
handleBtnClick(type) {
switch (type) {
// case "":
// this.$refs.dataForm.validate((valid) => {
// if (valid) {
// this.$emit("emit-data", { type: "", data: this.dataForm });
// }
// });
// break;
case "更新":
this.$refs.dataForm.validate((valid) => {
if (valid) {
this.$http.put("/pms/bomTech", this.dataForm).then((res) => {
if (res.data.code == 0) {
this.$message.success("更新成功");
this.handleClose(true);
} else {
this.$message.error(res.data.msg);
}
});
}
});
break;
case "取消":
this.handleClose();
break;
default:
break;
}
},
handleClose(refresh = false) {
this.dialogVisible = false;
setTimeout(() => {
this.$emit("destroy", refresh);
}, 500);
},
},
};
</script>
<style scoped lang="scss">
<style scoped>
.dialog-just-form >>> .el-dialog__body {
/* padding-top: 16px !important;
padding-bottom: 16px !important; */
padding-top: 0 !important;
padding-bottom: 0 !important;
}
.el-select,
.el-cascader,
.el-date-editor {
width: 100% !important;
}
.dialog-just-form >>> .el-dialog__header {
padding: 10px 20px 10px;
/* background: linear-gradient(to bottom, rgba(0, 0, 0, 0.25), white); */
}
</style>

View File

@ -19,7 +19,7 @@ export default function () {
width: 90,
subcomponent: TableOperaionComponent,
options: [
{ name: "edit", label: "编辑", icon: "edit-outline" },
{ name: "edit", label: "编辑", icon: "edit-outline", emitFull: true },
// { name: "copy", label: "复制", icon: "copy-document" },
// { name: "delete", icon: "delete", label: "删除", emitFull: true, permission: "" },
],

View File

@ -27,23 +27,22 @@
:page-sizes="[10, 20, 50, 100]"
:total="totalPage"
layout="total, sizes, prev, pager, next, jumper"></el-pagination>
<edit ref="edit" v-if="editVisible" @destroy="handleDestroy('edit', $event)" />
<detail ref="detail" v-if="detailVisible" @destroy="handleDestroy('detail')" />
</div>
</template>
<script>
import initConfig from "./config";
// import ListViewWithHead from "@/views/atomViews/ListViewWithHead.vue";
import BaseListTable from "@/components/BaseListTable.vue";
import BaseSearchForm from "@/components/BaseSearchForm.vue";
import edit from "./components/edit.vue";
import detail from "./components/detail.vue";
export default {
name: "BomTechAndFiringView",
components: { BaseListTable, BaseSearchForm },
provide() {
return {
urls: this.allUrls,
};
},
components: { BaseListTable, BaseSearchForm, edit, detail },
data() {
const { tableConfig, headFormConfigs, urls, dialogConfigs } = initConfig.call(this);
return {
@ -55,7 +54,11 @@ export default {
page: 1,
size: 20,
totalPage: 0,
urls,
tableLoading: false,
refreshLayoutKey: null,
editVisible: false,
detailVisible: false,
};
},
created() {},
@ -63,8 +66,11 @@ export default {
// size
const size = "defaultPageSize" in this.tableConfig.column ? this.tableConfig.column.defaultPageSize : 20;
this.size = size;
this.initDataWhenLoad && this.getList();
this.getList();
// this.initDataWhenLoad && this.getList();
},
activated() {
this.refreshLayoutKey = this.layoutTable();
},
methods: {
/** 获取 列表数据 */
@ -76,58 +82,20 @@ export default {
: {
page: this.page,
limit: this.size,
key: "",
tech: "",
};
if (!queryParams && this.listQueryExtra && this.listQueryExtra.length) {
this.listQueryExtra.map((nameOrObj) => {
if (typeof nameOrObj === "string") params[nameOrObj] = "";
else if (typeof nameOrObj === "object") {
Object.keys(nameOrObj).forEach((key) => {
params[key] = nameOrObj[key];
});
}
});
this.cachedSearchCondition = Object.assign({}, params);
}
this.$http[this.urls.pageIsPostApi ? "post" : "get"](
this.urls.page,
this.urls.pageIsPostApi
? {
...params,
}
: {
this.$http
.get(this.urls.page, {
params,
}
)
})
.then(({ data: res }) => {
console.log("[http response] res is: ", res);
if (res.code === 0) {
// page :
if ("list" in res.data) {
// if (res.data.list.length == 0 && res.data.total != 0) {
// // refresh list
// if (this.page > 1) {
// this.page -= 1
// this.getList()
// return
// } else return
// }
/** 破碎记录的特殊需求:数据要结合单位 material + materialUnitDictValue */
if ("attachDictValue" in this.tableConfig.column) {
this.dataList = res.data.list.map((row) => {
this.tableConfig.column.attachDictValue(row, "unit", "qty", "materialUnitDictValue");
return row;
});
} else this.dataList = res.data.list;
this.totalPage = res.data.total;
} else if ("records" in res.data) {
this.dataList = res.data.records.map((item) => ({
...item,
id: item._id ?? item.id,
}));
this.dataList = res.data.list;
this.totalPage = res.data.total;
} else if (Array.isArray(res.data)) {
this.dataList = res.data;
@ -152,7 +120,6 @@ export default {
});
this.tableLoading = false;
});
// }
},
layoutTable() {
@ -162,18 +129,27 @@ export default {
handleBtnClick({ btnName, payload }) {
console.log("[search] form handleBtnClick", btnName, payload);
switch (btnName) {
case "新增":
this.openDialog();
case "查询":
this.getList({ ...payload });
break;
case "导入":
this.openUploadDialog();
break;
case "手动添加": {
this.openDialog();
return;
}
}
},
handleDestroy(type, refresh) {
console.log("[handleDestroy] ", type);
switch (type) {
case "edit":
this.editVisible = false;
if (refresh) {
this.getList();
}
break;
case "detail":
this.detailVisible = false;
break;
}
},
handleOperate({ type, data }) {
console.log("payload", type, data);
switch (type) {
@ -222,11 +198,27 @@ export default {
}
case "edit": {
console.log("[edit] ", data);
this.openDialog(data); /** data is ==> id */
this.editVisible = true;
this.$nextTick(() => {
this.$refs.edit.init({
id: data.bomTechId,
bomId: data.id,
techId: data.techId,
});
});
break;
}
case "detail": {
console.log("[detail] ", data);
this.detailVisible = true;
this.$nextTick(() => {
this.$refs.detail.init(data);
});
break;
}
}
},
handleSizeChange(val) {
// val
this.page = 1;