From 575a75a0519e53ceec6bb5d31f682124596c3bae Mon Sep 17 00:00:00 2001 From: zenglf <18502938215@163.com> Date: 星期二, 24 十月 2023 10:57:34 +0800 Subject: [PATCH] Merge branch 'master' of http://117.34.109.166:18448/r/vue_mdc_430 into develop --- src/views/system/WorkshopSignageManagement.vue | 501 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 501 insertions(+), 0 deletions(-) diff --git a/src/views/system/WorkshopSignageManagement.vue b/src/views/system/WorkshopSignageManagement.vue new file mode 100644 index 0000000..1572098 --- /dev/null +++ b/src/views/system/WorkshopSignageManagement.vue @@ -0,0 +1,501 @@ +<template> + <a-row :gutter="10"> + <a-col :md="leftColMd" :sm="24" style="margin-bottom: 20px"> + <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="12" :sm="8"> + <a-form-item label="杞﹂棿鍚嶇О" :labelCol="{ span: 5 }" :wrapperCol="{ span: 18, offset: 1 }"> + <a-input placeholder="" v-model="queryParam.workshopName"></a-input> + </a-form-item> + </a-col> + <span style="float: left; overflow: hidden" class="table-page-search-submitButtons"> + <a-col :md="12" :sm="24"> + <a-button type="primary" @click="searchQuery" icon="search" style="margin-left: 21px">鏌ヨ</a-button> + <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">閲嶇疆</a-button> + </a-col> + </span> + </a-row> + </a-form> + </div> + <!-- 鎿嶄綔鎸夐挳鍖哄煙 --> + <div class="table-operator" style="margin: 5px 0 10px 2px"> + <a-button @click="handleAdd" type="primary" icon="plus">鏂板缓杞﹂棿</a-button> + </div> + + <div class="ant-alert ant-alert-info" style="margin-bottom: 16px"> + <i class="anticon anticon-info-circle ant-alert-icon"> </i> 宸查�夋嫨 + <a + ><b>{{ selectedRowKeys1.length }}</b></a + >椤� + <a style="margin-left: 24px" @click="onClearSelected1">娓呯┖</a> + </div> + + <div style="margin-top: 15px"> + <a-table + style="height: 500px" + ref="table" + size="middle" + bordered + rowKey="id" + :columns="columns" + :dataSource="dataSource" + :pagination="ipagination" + :loading="loading" + :rowSelection="{ selectedRowKeys: selectedRowKeys1, onChange: onSelectChange1, type: 'radio' }" + @change="handleTableChange" + > + <template slot="backgroundImage" slot-scope="text, record"> + <img :src="getImgView(record.backgroundImage)" width="50" height="50" /> + </template> + <span slot="action" slot-scope="text, record"> + <a @click="handleOpen(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="handleEdit(record)">缂栬緫</a> + </a-menu-item> + <a-menu-item> + <a-popconfirm title="纭畾鍒犻櫎鍚�?" @confirm="() => handleDelete1(record.id)"> + <a>鍒犻櫎</a> + </a-popconfirm> + </a-menu-item> + </a-menu> + </a-dropdown> + </span> + </a-table> + </div> + </a-card> + </a-col> + <a-col :md="rightColMd" :sm="24" v-if="this.rightcolval == 1"> + <a-card :bordered="false"> + <div style="text-align: right"> + <a-icon type="close-circle" @click="hideUserList" /> + </div> + <!-- 鏌ヨ鍖哄煙 --> + <div class="table-page-search-wrapper"> + <a-form layout="inline"> + <a-row :gutter="24"> + <a-col :md="12" :sm="12"> + <a-form-item label="璁惧缂栫爜"> + <a-input placeholder="" v-model="queryParam2.equipmentId"></a-input> + </a-form-item> + </a-col> + <span style="float: left; overflow: hidden" class="table-page-search-submitButtons"> + <a-col :md="9" :sm="24"> + <a-button type="primary" @click="searchQuery2" icon="search" style="margin-left: 21px">鏌ヨ</a-button> + <a-button type="primary" @click="searchReset2" icon="reload" style="margin-left: 8px">閲嶇疆</a-button> + </a-col> + </span> + </a-row> + </a-form> + </div> + <!-- 鎿嶄綔鎸夐挳鍖哄煙 --> + <div class="table-operator" :md="24" :sm="24"> + <a-button @click="handleAddDeviceInWorkshop" type="primary" icon="plus" style="margin-top: 16px" + >宸叉湁璁惧 + </a-button> + + <a-dropdown v-if="selectedRowKeys2.length > 0"> + <a-menu slot="overlay"> + <a-menu-item key="1" @click="batchDel2"> + <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">{{ selectedRowKeys2.length }}</a + >椤� + <a style="margin-left: 24px" @click="onClearSelected2">娓呯┖</a> + </div> + <a-table + style="height: 500px" + ref="table2" + bordered + size="middle" + rowKey="equipmentId" + :columns="columns2" + :dataSource="dataSource2" + :pagination="ipagination2" + :loading="loading2" + :rowSelection="{ selectedRowKeys: selectedRowKeys2, onChange: onSelectChange2 }" + @change="handleTableChange2" + > + <span slot="action" slot-scope="text, record"> + <a-popconfirm title="纭畾鍒犻櫎鍚�?" @confirm="() => handleDelete2(record.equipmentId)"> + <a>鍒犻櫎</a> + </a-popconfirm> + </span> + </a-table> + </div> + </a-card> + </a-col> + <!-- 琛ㄥ崟鍖哄煙 --> + <workshop-modal ref="modalForm" @ok="modalFormOk"></workshop-modal> + <!--鏂板杞﹂棿--> + <select-device-modal ref="selectUserModal" @selectFinished="selectOK"></select-device-modal> + <!--宸叉湁璁惧--> + </a-row> +</template> +<script> +import { JeecgListMixin } from '@/mixins/JeecgListMixin' +import { deleteAction, postAction, getAction } from '@/api/manage' +import SelectDeviceModal from './modules/SelectDeviceModal' +import WorkshopModal from './modules/WorkshopModal' +import { filterObj } from '@/utils/util' +import moment from 'moment' + +export default { + name: 'WorkshopSignageManagement', + mixins: [JeecgListMixin], + components: { + SelectDeviceModal, + WorkshopModal, + moment, + }, + data() { + return { + model1: {}, + model2: {}, + currentRoleId: '', + currentWorkshopId: '', + queryParam1: {}, + queryParam2: {}, + dataSource1: [], + dataSource2: [], + ipagination1: { + current: 1, + pageSize: 10, + pageSizeOptions: ['10', '20', '30'], + showTotal: (total, range) => { + return range[0] + '-' + range[1] + ' 鍏�' + total + '鏉�' + }, + showQuickJumper: true, + showSizeChanger: true, + total: 0, + }, + ipagination2: { + current: 1, + pageSize: 10, + pageSizeOptions: ['10', '20', '30'], + showTotal: (total, range) => { + return range[0] + '-' + range[1] + ' 鍏�' + total + '鏉�' + }, + showQuickJumper: true, + showSizeChanger: true, + total: 0, + }, + isorter1: { + column: 'createTime', + order: 'desc', + }, + isorter2: { + column: 'createTime', + order: 'desc', + }, + filters1: {}, + filters2: {}, + loading1: false, + loading2: false, + selectedRowKeys1: [], + selectedRowKeys2: [], + selectionRows1: [], + selectionRows2: [], + test: {}, + rightcolval: 0, + columns: [ + { + title: '杞﹂棿鍚嶇О', + align: 'center', + dataIndex: 'workshopName', + }, + { + title: '杞﹂棿鑳屾櫙鍥�', + dataIndex: 'backgroundImage', + align: 'center', + scopedSlots: { customRender: 'backgroundImage' }, + }, + { + title: '鎿嶄綔', + dataIndex: 'action', + align: 'center', + scopedSlots: { customRender: 'action' }, + }, + ], + columns2: [ + { + title: '璁惧缂栫爜', + align: 'center', + dataIndex: 'equipmentId', + width: 120, + }, + { + title: '璁惧鍚嶇О', + align: 'center', + width: 100, + dataIndex: 'equipmentName', + }, + { + title: '璁惧绫诲瀷', + align: 'center', + width: 80, + dataIndex: 'equipmentType', + }, + + { + title: '鎿嶄綔', + dataIndex: 'action', + scopedSlots: { customRender: 'action' }, + align: 'center', + width: 120, + }, + ], + // 楂樼骇鏌ヨ鍙傛暟 + superQueryParams2: '', + // 楂樼骇鏌ヨ鎷兼帴鏉′欢 + superQueryMatchType2: 'and', + url: { + list: '/mdc/mdcWorkshopInfo/list', + delete: '/mdc/mdcWorkshopInfo/delete', + list2: '/mdc/mdcWorkshopInfo/workshopEquipmentList', + addDeviceInWorkshop: '/mdc/mdcWorkshopInfo/addWorkshopEquipment', + delete2: '/mdc/mdcWorkshopInfo/deleteWorkshopEquipment', + deleteBatch2: '/mdc/mdcWorkshopInfo/deleteWorkshopEquipmentBatch', + }, + } + }, + computed: { + leftColMd() { + return this.selectedRowKeys1.length === 0 ? 24 : 12 + }, + rightColMd() { + return this.selectedRowKeys1.length === 0 ? 0 : 12 + }, + }, + methods: { + onSelectChange2(selectedRowKeys, selectionRows) { + this.selectedRowKeys2 = selectedRowKeys + this.selectionRows2 = selectionRows + }, + onClearSelected2() { + this.selectedRowKeys2 = [] + this.selectionRows2 = [] + }, + onClearSelected1() { + this.selectedRowKeys1 = [] + this.selectionRows1 = [] + }, + onSelectChange1(selectedRowKeys, selectionRows) { + this.rightcolval = 1 + this.selectedRowKeys1 = selectedRowKeys + this.selectionRows1 = selectionRows + this.model1 = Object.assign({}, selectionRows[0]) + this.currentWorkshopId = selectedRowKeys[0] + this.loadData2() + }, + getQueryParams2() { + //鑾峰彇鏌ヨ鏉′欢 + let sqp = {} + if (this.superQueryParams2) { + sqp['superQueryParams'] = encodeURI(this.superQueryParams2) + sqp['superQueryMatchType'] = this.superQueryMatchType2 + } + var param = Object.assign(sqp, this.queryParam2, this.isorter2, this.filters2) + param.field = this.getQueryField2() + param.pageNo = this.ipagination2.current + param.pageSize = this.ipagination2.pageSize + return filterObj(param) + }, + getQueryField2() { + //TODO 瀛楁鏉冮檺鎺у埗 + var str = 'id,' + this.columns2.forEach(function (value) { + str += ',' + value.dataIndex + }) + return str + }, + modalFormOk2() { + // 鏂板/淇敼 鎴愬姛鏃讹紝閲嶈浇鍒楄〃 + this.loadData2() + }, + loadData2(arg) { + if (!this.url.list2) { + this.$message.error('璇疯缃畊rl.list2灞炴��!') + return + } + //鍔犺浇鏁版嵁 鑻ヤ紶鍏ュ弬鏁�1鍒欏姞杞界涓�椤电殑鍐呭 + if (arg === 1) { + this.ipagination2.current = 1 + } + if (this.currentWorkshopId === '') return + let params = this.getQueryParams2() //鏌ヨ鏉′欢 + params.workshopId = this.currentWorkshopId + this.loading2 = true + getAction(this.url.list2, params).then((res) => { + if (res.success) { + this.dataSource2 = res.result.records + this.ipagination2.total = res.result.total + } + this.loading2 = false + }) + }, + handleDelete1: function (id) { + this.handleDelete(id) + this.dataSource2 = [] + this.currentRoleId = '' + }, + + /** + * 鐐瑰嚮璁惧琛ㄦ牸涓殑鍒犻櫎鎸夐挳鍚庤Е鍙戝垹闄ゅ崟涓溅闂翠笌璁惧鐨勫叧绯� + * @param equipmentId 褰撳墠琛岀殑璁惧缂栧彿 + */ + handleDelete2: function (equipmentId) { + if (!this.url.delete2) { + this.$message.error('璇疯缃畊rl.delete2灞炴��!') + return + } + var that = this + deleteAction(that.url.delete2, { workshopId: this.currentWorkshopId, equipmentId }).then((res) => { + if (res.success) { + that.$message.success(res.message) + that.loadData2() + } else { + that.$message.warning(res.message) + } + }) + }, + + /** + * 鎵归噺鍒犻櫎杞﹂棿涓庤澶囩殑鍏崇郴 + */ + batchDel2: function () { + if (!this.url.deleteBatch2) { + this.$message.error('璇疯缃畊rl.deleteBatch2灞炴��!') + return + } + if (this.selectedRowKeys2.length <= 0) { + // this.$message.warning('璇烽�夋嫨涓�鏉¤褰曪紒') + this.$notification.warning({ + message: '娑堟伅', + description: '璇烽�夋嫨涓�鏉¤褰�', + }) + return + } else { + var ids = '' + for (var a = 0; a < this.selectedRowKeys2.length; a++) { + ids += this.selectedRowKeys2[a] + ',' + } + var that = this + this.$confirm({ + title: '纭鍒犻櫎', + content: '鏄惁鍒犻櫎閫変腑鏁版嵁?', + onOk: function () { + deleteAction(that.url.deleteBatch2, { + workshopId: that.currentWorkshopId, + equipmentIds: ids, + }).then((res) => { + if (res.success) { + that.$message.success(res.message) + that.loadData2() + that.onClearSelected() + } else { + that.$message.warning(res.message) + } + }) + }, + }) + } + }, + + /** + * 閫夋嫨宸叉湁璁惧鍚庣偣鍑荤‘瀹氭椂瑙﹀彂 + * @param data 宸查�夋嫨鐨勮澶� + */ + selectOK(data) { + let params = {} + params.workshopId = this.currentWorkshopId + params.equipmentIdList = [] + for (var a = 0; a < data.length; a++) { + params.equipmentIdList.push(data[a]) + } + console.log(params) + postAction(this.url.addDeviceInWorkshop, params).then((res) => { + if (res.success) { + this.loadData2() + this.$message.success(res.message) + } else { + this.$message.warning(res.message) + } + }) + }, + + /** + * 鐐瑰嚮宸叉湁璁惧鎸夐挳瑙﹀彂 + */ + handleAddDeviceInWorkshop() { + if (this.currentWorkshopId == '') { + this.$message.error('璇烽�夋嫨涓�涓溅闂�!') + } else { + this.$refs.selectUserModal.visible = true + this.$refs.selectUserModal.selectedRowKeys = [] + this.$refs.selectUserModal.selectedRows = [] + } + }, + + /** + * 鐐瑰嚮褰撳墠琛岃溅闂撮�夐」鍚庤Е鍙戜簨浠� + * @param record 褰撳墠琛屾暟鎹� + */ + handleOpen(record) { + this.rightcolval = 1 + this.selectedRowKeys1 = [record.id] + this.model1 = Object.assign({}, record) + this.currentWorkshopId = record.id + this.onClearSelected2() + this.loadData2() + }, + + searchQuery2() { + this.loadData2(1) + }, + searchReset2() { + this.queryParam2 = {} + this.loadData2(1) + }, + handleTableChange2(pagination, filters, sorter) { + //鍒嗛〉銆佹帓搴忋�佺瓫閫夊彉鍖栨椂瑙﹀彂 + //TODO 绛涢�� + if (Object.keys(sorter).length > 0) { + this.isorter2.column = sorter.field + this.isorter2.order = 'ascend' == sorter.order ? 'asc' : 'desc' + } + this.ipagination2 = pagination + this.loadData2() + }, + hideUserList() { + //this.rightcolval = 0 + this.selectedRowKeys1 = [] + }, + }, +} +</script> +<style scoped> +/** Button鎸夐挳闂磋窛 */ +.ant-btn { + margin-left: 8px; +} +</style> \ No newline at end of file -- Gitblit v1.9.3