From f8ea0c93a2c35e84d77d737301bb36f50b8aeebb Mon Sep 17 00:00:00 2001 From: zhangherong <571457620@qq.com> Date: 星期六, 06 九月 2025 18:06:13 +0800 Subject: [PATCH] art: 物料出库 --- /dev/null | 60 ---------- src/views/lsw/LswMaterialOutboundList.vue | 275 ++++++++++++++++----------------------------- 2 files changed, 101 insertions(+), 234 deletions(-) diff --git a/src/views/lsw/LswMaterialOutboundList.vue b/src/views/lsw/LswMaterialOutboundList.vue index b38cd0d..6abdcb4 100644 --- a/src/views/lsw/LswMaterialOutboundList.vue +++ b/src/views/lsw/LswMaterialOutboundList.vue @@ -5,24 +5,42 @@ <a-form layout="inline" @keyup.enter.native="searchQuery"> <a-row :gutter="24"> <a-col :xl="6" :lg="7" :md="8" :sm="24"> + <a-form-item label="绾胯竟搴�"> + <j-dict-select-tag placeholder="璇烽�夋嫨绾胯竟搴�" v-model="queryParam.warehouseId" + dictCode="base_line_side_warehouse,warehouse_name,id,del_flag=0 and warehouse_status='1'"></j-dict-select-tag> + </a-form-item> + </a-col> + <a-col :xl="6" :lg="7" :md="8" :sm="24"> + <a-form-item label="鍑哄簱绫诲瀷"> + <j-dict-select-tag placeholder="璇烽�夋嫨鍑哄簱绫诲瀷" v-model="queryParam.outboundCategory" + dictCode="material_outbound_category"></j-dict-select-tag> + </a-form-item> + </a-col> + <a-col :xl="6" :lg="7" :md="8" :sm="24"> <a-form-item label="鐗╂枡缂栫爜"> <j-input placeholder="璇疯緭鍏ョ墿鏂欑紪鐮�" v-model="queryParam.materialNumber"></j-input> </a-form-item> </a-col> - <a-col :xl="6" :lg="7" :md="8" :sm="24"> - <a-form-item label="鐗╂枡鍚嶇О"> - <j-input placeholder="璇疯緭鍏ョ墿鏂欏悕绉�" v-model="queryParam.materialName"></j-input> - </a-form-item> - </a-col> - <a-col :xl="6" :lg="7" :md="8" :sm="24"> - <a-form-item label="鎵规鍙�"> - <j-input placeholder="璇疯緭鍏ユ壒娆″彿" v-model="queryParam.batchNumber"></j-input> - </a-form-item> - </a-col> + <template v-if="toggleSearchStatus"> + <a-col :xl="6" :lg="7" :md="8" :sm="24"> + <a-form-item label="鐗╂枡鍚嶇О"> + <j-input placeholder="璇疯緭鍏ョ墿鏂欏悕绉�" v-model="queryParam.materialName"></j-input> + </a-form-item> + </a-col> + <a-col :xl="6" :lg="7" :md="8" :sm="24"> + <a-form-item label="鎵规鍙�"> + <j-input placeholder="璇疯緭鍏ユ壒娆″彿" v-model="queryParam.batchNumber"></j-input> + </a-form-item> + </a-col> + </template> <a-col :xl="6" :lg="7" :md="8" :sm="24"> <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons"> <a-button type="primary" @click="searchQuery" icon="search">鏌ヨ</a-button> - <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">閲嶇疆</a-button> + <a-button type="info" @click="searchReset" icon="reload" style="margin-left: 8px">閲嶇疆</a-button> + <a @click="handleToggleSearch" style="margin-left: 8px"> + {{ toggleSearchStatus ? '鏀惰捣' : '灞曞紑' }} + <a-icon :type="toggleSearchStatus ? 'up' : 'down'" /> + </a> </span> </a-col> </a-row> @@ -30,21 +48,11 @@ </div> <!-- 鏌ヨ鍖哄煙-END --> - <!-- 鎿嶄綔鎸夐挳鍖哄煙 --> - <div class="table-operator"> - <a-button @click="handleAdd" type="primary" icon="plus">鏂板</a-button> - <a-dropdown v-if="selectedRowKeys.length > 0"> - <a-menu slot="overlay"> - <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>鍒犻櫎</a-menu-item> - </a-menu> - <a-button style="margin-left: 8px"> 鎵归噺鎿嶄綔 <a-icon type="down" /></a-button> - </a-dropdown> - </div> - <!-- table鍖哄煙-begin --> <div> <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;"> - <i class="anticon anticon-info-circle ant-alert-icon"></i> 宸查�夋嫨 <a style="font-weight: 600">{{ selectedRowKeys.length }}</a>椤� + <i class="anticon anticon-info-circle ant-alert-icon"></i> 宸查�夋嫨 <a + style="font-weight: 600">{{ selectedRowKeys.length }}</a>椤� <a style="margin-left: 24px" @click="onClearSelected">娓呯┖</a> </div> @@ -61,169 +69,88 @@ :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}" class="j-table-force-nowrap" @change="handleTableChange"> - - <template slot="htmlSlot" slot-scope="text"> - <div v-html="text"></div> - </template> - <template slot="imgSlot" slot-scope="text,record"> - <span v-if="!text" style="font-size: 12px;font-style: italic;">鏃犲浘鐗�</span> - <img v-else :src="getImgView(text)" :preview="record.id" height="25px" alt="" style="max-width:80px;font-size: 12px;font-style: italic;"/> - </template> - <template slot="fileSlot" slot-scope="text"> - <span v-if="!text" style="font-size: 12px;font-style: italic;">鏃犳枃浠�</span> - <a-button - v-else - :ghost="true" - type="primary" - icon="download" - size="small" - @click="downloadFile(text)"> - 涓嬭浇 - </a-button> - </template> - - <span slot="action" slot-scope="text, record"> - <a @click="handleEdit(record)">缂栬緫</a> - - <a-divider type="vertical" /> - <a-dropdown> - <a class="ant-dropdown-link">鏇村 <a-icon type="down" /></a> - <a-menu slot="overlay"> - <a-menu-item> - <a @click="handleDetail(record)">璇︽儏</a> - </a-menu-item> - <a-menu-item> - <a-popconfirm title="纭畾鍒犻櫎鍚�?" @confirm="() => handleDelete(record.id)"> - <a>鍒犻櫎</a> - </a-popconfirm> - </a-menu-item> - </a-menu> - </a-dropdown> - </span> - </a-table> </div> - - <lsw-material-outbound-modal ref="modalForm" @ok="modalFormOk"></lsw-material-outbound-modal> </a-card> </template> <script> - import '@/assets/less/TableExpand.less' - import { mixinDevice } from '@/utils/mixin' - import { JeecgListMixin } from '@/mixins/JeecgListMixin' - import LswMaterialOutboundModal from './modules/LswMaterialOutboundModal' +import '@/assets/less/TableExpand.less' +import { mixinDevice } from '@/utils/mixin' +import { JeecgListMixin } from '@/mixins/JeecgListMixin' - export default { - name: 'LswMaterialOutboundList', - mixins:[JeecgListMixin, mixinDevice], - components: { - LswMaterialOutboundModal - }, - data () { - return { - description: '鐗╂枡鍑哄簱鍗曠鐞嗛〉闈�', - // 琛ㄥご - columns: [ - { - title: '#', - dataIndex: '', - key:'rowIndex', - width:60, - align:"center", - customRender:function (t,r,index) { - return parseInt(index)+1; - } - }, - { - title:'鐗╂枡缂栫爜', - align:"center", - dataIndex: 'materialNumber' - }, - { - title:'鐗╂枡鍚嶇О', - align:"center", - dataIndex: 'materialName' - }, - { - title:'浜х嚎', - align:"center", - dataIndex: 'factoryId_dictText' - }, - { - title:'鎵规鍙�', - align:"center", - dataIndex: 'batchNumber' - }, - { - title:'鍑哄簱浜�', - align:"center", - dataIndex: 'outboundStaff' - }, - { - title:'鍑哄簱鏃堕棿', - align:"center", - dataIndex: 'outboundTime' - }, - { - title:'鍑哄簱鏁伴噺', - align:"center", - dataIndex: 'quantity' - }, - { - title:'宸ュ崟', - align:"center", - dataIndex: 'workOrderId' - }, - { - title: '鎿嶄綔', - dataIndex: 'action', - align:"center", - fixed:"right", - width:147, - scopedSlots: { customRender: 'action' } +export default { + name: 'LswMaterialOutboundList', + mixins: [JeecgListMixin, mixinDevice], + components: {}, + data() { + return { + description: '鐗╂枡鍑哄簱鍗曠鐞嗛〉闈�', + // 琛ㄥご + columns: [ + { + title: '#', + dataIndex: '', + key: 'rowIndex', + width: 60, + align: 'center', + customRender: function(t, r, index) { + return parseInt(index) + 1 } - ], - url: { - list: "/lswmaterialoutbound/lswMaterialOutbound/list", - delete: "/lswmaterialoutbound/lswMaterialOutbound/delete", - deleteBatch: "/lswmaterialoutbound/lswMaterialOutbound/deleteBatch", - exportXlsUrl: "/lswmaterialoutbound/lswMaterialOutbound/exportXls", - importExcelUrl: "lswmaterialoutbound/lswMaterialOutbound/importExcel", - }, - dictOptions:{}, - superFieldList:[], - } - }, - created() { - this.getSuperFieldList(); - }, - computed: { - importExcelUrl: function(){ - return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`; - }, - }, - methods: { - initDictConfig(){ - }, - getSuperFieldList(){ - let fieldList=[]; - fieldList.push({type:'int',value:'delFlag',text:'鍒犻櫎鏍囪',dictCode:''}) - fieldList.push({type:'string',value:'materialNumber',text:'鐗╂枡缂栫爜',dictCode:''}) - fieldList.push({type:'string',value:'materialName',text:'鐗╂枡鍚嶇О',dictCode:''}) - fieldList.push({type:'string',value:'factoryId',text:'浜х嚎ID',dictCode:''}) - fieldList.push({type:'string',value:'batchNumber',text:'鎵规鍙�',dictCode:''}) - fieldList.push({type:'string',value:'outboundStaff',text:'鍑哄簱浜�',dictCode:''}) - fieldList.push({type:'datetime',value:'outboundTime',text:'鍑哄簱鏃堕棿'}) - fieldList.push({type:'string',value:'quantity',text:'鍑哄簱鏁伴噺',dictCode:''}) - fieldList.push({type:'string',value:'workOrderId',text:'宸ュ崟ID',dictCode:''}) - this.superFieldList = fieldList + { + title: '绾胯竟搴�', + align: 'center', + dataIndex: 'warehouseId_dictText' + }, + { + title: '鐗╂枡缂栫爜', + align: 'center', + dataIndex: 'materialNumber' + }, + { + title: '鐗╂枡鍚嶇О', + align: 'center', + dataIndex: 'materialName' + }, + { + title: '鎵规鍙�', + align: 'center', + dataIndex: 'batchNumber' + }, + { + title: '鍑哄簱绫诲瀷', + align: 'center', + dataIndex: 'outboundCategory_dictText' + }, + { + title: '鍑哄簱浜�', + align: 'center', + dataIndex: 'outboundStaff_dictText' + }, + { + title: '鍑哄簱鏃堕棿', + align: 'center', + dataIndex: 'outboundTime' + }, + { + title: '鍑哄簱鏁伴噺', + align: 'center', + dataIndex: 'quantity' + } + ], + url: { + list: '/lsw/materialOutbound/list' } } - } + }, + created() { + }, + computed: {}, + methods: {} +} </script> <style scoped> - @import '~@assets/less/common.less'; +@import '~@assets/less/common.less'; </style> \ No newline at end of file diff --git a/src/views/lsw/modules/LswMaterialOutboundForm.vue b/src/views/lsw/modules/LswMaterialOutboundForm.vue deleted file mode 100644 index d4f84b3..0000000 --- a/src/views/lsw/modules/LswMaterialOutboundForm.vue +++ /dev/null @@ -1,191 +0,0 @@ -<template> - <a-spin :spinning="confirmLoading"> - <j-form-container :disabled="formDisabled"> - <a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail"> - <a-row> - <a-form-model-item label="浜х嚎" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="factoryId"> - <a-row :gutter="24"> - <a-col :span="24"> - <a-form-item - :labelCol="labelCol" - :wrapperCol="wrapperCol" - label="" - > - <j-select-factory - :disabled="disabled" - v-model="model.factoryId" - :multi="true" - @back="backFactoryInfo" - :backProduction="true" - :treeProductOpera="true" - ></j-select-factory> - </a-form-item> - </a-col> - </a-row> - </a-form-model-item> - <a-col :span="12"> - <a-form-model-item label="鐗╂枡缂栫爜" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="materialNumber"> - <a-input v-model="model.materialNumber" placeholder="璇疯緭鍏ョ墿鏂欑紪鐮�" ></a-input> - </a-form-model-item> - </a-col> - <a-col :span="12"> - <a-form-model-item label="鐗╂枡鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="materialName"> - <a-input v-model="model.materialName" placeholder="璇疯緭鍏ョ墿鏂欏悕绉�" ></a-input> - </a-form-model-item> - </a-col> - <a-col :span="12"> - <a-form-model-item label="鎵规鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="batchNumber"> - <a-input v-model="model.batchNumber" placeholder="璇疯緭鍏ユ壒娆″彿" ></a-input> - </a-form-model-item> - </a-col> - <a-col :span="12"> - <a-form-model-item label="鍑哄簱浜�" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="outboundStaff"> - <j-select-user-by-dep v-model="model.outboundStaff" placeholder="璇疯緭鍏ュ嚭搴撲汉" ></j-select-user-by-dep> - </a-form-model-item> - </a-col> - <a-col :span="12"> - <a-form-model-item label="鍑哄簱鏃堕棿" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="outboundTime"> - <j-date placeholder="璇烽�夋嫨鍑哄簱鏃堕棿" v-model="model.outboundTime" :show-time="true" date-format="YYYY-MM-DD HH:mm:ss" style="width: 100%" /> - </a-form-model-item> - </a-col> - <a-col :span="12"> - <a-form-model-item label="鍑哄簱鏁伴噺" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="quantity"> - <a-input-number v-model="model.quantity" placeholder="璇疯緭鍏ュ嚭搴撴暟閲�" ></a-input-number> - </a-form-model-item> - </a-col> - <a-col :span="12"> - <a-form-model-item label="宸ュ崟ID" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="workOrderId"> - <a-input v-model="model.workOrderId" placeholder="璇疯緭鍏ュ伐鍗旾D" ></a-input> - </a-form-model-item> - </a-col> - </a-row> - </a-form-model> - </j-form-container> - </a-spin> -</template> - -<script> - - import { httpAction, getAction } from '@/api/manage' - import { validateDuplicateValue } from '@/utils/util' - import JTreeDict from '@/components/jeecg/JTreeDict'//鍒嗙被瀛楀吀鏍戝舰涓嬫媺缁勪欢 - import JSelectFactory from '../../../../src/components/jeecgbiz/JSelectFactory.vue' - import JDate from '@/components/jeecg/JDate' - - export default { - name: 'LswMaterialOutboundForm', - components: { - JDate, - JTreeDict, - JSelectFactory - }, - props: { - //琛ㄥ崟绂佺敤 - disabled: { - type: Boolean, - default: false, - required: false - } - }, - data () { - return { - model:{ - }, - labelCol: { - xs: { span: 24 }, - sm: { span: 5 }, - }, - wrapperCol: { - xs: { span: 24 }, - sm: { span: 16 }, - }, - confirmLoading: false, - validatorRules: { - factoryId: [ - { required: true, message: '浜х嚎鏄繀閫夐」', trigger: 'change' } - ], - materialNumber: [ - { required: true, message: '鐗╂枡缂栫爜鏄繀閫夐」', trigger: 'change' } - ], - materialName: [ - { required: true, message: '鐗╂枡鍚嶇О鏄繀閫夐」', trigger: 'change' } - ], - batchNumber: [ - { required: true, message: '鎵规鍙锋槸蹇呴�夐」', trigger: 'change' } - ], - quantity: [ - { required: true, message: '鍑哄簱鏁伴噺鏄繀閫夐」', trigger: 'change' } - ], - outboundStaff: [ - { required: true, message: '鍑哄簱浜烘槸蹇呴�夐」', trigger: 'change' } - ], - outboundTime: [ - { required: true, message: '鍑哄簱鏃堕棿鏄繀閫夐」', trigger: 'change' } - ], - workOrderId:[ - { required: true, message: '宸ュ崟鏄繀閫夐」', trigger: 'change' } - ], - }, - url: { - add: "/lswmaterialoutbound/lswMaterialOutbound/add", - edit: "/lswmaterialoutbound/lswMaterialOutbound/edit", - queryById: "/lswmaterialoutbound/lswMaterialOutbound/queryById" - } - } - }, - computed: { - formDisabled(){ - return this.disabled - }, - }, - created () { - //澶囦唤model鍘熷鍊� - this.modelDefault = JSON.parse(JSON.stringify(this.model)); - }, - methods: { - backFactoryInfo(info) { - this.model.factoryIds = this.model.factoryId - this.nextFactoryOptions = info.map((item, index, arr) => { - let c = { label: item.text, value: item.value + '' } - return c - }) - }, - add () { - this.edit(this.modelDefault); - }, - edit (record) { - this.model = Object.assign({}, record); - this.visible = true; - }, - submitForm () { - const that = this; - // 瑙﹀彂琛ㄥ崟楠岃瘉 - this.$refs.form.validate(valid => { - if (valid) { - that.confirmLoading = true; - let httpurl = ''; - let method = ''; - if(!this.model.id){ - httpurl+=this.url.add; - method = 'post'; - }else{ - httpurl+=this.url.edit; - method = 'put'; - } - httpAction(httpurl,this.model,method).then((res)=>{ - if(res.success){ - that.$message.success(res.message); - that.$emit('ok'); - }else{ - that.$message.warning(res.message); - } - }).finally(() => { - that.confirmLoading = false; - }) - } - - }) - }, - } - } -</script> \ No newline at end of file diff --git a/src/views/lsw/modules/LswMaterialOutboundModal.vue b/src/views/lsw/modules/LswMaterialOutboundModal.vue deleted file mode 100644 index a5203a2..0000000 --- a/src/views/lsw/modules/LswMaterialOutboundModal.vue +++ /dev/null @@ -1,60 +0,0 @@ -<template> - <j-modal - :title="title" - :width="width" - :visible="visible" - switchFullscreen - @ok="handleOk" - :okButtonProps="{ class:{'jee-hidden': disableSubmit} }" - @cancel="handleCancel" - cancelText="鍏抽棴"> - <lsw-material-outbound-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit"></lsw-material-outbound-form> - </j-modal> -</template> - -<script> - - import LswMaterialOutboundForm from './LswMaterialOutboundForm' - export default { - name: 'LswMaterialOutboundModal', - components: { - LswMaterialOutboundForm - }, - data () { - return { - title:'', - width:896, - visible: false, - disableSubmit: false - } - }, - methods: { - add () { - this.visible=true - this.$nextTick(()=>{ - this.$refs.realForm.add(); - }) - }, - edit (record) { - this.visible=true - this.$nextTick(()=>{ - this.$refs.realForm.edit(record); - }) - }, - close () { - this.$emit('close'); - this.visible = false; - }, - handleOk () { - this.$refs.realForm.submitForm(); - }, - submitCallback(){ - this.$emit('ok'); - this.visible = false; - }, - handleCancel () { - this.close() - } - } - } -</script> \ No newline at end of file -- Gitblit v1.9.3