<template> <div class="page"> <el-dialog title="导入物料" :visible.sync="materiaImportDialog.visible" width="600px" > <div> <Upload type="file" tip="导入EXCEL文件" v-model="attachUrl"></Upload> <br /> <a class="download" style="float: right" href="/materia.xls" download title="下载" >模板下载</a > </div> <div slot="footer" class="dialog-footer"> <el-button @click="materiaImportDialog.visible = false" >取 消</el-button > <el-button type="primary" @click="doImportExcel">确 定</el-button> </div> </el-dialog> <el-dialog title="物料类目" :visible.sync="materiaDirDialog.visible" width="50%" > <el-form :model="dirform" :label-width="formLabelWidth" :rules="rules" ref="dirform" > <el-row> <el-form-item label="类目代码" v-if="dirform.id != null"> <el-input v-model="dirform.code" disabled></el-input> </el-form-item> </el-row> <el-row> <el-form-item prop="name" label="类目名称"> <el-input v-model.trim="dirform.name"></el-input> </el-form-item> </el-row> <el-row> <el-form-item label="备注"> <el-input v-model="form.remark"></el-input> </el-form-item> </el-row> </el-form> <span slot="footer" class="dialog-footer"> <el-button @click="materiaDirDialog.visible = false">取 消</el-button> <el-button type="primary" :disabled="(submitButtonDisabled = false)" @click="submitDirForm" >保 存</el-button > </span> </el-dialog> <el-dialog title="附件" :visible.sync="materiaAttsDialog.visible" width="50%" > <el-form :model="attform" :label-width="formLabelWidth" :rules="attRules" ref="attform" > <!-- <el-row> <el-form-item prop="attachName" label="附件名称"> <el-input v-model.trim="attform.attachName"></el-input> </el-form-item> </el-row> --> <el-row> <el-form-item prop="attachType" label="附件分类"> <el-select style="width: 100%" v-model="attform.attachType" placeholder="请选择附件种类" > <el-option v-for="($label, $value) in tableData.dict.attachType" :key="$value" :label="$label" :value="$value" ></el-option> </el-select> </el-form-item> </el-row> <el-row> <el-form-item prop="attachUrl" label="附件"> <el-upload class="upload-demo" action="/m/file/upload" :on-success="handleAttsSuccess" name="uploadFile" :data="{ prePath: '/image/plm/materia' }" :limit="1" :file-list="fileList" > <el-button size="small" type="primary">点击上传</el-button> </el-upload> </el-form-item> </el-row> <el-row> <el-form-item label="备注"> <el-input v-model="attform.remark" prop="remark"></el-input> </el-form-item> </el-row> </el-form> <span slot="footer" class="dialog-footer"> <el-button @click="materiaAttsDialog.visible = false">取 消</el-button> <el-button type="primary" :disabled="(submitButtonDisabled = false)" @click="submitAttsForm" >保 存</el-button > </span> </el-dialog> <el-dialog title="物料供应" :visible.sync="materiaSupplyDialog.visible" width="50%" > <el-form :model="supplyform" :label-width="formLabelWidth" :rules="supplyRules" ref="supplyform" > <el-row> <el-form-item prop="supplierId" label="物料供应商"> <el-select style="width: 100%" v-model="supplyform.supplierId" placeholder="请选择物料供应商" > <el-option v-for="($label, $value) in tableData.dict.supplierId" :key="$value" :label="$label" :value="$value" ></el-option> </el-select> </el-form-item> </el-row> <el-row> <el-col :span="12"> <el-form-item prop="deliveryPeriod" label="交货期"> <el-input v-model="supplyform.deliveryPeriod"></el-input> </el-form-item> </el-col> <el-col :span="12"> <el-form-item prop="deliveryPeriodUnit" label="交货期单位"> <el-select style="width: 100%" v-model="supplyform.deliveryPeriodUnit" placeholder="请选择交货期单位" > <el-option v-for="($label, $value) in tableData.dict.deliveryPeriodUnit" :key="$value" :label="$label" :value="$value" ></el-option> </el-select> </el-form-item> </el-col> </el-row> <el-row> <el-col :span="12"> <el-form-item prop="costPlan" label="供货成本"> <el-input v-model.trim="supplyform.costPlan"> <template slot="append">元</template> </el-input> </el-form-item> </el-col> <el-col :span="12"> <el-form-item prop="unitOfMeasure" label="计量单位"> <el-select style="width: 100%" v-model="supplyform.unitOfMeasure" placeholder="请选择计量单位" > <el-option v-for="($label, $value) in tableData.dict.unitOfMeasure" :key="$value" :label="$label" :value="$value" ></el-option> </el-select> </el-form-item> </el-col> </el-row> <el-row> <el-form-item label="供应商物料代码"> <el-input v-model="supplyform.supplierMateriaCode"></el-input> </el-form-item> </el-row> </el-form> <span slot="footer" class="dialog-footer"> <el-button @click="materiaSupplyDialog.visible = false" >取 消</el-button > <el-button type="primary" :disabled="(submitButtonDisabled = false)" @click="submitSupplyForm" >保 存</el-button > </span> </el-dialog> <el-dialog title="物料" :visible.sync="materiaDialog.visible" width="50%"> <el-form :model="form" :label-width="formLabelWidth" :rules="materiaRules" ref="form" > <el-row v-if="form.id != null"> <el-form-item prop="code" label="物料代码"> <el-input v-model="form.code" disabled></el-input> </el-form-item> </el-row> <el-row> <el-form-item prop="name" label="物料名称"> <el-input v-model.trim="form.name"></el-input> </el-form-item> </el-row> <el-row v-if="form.id != null"> <el-form-item prop="assetsCode" label="资产编码"> <el-input v-model.trim="form.assetsCode"></el-input> </el-form-item> </el-row> <el-form-item prop="categoryId" label="物料类目"> <el-input :value=" tableData.dict.categoryId ? tableData.dict.categoryId[form.categoryId] : '' " disabled > </el-input> </el-form-item> <el-row> <el-col :span="12"> <el-form-item prop="specModel" label="规格型号"> <el-input v-model.trim="form.specModel"></el-input> </el-form-item> </el-col> <el-col :span="12"> <el-form-item prop="useNum" label="物料用量"> <el-input v-model.trim="form.useNum" onkeyup="value=value.replace(/[^\d]/g,'')" > </el-input> </el-form-item> </el-col> </el-row> <el-row> <el-col :span="12"> <el-form-item prop="unitOfMeasure" label="计量单位"> <el-select style="width: 100%" v-model="form.unitOfMeasure" placeholder="请选择计量单位" > <el-option v-for="($label, $value) in tableData.dict.unitOfMeasure" :key="$value" :label="$label" :value="$value" ></el-option> </el-select> </el-form-item> </el-col> <el-col :span="12"> <el-form-item prop="lossRate" label="损耗率"> <el-input v-model="form.lossRate" onkeyup="value=value.replace(/[^\d]/g,'')" placeholder="0-100" ></el-input> </el-form-item> </el-col> </el-row> <el-row> <el-col :span="12"> <el-form-item prop="supplyType" label="补给方式"> <el-select style="width: 100%" v-model="form.supplyType" placeholder="请选择计量单位" > <el-option v-for="($label, $value) in tableData.dict.supplyType" :key="$value" :label="$label" :value="$value" ></el-option> </el-select> </el-form-item> </el-col> <el-col :span="12"> <el-form-item prop="costPlan" label="计划成本"> <el-input v-model="form.costPlan" onkeyup="value=value.replace(/[^0-9.]/g,'')" > <template slot="append">元</template> </el-input> </el-form-item> </el-col> </el-row> <el-row> <el-form-item prop="mainPicUrl" label="图片"> <el-upload class="avatar-uploader" action="/m/file/upload" :show-file-list="false" :on-success="handleSuccess" name="uploadFile" :data="{ prePath: '/image/plm/materia' }" :before-upload="beforeUpload" > <img v-if="form.mainPicUrl" :src="form.mainPicUrl" class="avatar" /> <i v-else class="el-icon-plus avatar-uploader-icon"></i> </el-upload> <!-- <Upload type="thumb" v-model="form.mainPicUrl"></Upload> --> </el-form-item> </el-row> <el-row> <el-form-item label="备注"> <el-input v-model="form.remark"></el-input> </el-form-item> </el-row> <el-row v-for="($label, $value) in tableData.dict.extField" :key="$value" > <el-form-item :label="$label"> <el-input v-model="form[$value]"></el-input> </el-form-item> </el-row> </el-form> <span slot="footer" class="dialog-footer"> <el-button @click="materiaDialog.visible = false">取 消</el-button> <el-button type="primary" :disabled="(submitButtonDisabled1 = false)" @click="submitForm" >保 存</el-button > </span> </el-dialog> <el-row gutter="20"> <el-col :span="6" class="el-row-filter"> <el-row :span="24" style="height: 40px"> <el-tooltip effect="light" content="新增同级目录"> <el-button @click="addDir" icon="el-icon-plus" size="mini" circle ></el-button> </el-tooltip> <el-tooltip effect="light" content="新增子级目录"> <el-button circle @click="addDirChild" icon="el-icon-folder-add" size="mini" ></el-button> </el-tooltip> <el-tooltip effect="light" content="编辑当前目录"> <el-button circle @click="editDir" icon="el-icon-edit" size="mini" ></el-button> </el-tooltip> </el-row> <el-divider style="height: 10px"></el-divider> <div id="dataPage" style="height: 540px" class="mytree"> <el-scrollbar style="height: 100%"> <el-tree size="mini" ref="categoryTree" id="el-tree" :data="data" node-key="id" indent="0" :expand-on-click-node="false" @node-click="handleNodeClick" :props="treeProps" :load="loadNode" :render-content="renderContent" highlight-current lazy > </el-tree> </el-scrollbar> </div> </el-col> <el-col :span="18"> <el-row v-if="isShowSearch"> <el-form :inline="true" size="mini"> <el-form-item label="物料代码"> <el-input v-model="searchform.code" placeholder="物料代码" ></el-input> </el-form-item> <el-form-item label="物料名称"> <el-input v-model="searchform.name" placeholder="物料名称" ></el-input> </el-form-item> <el-form-item> <el-button plain @click="searchConfirm">查询</el-button> </el-form-item> </el-form> </el-row> <el-row style="margin-bottom: 5px"> <el-tooltip effect="light" content="搜索"> <el-button circle icon="el-icon-search" @click="search" size="mini" ></el-button> </el-tooltip> <el-tooltip effect="light" content="新增物料"> <el-button circle icon="el-icon-plus" size="mini" @click="addMateria" ></el-button> </el-tooltip> <el-tooltip effect="light" content="导入物料"> <el-button circle icon="el-icon-upload2" @click="doImportOpen" size="mini" ></el-button> </el-tooltip> </el-row> <div> <el-table size="mini" v-loading="loading" :data="materiaTableData" @row-click="clickTableRow" border highlight-current-row > <el-table-column prop="code" label="物料代码"> </el-table-column> <el-table-column prop="name" label="物料名称"> </el-table-column> <el-table-column prop="specModel" label="规格型号"> </el-table-column> <el-table-column prop="categoryName" label="类目"> </el-table-column> <el-table-column prop="unitOfMeasure" :formatter="formatter" label="计量单位" > </el-table-column> <el-table-column prop="useNum" label="默认用量"> </el-table-column> <el-table-column prop="supplyType" :formatter="formatter" label="补给方式" > </el-table-column> <el-table-column prop="costPlan" :formatter="formatterMoney" label="计划成本" > </el-table-column> <el-table-column prop="mainPicUrl" label="图片"> <!-- 图片的显示 --> <!-- <template slot-scope="scope"> <img :src="scope.row.mainPicUrl" min-width="70" height="70" /> </template> --> <template slot-scope="scope"> <el-popover trigger="click" placement="top"> <img :src="scope.row.mainPicUrl" style="width: auto; height: 400px" /> <div slot="reference" class="name-wrapper"> <img :src="scope.row.mainPicUrl" min-width="70" height="70" /> <!-- <el-tag size="medium">{{ scope.row.name }}</el-tag> --> </div> </el-popover> </template> </el-table-column> <el-table-column prop="enabled" :formatter="formatter" label="启用"> </el-table-column> <el-table-column label="物料供应"> <template slot-scope="scope"> <el-popover v-if=" scope.row.supplierEntities && scope.row.supplierEntities.length > 0 " trigger="hover" placement="top" > <p v-for="(item, index) in scope.row.supplierEntities" :key="index" > 供应商:{{ scope.row.supplierEntities[index].supplierName }} </p> <div slot="reference" class="name-wrapper"> <el-tag size="medium">{{ scope.row.supplierEntities.length > 0 ? "供应商" : "无" }}</el-tag> </div> </el-popover> </template> </el-table-column> <el-table-column label="相关附件"> <template slot-scope="scope"> <el-popover trigger="hover" v-if=" scope.row.attachEntityList && scope.row.attachEntityList.length > 0 " width="200" placement="top" > <el-table :data="scope.row.attachEntityList"> <el-table-column prop="attachUrl" :formatter="formatterLink" label="下载地址" /> </el-table> <div slot="reference" class="name-wrapper"> <el-tag size="medium">{{ scope.row.attachEntityList && scope.row.attachEntityList.length > 0 ? "附件" : "无" }}</el-tag> </div> </el-popover> </template> </el-table-column> <!-- <el-table-column prop="remark" label="备注"> </el-table-column> --> <el-table-column width="120" fixed="right" label="操作"> <template slot-scope="scope"> <el-row :gutter="20"> <el-col :span="8"> <el-tooltip effect="light" content="编辑物料"> <el-button circle icon="el-icon-edit" size="mini" @click="handleMateriaEdit(scope.$index, scope.row)" ></el-button> </el-tooltip ></el-col> <el-col :span="8"> <el-tooltip effect="light" content="添加供应商"> <el-button circle icon="el-icon-files" size="mini" @click="handleMateriaSupply(scope.$index, scope.row)" ></el-button> </el-tooltip ></el-col> <el-col :span="8"> <el-tooltip effect="light" content="添加附件"> <el-button circle icon="el-icon-tickets" size="mini" @click="handleMateriaAtts(scope.$index, scope.row)" ></el-button> </el-tooltip ></el-col> </el-row> <el-row :gutter="20"> <el-col :span="8"> <el-tooltip effect="light" content="添加资产码"> <el-button circle icon="el-icon-coin" size="mini" @click="handleMateriaAsset(scope.$index, scope.row)" ></el-button> </el-tooltip ></el-col> <el-col :span="8"> <el-tooltip effect="light" content="物料废弃"> <el-button circle icon="el-icon-delete" size="mini" @click="handleMateriaDiscard(scope.$index, scope.row)" ></el-button> </el-tooltip ></el-col> <el-col :span="8"></el-col> </el-row> </template> </el-table-column> - <el-table-column width="100" v-for="($label, $value) in tableData.dict.extField" :key="$value" :prop="$value" :label="$label" > </el-table-column> </el-table> </div> <el-row> <!-- 分页器 --> <div class="table-foot"> <Pagination :total="tableData.pageInfo.totalResult" :prePageResult="tableData.pageInfo.prePageResult" /> </div> </el-row> </el-col> </el-row> </div> </template> <script> import Pagination from "@/components/Pagination.vue"; import treemenu from "@/assets/mixins/treemenu"; import table from "@/assets/mixins/table"; import menuContext from "@/components/menuContext.vue"; export default { components: { menuContext, Pagination, }, name: "index", mixins: [table, treemenu], mounted() { //dom加载完,进行目标dom的设置,直接在data中赋值,会找不到dom this.$nextTick(() => { this.contextMenuTarget = document.querySelector("#el-tree"); }); setTimeout(() => { this.loading = false; }, 1000); }, created() { this.$post("/materia/add", {}); //初始化获取根节点 this.$post("/materia/category/getListByParentId", { parentId: -1, }).then(({ data }) => { this.data = data.result; }); }, methods: { handleAttsSuccess(response, file, fileList) { let code = response.code; if (code === 1) { this.attform.attachUrl = response.url; this.attform.attachName = file.name; } else { this.$message.error("上传文件失败"); } console.log(this.attform); }, handleMateriaEdit(index, row) { console.log(index, row); this.tableRowData = row; this.editMateria(); }, handleMateriaSupply(index, row) { console.log(index, row); this.tableRowData = row; this.addMateriaSupply(); }, handleMateriaAtts(index, row) { console.log(index, row); this.tableRowData = row; this.addMateriaAtts(); }, handleMateriaAsset(index, row) { console.log(index, row); this.tableRowData = row; this.$prompt("请输入资产码", "提示", { confirmButtonText: "确定", cancelButtonText: "取消", }) .then(({ value }) => { this.$post("/materia/updateAsset", { id: this.tableRowData.id, asset: value, }) .then((res) => { if (res && res.code && res.code == 1) { this.$message({ type: "success", message: "修改资产码成功: ", }); } }) .catch((error) => { // _this.$message.error(error.message); }); }) .catch(() => { this.$message({ type: "info", message: "取消输入", }); }); }, handleMateriaDiscard(index, row) { console.log(index, row); this.tableRowData = row; this.discardMateria(); }, discardMateria() { console.log("discard materia"); if (!this.tableRowData.id) { this.$message.info("请选择需要废弃的物料项!"); return; } this.$confirm("此操作将永久废弃该物料, 是否继续?", "提示", { confirmButtonText: "确定", cancelButtonText: "取消", type: "warning", }) .then(() => { this.$post("/materia/discard", { id: this.tableRowData.id, }) .then((res) => { if (res && res.code && res.code == 1) { this.loading = true; this.initPage(); this.loading = false; // _this.$message.success("物料废弃成功!"); } }) .catch((error) => { // _this.$message.error(error.message); }); }) .catch(() => { this.$message({ type: "info", message: "已取消废弃!", }); }); }, doImportOpen() { this.materiaImportList = []; this.fileList3 = []; this.attachUrl = ""; // console.log(this.fileList3); this.materiaImportDialog.visible = true; }, /** * 提交物料导入 */ doImportExcel() { if (this.attachUrl === "") { this.$message.error("请上传物料导入文件!"); return; } this.loading = true; this.$post("/materia/doImportExcel", { path: this.attachUrl }, {}) .then((res) => { if (res && res.code && res.code == 1) { if (res.msg && res.msg != "") { this.$alert(res.msg, "导入结果提示:", { dangerouslyUseHTMLString: true, }); } else { this.$message.info("物料导入成功!"); } this.$post("/materia/list", {}).then(({ data }) => { this.materiaTableData = data.result; this.initPage(data); }); } else { this.$message.info(res.msg); } this.loading = false; }) .catch((error) => { this.loading = false; this.$message.error(error.message); }); this.materiaImportDialog.visible = false; }, //上传前图片数据校验 beforeUpload(file) { const isJPG = file.type === "image/jpeg"; const isGIF = file.type === "image/gif"; const isPNG = file.type === "image/png"; const isBMP = file.type === "image/bmp"; const isLt2M = file.size / 1024 / 1024 < 2; if (!isJPG && !isGIF && !isPNG && !isBMP) { this.$message.error("上传图片必须是JPG/GIF/PNG/BMP 格式!"); } if (!isLt2M) { this.$message.error("上传图片大小不能超过 2MB!"); } return isJPG || isBMP || isGIF || isPNG; }, handleSuccess(res, file) { this.$message({ type: "success", message: "图片上传成功", duration: 6000, }); this.form.mainPicUrl = res.url; }, search() { //this.searchform = {}; if (this.isShowSearch) { this.isShowSearch = false; } else { this.isShowSearch = true; } }, searchConfirm() { let { path, query } = this.$route; this.query = { "query.code": this.searchform.code, "query.name": this.searchform.name, }; if (this.radio) { this.radio = null; this.tableRowData = {}; } this.getData(); }, refreshNodeBy(id) { let node = this.$refs.categoryTree.getNode(id); // 通过节点id找到对应树节点对象 node.loaded = false; node.expand(); // 主动调用展开节点方法,重新查询该节点下的所有子节点 }, handleNodeClick(data) { console.log("handleNodeClick", data); // let { path, query } = this.$route; // console.log(path, query); // let type = data.type; // let children = data.children; this.thisformdata = data; //按需展示不同的按钮 if (data.type == 0) { let { path, query } = this.$route; this.query = Object.assign({}, query, { "query.categoryId": this.thisformdata.id, }); if (this.radio) { this.radio = null; this.tableRowData = {}; } this.loading = true; this.getData(); this.loading = false; } }, initPage() { let { path, query } = this.$route; this.query = Object.assign({}, query, { "query.categoryId": this.thisformdata.id, }); this.getData(); }, renderContent: function (h, { node, data, store }) { return ( <span> <i style="font-size:16px;color:#409EFF" class={data.icon}></i> <span style="padding-left: 2px;font-size:14px">{node.label}</span> </span> ); }, // 提交表单 submitForm(ref) { if (this.submitButtonDisabled) { return; } const el = this.$refs.form; el.validate((valid) => { if (!valid) return; this.submitButtonDisabled = true; this.loading = true; this.$post("/materia/save", { entity: { ...this.form, costPlan: parseInt(parseFloat(this.form.costPlan) * 1000 + ""), }, }) .then((res) => { // this.refreshNodeBy(this.form.categoryId); this.materiaDialog.visible = false; if (res && res.code && res.code == 1) { this.$message.success(res.msg); this.initPage(); } this.initForm(); this.radio = null; this.loading = false; }) .catch((error) => { this.submitButtonDisabled = false; this.loading = false; this.$message.error(error.message); }); }); }, // 提交表单 submitDirForm(ref) { if (this.submitButtonDisabled) { return; } const el = this.$refs.dirform; el.validate((valid) => { if (!valid) return; this.submitButtonDisabled = true; this.$post("/materia/category/save", { entity: this.dirform, }) .then((res) => { // this.getData(); this.materiaDirDialog.visible = false; if (res && res.code && res.code == 1) { //this.$message.success(res.msg); this.initForm(); console.log(this.thisformdata); if (!JSON.stringify(this.thisformdata) == "{}") { if (this.isChildDir) { this.refreshNodeBy(this.thisformdata.id); } else { this.refreshNodeBy(this.thisformdata.parentId); } } else { this.$post("/materia/category/getListByParentId", { parentId: -1, }).then(({ data }) => { this.data = data.result; }); } this.initPage(); } }) .catch((error) => { this.submitButtonDisabled = false; this.$message.error(error.message); }); }); }, // 提交表单 submitAttsForm(ref) { if (this.submitButtonDisabled) { return; } const el = this.$refs.attform; el.validate((valid) => { if (!valid) return; this.submitButtonDisabled = true; this.$post("/attach/save", { entity: this.attform, }) .then((res) => { this.materiaAttsDialog.visible = false; if (res && res.code && res.code == 1) { this.$message.success("添加附件成功!"); this.initForm(); } }) .catch((error) => { this.submitButtonDisabled = false; this.$message.error(error.message); }); }); }, submitSupplyForm(ref) { if (this.submitButtonDisabled) { return; } const el = this.$refs.supplyform; el.validate((valid) => { if (!valid) return; this.submitButtonDisabled = true; this.$post("/materia/supplier/save", { entity: { ...this.supplyform, costPlan: parseInt( parseFloat(this.supplyform.costPlan) * 1000 + "" ), }, }) .then((res) => { this.materiaSupplyDialog.visible = false; if (res && res.code && res.code == 1) { this.$message.success("添加物料供应商成功!"); this.initForm(); this.initPage(); } }) .catch((error) => { this.submitButtonDisabled = false; this.$message.error(error.message); }); }); }, beforeRender(data) { this.materiaTableData = data.result; return data; }, async loadNode(node, resolve) { console.log("node:", node); console.log(this.data); if (node.level === 0) { resolve(this.data); return; } this.$post("/materia/category/getDirListByParentId", { parentId: node.data.id, type: node.data.type, }).then(({ data }) => { resolve(data.result); // this.bomTableData = data.bomList; }); }, // table的左键点击当前行事件 clickTableRow(row, column, event) { console.log("clickTableRow row", row); this.tableRowData = row; // this.materiaTableData.forEach((item, index) => { // if (row.code === item.code) { // this.radio = parseInt(index) + 1; // } // }); }, initForm() { this.form = { id: null, name: "", shortName: "", selfCode: "", code: "", assetsCode: "", categoryId: "1", enabled: 1, specModel: "", unitOfMeasure: "", useNum: "1", lossRate: "", supplyType: "", costPlan: "", mainPicUrl: "", remark: "", }; this.dirform = { id: null, parentId: -1, code: "", selfCode: "", name: "", enabled: "1", isLeaf: 1, startNum: 1, remark: "", }; this.supplyform = { id: null, materiaId: "", supplierId: "", deliveryPeriod: "", deliveryPeriodUnit: "", supplierMateriaCode: "", unitOfMeasure: "", costPlan: "", }; (this.attform = { id: null, tableCode: "mortals_iot_materia", tableDataId: "", attachType: "", attachName: "", attachUrl: "", remark: "", }), this.$post("/materia/add", {}); }, }, data() { return { loading: false, materiaDialog: { visible: false, }, materiaDirDialog: { visible: false, }, materiaAttsDialog: { visible: false, }, materiaSupplyDialog: { visible: false, }, materiaImportDialog: { visible: false, syncRet: "", }, attachUrl: "", form: {}, fileList: [], dirform: {}, attform: {}, supplyform: {}, searchform: { code: "", name: "", }, formLabelWidth: "120px", formInputWidth: "20", radio: null, materiaTableData: [], currentRowIndex: 0, // 获取当前右键点击的table行下标 data: [], fileList3: [], materiaList: [], currCategory: {}, treeProps: { children: "children", label: "name", isLeaf: "isLeaf", type: "type", icon: "icon", id: "id", }, submitButtonDisabled: false, isChildDir: false, //刷新标志 isShowDrop: false, //右键菜单的是否显示 contextMenuTarget: null, //右键菜单的DOM对象 thisformdata: {}, //右键菜单的点击的节点对象 targetElement: {}, //右键点击的目标对象 isShowSearch: false, tableRowData: {}, rules: { name: [ { required: true, message: "请输入类目名称", trigger: "blur", }, ], selfCode: [ { required: true, message: "请输入类目短代码", trigger: "blur", }, ], }, attRules: { attachType: [ { required: true, message: "请选择附件类型", trigger: "blur", }, ], attachUrl: [ { required: true, message: "请上传附件", trigger: "blur", }, ], }, supplyRules: { supplierId: [ { required: true, message: "请选择供应商", trigger: "blur", }, ], deliveryPeriod: [ { required: true, message: "请输入交货期", trigger: "blur", }, ], deliveryPeriodUnit: [ { required: true, message: "请交货期单位", trigger: "blur", }, ], unitOfMeasure: [ { required: true, message: "请选择计量单位", trigger: "blur", }, ], costPlan: [ { required: true, message: "请输入供货成本", trigger: "blur", }, ], }, materiaRules: { name: [ { required: true, message: "请输入物料名称", trigger: "blur", }, { max: 50, message: "物料名称最大长度50个字符", trigger: "blur" }, ], shortName: [ { required: true, message: "请输入物料简称", trigger: "blur", }, ], assetsCode: [ { required: false, message: "请输入资产编码", trigger: "blur", }, ], categoryId: [ { required: true, message: "请选择物料类目", trigger: "blur", }, ], useNum: [ { required: true, message: "请输入用量", trigger: "blur", }, ], lossRate: [ { required: true, message: "请输入损耗率", trigger: "blur", }, ], specModel: [ { required: true, message: "请输入规格型号", trigger: "blur", }, ], unitOfMeasure: [ { required: true, message: "请输入计量单位", trigger: "blur", }, ], supplyType: [ { required: true, message: "请选择补给方式", trigger: "blur", }, ], costPlan: [ { required: true, message: "请输入计划成本", trigger: "blur", }, ], mainPicUrl: [ { required: true, message: "请选择图片", trigger: "blur", }, ], }, }; }, }; </script> <style> .winClass { width: 500px; height: 200px; overflow-y: auto; } /* el-divider 修改高度&虚线效果 */ .el-divider--horizontal { margin: 5px 0; background: 0 0; border-top: 1px solid #e8eaec; } .el-row-filter { max-height: 600px; height: 600px; overflow: auto; } .table-foot { width: 100%; overflow: auto; } #dataPage { margin: 0 0; font-family: "Microsoft Yahei", "Avenir", Helvetica, Arial, sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-align: center; color: #2c3e50; height: 100%; } .el-scrollbar .el-scrollbar__wrap .el-scrollbar__view { overflow-y: hidden; overflow-x: hidden; } .el-radio__label { display: none !important; } </style> <style lang="scss" scoped> .el-select { width: 130px; } .mytree /deep/ { .el-tree--highlight-current /deep/ .el-tree-node.is-checked > .el-tree-node__content { background-color: rgb(255, 255, 255); color: rgb(64, 158, 255); } .el-tree--highlight-current /deep/ .el-tree-node.is-current > .el-tree-node__content { background-color: rgb(255, 255, 255); color: rgb(64, 158, 255); } .el-tree > .el-tree-node:after { border-top: none; } .el-tree-node { position: relative; padding-left: 16px; } //节点有间隙,隐藏掉展开按钮就好了,如果觉得空隙没事可以删掉 // .el-tree-node__expand-icon.is-leaf { // display: none; // } .el-tree-node__children { padding-left: 16px; } .el-tree-node :last-child:before { height: 38px; } .el-tree > .el-tree-node:before { border-left: none; } .el-tree > .el-tree-node:after { border-top: none; } .el-tree-node:before { content: ""; left: -4px; position: absolute; right: auto; border-width: 1px; } .el-tree-node:after { content: ""; left: -4px; position: absolute; right: auto; border-width: 1px; } .el-tree-node:before { border-left: 1px dashed #4386c6; bottom: 0px; height: 100%; top: -26px; width: 1px; } .el-tree-node:after { border-top: 1px dashed #4386c6; height: 20px; top: 12px; width: 24px; } .custom-tree-node { flex: 1; display: flex; align-items: center; justify-content: space-between; font-size: 12px; padding-right: 8px; } } .avatar-uploader .el-upload { border: 1px dashed #d9d9d9; border-radius: 6px; cursor: pointer; position: relative; overflow: hidden; } .avatar-uploader .el-upload:hover { border-color: #409eff; } .avatar-uploader-icon { font-size: 28px; color: #8c939d; width: 178px; height: 178px; line-height: 178px; text-align: center; } .avatar { width: 178px; height: 178px; display: block; } </style>