From 332c012e7336f2996c4fe5c8c110d00713c1bde2 Mon Sep 17 00:00:00 2001 From: haoyahui <2032914783@qq.com> Date: 星期六, 11 十一月 2023 18:51:33 +0800 Subject: [PATCH] 采购单,采购明细,库存管理,出入库,调拨管理,库存盘点 --- admin-web/src/views/foundation/store/edit.vue | 173 +++++++++++++++++++++++++++++++++++++-------------------- 1 files changed, 113 insertions(+), 60 deletions(-) diff --git a/admin-web/src/views/foundation/store/edit.vue b/admin-web/src/views/foundation/store/edit.vue index 1445921..c60e02f 100644 --- a/admin-web/src/views/foundation/store/edit.vue +++ b/admin-web/src/views/foundation/store/edit.vue @@ -1,19 +1,27 @@ <template> <win-sm :title="setting.title" @close="close" :width="'800px'"> <el-form ref="ruleForm" :model="formData" :rules="rules" class="demo-ruleForm" label-width="100px"> - <el-form-item label="缂栧彿" prop="code"> - <el-input disabled v-model="formData.code" clearable maxlength="20" show-word-limit style="width: 100%"/> + <el-form-item label="缂栧彿" prop="warehouseCode"> + <el-input disabled v-model="formData.warehouseCode" clearable maxlength="20" show-word-limit style="width: 100%" /> </el-form-item> <el-form-item label="浠撳簱鍚嶇О" prop="warehouseName"> - <el-input v-model="formData.warehouseName" clearable maxlength="20" show-word-limit style="width: 100%"/> + <el-input v-model="formData.warehouseName" clearable maxlength="20" show-word-limit style="width: 100%" /> </el-form-item> <el-form-item label="浠撳簱绫诲瀷" prop="classificationCode"> - <el-select v-model="formData.classificationCode" clearable placeholder="璇烽�夋嫨" style="width: 100%"> - <el-option v-for="item in classList" :key="item.dict_code" :label="item.dict_label" :value="item.dict_code"></el-option> + <el-select v-model="formData.classificationCode" clearable placeholder="璇烽�夋嫨" style="width: 100%"> + <el-option + v-for="item in classList" + :key="item.dict_code" + :label="item.dict_label" + :value="item.dict_code" + ></el-option> </el-select> </el-form-item> - <el-form-item label="鍦板潃" > - <el-input v-model="formData.adress" clearable maxlength="20" show-word-limit style="width: 100%"/> + <el-form-item label="鎵�灞炴満鏋�" prop="agencyIds"> + <el-cascader v-model="formData.agencyIds" :options="treeList" :props="{checkStrictly: true,value:'id'}" @change="handleChange" style="width: 100%"></el-cascader> + </el-form-item> + <el-form-item label="鍦板潃"> + <el-input v-model="formData.adress" clearable maxlength="20" show-word-limit style="width: 100%" /> </el-form-item> <el-form-item label="鐘舵��" prop="states"> <el-radio-group v-model="formData.states"> @@ -23,100 +31,145 @@ </el-form-item> </el-form> <div slot="footer" align="center" class="dialog-footer"> - <my-button name="鍙栨秷" site="form" @click="close"/> - <my-button name="淇濆瓨" site="form" @click="save"/> + <my-button name="鍙栨秷" site="form" @click="close" /> + <my-button name="淇濆瓨" site="form" @click="save" /> </div> </win-sm> </template> <script> -import winSm from '@/components/win/win-sm' -import myButton from '@/components/myButton/myButton' -import * as finsystenant from '@/api/baseSetting/finsystenant' +import winSm from '@/components/win/win-sm'; +import myButton from '@/components/myButton/myButton'; +import * as finsystenant from '@/api/baseSetting/finsystenant'; export default { - components: {winSm, myButton}, + components: { winSm, myButton }, props: { setting: { type: Object, - default: () => { - } - } + default: () => {}, + }, }, data() { return { - classList:[], + classList: [], + treeList: [], checkAll: false, checkedList: [], formData: { + warehouseCode:null, classificationId: null, + classificationCode:null, + states: 1, + agencyIds:[], + agencyId:'' }, rules: { - warehouseName: [ - {required: true, message: '璇疯緭鍏�', trigger: 'blur'} - ], - name: [ - {required: true, message: '璇疯緭鍏�', trigger: 'blur'} - ], - states: [ - {required: true, message: '璇烽�夋嫨鐘舵��', trigger: 'blur'} - ] - } - } + warehouseName: [{ required: true, message: '璇疯緭鍏�', trigger: 'blur' }], + classificationCode: [{ required: true, message: '璇烽�夋嫨', trigger: 'blur' }], + agencyIds: [{ required: true, message: '璇烽�夋嫨', trigger: 'blur' }], + states: [{ required: true, message: '璇烽�夋嫨鐘舵��', trigger: 'blur' }], + }, + }; }, created() { - this.class_List() - if(this.setting.info){ - this.formData = Object.assign({},JSON.parse(this.setting.info)) + this.class_List(); + this.tree_List(); + if (this.setting.info) { + this.formData = Object.assign({}, JSON.parse(this.setting.info)); } }, methods: { - class_List (){ - finsystenant.classList().then(res => { + class_List() { + finsystenant.classList().then((res) => { if (res) { - console.log(res,'res'); - this.classList = res + console.log(res, 'res'); + this.classList = res; } - }) + }); }, - getEditInfo(id){ - + tree_List() { + finsystenant.getTree().then((res) => { + if (res) { + this.treeList = res; + this.$set(this.formData,'agencyIds',this.findParentIds(this.treeList,this.formData.agencyId)) + } + }); }, + handleChange(e){ + this.formData.agencyId = e[e.length-1] + }, + getEditInfo(id) {}, close() { - this.$emit('close') + this.$emit('close'); }, save() { this.$refs.ruleForm.validate((valid) => { if (valid) { - const params = Object.assign({}, this.formData) - if(this.setting.id){ + const params = Object.assign({}, this.formData); + if (this.setting.id) { // 缂栬緫鎺ュ彛 - finsystenant.editstore(params).then(res => { + finsystenant.editstore(params).then((res) => { if (res) { - this.$message.success('淇濆瓨鎴愬姛锛�') - this.close() - this.$emit('search') + this.$message.success('淇濆瓨鎴愬姛锛�'); + this.close(); + this.$emit('search'); } else { - this.$message.error('淇濆瓨澶辫触') + this.$message.error('淇濆瓨澶辫触'); } - }) - }else{ - params.orgId = this.setting.orgId - finsystenant.addstore(params).then(res => { + }); + } else { + params.orgId = this.setting.orgId; + finsystenant.addstore(params).then((res) => { if (res) { - this.$message.success('淇濆瓨鎴愬姛锛�') - this.close() - this.$emit('search') + this.$message.success('淇濆瓨鎴愬姛锛�'); + this.close(); + this.$emit('search'); } else { - this.$message.error('淇濆瓨澶辫触') + this.$message.error('淇濆瓨澶辫触'); } - }) + }); } } else { - this.$message.error('鏍¢獙鏈�氳繃锛岃妫�鏌ャ��') + this.$message.error('鏍¢獙鏈�氳繃锛岃妫�鏌ャ��'); } - }) - } - } -} + }); + }, + // 閫氳繃瀛愰泦id鏌ュ埌鎵�浠ョ浉鍏崇埗绾d骞惰繑鍥炴暟缁� + findParentIds(dataSource, nodeId) { + const parentIds = [nodeId]; // 鐢ㄤ簬瀛樺偍鎵�鏈夌埗鑺傜偣ID鐨勬暟缁� + + // 瀹氫箟涓�涓�掑綊鍑芥暟锛岀敤浜庨亶鍘嗘暣妫垫爲骞舵煡鎵惧瓙鑺傜偣鐨勬墍鏈夌埗鑺傜偣 + function traverse(node, nodeId) { + if (node.id === nodeId) { + // 濡傛灉褰撳墠鑺傜偣鐨処D绛変簬瀛愯妭鐐圭殑ID锛屽垯琛ㄧず宸茬粡鎵惧埌浜嗗瓙鑺傜偣锛屽彲浠ュ紑濮嬪悜涓婃煡鎵剧埗鑺傜偣 + return true; // 杩斿洖true琛ㄧず宸茬粡鎵惧埌浜嗗瓙鑺傜偣 + } + + if (node.children) { + // 濡傛灉褰撳墠鑺傜偣鏈夊瓙鑺傜偣锛屽垯缁х画閬嶅巻瀛愯妭鐐� + for (const childNode of node.children) { + if (traverse(childNode, nodeId)) { + // 濡傛灉鍦ㄥ瓙鑺傜偣涓壘鍒颁簡瀛愯妭鐐圭殑鐖惰妭鐐癸紝鍒欏皢褰撳墠鑺傜偣鐨処D娣诲姞鍒扮埗鑺傜偣ID鏁扮粍涓紝骞惰繑鍥瀟rue琛ㄧず宸茬粡鎵惧埌浜嗗瓙鑺傜偣 + parentIds.unshift(node.id); + return true; + } + } + } + + return false; // 濡傛灉褰撳墠鑺傜偣涓嶆槸瀛愯妭鐐圭殑鐖惰妭鐐癸紝鍒欒繑鍥瀎alse + } + + // 浠庢牴鑺傜偣寮�濮嬮亶鍘嗘暣妫垫爲锛屽苟璋冪敤閫掑綊鍑芥暟鏌ユ壘瀛愯妭鐐圭殑鎵�鏈夌埗鑺傜偣 + for (const node of dataSource) { + if (traverse(node, nodeId)) { + // 濡傛灉鍦ㄥ綋鍓嶈妭鐐圭殑瀛愭爲涓壘鍒颁簡瀛愯妭鐐圭殑鐖惰妭鐐癸紝鍒欑洿鎺ラ��鍑哄惊鐜� + break; + } + } + + return parentIds; // 杩斿洖鎵�鏈夌埗鑺傜偣ID鐨勬暟缁� + }, + }, +}; </script> -- Gitblit v1.9.1