From 508567cbb4a41070718afb1e2eaab1e489e784c6 Mon Sep 17 00:00:00 2001 From: MrShi <1878285526@qq.com> Date: 星期二, 14 一月 2025 09:47:40 +0800 Subject: [PATCH] 仓库管理、资产分类、资产管理 --- admin/src/views/stock/components/newMaterial.vue | 196 ++++++++++++++++++++++++++---------------------- 1 files changed, 106 insertions(+), 90 deletions(-) diff --git a/admin/src/views/stock/components/newMaterial.vue b/admin/src/views/stock/components/newMaterial.vue index 519bf22..8557f6c 100644 --- a/admin/src/views/stock/components/newMaterial.vue +++ b/admin/src/views/stock/components/newMaterial.vue @@ -9,67 +9,47 @@ <div class="main_content"> <el-form :model="form" label-position="top" ref="form" :rules="rules"> <div class="list"> - <el-form-item label="鐗╂枡缂栫爜" prop="contractId"> - <el-input v-model="form.renterName" placeholder="涓嶈緭鍏ョ郴缁熶細鑷姩缂栫爜" v-trim /> + <el-form-item label="鐗╂枡缂栫爜" prop="code"> + <el-input v-model="form.code" placeholder="涓嶈緭鍏ョ郴缁熶細鑷姩缂栫爜" v-trim /> </el-form-item> - <el-form-item label="鐗╂枡鍚嶇О" prop="renterName"> - <el-input v-model="form.renterName" placeholder="璇疯緭鍏�" v-trim /> + <el-form-item label="鐗╂枡鍚嶇О" prop="name"> + <el-input v-model="form.name" placeholder="璇疯緭鍏�" v-trim /> </el-form-item> - <el-form-item label="鐗╂枡鍒嗙被" prop="ywContractRoomList"> - <el-select v-model="form.ywContractRoomList" placeholder="璇烽�夋嫨"> - <el-option - v-for="(item, index) in houseList" - :key="index" - :value="item.id" - :label="item.projectName + item.buildingName + item.floorName + item.roomName" /> - </el-select> + <el-form-item label="鐗╂枡鍒嗙被" prop="cateArr"> + <el-cascader + v-model="form.cateArr" + :options="cateList" + @change="getCateVal" + :props="{ label: 'name', value: 'id', children: 'childCategoryList' }" + placeholder="璇烽�夋嫨" /> </el-form-item> - <el-form-item label="鏉$爜" prop="costType"> - <el-input v-model="form.renterName" placeholder="璇疯緭鍏�" v-trim /> + <el-form-item label="鏉$爜" prop="qrcode"> + <el-input v-model="form.qrcode" placeholder="璇疯緭鍏�" v-trim /> </el-form-item> - <el-form-item label="鍝佺墝" prop="date"> - <el-input v-model="form.renterName" placeholder="璇疯緭鍏�" v-trim /> + <el-form-item label="鍝佺墝" prop="brand"> + <el-input v-model="form.brand" placeholder="璇疯緭鍏�" v-trim /> </el-form-item> - <el-form-item label="瑙勬牸鍨嬪彿" prop="totleFee"> - <el-input v-model="form.renterName" placeholder="璇疯緭鍏�" v-trim /> + <el-form-item label="瑙勬牸鍨嬪彿" prop="attr"> + <el-input v-model="form.attr" placeholder="璇疯緭鍏�" v-trim /> </el-form-item> - <el-form-item label="瀹夊叏搴撳瓨锛堜笅闄愶級" prop="planPayDate"> - <el-input v-model="form.renterName" placeholder="璇疯緭鍏�" v-trim /> + <el-form-item label="瀹夊叏搴撳瓨锛堜笅闄愶級" prop="minStock"> + <el-input v-model="form.minStock" placeholder="璇疯緭鍏�" v-trim /> </el-form-item> - <el-form-item label="瀹夊叏搴撳瓨锛堜笂闄愶級" prop="companyId"> - <el-input v-model="form.renterName" placeholder="璇疯緭鍏�" v-trim /> + <el-form-item label="瀹夊叏搴撳瓨锛堜笂闄愶級" prop="maxStock"> + <el-input v-model="form.maxStock" placeholder="璇疯緭鍏�" v-trim /> </el-form-item> - <el-form-item label="鍗曚綅" prop="companyId"> - <el-input v-model="form.renterName" placeholder="璇疯緭鍏�" v-trim /> + <el-form-item label="鍗曚綅" prop="unitName"> + <el-input v-model="form.unitName" placeholder="璇疯緭鍏�" v-trim /> </el-form-item> - <el-form-item label="鎵�灞為」鐩�" prop="companyId"> - <el-select v-model="form.ywContractRoomList" placeholder="璇烽�夋嫨"> - <el-option - v-for="(item, index) in houseList" - :key="index" - :value="item.id" - :label="item.projectName + item.buildingName + item.floorName + item.roomName" /> - </el-select> - </el-form-item> - <el-form-item label="鎵�灞炴埧婧�" prop="companyId"> - <el-select v-model="form.ywContractRoomList" placeholder="璇烽�夋嫨"> - <el-option - v-for="(item, index) in houseList" - :key="index" - :value="item.id" - :label="item.projectName + item.buildingName + item.floorName + item.roomName" /> - </el-select> - </el-form-item> - <el-form-item label="鐗╂枡鐓х墖" prop="companyId"> + <el-form-item label="鐗╂枡鐓х墖" prop="multifile"> <el-upload - class="upload-demo" - :show-file-list="false" - :data="uploadData" :action="uploadImgUrl" + :file-list="fileList" + :data="uploadData" + list-type="picture-card" :on-success="uploadAvatarSuccess" - :before-upload="beforeUpload" - :on-error="uploadError"> - <el-button icon="el-icon-plus" plain>涓婁紶</el-button> + :on-remove="dele"> + <i class="el-icon-plus"></i> </el-upload> </el-form-item> <el-form-item style="width: 100%;" label="澶囨敞" prop="remark"> @@ -85,6 +65,7 @@ <script> import GlobalWindow from '@/components/common/GlobalWindow' import BaseOpera from '@/components/base/BaseOpera' + import { fetchList } from '@/api/business/category.js' export default { name: 'newMaterial', components: { @@ -92,68 +73,103 @@ }, extends: BaseOpera, data () { + var validateCateArr = (rule, value, callback) => { + if (value.length === 0) { + callback(new Error('璇烽�夋嫨鐗╂枡鍒嗙被')); + } else { + callback(); + } + }; return { form: { - contractId: '', - renterName: '', - renterId: '', - costType: '', - type: '', - companyId: '', + id: null, + code: '', + name: '', + parentCateId: '', + cateId: '', + cateArr: [], + multifile: {}, remark: '', - startDate: '', - endDate: '', - totleFee: '', - planPayDate: '', - multifileList: [], - ywContractRoomList: [], - date: [], - RoomName: '' + unitName: '', + maxStock: '', + minStock: '', + attr: '', + brand: '', + qrcode: '' }, - rules: [], - loadingInstance: null, + rules: { + name: [ + { required: true, message: '璇疯緭鍏ョ墿鏂欏悕绉�', trigger: 'blur' } + ], + cateArr: [ + { required: true, validator: validateCateArr, trigger: 'blur' } + ], + qrcode: [ + { required: true, message: '璇疯緭鍏ユ潯鐮�', trigger: 'blur' } + ] + }, + cateList: [], uploadImgUrl: process.env.VUE_APP_API_PREFIX + '/visitsAdmin/cloudService/public/uploadBatch', fileList: [], uploadData: { - folder: 'YW_CONTRACT_BILL' - }, + folder: 'YW_MATERIAL' + } } + }, + created () { + this.config({ + api: '/ywMaterial' + }) }, methods: { open (title, target) { this.title = title + this.fileList = [] this.visible = true - }, - dele (imgaddr) { - this.form.multifileList.forEach((item, index) => { - if (imgaddr === item.imgaddr) { - this.form.multifileList.splice(index, 1) + this.getCategry() + // 鏂板缓 + if (target == null) { + this.$nextTick(() => { + this.$refs.form.resetFields() + this.form[this.configData['field.id']] = null + }) + return + } + // 缂栬緫 + this.$nextTick(() => { + for (const key in this.form) { + this.form[key] = target[key] + } + if (this.form.multifile) { + this.fileList = [ + { url: this.form.multifile.fileurlFull, ...this.form.multifile } + ] } }) }, - beforeUpload (file) { - this.loadingInstance = Loading.service({ - lock: true, - text: 'Loading', - spinner: 'el-icon-loading', - background: 'rgba(0, 0, 0, 0.7)' + getCateVal(e) { + this.form.parentCateId = e[0] + this.form.cateId = e[1] + }, + getCategry() { + fetchList({ + capacity: 1000, + model: { + type: 7 + }, + page: 1 + }).then(res => { + this.cateList = res.records }) }, - uploadError () { - this.$nextTick(() => { // 浠ユ湇鍔$殑鏂瑰紡璋冪敤鐨� Loading 闇�瑕佸紓姝ュ叧闂� - if (this.loadingInstance) { - this.loadingInstance.close() - } - }) + dele (e) { + this.fileList = [] + this.form.multifile = {} }, uploadAvatarSuccess (file) { - this.$nextTick(() => { - if (this.loadingInstance) { - this.loadingInstance.close() - } - }) const item = file.data[0] - this.form.multifileList.push({ ...item, fileurl: item.imgaddr, name: item.originname, userName: this.userInfo.realname, createTime: this.getDay() }) + this.fileList.push({ ...item, fileurl: item.imgaddr, name: item.originname }) + this.form.multifile = { ...item, fileurl: item.imgaddr, name: item.originname } } } } -- Gitblit v1.9.3