From a674e9834bec0ce5a18b751c7434323cc7199ce5 Mon Sep 17 00:00:00 2001 From: lixiangyu <lixiangyu@xalxzn.com> Date: 星期四, 11 九月 2025 17:57:34 +0800 Subject: [PATCH] feat(cms): CuttingReceiveDetailList.vue刀具领用功能中新增领用单提交功能 CuttingReceiveList.vue 刀具领用 提交按钮的前端样式和刀具领用归还按钮的前端样式 --- src/views/cms/CuttingReceiveList.vue | 622 ++++++++++++++++++++++++++++++++------------------------ 1 files changed, 354 insertions(+), 268 deletions(-) diff --git a/src/views/cms/CuttingReceiveList.vue b/src/views/cms/CuttingReceiveList.vue index 36899db..b99b965 100644 --- a/src/views/cms/CuttingReceiveList.vue +++ b/src/views/cms/CuttingReceiveList.vue @@ -1,108 +1,126 @@ <template> - <a-card :bordered="false"> - <!-- 鏌ヨ鍖哄煙 --> - <div class="table-page-search-wrapper"> - <a-form layout="inline" @keyup.enter.native="searchQuery"> - <a-row :gutter="24"> - <a-col :md="6" :sm="8"> - <a-form-item label="棰嗙敤鍗曠姸鎬�"> - <j-search-select-tag - placeholder="璇烽�夋嫨棰嗙敤鍗曠姸鎬�" - v-model="queryParam.orderStatus" - dict="order_status" - /> - </a-form-item> - </a-col> - <a-col :md="6" :sm="8"> - <a-form-item label="棰嗙敤浜�"> - <j-search-select-tag - placeholder="璇烽�夋嫨棰嗙敤浜�" - v-model="queryParam.receiver" - dict="sys_user,realname,id,del_flag!=1" - /> - </a-form-item> - </a-col> - <a-col - :md="6" - :sm="8" - > + <a-card :bordered="false"> + <!-- 鏌ヨ鍖哄煙 --> + <div class="table-page-search-wrapper"> + <a-form layout="inline" @keyup.enter.native="searchQuery"> + <a-row :gutter="24"> + <a-col :md="6" :sm="8"> + <a-form-item label="棰嗙敤鍗曠姸鎬�"> + <j-search-select-tag + placeholder="璇烽�夋嫨棰嗙敤鍗曠姸鎬�" + v-model="queryParam.orderStatus" + dict="order_status" + /> + </a-form-item> + </a-col> + <a-col :md="6" :sm="8"> + <a-form-item label="棰嗙敤浜�"> + <j-search-select-tag + placeholder="璇烽�夋嫨棰嗙敤浜�" + v-model="queryParam.receiver" + dict="sys_user,realname,id,del_flag!=1" + /> + </a-form-item> + </a-col> + <a-col + :md="6" + :sm="8" + > <span - style="float: left;overflow: hidden;" - class="table-page-search-submitButtons" + style="float: left;overflow: hidden;" + class="table-page-search-submitButtons" > <a-button - type="primary" - @click="searchQuery" - icon="search" + type="primary" + @click="searchQuery" + icon="search" >鏌ヨ</a-button> <a-button - type="primary" - @click="searchReset" - icon="reload" - style="margin-left: 8px" + type="primary" + @click="searchReset" + icon="reload" + style="margin-left: 8px" >閲嶇疆</a-button> </span> - </a-col> - </a-row> - </a-form> - </div> - <!-- 鏌ヨ鍖哄煙-END --> + </a-col> + </a-row> + </a-form> + </div> + <!-- 鏌ヨ鍖哄煙-END --> - <!-- 鎿嶄綔鎸夐挳鍖哄煙 --> - <div class="table-operator"> - <a-button @click="handleAdd" type="primary" icon="plus">鏂板</a-button> - <!-- <a-button type="primary" icon="download" @click="handleExportXls('鍒�鍏烽鐢ㄥ崟')">瀵煎嚭</a-button> - <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel"> - <a-button type="primary" icon="import">瀵煎叆</a-button> - </a-upload> --> - </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>椤� - <a style="margin-left: 24px" @click="onClearSelected">娓呯┖</a> + <!-- 鎿嶄綔鎸夐挳鍖哄煙 --> + <div class="table-operator"> + <a-button @click="handleAdd" type="primary" icon="plus">鏂板</a-button> + <!-- <a-button type="primary" icon="download" @click="handleExportXls('鍒�鍏烽鐢ㄥ崟')">瀵煎嚭</a-button> + <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel"> + <a-button type="primary" icon="import">瀵煎叆</a-button> + </a-upload> --> </div> - <a-table - ref="table" - size="middle" - :scroll="{x:true}" - bordered - rowKey="id" - :columns="columns" - :dataSource="dataSource" - :pagination="ipagination" - :loading="loading" - class="j-table-force-nowrap" - :customRow="customRow" - @change="handleTableChange"> + <!-- 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>椤� + <a style="margin-left: 24px" @click="onClearSelected">娓呯┖</a> + </div> - <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> + <a-table + ref="table" + size="middle" + :scroll="{x:true}" + bordered + rowKey="id" + :columns="columns" + :dataSource="dataSource" + :pagination="ipagination" + :loading="loading" + class="j-table-force-nowrap" + :customRow="customRow" + @change="handleTableChange"> - <span slot="action" slot-scope="text, record"> - <a @click="handleEdit(record)">缂栬緫</a> + <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>--> + + <span slot="action" slot-scope="text, record"> + <a @click="handleEdit(record)" :disabled="record.orderStatus === '2'">缂栬緫</a> <a-divider type="vertical" /> <a-dropdown> <a class="ant-dropdown-link">鏇村 <a-icon type="down" /></a> @@ -110,24 +128,35 @@ <a-menu-item> <a @click="handleDetail(record)">璇︽儏</a> </a-menu-item> - <a-menu-item> + <!-- <a-menu-item v-if="record.orderStatus != '2'">--> + <!-- <a-popconfirm title="纭畾鍒犻櫎鍚�?" @confirm="() => handleDelete(record.id)">--> + <!-- <a>鍒犻櫎</a>--> + <!-- </a-popconfirm>--> + <!-- </a-menu-item>--> + <a-menu-item v-if="record.orderStatus !== '2'"> + <a @click="handleSubmit(record.id)" :disabled="record.orderStatus === '3'">鎻愪氦</a> + </a-menu-item> + <a-menu-item v-if="record.orderStatus !== '2'"> <a-popconfirm title="纭畾鍒犻櫎鍚�?" @confirm="() => handleDelete(record.id)"> <a>鍒犻櫎</a> </a-popconfirm> + </a-menu-item> + <a-menu-item v-if="record.orderStatus === '2'"> + <a @click="handleBack(record.id)">褰掕繕</a> </a-menu-item> </a-menu> </a-dropdown> </span> - </a-table> - </div> - <a-tabs defaultActiveKey="1"> - <a-tab-pane tab="鍒�鍏烽鐢ㄦ槑缁�" key="1"> - <cutting-receive-detail-list ref="cuttingReceiveDetailList"></cutting-receive-detail-list> - </a-tab-pane> - </a-tabs> - <cutting-receive-modal ref="modalForm" @ok="modalFormOk"></cutting-receive-modal> - </a-card> + </a-table> + </div> + <a-tabs defaultActiveKey="1"> + <a-tab-pane tab="鍒�鍏烽鐢ㄦ槑缁�" key="1"> + <cutting-receive-detail-list ref="cuttingReceiveDetailList"></cutting-receive-detail-list> + </a-tab-pane> + </a-tabs> + <cutting-receive-modal ref="modalForm" @ok="modalFormOk"></cutting-receive-modal> + </a-card> </template> <script> @@ -137,178 +166,235 @@ import { JeecgListMixin } from '@/mixins/JeecgListMixin' import CuttingReceiveModal from './modules/CuttingReceiveModal' import CuttingReceiveDetailList from './CuttingReceiveDetailList' +import { httpAction } from '@api/manage' export default { - name: 'CuttingReceiveList', - mixins: [JeecgListMixin, mixinDevice], - components: { - CuttingReceiveModal, - CuttingReceiveDetailList - }, - 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: 'receiver_dictText' - }, - { - title: '棰嗙敤鏃堕棿', - align: 'center', - dataIndex: 'receiveTime', - customRender: function(text) { - return !text ? '' : (text.length > 10 ? text.substr(0, 10) : text) - } - }, - { - title: '棰嗙敤璇存槑', - align: 'center', - dataIndex: 'receiveComment' - }, - { - title: '纭浜�', - align: 'center', - dataIndex: 'confirmer_dictText' - }, - { - title: '纭鏃堕棿', - align: 'center', - dataIndex: 'confirmTime', - customRender: function(text) { - return !text ? '' : (text.length > 10 ? text.substr(0, 10) : text) - } - }, - { - title: '纭鎰忚', - align: 'center', - dataIndex: 'confirmComment' - }, - { - title: '鏄惁浼氬綊杩�', - align: 'center', - dataIndex: 'returnFlag' - }, - { - title: '褰掕繕鏃堕棿', - align: 'center', - dataIndex: 'returnTime', - customRender: function(text) { - return !text ? '' : (text.length > 10 ? text.substr(0, 10) : text) - } - }, - { - title: '褰掕繕璇存槑', - align: 'center', - dataIndex: 'returnComment' - }, - { - title: '褰掕繕纭浜�', - align: 'center', - dataIndex: 'returnConfirmer_dictText' - }, - { - title: '褰掕繕纭鏃堕棿', - align: 'center', - dataIndex: 'returnConfirmTime', - customRender: function(text) { - return !text ? '' : (text.length > 10 ? text.substr(0, 10) : text) - } - }, - { - title: '褰掕繕纭鎰忚', - align: 'center', - dataIndex: 'returnConfirmComment' - }, - { - title: '棰嗙敤鍗曠姸鎬�', - align: 'center', - dataIndex: 'orderStatus' - }, - { - title: '鎿嶄綔', - dataIndex: 'action', - align: 'center', - fixed: 'right', - width: 147, - scopedSlots: { customRender: 'action' } - } - ], - url: { - list: '/cms/cuttingReceive/list', - delete: '/cms/cuttingReceive/delete', - deleteBatch: '/cms/cuttingReceive/deleteBatch', - exportXlsUrl: '/cms/cuttingReceive/exportXls', - importExcelUrl: 'cms/cuttingReceive/importExcel' - - }, - dictOptions: {}, - superFieldList: [] - } - }, - created() { - this.getSuperFieldList() - }, - computed: { - importExcelUrl: function() { - return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}` - } - }, - methods: { - searchReset() { - this.queryParam = {} - this.$refs.cuttingReceiveDetailList.dataSource = [] - this.loadData(1) - }, - handleEdit: function(record) { - this.$refs.modalForm.edit(record) - this.$refs.modalForm.title = '缂栬緫' - this.$refs.modalForm.disableSubmit = false - }, - handleAdd() { - this.$refs.modalForm.add() - this.$refs.modalForm.title = '鏂板' - this.$refs.modalForm.disableSubmit = false - }, - handleDetail: function(record) { - this.$refs.modalForm.edit(record) - this.$refs.modalForm.title = '璇︽儏' - this.$refs.modalForm.disableSubmit = true - }, - customRow(record) { + name: 'CuttingReceiveList', + mixins: [JeecgListMixin, mixinDevice], + components: { + CuttingReceiveModal, + CuttingReceiveDetailList + }, + data() { return { - on: { - click: (e) => { - //灏嗗綋鍓嶉�変腑鐨勮褰曚紶鍒板瓙椤甸潰 - this.$bus.$emit('getToolingStorageData', record) - //鐐瑰嚮褰撳墠琛屽彉鑹� - let oldList = document.querySelectorAll('.checked-td-of-add-table') - if (oldList) { - for (let j = 0; j < oldList.length; j++) { - oldList[j].classList.remove('checked-td-of-add-table') - } + description: '鍒�鍏烽鐢ㄥ崟绠$悊椤甸潰', + // 琛ㄥご + columns: [ + { + title: '#', + dataIndex: '', + key: 'rowIndex', + width: 60, + align: 'center', + customRender: function(t, r, index) { + return parseInt(index) + 1 + } + }, + { + title: '棰嗙敤浜�', + align: 'center', + dataIndex: 'receiver_dictText' + }, + { + title: '棰嗙敤鏃堕棿', + align: 'center', + dataIndex: 'receiveTime', + customRender: function(text) { + return !text ? '' : (text.length > 10 ? text.substr(0, 10) : text) + } + }, + { + title: '棰嗙敤璇存槑', + align: 'center', + dataIndex: 'receiveComment' + }, + { + title: '纭浜�', + align: 'center', + dataIndex: 'confirmer_dictText' + }, + { + title: '纭鏃堕棿', + align: 'center', + dataIndex: 'confirmTime', + customRender: function(text) { + return !text ? '' : (text.length > 10 ? text.substr(0, 10) : text) + } + }, + { + title: '纭鎰忚', + align: 'center', + dataIndex: 'confirmComment' + }, + { + title: '鏄惁浼氬綊杩�', + align: 'center', + dataIndex: 'returnFlag' + }, + { + title: '褰掕繕鏃堕棿', + align: 'center', + dataIndex: 'returnTime', + customRender: function(text) { + return !text ? '' : (text.length > 10 ? text.substr(0, 10) : text) + } + }, + { + title: '褰掕繕璇存槑', + align: 'center', + dataIndex: 'returnComment' + }, + { + title: '褰掕繕纭浜�', + align: 'center', + dataIndex: 'returnConfirmer_dictText' + }, + { + title: '褰掕繕纭鏃堕棿', + align: 'center', + dataIndex: 'returnConfirmTime', + customRender: function(text) { + return !text ? '' : (text.length > 10 ? text.substr(0, 10) : text) + } + }, + { + title: '褰掕繕纭鎰忚', + align: 'center', + dataIndex: 'returnConfirmComment' + }, + { + title: '棰嗙敤鍗曠姸鎬�', + align: 'center', + dataIndex: 'orderStatus_dictText' + }, + { + title: '鎿嶄綔', + dataIndex: 'action', + align: 'center', + fixed: 'right', + width: 147, + scopedSlots: { customRender: 'action' } } - let children = e.target.parentNode.children - for (let i = 0; i < children.length; i++) { - children[i].classList.add('checked-td-of-add-table') - } - } - } + ], + url: { + list: '/cms/cuttingReceive/list', + delete: '/cms/cuttingReceive/delete', + deleteBatch: '/cms/cuttingReceive/deleteBatch', + exportXlsUrl: '/cms/cuttingReceive/exportXls', + importExcelUrl: 'cms/cuttingReceive/importExcel', + submit: '/cms/cuttingReceive/submit' + }, + dictOptions: {}, + superFieldList: [] } - } - } + }, + created() { + this.getSuperFieldList() + }, + computed: { + importExcelUrl: function() { + return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}` + } + }, + methods: { + searchReset() { + this.queryParam = {} + this.$refs.cuttingReceiveDetailList.dataSource = [] + this.loadData(1) + }, + handleEdit: function(record) { + this.$refs.modalForm.edit(record) + this.$refs.modalForm.title = '缂栬緫' + this.$refs.modalForm.disableSubmit = false + }, + handleAdd() { + this.$refs.modalForm.add() + this.$refs.modalForm.title = '鏂板' + this.$refs.modalForm.disableSubmit = false + }, + handleDetail: function(record) { + this.$refs.modalForm.edit(record) + this.$refs.modalForm.title = '璇︽儏' + this.$refs.modalForm.disableSubmit = true + }, + customRow(record) { + return { + on: { + click: (e) => { + //灏嗗綋鍓嶉�変腑鐨勮褰曚紶鍒板瓙椤甸潰 + this.$bus.$emit('getToolingStorageData', record) + //鐐瑰嚮褰撳墠琛屽彉鑹� + let oldList = document.querySelectorAll('.checked-td-of-add-table') + if (oldList) { + for (let j = 0; j < oldList.length; j++) { + oldList[j].classList.remove('checked-td-of-add-table') + } + } + let children = e.target.parentNode.children + for (let i = 0; i < children.length; i++) { + children[i].classList.add('checked-td-of-add-table') + } + } + } + } + }, + + /** + * 鍗曟嵁鎻愪氦 + */ + handleSubmit: function(id) { + if (!this.url.submit) { + this.$message.error('璇疯缃畊rl.submit灞炴��!') + return + } + + let targetId = id // 浠庡弬鏁拌幏鍙朓D + // 濡傛灉娌℃湁閫氳繃鍙傛暟浼犻�扞D锛屽垯妫�鏌ラ�変腑鐨勮褰� + if (!targetId) { + if (this.selectedRowKeys.length != 1) { + this.$message.warning('璇烽�夋嫨涓�鏉¤褰曪紒') + return + } else { + targetId = this.selectedRowKeys[0] + } + } + + // 灏嗗弬鏁颁綔涓烘煡璇㈠弬鏁伴檮鍔犲埌URL涓� + let httpurl = this.url.submit + '?orderId=' + encodeURIComponent(targetId) + let method = 'get' + var params = {} // 娓呯┖params锛屽洜涓哄弬鏁板凡缁忓湪URL涓紶閫� + + const that = this + + this.$confirm({ + title: '纭鎻愪氦锛�', + // content: '姝e湪鎻愪氦鏁版嵁锛岃鑰愬績绛夊緟...', + okText: '纭', + cancelText: '鍙栨秷', + onOk() { + // 鏄剧ず鍔犺浇鎻愮ず + const hide = that.$message.loading('姝e湪鎻愪氦鏁版嵁锛岃鑰愬績绛夊緟...', 0) + + // 鍙戦�佽姹� + return httpAction(httpurl, params, method).then((res) => { + hide() // 闅愯棌鍔犺浇鎻愮ず + if (res.success) { + that.$message.success(res.message) + that.loadData() + } else { + that.$message.warning(res.message) + } + }).catch(error => { + hide() // 闅愯棌鍔犺浇鎻愮ず + that.$message.error('鎻愪氦澶辫触: ' + error.message) + }).finally(() => { + that.loading = false + }) + } + }) + }, + //TODO锛氬垁鍏峰綊杩� handleBack + } } </script> <style scoped> -- Gitblit v1.9.3