Merge remote-tracking branch 'origin/master'
| | |
| | | // ææ´¾ææ¡£å°è®¾å¤ |
| | | assignDocumentToDeviceApi: params => postAction('/nc/activit/assign/file/apply', params), |
| | | // æååå
· |
| | | extractToolsApi: ({ docId,attributionType, attributionId}) => getAction(`/nc/cutter/extractCutterInfo/${docId}/${attributionType}/${attributionId}`), |
| | | extractToolsApi: ({ docId, attributionType, attributionId }) => getAction(`/nc/cutter/extractCutterInfo/${docId}/${attributionType}/${attributionId}`), |
| | | // åéåå
·ç³»ç» |
| | | sendToolsApi: ({ docId,attributionType, attributionId}) => getAction(`/nc/cutter/sendCutterInfo/${docId}/${attributionType}/${attributionId}`), |
| | | sendToolsApi: ({ docId, attributionType, attributionId }) => getAction(`/nc/cutter/sendCutterInfo/${docId}/${attributionType}/${attributionId}`), |
| | | // ä¸è½½ææ¡£ |
| | | downloadDocumentApi: ({ docId, docName }) => requestGetDownLoad(`/nc/doc/download/${docId}`, docName), |
| | | // å é¤ææ¡£ |
| | | deleteDocumentApi: ({ docId,attributionType, attributionId}) => deleteAction(`/nc/doc/delete/${docId}/${attributionType}/${attributionId}`), |
| | | deleteDocumentApi: ({ docId, attributionType, attributionId }) => deleteAction(`/nc/doc/delete/${docId}/${attributionType}/${attributionId}`), |
| | | // ææ¡£åºåº |
| | | documentOutboundApi: ({ docId, docName }) => requestGetDownLoad(`/nc/doc/pull/${docId}`, docName), |
| | | // ææ¡£åæ¶åºåº |
| | |
| | | //-------------------------设å¤ç»ææ ------------------------------------------------ |
| | | // è·åè®¾å¤æ |
| | | getDeviceTreeDataApi: () => getAction('/nc/device/queryTreeListByProduction'), |
| | | // è·å产åç»ææ 宿´å±çº§å°NCæä»¶ |
| | | getAllProductTreeDataApi: () => getAction('/nc/product/getAllTree'), |
| | | // ææ´¾å°äº§å |
| | | assignNcToProductApi: params => postAction('/dncFlow/assignEquipmentFileStream/savaFlow', params), |
| | | // å é¤ææ¡£ |
| | | deleteDeviceRelativeDocumentApi: ({ docId, attributionId }) => deleteAction(`doc/relative/delete/device/${docId}/${attributionId}`), |
| | | // è·åææéçç¨æ·å表 |
| | |
| | | currentRightClickedTableRowInfo: {}, |
| | | hasLoadedDataTabKeyArray: [], |
| | | url:{ |
| | | submitProccess:'/dncFlow/dispatchFile/submitProccess' |
| | | |
| | | } |
| | | } |
| | | }, |
| | |
| | | description: res.message |
| | | }) |
| | | } |
| | | }) |
| | | .finally(() => { |
| | | that.$destroyAll() |
| | | }) |
| | | }, |
| | | onCancel: () => { |
| | | that.$destroyAll() |
| | | } |
| | | }) |
| | | }, |
| | | handleAppoint(){ |
| | | const that = this |
| | | const { docId, param, attributionId,attributionType,publishFileId } = this.currentRightClickedTableRowInfo |
| | | that.$confirm({ |
| | | title: 'æç¤º', |
| | | content: `确认å®ååï¼`, |
| | | okText: '确认', |
| | | cancelText: 'åæ¶', |
| | | onOk: () => { |
| | | let dispatchFile = { |
| | | 'docId':docId, |
| | | 'attributionId':attributionId, |
| | | 'attributionType':attributionType, |
| | | 'fileId':publishFileId |
| | | } |
| | | postAction(this.url.submitProccess,dispatchFile) |
| | | .then(res => { |
| | | if (res.success) { |
| | | this.$message.success('æµç¨åèµ·æå') |
| | | } else { |
| | | that.$notification.error({ |
| | | message: 'æ¶æ¯', |
| | | description: res.message |
| | | }) |
| | | } |
| | | }) |
| | | .catch(err => { |
| | | that.$notification.error({ |
| | | message: 'æ¶æ¯', |
| | | description: err.message |
| | | }) |
| | | }) |
| | | .finally(() => { |
| | | that.$destroyAll() |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <j-modal width="85%" :title="title" :visible="visible" @cancel="handleCancel" :maskClosable="false" centered |
| | | @ok="handleAssignDocumentToDevice" :confirmLoading="confirmLoading"> |
| | | <div class="tabs-container"> |
| | | <div style="width: 72%"> |
| | | <a-tabs> |
| | | <a-tab-pane tab="ææ¡£å表"> |
| | | <div class="table-page-search-wrapper"> |
| | | <a-form layout="inline" @keyup.enter.native="searchQuery"> |
| | | <a-row :gutter="24"> |
| | | <a-col :md="7" :sm="7"> |
| | | <a-form-item label="æä»¶åç§°"> |
| | | <a-input placeholder="请è¾å
¥æä»¶åç§°" v-model="queryParam.docName" allow-clear></a-input> |
| | | </a-form-item> |
| | | </a-col> |
| | | |
| | | <a-col :md="9" :sm="9"> |
| | | <a-form-item label="ä¸ä¼ æ¶é´"> |
| | | <a-range-picker v-model="date" value-format="YYYY-MM-DD" |
| | | @change="handleDateChange" allow-clear></a-range-picker> |
| | | </a-form-item> |
| | | </a-col> |
| | | |
| | | <a-col :md="4" :sm="4"> |
| | | <a-button type="primary" @click="searchQuery" icon="search">æ¥è¯¢</a-button> |
| | | </a-col> |
| | | </a-row> |
| | | </a-form> |
| | | </div> |
| | | |
| | | |
| | | <a-table :columns="columns" :data-source="dataSource" bordered :pagination="false" :loading="loading" |
| | | :rowSelection="{selectedRowKeys: selectedRowKeys,selectedRows:selectionRows, onChange: onSelectChange,type:'radio'}" |
| | | @change="handleTableChange" :customRow="customRow" |
| | | :scroll="{y:456}" :size="size" rowKey="docId"> |
| | | |
| | | <!-- å符串è¶
é¿æªåçç¥å·æ¾ç¤º--> |
| | | <span slot="docName" slot-scope="text"> |
| | | <j-ellipsis :value="text"/> |
| | | </span> |
| | | </a-table> |
| | | </a-tab-pane> |
| | | </a-tabs> |
| | | </div> |
| | | |
| | | <div style="width: 26%"> |
| | | <a-tabs> |
| | | <a-tab-pane tab="设å¤å表"> |
| | | <a-spin :spinning="spinning"> |
| | | <div style="display: flex;flex-direction: column;"> |
| | | <div style="display: flex"> |
| | | <a-input placeholder="è¾å
¥å
³é®åè¿è¡æç´¢" allowClear v-model="searchInput" |
| | | @change="handleSearchInputChange"/> |
| | | <a-button type="primary" @click="isExpandAllTreeNode=!isExpandAllTreeNode" style="margin: 0 8px"> |
| | | å±å¼/æå |
| | | </a-button> |
| | | </div> |
| | | |
| | | <!--产åç»ææ --> |
| | | <div style="overflow:auto;margin-top: 10px;height: 400px"> |
| | | <a-tree blockNode checkable :checkedKeys="checkedKeys" :expandedKeys.sync="expandedKeys" |
| | | :autoExpandParent="autoExpandParent" @select="handleTreeNodeSelect" checkStrictly |
| | | :treeData="treeDataSource" @check="handleTreeNodeCheck" @expand="handleTreeNodeExpand"> |
| | | <template slot="title" slot-scope="{ label, parentId, entity, key:treeKey,type}"> |
| | | <a-tooltip :title="label" v-if="type==99"> |
| | | <span v-if="label.indexOf(searchValue) > -1"> |
| | | {{ label.substr(0, label.indexOf(searchValue)) }} |
| | | <span class="replaceSearch">{{searchValue}}</span> |
| | | {{ label.substr(label.indexOf(searchValue) + searchValue.length) }} |
| | | </span> |
| | | <span v-else>{{ label }}</span> |
| | | </a-tooltip> |
| | | <template v-else> |
| | | <span v-if="label.indexOf(searchValue) > -1"> |
| | | {{ label.substr(0, label.indexOf(searchValue)) }} |
| | | <span class="replaceSearch">{{searchValue}}</span> |
| | | {{ label.substr(label.indexOf(searchValue) + searchValue.length) }} |
| | | </span> |
| | | <span v-else>{{ label }}</span> |
| | | </template> |
| | | </template> |
| | | </a-tree> |
| | | </div> |
| | | |
| | | <a-form-model ref="form" :rules="validateRules" :model="queryParam"> |
| | | <a-form-model-item label="ææ´¾åå " prop="applyReason"> |
| | | <a-textarea placeholder="请è¾å
¥ææ´¾åå " v-model="queryParam.applyReason" rows="3" style="resize: none"/> |
| | | </a-form-model-item> |
| | | </a-form-model> |
| | | </div> |
| | | </a-spin> |
| | | </a-tab-pane> |
| | | </a-tabs> |
| | | </div> |
| | | </div> |
| | | </j-modal> |
| | | </template> |
| | | |
| | | <script> |
| | | import { getAction } from '@/api/manage' |
| | | import dncApi from '@/api/dnc' |
| | | import { JeecgListMixin } from '@/mixins/JeecgListMixin' |
| | | |
| | | export default { |
| | | name: 'HasReceivedDocumentAssignModal', |
| | | components: {}, |
| | | mixins: [JeecgListMixin], |
| | | props: { |
| | | currentDocumentInfo: { |
| | | type: Object |
| | | }, |
| | | currentTreeNodeInfo: { |
| | | type: Object |
| | | }, |
| | | size: { |
| | | type: String |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | | disableMixinCreated: true, |
| | | visible: false, |
| | | title: '', |
| | | columns: [ |
| | | { |
| | | title: 'åºå·', |
| | | dataIndex: 'rowIndex', |
| | | key: 'rowIndex', |
| | | width: 65, |
| | | align: 'center', |
| | | customRender: function(t, r, index) { |
| | | return parseInt(index) + 1 |
| | | } |
| | | }, |
| | | { |
| | | title: 'æä»¶åç§°', |
| | | dataIndex: 'docName', |
| | | key: 'docName', |
| | | align: 'center', |
| | | scopedSlots: { customRender: 'docName' }, |
| | | sorter: true |
| | | }, |
| | | { title: '设å¤ç¼å·', dataIndex: 'docCode', align: 'center' }, |
| | | { |
| | | title: 'åºåºç¶æ', |
| | | dataIndex: 'pullStatus_dictText', |
| | | key: 'pullStatus', |
| | | align: 'center', |
| | | filters: [ |
| | | { text: 'æªåºåº', value: 1 }, |
| | | { text: 'å·²åºåº', value: 2 } |
| | | ] |
| | | }, |
| | | { |
| | | title: 'ç¶ æ', |
| | | dataIndex: 'docDispatchStatus_dictText', |
| | | key: 'docDispatchStatus', |
| | | align: 'center', |
| | | filters: [ |
| | | { text: 'ç¼å¶', value: 1 }, |
| | | { text: 'æ ¡å¯¹', value: 2 }, |
| | | { text: 'æ¹å', value: 3 }, |
| | | { text: 'è¯å', value: 4 }, |
| | | { text: 'å®å', value: 5 } |
| | | ] |
| | | }, |
| | | { |
| | | title: 'å建æ¶é´', |
| | | dataIndex: 'createTime', |
| | | align: 'center', |
| | | width: 200, |
| | | sorter: true |
| | | } |
| | | ], |
| | | validateRules: { |
| | | applyReason: [ |
| | | { required: true, message: '请è¾å
¥ææ´¾åå ' } |
| | | ] |
| | | }, |
| | | searchValue: '', |
| | | searchInput: '', |
| | | spinning: false, |
| | | treeDataSource: [], |
| | | allTreeKeys: [], |
| | | checkedKeys: [], |
| | | expandedKeys: [], |
| | | autoExpandParent: true, |
| | | isExpandAllTreeNode: false, |
| | | confirmLoading: false, |
| | | date: [], |
| | | url: { |
| | | list: '/nc/doc/find/list' |
| | | } |
| | | } |
| | | }, |
| | | watch: { |
| | | visible: { |
| | | handler(value) { |
| | | if (value) { |
| | | this.resetData() |
| | | this.loadData() |
| | | this.getDocumentAssignDeviceTreeByApi() |
| | | } |
| | | } |
| | | }, |
| | | isExpandAllTreeNode: { |
| | | handler(value) { |
| | | if (value) this.expandedKeys = this.allTreeKeys |
| | | else this.expandedKeys = [] |
| | | } |
| | | } |
| | | }, |
| | | created() { |
| | | this.$bus.$on('treeMenuItemMethodTrigger', this.triggerCorrespondingMethod) |
| | | }, |
| | | beforeDestroy() { |
| | | this.$bus.$off('treeMenuItemMethodTrigger', this.triggerCorrespondingMethod) |
| | | }, |
| | | methods: { |
| | | // è®¾å¤æ å³é®èåææ´¾å°äº§åå¼¹çª |
| | | handleDeviceRecAssign() { |
| | | this.visible = true |
| | | }, |
| | | |
| | | // è·åå½åå·¥åºæå·¥æ¥å¯¹åºææ¡£å表 |
| | | loadData() { |
| | | this.dataSource = [] |
| | | if (!this.url.list) { |
| | | this.$message.error('请设置url.list屿§!') |
| | | return |
| | | } |
| | | var params = this.getQueryParams()//æ¥è¯¢æ¡ä»¶ |
| | | if (!params) return false |
| | | let paramType, paramId |
| | | if (this.currentTreeNodeInfo) { |
| | | const { key, type } = this.currentTreeNodeInfo |
| | | paramType = type |
| | | paramId = key |
| | | } else if (this.currentDocumentInfo) { |
| | | const { attributionType, attributionId } = this.currentDocumentInfo |
| | | paramType = attributionType |
| | | paramId = attributionId |
| | | } |
| | | |
| | | params.attributionType = paramType |
| | | params.attributionId = paramId |
| | | params.docClassCode = 'REC' |
| | | this.loading = true |
| | | getAction(this.url.list, params) |
| | | .then((res) => { |
| | | if (res.success) this.dataSource = res.result |
| | | else this.$message.warning(res.message) |
| | | }).finally(() => { |
| | | this.loading = false |
| | | }) |
| | | }, |
| | | |
| | | /** |
| | | * èªå®ä¹è¡¨æ ¼è¡ |
| | | * @param record è¡¨æ ¼è¡è®°å½ |
| | | */ |
| | | customRow(record) { |
| | | return { |
| | | style: { |
| | | cursor: 'pointer' |
| | | }, |
| | | on: { |
| | | click: () => { |
| | | this.onSelectChange([record.docId], [record]) |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | |
| | | // è·åDNCäº§åæ |
| | | getDocumentAssignDeviceTreeByApi() { |
| | | this.spinning = true |
| | | this.treeDataSource = [] |
| | | dncApi.getAllProductTreeDataApi() |
| | | .then(res => { |
| | | if (res.success) { |
| | | this.dataList = [] |
| | | this.allTreeKeys = [] |
| | | this.treeDataSource = res.result |
| | | console.log('treeDataSource', res.result) |
| | | this.generateList(this.treeDataSource) |
| | | this.expandedKeys = [this.treeDataSource[0].id] |
| | | } else { |
| | | this.$message.warn(res.message) |
| | | } |
| | | }) |
| | | .finally(() => { |
| | | this.spinning = false |
| | | }) |
| | | }, |
| | | |
| | | // æ¶é´éæ©å¨éæ©å®æå触å |
| | | handleDateChange(value) { |
| | | this.queryParam.startTime = value[0] |
| | | this.queryParam.endTime = value[1] |
| | | }, |
| | | |
| | | /** |
| | | * è¡¨æ ¼å页ãæåºæ¹åãçéæ¶è§¦å |
| | | * @param pagination å页å¨é项 |
| | | * @param filters çéé项 |
| | | * @param sorter æåºé项 |
| | | */ |
| | | handleTableChange(pagination, filters, sorter) { |
| | | if (sorter.order) { |
| | | this.isorter.column = sorter.field |
| | | this.isorter.order = sorter.order === 'ascend' ? 'asc' : 'desc' |
| | | } else { |
| | | this.isorter.column = 'createTime' |
| | | this.isorter.order = 'desc' |
| | | } |
| | | for (let key in filters) { |
| | | this.filters[key] = filters[key].join(',') |
| | | } |
| | | this.loadData() |
| | | }, |
| | | |
| | | // ææ´¾å°äº§åçªå£ç¹å»ç¡®å®ææ´¾è®¾å¤å触å |
| | | handleAssignDocumentToDevice() { |
| | | const { checkedKeys, selectionRows, selectedRowKeys, $confirm, $notification, queryParam: { applyReason }, $destroyAll, handleCancel } = this |
| | | |
| | | if (checkedKeys.length === 0 || selectedRowKeys.length === 0) { |
| | | $notification.warning({ |
| | | message: 'æ¶æ¯', |
| | | description: 'è¯·éæ©è®¾å¤æææ¡£' |
| | | }) |
| | | return |
| | | } |
| | | |
| | | const that = this |
| | | this.$refs.form.validate(valid => { |
| | | if (valid) { |
| | | const { docId, attributionId, publishFileId } = selectionRows[0] |
| | | const params = { |
| | | docId: checkedKeys[0], |
| | | equipmentDocId: docId, |
| | | equipmentId: attributionId, |
| | | equipmentFileId: publishFileId, |
| | | applyReason |
| | | } |
| | | |
| | | $confirm({ |
| | | title: 'æç¤º', |
| | | content: `确认æäº¤åï¼`, |
| | | okText: '确认', |
| | | cancelText: 'åæ¶', |
| | | onOk: () => { |
| | | that.confirmLoading = true |
| | | dncApi.assignNcToProductApi(params) |
| | | .then(res => { |
| | | if (res.success) { |
| | | handleCancel() |
| | | $notification.success({ |
| | | message: 'æ¶æ¯', |
| | | description: res.message |
| | | }) |
| | | } else { |
| | | $notification.error({ |
| | | message: 'æ¶æ¯', |
| | | description: res.message |
| | | }) |
| | | } |
| | | }) |
| | | .finally(() => { |
| | | $destroyAll() |
| | | that.confirmLoading = false |
| | | }) |
| | | }, |
| | | onCancel: () => { |
| | | $destroyAll() |
| | | } |
| | | }) |
| | | } else { |
| | | return false |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | /* è¾å
¥æ¥è¯¢å
容ååæ¶è§¦å */ |
| | | handleSearchInputChange() { |
| | | let search = this.searchInput |
| | | let expandedKeys = this.dataList |
| | | .map(item => { |
| | | if (item.title != null) { |
| | | if (item.title.indexOf(search) > -1) { |
| | | return this.getParentKey(item.key, this.treeDataSource) |
| | | } |
| | | return null |
| | | } |
| | | }) |
| | | .filter((item, i, self) => item && self.indexOf(item) === i) |
| | | Object.assign(this, { |
| | | expandedKeys, |
| | | searchValue: search, |
| | | autoExpandParent: true |
| | | }) |
| | | }, |
| | | |
| | | /** |
| | | * æ èç¹å±å¼åå¹¶æ¶è§¦å |
| | | * @param expandedKeys å±å¼é¡¹key |
| | | */ |
| | | handleTreeNodeExpand(expandedKeys) { |
| | | this.expandedKeys = expandedKeys |
| | | this.autoExpandParent = false |
| | | }, |
| | | |
| | | /** |
| | | * æ èç¹å¤éæ¡é䏿¶è§¦å |
| | | * @param selectedKeys éä¸èç¹key |
| | | * @param {node} node èç¹å¯¹è±¡ |
| | | */ |
| | | handleTreeNodeCheck(checkedObj, { node }) { |
| | | console.log('checkedObj', checkedObj) |
| | | console.log('node', node.dataRef) |
| | | let record = node.dataRef |
| | | if (record.type !== 99) return |
| | | this.checkedKeys = checkedObj.checked.slice(-1) |
| | | }, |
| | | |
| | | /** |
| | | * æ èç¹é䏿¶è§¦åï¼æ¨¡ææ èç¹å¤éæ¡é䏿¶çææï¼ |
| | | * @param selectedKeys éä¸èç¹key |
| | | * @param {node} node èç¹å¯¹è±¡ |
| | | */ |
| | | handleTreeNodeSelect(selectedKeys, { node }) { |
| | | node.$el.childNodes[1].click() |
| | | }, |
| | | |
| | | /** |
| | | * éå½è·å¾è¾å
¥é¡¹çç¶çº§key |
| | | * @param key å项key |
| | | * @param tree å项 |
| | | */ |
| | | getParentKey(key, tree) { |
| | | let parentKey |
| | | for (let i = 0; i < tree.length; i++) { |
| | | const node = tree[i] |
| | | if (node.children) { |
| | | if (node.children.some(item => item.key === key)) { |
| | | parentKey = node.key |
| | | } else if ( |
| | | this.getParentKey(key, node.children)) { |
| | | parentKey = this.getParentKey(key, node.children) |
| | | } |
| | | } |
| | | } |
| | | return parentKey |
| | | }, |
| | | |
| | | /** |
| | | * éå½è·å¾æææ èç¹key |
| | | * @param data è®¾å¤æ æ°æ® |
| | | */ |
| | | generateList(data) { |
| | | for (let i = 0; i < data.length; i++) { |
| | | data[i].key = data[i].id |
| | | const node = data[i] |
| | | const key = node.id |
| | | const title = node.label |
| | | this.dataList.push({ key, title }) |
| | | this.allTreeKeys.push(key) |
| | | this.setTreeNodeIcon(node) |
| | | if (node.children) this.generateList(node.children) |
| | | } |
| | | }, |
| | | |
| | | /** |
| | | * 设置æ èç¹å¾æ |
| | | * @param treeNode |
| | | */ |
| | | setTreeNodeIcon(treeNode) { |
| | | switch (+treeNode.type) { |
| | | case 1: |
| | | treeNode.slots = { icon: 'product' } |
| | | break |
| | | case 2: |
| | | treeNode.slots = { icon: 'component' } |
| | | break |
| | | case 3: |
| | | treeNode.slots = { icon: 'part' } |
| | | break |
| | | case 4: |
| | | treeNode.slots = { icon: 'processSpecVersion' } |
| | | break |
| | | case 5: |
| | | treeNode.slots = { icon: 'process' } |
| | | break |
| | | case 6: |
| | | treeNode.slots = { icon: 'processStep' } |
| | | break |
| | | default: |
| | | } |
| | | }, |
| | | |
| | | resetData() { |
| | | this.searchInput = this.searchValue = '' |
| | | this.expandedKeys = [] |
| | | this.selectedRowKeys = [] |
| | | this.selectionRows = {} |
| | | this.checkedKeys = [] |
| | | this.filters = {} |
| | | this.isorter = Object.assign({}, this.defaultSorter) |
| | | }, |
| | | |
| | | handleCancel() { |
| | | this.visible = false |
| | | }, |
| | | |
| | | triggerCorrespondingMethod({ methodName, modalTitle }) { |
| | | if (this[methodName]) { |
| | | this[methodName]() |
| | | this.title = modalTitle |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style scoped lang="less"> |
| | | /deep/ .ant-modal { |
| | | .tabs-container { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | |
| | | .replaceSearch { |
| | | color: #40a9ff; |
| | | font-weight: bold; |
| | | background-color: rgb(204, 204, 204); |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | ::-webkit-scrollbar { |
| | | width: 8px; |
| | | } |
| | | </style> |
| | |
| | | </a-table> |
| | | |
| | | <DocumentModal ref="modalForm" @ok="modalFormOk"/> |
| | | |
| | | <has-received-document-assign-modal :size="size" ref="documentAssignModalRef" |
| | | :currentDocumentInfo="currentRightClickedDocumentInfo"/> |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | import { getAction } from '@/api/manage' |
| | | import { JeecgListMixin } from '@/mixins/JeecgListMixin' |
| | | import DocumentModal from '../../../../common/DocumentModal.vue' |
| | | import HasReceivedDocumentAssignModal from './HasReceivedDocumentAssignModal' |
| | | |
| | | export default { |
| | | name: 'HasReceivedDocumentTableList', |
| | | components: { DocumentModal }, |
| | | components: { HasReceivedDocumentAssignModal, DocumentModal }, |
| | | mixins: [JeecgListMixin], |
| | | props: { |
| | | currentTreeNodeInfo: { |
| | | type: Object |
| | | }, |
| | | currentTypeOfDevice:{ |
| | | type:Number |
| | | currentTypeOfDevice: { |
| | | type: Number |
| | | }, |
| | | size: { |
| | | type: String |
| | |
| | | dataIndex: 'docName', |
| | | key: 'docName', |
| | | align: 'center', |
| | | scopedSlots: {customRender: 'docName'}, |
| | | scopedSlots: { customRender: 'docName' }, |
| | | width: 300, |
| | | sorter: true |
| | | }, |
| | |
| | | this.$refs.modalForm.title = modalTitle |
| | | }, |
| | | |
| | | handleDocumentAssign(record, modalTitle) { |
| | | /** |
| | | * æ§å¶ææ´¾å°äº§åå¼¹çª |
| | | * @param record è¡¨æ ¼è¡ä¿¡æ¯ |
| | | * @param modalTitle å¼¹çªæ é¢ |
| | | */ |
| | | handleDocumentRecAssign(record, modalTitle) { |
| | | this.$refs.documentAssignModalRef.title = modalTitle |
| | | this.$refs.documentAssignModalRef.visible = true |
| | | }, |
| | |
| | | </a-button> |
| | | </div> |
| | | |
| | | <!--产åç»ææ --> |
| | | <!--设å¤ç»ææ --> |
| | | <div style="overflow:auto;margin-top: 10px;height: 400px"> |
| | | <a-tree blockNode checkable :checkedKeys="checkedKeys" :expandedKeys.sync="expandedKeys" |
| | | :autoExpandParent="autoExpandParent" @select="handleTreeNodeSelect" |
| | |
| | | }, |
| | | |
| | | resetData() { |
| | | this.searchInput = '' |
| | | this.searchInput = this.searchValue = '' |
| | | this.expandedKeys = [] |
| | | this.selectedRowKeys = [] |
| | | this.selectionRows = {} |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import { getAction } from '@/api/manage' |
| | | import { getAction, postAction } from '@/api/manage' |
| | | import { JeecgListMixin } from '@/mixins/JeecgListMixin' |
| | | import DocumentModal from '../../../../common/DocumentModal' |
| | | import NcDocumentAssignModal from './NcDocumentAssignModal' |
| | |
| | | currentRightClickedDocumentInfo: {}, |
| | | currentClickedDocumentInfo: {}, |
| | | url: { |
| | | list: '/nc/doc/find/page' |
| | | list: '/nc/doc/find/page', |
| | | submitProccess:'/dncFlow/dispatchFile/submitProccess' |
| | | } |
| | | } |
| | | }, |
| | |
| | | this.$refs.documentAssignModalRef.visible = true |
| | | }, |
| | | |
| | | handleAppoint(record){ |
| | | const that = this |
| | | console.log("sssss",record) |
| | | that.$confirm({ |
| | | title: 'æç¤º', |
| | | content: `确认å®ååï¼`, |
| | | okText: '确认', |
| | | cancelText: 'åæ¶', |
| | | onOk: () => { |
| | | let dispatchFile = { |
| | | 'docId':record.docId, |
| | | 'attributionId':record.attributionId, |
| | | 'attributionType':record.attributionType, |
| | | 'fileId':record.publishFileId |
| | | } |
| | | postAction(this.url.submitProccess,dispatchFile) |
| | | .then(res => { |
| | | if (res.success) { |
| | | this.$message.success('æµç¨åèµ·æå') |
| | | } else { |
| | | that.$notification.error({ |
| | | message: 'æ¶æ¯', |
| | | description: res.message |
| | | }) |
| | | } |
| | | }) |
| | | .catch(err => { |
| | | that.$notification.error({ |
| | | message: 'æ¶æ¯', |
| | | description: err.message |
| | | }) |
| | | }) |
| | | .finally(() => { |
| | | that.$destroyAll() |
| | | }) |
| | | }, |
| | | onCancel: () => { |
| | | that.$destroyAll() |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | handleDocumentExtract(record) { |
| | | const that = this |
| | | const { docId, attributionId, attributionType } = record |
| | |
| | | </a-form-model-item> |
| | | </a-col> |
| | | <a-col :span="24"> |
| | | <a-form-model-item label="馿£æè§" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="inspectionOpinion"> |
| | | <a-textarea v-model="model.inspectionOpinion" rows="4" placeholder="请è¾å
¥é¦æ£æè§" /> |
| | | </a-form-model-item> |
| | | </a-col> |
| | | <a-col :span="24"> |
| | | <a-form-model-item label="审æ¹äºº" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="approver"> |
| | | <a-input v-model="model.approver" placeholder="请è¾å
¥å®¡æ¹äºº" ></a-input> |
| | | </a-form-model-item> |
| | |
| | | |
| | | <span slot="action" slot-scope="text, record"> |
| | | |
| | | <a @click="handleEdit(record)">ä¸ä¼ /ä¿®æ¹ä¿¡æ¯</a> |
| | | <a v-if="record.flowStatus === '0'" @click="handleEdit(record)">ä¸ä¼ /ä¿®æ¹ä¿¡æ¯</a> |
| | | |
| | | <a-divider type="vertical" /> |
| | | <a-divider v-if="record.flowStatus === '0'" type="vertical" /> |
| | | |
| | | <a @click="handleOpenPrintGuideCardModal(record)">çææ°æ§å å·¥ç¨åºç¡®è®¤è¡¨</a> |
| | | |
| | |
| | | }) |
| | | .finally(() => { |
| | | that.$destroyAll() |
| | | this.loadData(1) |
| | | }) |
| | | }, |
| | | onCancel: () => { |
| | |
| | | currentMenuLevel: '', |
| | | defaultContextMenuList: { |
| | | //设å¤ç±» |
| | | deviceCustomType:[ |
| | | deviceCustomType: [ |
| | | { label: 'ç¼è¾è®¾å¤ç±»ä¿¡æ¯', code: 'type_edit', subMenu: [], icon: 'edit', isCommonMethod: false }, |
| | | { label: 'å é¤', code: 'type_delete', subMenu: [], icon: 'delete', isCommonMethod: false }, |
| | | { label: '导å
¥NCç¨åº', code: 'type_nc_import', subMenu: [], icon: 'import', isCommonMethod: true }, |
| | | { label: '导å
¥NCç¨åº', code: 'type_nc_import', subMenu: [], icon: 'import', isCommonMethod: true } |
| | | ], |
| | | //NCææ¡£ |
| | | NC: [ |
| | |
| | | { label: 'ä¸è½½', code: 'document_download', subMenu: [], icon: 'download', isCommonMethod: true }, |
| | | { label: 'å é¤', code: 'document_delete', subMenu: [], icon: 'delete', isCommonMethod: true }, |
| | | { label: 'æ¹éå é¤', code: 'document_batch_remove', subMenu: [], icon: 'delete', isCommonMethod: true }, |
| | | { label: 'å®å', code: 'document_appoint', subMenu: [], icon: 'swap-right', isCommonMethod: true }, |
| | | { |
| | | label: 'çå½å¨æ', |
| | | subMenu: [ |
| | |
| | | { label: 'ä¸è½½', code: 'document_download', subMenu: [], icon: 'download', isCommonMethod: true }, |
| | | { label: 'å é¤', code: 'document_delete', subMenu: [], icon: 'delete', isCommonMethod: true }, |
| | | { label: 'æ¹éå é¤', code: 'document_batch_remove', subMenu: [], icon: 'delete', isCommonMethod: true }, |
| | | { label: 'å®å', code: 'document_appoint', subMenu: [], icon: 'swap-right', isCommonMethod: true }, |
| | | { |
| | | label: 'çå½å¨æ', |
| | | subMenu: [ |
| | |
| | | { label: 'ä¸è½½', code: 'document_download', subMenu: [], icon: 'download', isCommonMethod: true }, |
| | | { label: 'å é¤', code: 'document_delete', subMenu: [], icon: 'delete', isCommonMethod: true }, |
| | | { label: 'æ¹éå é¤', code: 'document_batch_remove', subMenu: [], icon: 'delete', isCommonMethod: true }, |
| | | { label: 'ææ´¾å°äº§å', code: 'document_rec_assign', subMenu: [], icon: 'cluster', isCommonMethod: false }, |
| | | { |
| | | label: 'çå½å¨æ', |
| | | subMenu: [ |
| | |
| | | :selectShenpiData='selectGuideCardData' |
| | | @searchReset='searchReset' |
| | | ></guide-card-batch-handle> |
| | | <AssignEquipmentFileStreamHandle |
| | | ref='assignEquipmentFileStreamHandle' |
| | | :selectShenpiData='selectEquipmentSealUpData' |
| | | @searchReset='searchReset' |
| | | ></AssignEquipmentFileStreamHandle> |
| | | </a-card> |
| | | </template> |
| | | |
| | |
| | | import WeekMaintenanceApprovalModal from '@views/flowable/workflow/weekMaintenance/WeekMaintenanceApprovalModal' |
| | | import RepairOrderApprovalModal from '@views/flowable/workflow/repairOrder/RepairOrderApprovalModal' |
| | | import InspectionOrderHandle from '@views/flowable/workflow/InspectionOrder/InspectionOrderHandle.vue' |
| | | |
| | | import { getAction } from '@api/manage' |
| | | import InspectionOrderBatchHandle from './InspectionOrder/InspectionOrderBatchHandle' |
| | | import WeekMaintenanceBatchApprovalModal from './weekMaintenance/WeekMaintenanceBatchApprovalModal' |
| | |
| | | import DispatchFileHandle from '@views/flowable/workflow/dispatchFile/DispatchFileHandle.vue' |
| | | import DispatchFileBachHandleStyle from '@views/flowable/workflow/dispatchFile/DispatchFileBachHandleStyle#Drawer.vue' |
| | | import GuideCardBatchHandle from '@views/flowable/workflow/guideCardBatch/GuideCardBatchHandle.vue' |
| | | import AssignEquipmentFileStreamHandle from '@views/flowable/workflow/assignEquipmentFileStream/AssignEquipmentFileStreamHandle.vue' |
| | | import OutBoundOrderHandle from '@views/flowable/workflow/outBoundOrder/OutBoundOrderHandle.vue' |
| | | import EquipmentLeanOutApprovalModal from '@views/flowable/workflow/leanOut/EquipmentLeanOutApprovalModal.vue' |
| | | import SecondMaintenanceApprovalModal |
| | | from '@views/flowable/workflow/secondMaintenance/SecondMaintenanceApprovalModal.vue' |
| | | import SecondMaintenanceApprovalModal from '@views/flowable/workflow/secondMaintenance/SecondMaintenanceApprovalModal.vue' |
| | | import ThirdMaintenanceApprovalModal from '@views/flowable/workflow/thirdMaintenance/ThirdMaintenanceApprovalModal.vue' |
| | | import EquipmentSealUpApprovalModal from '@views/flowable/workflow/sealUp/EquipmentSealUpApprovalModal.vue' |
| | | import EquipmentTransferApprovalModal from '@views/flowable/workflow/transfer/EquipmentTransferApprovalModal.vue' |
| | |
| | | EquipmentScrapApprovalModal, |
| | | SparePartApplyHandle, |
| | | StandardizedProcessHandle, |
| | | GuideCardBatchHandle |
| | | GuideCardBatchHandle, |
| | | AssignEquipmentFileStreamHandle |
| | | }, |
| | | data() { |
| | | return { |
| | |
| | | selectInboundOrderData: {}, |
| | | selectSparePartApplyData: {}, |
| | | selectGuideCardData:{}, |
| | | selectEquipmentAssignProductData:{}, |
| | | selectEquipmentSealUpData:{}, |
| | | //ä¸å¡ä¿¡æ¯ID |
| | | dataId: undefined |
| | | } |
| | |
| | | case 'ggApproval': |
| | | this.handDispatchFileDetial(item) |
| | | break |
| | | case 'standardized_approval': |
| | | case 'ncFileSettingProcessApproval': |
| | | this.handStandardizedDetial(item) |
| | | break |
| | | case 'sbdjApproval': |
| | |
| | | case 'programConfirmApproval': |
| | | this.handleGuideCardApproval(item) |
| | | break |
| | | case 'equipmentAssignProductApproval': |
| | | this.handleEquipmentAssignProductApproval(item) |
| | | break |
| | | default: |
| | | alert('没æ¾å°è¯¥æµç¨') |
| | | } |
| | |
| | | let result = parts[0] |
| | | return result |
| | | }, |
| | | |
| | | //DNC-ææ´¾NCç¨åºè³è®¾å¤ |
| | | handDrDetial(item) { |
| | | this.selectShenpiData = item |
| | | this.$refs.modalFormApproval.clearTableSource() |
| | | this.$refs.modalFormApproval.getAllApproveData(item) |
| | | }, |
| | | |
| | | //DNC-NCç¨åºç¾æ´¾ |
| | | handDispatchFileDetial(item) { |
| | | console.log('item----->', item) |
| | | this.selectDispatchFileXqData = item |
| | | this.$refs.modalFormDispatchFileXq.clearTableSource() |
| | | this.$refs.modalFormDispatchFileXq.getAllApproveData(item) |
| | | }, |
| | | //å®å审æ¹é¡µé¢ |
| | | //DNC-å®å审æ¹é¡µé¢ |
| | | handStandardizedDetial(item){ |
| | | this.selectDispatchFileXqData = item |
| | | this.$refs.StandardizedProcessHandle.clearTableSource() |
| | |
| | | this.$refs.sparePartApplyModal.getAllApproveData(item) |
| | | } |
| | | }, |
| | | //DNC-ç¨åºç¡®è®¤è¡¨æµç¨ |
| | | handleGuideCardApproval(item) { |
| | | console.log('item----->', item) |
| | | this.selectGuideCardData = item |
| | | this.$refs.guideCardBatchHandle.clearTableSource() |
| | | this.$refs.guideCardBatchHandle.getAllApproveData(item) |
| | | }, |
| | | //DNC-设å¤ç»ææ ææ´¾äº§åç»ææ |
| | | handleEquipmentAssignProductApproval(item){ |
| | | console.log('item----->', item) |
| | | this.selectEquipmentSealUpData = item |
| | | this.$refs.assignEquipmentFileStreamHandle.clearTableSource() |
| | | this.$refs.assignEquipmentFileStreamHandle.getAllApproveData(item) |
| | | } |
| | | } |
| | | } |
| | | </script> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <!-- |
| | | Description: 工使µ-DNC-设å¤ç»ææ ææ´¾äº§åç»ææ å¤çé¡µé¢ List |
| | | Author: ä½è
liuyh |
| | | Date: 2025-02-27 |
| | | --> |
| | | <template> |
| | | <a-modal |
| | | :title="title" |
| | | :width="width" |
| | | :visible="visible" |
| | | :footer="null" |
| | | @cancel="handCancel" |
| | | > |
| | | <a-card :bordered="false"> |
| | | <div> |
| | | <b>{{ selectShenpiData.description }}</b> |
| | | <br> |
| | | <br> |
| | | <a-tag color="blue"> |
| | | å½åå¤ç人 {{ selectShenpiData.assignee_dictText }} |
| | | </a-tag> |
| | | <a-tag color="blue"> |
| | | ä»»å¡å建æ¶é´ {{ selectShenpiData.createTime }} |
| | | </a-tag> |
| | | <br> |
| | | <br> |
| | | <button @click="fetchAndShowBmp" class="btn-custom">æå¼æµç¨å¾</button> |
| | | <div v-if="imageSrc"> |
| | | <img :src="imageSrc" alt="Fetched Image" /> |
| | | </div> |
| | | <hr class="shallow-hr"> |
| | | </div> |
| | | <div> |
| | | <b>审ç¾è¯¦æ
</b> |
| | | <br> |
| | | <a-form :form='form'> |
| | | <a-spin :spinning="spinning"> |
| | | <a-tabs default-active-key='1' @change='callback'> |
| | | <a-tab-pane key='1' tab='åºæ¬ä¿¡æ¯'> |
| | | <a-form-model ref='form' :model='tableRowRecord' :rules='validatorRules'> |
| | | <a-row> |
| | | <a-col :span='span'> |
| | | <a-form-model-item label="设å¤ç¼å·" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="equipmentId_dictText"> |
| | | <a-input :disabled='coldisabled' v-model="tableRowRecord.equipmentId_dictText" ></a-input> |
| | | </a-form-model-item> |
| | | </a-col> |
| | | <a-col :span='span'> |
| | | <a-form-model-item label="设å¤ç¨åºæä»¶å" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="equipmentDocId_dictText"> |
| | | <a-input :disabled='coldisabled' v-model="tableRowRecord.equipmentDocId_dictText" ></a-input> |
| | | </a-form-model-item> |
| | | </a-col> |
| | | </a-row> |
| | | <a-row> |
| | | <a-col :span='span'> |
| | | <a-form-model-item label="产ååç§°" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="productId_dictText"> |
| | | <a-input :disabled='coldisabled' v-model="tableRowRecord.productId_dictText" ></a-input> |
| | | </a-form-model-item> |
| | | </a-col> |
| | | <a-col :span='span'> |
| | | <a-form-model-item label="é¨ä»¶åç§°" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="componentId_dictText"> |
| | | <a-input :disabled='coldisabled' v-model="tableRowRecord.componentId_dictText" ></a-input> |
| | | </a-form-model-item> |
| | | </a-col> |
| | | </a-row> |
| | | <a-row> |
| | | <a-col :span='span'> |
| | | <a-form-model-item label="é¶ä»¶åç§°" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="partsId_dictText"> |
| | | <a-input :disabled='coldisabled' v-model="tableRowRecord.partsId_dictText"></a-input> |
| | | </a-form-model-item> |
| | | </a-col> |
| | | <a-col :span='span'> |
| | | <a-form-model-item label="å·¥èºè§ç¨çæ¬å·" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="psvId_dictText"> |
| | | <a-input :disabled='coldisabled' v-model="tableRowRecord.psvId_dictText" ></a-input> |
| | | </a-form-model-item> |
| | | </a-col> |
| | | </a-row> |
| | | <a-row> |
| | | <a-col :span='span'> |
| | | <a-form-model-item label="å·¥åºåç§°" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="processId_dictText"> |
| | | <a-input :disabled='coldisabled' v-model="tableRowRecord.processId_dictText" ></a-input> |
| | | </a-form-model-item> |
| | | </a-col> |
| | | <a-col :span='span'> |
| | | <a-form-model-item label="å·¥æ¥åç§°" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="stepId_dictText"> |
| | | <a-input :disabled='coldisabled' v-model="tableRowRecord.stepId_dictText" ></a-input> |
| | | </a-form-model-item> |
| | | </a-col> |
| | | </a-row> |
| | | <a-row> |
| | | <a-col :span='span'> |
| | | <a-form-model-item label="æ°æ§ç³»ç»ç±»å«" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="deviceTypeName"> |
| | | <a-input :disabled='coldisabled' v-model="tableRowRecord.deviceTypeName" ></a-input> |
| | | </a-form-model-item> |
| | | </a-col> |
| | | <a-col :span='span'> |
| | | <a-form-model-item label="ç¨åºæä»¶åç§°" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="docName"> |
| | | <a-input :disabled='coldisabled' v-model="tableRowRecord.docName" ></a-input> |
| | | </a-form-model-item> |
| | | </a-col> |
| | | </a-row> |
| | | </a-form-model> |
| | | </a-tab-pane> |
| | | <a-tab-pane key='2' tab='æµç¨èç¹'> |
| | | <a-card> |
| | | <a-timeline style="padding:0 1% 0 12%" > |
| | | <a-timeline-item color='white' v-for="(item,index1) in hitaskDataSource" :key="index1"> |
| | | <div class="bottom"> |
| | | <p>å¤ç人ï¼{{item.assignee_dictText}}</p> |
| | | <p v-if="index1 !==0">å¤çæ¶é¿ï¼{{item.duration}}</p> |
| | | <p v-if="item.name !== 'æäº¤ç³è¯·'">å¤çç±»åï¼{{item.sequenceFlowName}}</p> |
| | | <p v-if="item.description != null">å¤çæè§ï¼{{item.description}}</p> |
| | | <div class="left_qiu"><span>{{item.taskName}}</span></div> |
| | | </div> |
| | | </a-timeline-item> |
| | | </a-timeline> |
| | | </a-card> |
| | | </a-tab-pane> |
| | | </a-tabs> |
| | | </a-spin> |
| | | </a-form> |
| | | </div> |
| | | <div> |
| | | <hr class="shallow-hr"> |
| | | <br> |
| | | <b>审æ¹è¯¦æ
</b> |
| | | <br> |
| | | <a-form-model ref="form" :model="approveData" :rules="validatorRules" slot="detail"> |
| | | <a-row> |
| | | <a-col ::span='span' class="btxx"> |
| | | <a-form-model-item label="å¤çç±»å" :labelCol="labelCol" :wrapperCol="wrapperCol" prop='status'> |
| | | <j-dict-select-tag type='list' v-model='assignFileStream.auditType' dictCode='nc_sq_handle_type' placeholder="è¯·éæ©å¤çç±»å" /> |
| | | </a-form-model-item > |
| | | </a-col> |
| | | <a-col :span="24" class="btxx"> |
| | | <a-form-model-item label="å¤çæè§" :labelCol="labelCol" :wrapperCol="wrapperCol"> |
| | | <a-textarea v-model="assignFileStream.approveContent" rows="4" placeholder="请è¾å
¥å¤çæè§"/> |
| | | </a-form-model-item > |
| | | </a-col> |
| | | |
| | | </a-row> |
| | | <div class="table-operator" style="text-align: right;"> |
| | | <a-button @click="handleQueXiaoTask" type="primary" icon="close">åæ¶</a-button> |
| | | <a-button @click="submitForm">æ 交</a-button> |
| | | </div> |
| | | </a-form-model> |
| | | </div> |
| | | </a-card> |
| | | |
| | | |
| | | </a-modal> |
| | | </template> |
| | | |
| | | <script> |
| | | |
| | | import '@assets/less/TableExpand.less' |
| | | import { mixinDevice } from '@/utils/mixin' |
| | | import { getAction, deleteAction, postAction, downFile, httpAction } from '@api/manage' |
| | | export default { |
| | | name: 'FlowShenPi', |
| | | mixins: [mixinDevice], |
| | | props: { |
| | | selectShenpiData: { |
| | | type: Object, |
| | | required: true |
| | | } |
| | | }, |
| | | |
| | | data() { |
| | | return { |
| | | form: this.$form.createForm(this), |
| | | span: 12, |
| | | span1: 8, |
| | | coldisabled: true, |
| | | spinning: false, |
| | | tableRowRecord: {}, |
| | | assignFileStream:{}, |
| | | tableDataSource: [], |
| | | usageDataSource: [], |
| | | hitaskDataSource:[], |
| | | bomForm: {}, |
| | | imageSrc: null, |
| | | drawerVisible: true, |
| | | labelCol: { |
| | | xs: { span: 24 }, |
| | | sm: { span: 5 } |
| | | }, |
| | | wrapperCol: { |
| | | xs: { span: 30 }, |
| | | sm: { span: 16 } |
| | | }, |
| | | validatorRules: { |
| | | status: { |
| | | rules: [ |
| | | { required: true, message: 'è¯·éæ©å®¡æ¹ç¶æ!'}, |
| | | ] |
| | | }, |
| | | }, |
| | | approveData: {}, |
| | | flowData: {}, |
| | | title: '详æ
页é¢', |
| | | width: 1000, |
| | | visible: false, |
| | | // 表头 |
| | | url: { |
| | | queryBomDataById: '/dncFlow/assignEquipmentFileStream/selectVoById', |
| | | diagramView: '/assign/flow/diagramView', |
| | | queryHisTaskList:'/dncFlow/dispatchFile/queryHisTaskList', |
| | | auditGuideCardBatch:"/dncFlow/assignEquipmentFileStream/audit", |
| | | }, |
| | | dictOptions: {}, |
| | | superFieldList: [], |
| | | workflowSource: [] |
| | | } |
| | | }, |
| | | created() { |
| | | }, |
| | | computed: {}, |
| | | methods: { |
| | | callback() { |
| | | }, |
| | | handCancel() { |
| | | this.visible = false |
| | | }, |
| | | clearTableSource() { |
| | | this.tableDataSource = [] |
| | | this.usageDataSource = [] |
| | | }, |
| | | fetchAndShowBmp() { |
| | | console.log('flowData----->', this.flowData) |
| | | try { |
| | | let parm = { |
| | | processDefinitionId: this.flowData.processDefinitionId, |
| | | processInstanceId:this.flowData.processInstanceId, |
| | | TaskDefinitionKey:this.flowData.processDefinitionKey |
| | | } |
| | | downFile(this.url.diagramView,parm,'get').then((res=>{ |
| | | console.log('Pica------>',res) |
| | | const urlObject = window.URL.createObjectURL(new Blob([res])) |
| | | this.imageSrc = urlObject |
| | | })) |
| | | } catch (error) { |
| | | console.error('Error fetching image blob:', error) |
| | | alert('æ æ³å è½½å¾çï¼è¯·ç¨ååè¯ã') |
| | | } |
| | | }, |
| | | handleQueXiaoTask(){ |
| | | this.visible = false |
| | | this.routeReload() |
| | | }, |
| | | submitForm () { |
| | | const that = this; |
| | | if (!that.assignFileStream.auditType==null || that.assignFileStream.auditType===undefined){ |
| | | this.$message.warning('è¯·éæ©å¤çç±»åï¼') |
| | | return false; |
| | | } |
| | | if (!that.assignFileStream.approveContent==null || that.assignFileStream.approveContent===undefined) { |
| | | this.$message.warning('请è¾å
¥å¤çæè§ï¼') |
| | | return false; |
| | | } |
| | | if ((!that.selectShenpiData.inspectionOpinion==null || that.selectShenpiData.taskDefKey===undefined)&&that.selectShenpiData.taskDefKey==="proofread") { |
| | | this.$message.warning('请è¾å
¥é¦æ£æè§ï¼') |
| | | } |
| | | // 触å表åéªè¯ |
| | | this.form.validateFields((err, values) => { |
| | | if (!err) { |
| | | that.confirmLoading = true; |
| | | let url=this.url.auditGuideCardBatch |
| | | let method = 'post'; |
| | | let flowTaskVo = {} |
| | | flowTaskVo.comment =that.assignFileStream.approveContent; |
| | | flowTaskVo.dataId = this.selectShenpiData.dataId |
| | | flowTaskVo.taskId = this.selectShenpiData.id |
| | | flowTaskVo.userId = this.selectShenpiData.assignee |
| | | flowTaskVo.instanceId = this.selectShenpiData.procInstId |
| | | flowTaskVo.values = this.selectShenpiData.variables |
| | | flowTaskVo.inspectionOpinion=that.assignFileStream.inspectionOpinion |
| | | flowTaskVo.auditType = that.assignFileStream.auditType |
| | | console.log("表åæäº¤æ°æ®",flowTaskVo) |
| | | httpAction(url,flowTaskVo,method).then((res)=>{ |
| | | if(res.success){ |
| | | that.$message.success(res.message); |
| | | that.visible = false |
| | | //å·æ°è¡¨æ ¼ |
| | | that.$emit('searchReset') |
| | | }else{ |
| | | that.$message.warning(res.message); |
| | | } |
| | | }).finally(() => { |
| | | that.confirmLoading = false; |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | getAllApproveData(item) { |
| | | console.log('selectShenpiData----->', this.selectShenpiData) |
| | | this.flowData = item |
| | | let param = { |
| | | 'id': item.dataId |
| | | } |
| | | let parmhis={ |
| | | 'procInstId': item.procInstId |
| | | } |
| | | getAction(this.url.queryHisTaskList,parmhis).then(res=>{ |
| | | this.hitaskDataSource=res.result |
| | | getAction(this.url.queryBomDataById, param).then((res => { |
| | | if (res.success) { |
| | | this.tableRowRecord = res.result[0] |
| | | console.log('this.tableRowRecord----->', this.tableRowRecord) |
| | | } |
| | | })) |
| | | }).finally( |
| | | this.visible = true, |
| | | console.log('this.approveData---->', this.approveData) |
| | | ) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | <style scoped> |
| | | .shallow-hr { |
| | | border: 0; |
| | | height: 1px; /* åç线çé«åº¦ */ |
| | | background-color: rgba(0, 0, 0, 0.1); /* ä½¿ç¨ RGBA é¢è²ï¼å¹¶è®¾ç½®è¾ä½çéæåº¦ */ |
| | | margin: 20px 0; /* åç线ä¸ä¸çå¤è¾¹è· */ |
| | | } |
| | | .btn-custom { |
| | | background-color: #4CAF50; /* 绿è²èæ¯ */ |
| | | color: white; /* ç½è²æå */ |
| | | border: none; /* æ è¾¹æ¡ */ |
| | | padding: 5px 15px; /* å
è¾¹è· */ |
| | | text-align: center; /* æåå±
ä¸ */ |
| | | text-decoration: none; /* æ ä¸å线 */ |
| | | display: inline-block; /* è¡å
åå
ç´ */ |
| | | font-size: 12px; /* åä½å¤§å° */ |
| | | margin: 4px 2px; /* å¤è¾¹è· */ |
| | | cursor: pointer; /* é¼ æ æ¬åæ¶æ¾ç¤ºæå */ |
| | | border-radius: 4px; /* åè§è¾¹æ¡ */ |
| | | } |
| | | |
| | | .bold-large-label { |
| | | font-weight: bold; |
| | | font-size: 20px; /* æä½ éè¦çä»»ä½å¤§å° */ |
| | | } |
| | | .left_qiu{ |
| | | position: absolute; |
| | | left: -74px; |
| | | top: 0; |
| | | width:54px; |
| | | border-radius: 50%; |
| | | height:54px; |
| | | font-size: 13px; |
| | | margin: auto; |
| | | display: flex; |
| | | flex-wrap: wrap; |
| | | align-items: center; |
| | | justify-content: center; |
| | | background: #0099ff; |
| | | transform: translate(0, 0); |
| | | } |
| | | /deep/ .ant-timeline-item-tail{ |
| | | left: -29px !important; |
| | | } |
| | | .left_qiu span{ |
| | | width: 3em; |
| | | display: block; |
| | | color: #fff; |
| | | text-align: center; |
| | | } |
| | | .img{ |
| | | width: 75%; |
| | | } |
| | | |
| | | .wrap{ |
| | | clear: both; |
| | | width: 100%; |
| | | display: flex; |
| | | height: 50px; |
| | | border: 1px solid #ccc; |
| | | /* background-color: aqua; */ |
| | | } |
| | | .box{ |
| | | width:21%; |
| | | height:50px; |
| | | border-right: 1px solid #ccc; |
| | | line-height: 50px; |
| | | /* background: red; */ |
| | | text-align:center; |
| | | margin: auto; |
| | | } |
| | | |
| | | @import '~@assets/less/common.less'; |
| | | </style> |
| | |
| | | |
| | | <a-col :md="8" :sm="8"> |
| | | <a-form-item label="é
éå°ç»"> |
| | | <a-select v-model="teamCodes" placeholder="è¯·éæ©é
éå°ç»" mode="multiple" :maxTagCount="3" |
| | | <a-select :value="teamCodes" placeholder="è¯·éæ©é
éå°ç»" mode="multiple" :maxTagCount="3" |
| | | @change="handleDeliverGroupSelectChange" allowClear> |
| | | <a-select-option v-for="item in deliveryGroupList" :key="item.key">{{ item.title }}</a-select-option> |
| | | </a-select> |
| | |
| | | <a-col :md="2" :sm="2"> |
| | | <a-space> |
| | | <a-button type="primary" @click="searchQuery" icon="search">æ¥è¯¢</a-button> |
| | | <!-- <a-button type="primary" @click="searchReset" icon="reload">éç½®</a-button>--> |
| | | </a-space> |
| | | </a-col> |
| | | </a-row> |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import { JeecgListMixin } from '@/mixins/JeecgListMixin' |
| | | import moment from 'moment/moment' |
| | | import mdcApi from '@api/mdc' |
| | | import { JeecgListMixin } from '@/mixins/JeecgListMixin' |
| | | import moment from 'moment/moment' |
| | | import mdcApi from '@api/mdc' |
| | | |
| | | export default { |
| | | name: 'DeliveryGroupUtilizationRateChart', |
| | | components: {}, |
| | | mixins: [JeecgListMixin], |
| | | data() { |
| | | return { |
| | | disableMixinCreated: true, |
| | | queryParam: { |
| | | month: moment().subtract('1', 'month').format('YYYYMM') |
| | | }, |
| | | productionIds: [],//çç» |
| | | teamCodes: [],//é
éå°ç» |
| | | centerList: [], |
| | | groupList: [], |
| | | deliveryGroupList: [] |
| | | } |
| | | }, |
| | | mounted() { |
| | | window.addEventListener('resize', this.handleWindowResize) |
| | | this.getCenterListByApi() |
| | | this.handleWindowResize() |
| | | }, |
| | | methods: { |
| | | loadData() { |
| | | this.chartContainer = this.$echarts.init(document.getElementById('chart-container')) |
| | | this.initChart({}) |
| | | this.chartContainer.showLoading({ |
| | | text: 'æ°æ®å è½½ä¸ ...', |
| | | color: '#0696e1', // å è½½å¨ç»é¢è² |
| | | textColor: '#0696e1' |
| | | }) |
| | | const that = this |
| | | mdcApi.getDeliveryGroupChartDataApi(this.queryParam) |
| | | .then(res => { |
| | | if (res.success) { |
| | | if (Object.keys(res.result).length === 0 || res.result.teamCodeList.length === 0) { |
| | | export default { |
| | | name: 'DeliveryGroupUtilizationRateChart', |
| | | components: {}, |
| | | mixins: [JeecgListMixin], |
| | | data() { |
| | | return { |
| | | disableMixinCreated: true, |
| | | queryParam: { |
| | | month: moment().subtract('1', 'month').format('YYYYMM') |
| | | }, |
| | | productionIds: [],//çç» |
| | | teamCodes: [],//é
éå°ç» |
| | | centerList: [],//ä¸å¿å表 |
| | | groupList: [],//çç»å表 |
| | | deliveryGroupList: []//é
éå°ç»å表 |
| | | } |
| | | }, |
| | | mounted() { |
| | | window.addEventListener('resize', this.handleWindowResize) |
| | | this.getCenterListByApi() |
| | | this.handleWindowResize() |
| | | }, |
| | | methods: { |
| | | loadData() { |
| | | this.chartContainer = this.$echarts.init(document.getElementById('chart-container')) |
| | | this.initChart({}) |
| | | this.chartContainer.showLoading({ |
| | | text: 'æ°æ®å è½½ä¸ ...', |
| | | color: '#0696e1', // å è½½å¨ç»é¢è² |
| | | textColor: '#0696e1' |
| | | }) |
| | | const that = this |
| | | mdcApi.getDeliveryGroupChartDataApi(this.queryParam) |
| | | .then(res => { |
| | | if (res.success) { |
| | | if (Object.keys(res.result).length === 0 || res.result.teamCodeList.length === 0) { |
| | | that.$notification.warning({ |
| | | message: 'æ¶æ¯', |
| | | description: 'ææ æ°æ®' |
| | | }) |
| | | // æ¤å¤æªreturnæ¯ä¸ºä¿è¯å¾è¡¨æ°æ®è½è¢«æ¸
é¤å¹¶å±ç¤ºç©ºå¾è¡¨ |
| | | } |
| | | that.initChart(res.result) |
| | | } else { |
| | | that.$notification.warning({ |
| | | message: 'æ¶æ¯', |
| | | description: 'ææ æ°æ®' |
| | | description: res.message |
| | | }) |
| | | // æ¤å¤æªreturnæ¯ä¸ºä¿è¯å¾è¡¨æ°æ®è½è¢«æ¸
é¤å¹¶å±ç¤ºç©ºå¾è¡¨ |
| | | } |
| | | that.initChart(res.result) |
| | | } else { |
| | | that.$notification.warning({ |
| | | message: 'æ¶æ¯', |
| | | description: res.message |
| | | }) |
| | | } |
| | | }) |
| | | .catch(err => { |
| | | that.$notification.error({ |
| | | message: 'æ¶æ¯', |
| | | description: err.message |
| | | }) |
| | | }) |
| | | }, |
| | | |
| | | /** |
| | | * åå§åå¾è¡¨ |
| | | * @param chartDataObj æ°æ®å¯¹è±¡ Object |
| | | */ |
| | | initChart(chartDataObj) { |
| | | const option = { |
| | | title: { |
| | | text: (this.queryParam.month.slice(-2) >= 10 ? this.queryParam.month.slice(-2) : this.queryParam.month.slice(-1)) + 'æé
éå°ç»ç»¼åå©ç¨ç', |
| | | left: 'center', |
| | | top: 0, |
| | | textStyle: { |
| | | fontSize: 22 |
| | | } |
| | | }, |
| | | grid: { |
| | | top: '12%', |
| | | left: '1%', |
| | | right: '1%', |
| | | bottom: '8%', |
| | | containLabel: true |
| | | }, |
| | | legend: { |
| | | top: '6%', |
| | | right: 'center', |
| | | itemGap: 20, |
| | | data: ['24h综åå©ç¨ç', 'å»é¤æ
éè®¾å¤æ¶é´24h综åå©ç¨ç', 'çæ¬¡å©ç¨ç'] |
| | | }, |
| | | tooltip: { |
| | | show: true, |
| | | trigger: 'axis' |
| | | }, |
| | | xAxis: { |
| | | type: 'category', |
| | | data: chartDataObj.teamCodeList ? chartDataObj.teamCodeList : [] |
| | | // data: ['ææä¸ºç»', 'ä¸çº¢çç»', 'åä¸ç»', 'æ±å°ç£ç»', 'å¼ å¥ç»', 'å®å®å¤ç»', 'ç½åç»', 'å¼ åè¿ç»', '常æ¯åç»', 'èåºé¾ç»', '赵广æ¶ç»', 'äºåäºç»', 'éå³»ç»', 'çç»§å³°ç»', 'çææç»', 'éæç»', 'å´åå¹³ç»'] |
| | | }, |
| | | yAxis: [ |
| | | { |
| | | type: 'value', |
| | | name: 'å©ç¨ç(%)', |
| | | axisLine: { |
| | | show: true |
| | | }, |
| | | axisLabel: { |
| | | formatter: '{value}%' |
| | | } |
| | | } |
| | | ], |
| | | series: [ |
| | | { |
| | | type: 'bar', |
| | | name: '24h综åå©ç¨ç', |
| | | // barWidth: '40%', |
| | | // data: [85, 32, 23, 56, 24, 64, 34, 85, 32, 23, 56, 24, 85, 63, 74, 11, 58] |
| | | data: chartDataObj.dataList ? chartDataObj.dataList.map(item => item.utilizationRate) : [] |
| | | }, |
| | | { |
| | | type: 'bar', |
| | | name: 'å»é¤æ
éè®¾å¤æ¶é´24h综åå©ç¨ç', |
| | | // barWidth: '40%', |
| | | // data: [24, 64, 34, 85, 32, 23, 56, 24, 85, 32, 23, 56, 24, 64, 34, 85, 54], |
| | | data: chartDataObj.dataList ? chartDataObj.dataList.map(item => item.amendUtilizationRate) : [] |
| | | }, |
| | | { |
| | | type: 'bar', |
| | | name: 'çæ¬¡å©ç¨ç', |
| | | // barWidth: '40%', |
| | | // data: [24, 64, 34, 85, 32, 23, 56, 24, 85, 32, 23, 56, 24, 64, 34, 85, 54], |
| | | data: chartDataObj.dataList ? chartDataObj.dataList.map(item => item.shiftUtilizationRate) : [] |
| | | } |
| | | ], |
| | | dataZoom: [ |
| | | { |
| | | type: 'slider', |
| | | show: true, |
| | | xAxisIndex: 0, |
| | | startValue: 0, |
| | | endValue: 19, |
| | | // æ¯å¦æ¾ç¤ºdetailï¼å³ææ½æ¶åæ¾ç¤ºè¯¦ç»æ°å¼ä¿¡æ¯ |
| | | showDetail: false, |
| | | // emptyï¼å½åæ°æ®çªå£å¤çæ°æ®ï¼è¢«è®¾ç½®ä¸ºç©ºã |
| | | // å³ä¸ä¼å½±åå
¶ä»è½´çæ°æ®èå´ |
| | | filterMode: 'empty', |
| | | // æ§å¶ææç尺寸 |
| | | // handleSize: 0, |
| | | // æ¯å¦éå®éæ©åºåï¼æå«åæ°æ®çªå£ï¼çå¤§å° |
| | | zoomLock: true, |
| | | brushSelect: false |
| | | }, |
| | | { |
| | | // 没æä¸é¢è¿åçè¯ï¼åªè½æå¨æ»å¨æ¡ï¼ |
| | | // é¼ æ æ»è½®å¨åºåå
ä¸è½æ§å¶å¤é¨æ»å¨æ¡ |
| | | type: 'inside', |
| | | show: true, |
| | | // æ§å¶åªä¸ªè½´ï¼å¦ææ¯number表示æ§å¶ä¸ä¸ªè½´ï¼ |
| | | xAxisIndex: 0, |
| | | // æ»è½®æ¯å¦è§¦åç¼©æ¾ |
| | | zoomOnMouseWheel: false, |
| | | // é¼ æ ç§»å¨è½å¦è§¦å平移 |
| | | moveOnMouseMove: true, |
| | | // é¼ æ æ»è½®è½å¦è§¦å平移 |
| | | moveOnMouseWheel: true |
| | | } |
| | | ] |
| | | } |
| | | this.chartContainer.setOption(option, true) |
| | | this.chartContainer.hideLoading() |
| | | }, |
| | | |
| | | // è·åä¸å¿å表 |
| | | getCenterListByApi() { |
| | | const that = this |
| | | mdcApi.getCenterOrGroupListApi() |
| | | .then(res => { |
| | | if (res.success) { |
| | | that.centerList = res.result |
| | | that.queryParam.productionId = res.result[0].value |
| | | that.getGroupListByApi(res.result[0].value, true) |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | /** |
| | | * è·åçç»å表 |
| | | * @param productionId ä¸å¿Id |
| | | * @param isInitLoad æ¯å¦ä¸ºåå§åå è½½ |
| | | */ |
| | | getGroupListByApi(productionId, isInitLoad = false) { |
| | | const that = this |
| | | mdcApi.getCenterOrGroupListApi(productionId) |
| | | .then(res => { |
| | | if (res.success) { |
| | | that.groupList = res.result |
| | | if (!isInitLoad) return |
| | | that.handleGroupSelectChange([res.result[0].value]) |
| | | that.loadData() |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | /** |
| | | * è·åé
éå°ç»å表 |
| | | * @param productionId çç»Id |
| | | * @param isReduceSelectOption æ¯å¦åå°çç»éä¸é¡¹ |
| | | */ |
| | | getDeliveryGroupListByApi(productionId, isReduceSelectOption = false) { |
| | | const that = this |
| | | mdcApi.getDeliveryGroupListApi(productionId) |
| | | .then(res => { |
| | | if (res.success) { |
| | | that.deliveryGroupList = res.result |
| | | |
| | | if (!isReduceSelectOption) return |
| | | that.teamCodes.forEach((key, keyIndex, self) => { |
| | | // 妿å°å¯ä¸ä¸ç»å
å«éä¸é
éå°ç»é¡¹ççç»åæ¶å¾éååºå°å·²å¾éçé
éå°ç»ä¸å¹¶åæ¶å¾é |
| | | if (that.deliveryGroupList.findIndex(item => item.key === key) === -1) self.splice(keyIndex, 1) |
| | | .catch(err => { |
| | | that.$notification.error({ |
| | | message: 'æ¶æ¯', |
| | | description: err.message |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | }) |
| | | }, |
| | | |
| | | /** |
| | | * ä¸å¿æ¹åæ¶è§¦å |
| | | * @param value æ¹ååçä¸å¿Id |
| | | */ |
| | | handleCenterSelectChange(value) { |
| | | if (this.productionIds.length > 0) { |
| | | /** |
| | | * åå§åå¾è¡¨ |
| | | * @param chartDataObj æ°æ®å¯¹è±¡ Object |
| | | */ |
| | | initChart(chartDataObj) { |
| | | const option = { |
| | | title: { |
| | | text: (this.queryParam.month.slice(-2) >= 10 ? this.queryParam.month.slice(-2) : this.queryParam.month.slice(-1)) + 'æé
éå°ç»ç»¼åå©ç¨ç', |
| | | left: 'center', |
| | | top: 0, |
| | | textStyle: { |
| | | fontSize: 22 |
| | | } |
| | | }, |
| | | grid: { |
| | | top: '12%', |
| | | left: '1%', |
| | | right: '1%', |
| | | bottom: '8%', |
| | | containLabel: true |
| | | }, |
| | | legend: { |
| | | top: '6%', |
| | | right: 'center', |
| | | itemGap: 20, |
| | | data: ['24h综åå©ç¨ç', 'å»é¤æ
éè®¾å¤æ¶é´24h综åå©ç¨ç', 'çæ¬¡å©ç¨ç'] |
| | | }, |
| | | tooltip: { |
| | | show: true, |
| | | trigger: 'axis' |
| | | }, |
| | | xAxis: { |
| | | type: 'category', |
| | | data: chartDataObj.teamCodeList ? chartDataObj.teamCodeList : [] |
| | | // data: ['ææä¸ºç»', 'ä¸çº¢çç»', 'åä¸ç»', 'æ±å°ç£ç»', 'å¼ å¥ç»', 'å®å®å¤ç»', 'ç½åç»', 'å¼ åè¿ç»', '常æ¯åç»', 'èåºé¾ç»', '赵广æ¶ç»', 'äºåäºç»', 'éå³»ç»', 'çç»§å³°ç»', 'çææç»', 'éæç»', 'å´åå¹³ç»'] |
| | | }, |
| | | yAxis: [ |
| | | { |
| | | type: 'value', |
| | | name: 'å©ç¨ç(%)', |
| | | axisLine: { |
| | | show: true |
| | | }, |
| | | axisLabel: { |
| | | formatter: '{value}%' |
| | | } |
| | | } |
| | | ], |
| | | series: [ |
| | | { |
| | | type: 'bar', |
| | | name: '24h综åå©ç¨ç', |
| | | // barWidth: '40%', |
| | | // data: [85, 32, 23, 56, 24, 64, 34, 85, 32, 23, 56, 24, 85, 63, 74, 11, 58] |
| | | data: chartDataObj.dataList ? chartDataObj.dataList.map(item => item.utilizationRate) : [] |
| | | }, |
| | | { |
| | | type: 'bar', |
| | | name: 'å»é¤æ
éè®¾å¤æ¶é´24h综åå©ç¨ç', |
| | | // barWidth: '40%', |
| | | // data: [24, 64, 34, 85, 32, 23, 56, 24, 85, 32, 23, 56, 24, 64, 34, 85, 54], |
| | | data: chartDataObj.dataList ? chartDataObj.dataList.map(item => item.amendUtilizationRate) : [] |
| | | }, |
| | | { |
| | | type: 'bar', |
| | | name: 'çæ¬¡å©ç¨ç', |
| | | // barWidth: '40%', |
| | | // data: [24, 64, 34, 85, 32, 23, 56, 24, 85, 32, 23, 56, 24, 64, 34, 85, 54], |
| | | data: chartDataObj.dataList ? chartDataObj.dataList.map(item => item.shiftUtilizationRate) : [] |
| | | } |
| | | ], |
| | | dataZoom: [ |
| | | { |
| | | type: 'slider', |
| | | show: true, |
| | | xAxisIndex: 0, |
| | | startValue: 0, |
| | | endValue: 19, |
| | | // æ¯å¦æ¾ç¤ºdetailï¼å³ææ½æ¶åæ¾ç¤ºè¯¦ç»æ°å¼ä¿¡æ¯ |
| | | showDetail: false, |
| | | // emptyï¼å½åæ°æ®çªå£å¤çæ°æ®ï¼è¢«è®¾ç½®ä¸ºç©ºã |
| | | // å³ä¸ä¼å½±åå
¶ä»è½´çæ°æ®èå´ |
| | | filterMode: 'empty', |
| | | // æ§å¶ææç尺寸 |
| | | // handleSize: 0, |
| | | // æ¯å¦éå®éæ©åºåï¼æå«åæ°æ®çªå£ï¼çå¤§å° |
| | | zoomLock: true, |
| | | brushSelect: false |
| | | }, |
| | | { |
| | | // 没æä¸é¢è¿åçè¯ï¼åªè½æå¨æ»å¨æ¡ï¼ |
| | | // é¼ æ æ»è½®å¨åºåå
ä¸è½æ§å¶å¤é¨æ»å¨æ¡ |
| | | type: 'inside', |
| | | show: true, |
| | | // æ§å¶åªä¸ªè½´ï¼å¦ææ¯number表示æ§å¶ä¸ä¸ªè½´ï¼ |
| | | xAxisIndex: 0, |
| | | // æ»è½®æ¯å¦è§¦åç¼©æ¾ |
| | | zoomOnMouseWheel: false, |
| | | // é¼ æ ç§»å¨è½å¦è§¦å平移 |
| | | moveOnMouseMove: true, |
| | | // é¼ æ æ»è½®è½å¦è§¦å平移 |
| | | moveOnMouseWheel: true |
| | | } |
| | | ] |
| | | } |
| | | this.chartContainer.setOption(option, true) |
| | | this.chartContainer.hideLoading() |
| | | }, |
| | | |
| | | // è·åä¸å¿å表 |
| | | getCenterListByApi() { |
| | | const that = this |
| | | mdcApi.getCenterOrGroupListApi() |
| | | .then(res => { |
| | | if (res.success) { |
| | | that.centerList = res.result |
| | | that.queryParam.productionId = res.result[0].value |
| | | that.getGroupListByApi(res.result[0].value, true) |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | /** |
| | | * è·åçç»å表 |
| | | * @param productionId ä¸å¿Id |
| | | * @param isInitLoad æ¯å¦ä¸ºåå§åå è½½ |
| | | */ |
| | | getGroupListByApi(productionId, isInitLoad = false) { |
| | | this.groupList = [] |
| | | this.productionIds = [] |
| | | delete this.queryParam.productionIds |
| | | } |
| | | if (this.teamCodes.length > 0) { |
| | | const that = this |
| | | mdcApi.getCenterOrGroupListApi(productionId) |
| | | .then(res => { |
| | | if (res.success) { |
| | | that.groupList = res.result ? res.result : [] |
| | | that.handleGroupSelectChange(res.result && res.result.length > 0 && isInitLoad ? [res.result[0].value] : []) |
| | | if (!isInitLoad) return |
| | | that.loadData() |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | /** |
| | | * è·åé
éå°ç»å表 |
| | | * @param productionId çç»Id |
| | | * @param isReduceSelectOption æ¯å¦åå°çç»éä¸é¡¹ |
| | | */ |
| | | getDeliveryGroupListByApi(productionId, isReduceSelectOption = false) { |
| | | this.deliveryGroupList = [] |
| | | this.teamCodes = [] |
| | | delete this.queryParam.teamCodes |
| | | const that = this |
| | | mdcApi.getDeliveryGroupListApi(productionId) |
| | | .then(res => { |
| | | if (res.success) { |
| | | that.deliveryGroupList = res.result ? res.result : [] |
| | | |
| | | // ä»
åå°å¾éé¡¹æ¶æè¿è¡ä¸ä¸æ¥ |
| | | if (!isReduceSelectOption) return |
| | | // ä¿çæ¹ååçé
éå°ç»å表ä¸ä¹åå·²å¾éçé
éå°ç» |
| | | const filterTeamCodes = that.teamCodes.filter(item => that.deliveryGroupList.map(item => item.key).includes(item)) |
| | | that.handleDeliverGroupSelectChange(filterTeamCodes) |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | /** |
| | | * ä¸å¿æ¹åæ¶è§¦å |
| | | * @param value æ¹ååçä¸å¿Id |
| | | */ |
| | | handleCenterSelectChange(value) { |
| | | this.getGroupListByApi(value) |
| | | }, |
| | | |
| | | /** |
| | | * çç»æ¹åæ¶è§¦å |
| | | * @param value æ¹ååççç»Id |
| | | */ |
| | | handleGroupSelectChange(value) { |
| | | let isReduceSelectOption |
| | | if (value.length > this.productionIds.length) isReduceSelectOption = false //å¢å å¾é项 |
| | | else isReduceSelectOption = true // åå°å¾é项 |
| | | this.productionIds = value |
| | | this.queryParam.productionIds = value.join(',') |
| | | this.getDeliveryGroupListByApi(value.join(','), isReduceSelectOption) |
| | | }, |
| | | |
| | | /** |
| | | * é
éå°ç»åçæ¹åæ¶è§¦å |
| | | * @param value æ¹ååçé
éå°ç»Id |
| | | */ |
| | | handleDeliverGroupSelectChange(value) { |
| | | this.teamCodes = value |
| | | this.queryParam.teamCodes = value.join(',') |
| | | }, |
| | | |
| | | handleWindowResize() { |
| | | if (this.chartContainer) this.chartContainer.resize() |
| | | } |
| | | this.getGroupListByApi(value) |
| | | }, |
| | | |
| | | /** |
| | | * çç»æ¹åæ¶è§¦å |
| | | * @param value æ¹ååççç»Id |
| | | */ |
| | | handleGroupSelectChange(value) { |
| | | let isReduceSelectOption |
| | | if (value.length > this.productionIds.length) isReduceSelectOption = false //å¢å å¾é项 |
| | | else isReduceSelectOption = true // åå°å¾é项 |
| | | this.productionIds = value |
| | | this.queryParam.productionIds = value.join(',') |
| | | this.getDeliveryGroupListByApi(value.join(','), isReduceSelectOption) |
| | | }, |
| | | |
| | | /** |
| | | * é
éå°ç»åçæ¹åæ¶è§¦å |
| | | * @param value æ¹ååçé
éå°ç»Id |
| | | */ |
| | | handleDeliverGroupSelectChange(value) { |
| | | this.queryParam.teamCodes = value.join(',') |
| | | }, |
| | | |
| | | handleWindowResize() { |
| | | if (this.chartContainer) this.chartContainer.resize() |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | |
| | | |
| | | <!-- æä½æé®åºå --> |
| | | <div class="table-operator" style="border-top: 5px"> |
| | | <a-button @click="handleAdd" type="primary" icon="plus">æ·»å åæ°éå¼</a-button> |
| | | <a-button @click="handleAdd" type="primary" icon="plus">æ°å¢</a-button> |
| | | <a-dropdown v-if="selectedRowKeys.length > 0"> |
| | | <a-menu slot="overlay" @click="handleMenuClick"> |
| | | <a-menu-item key="1"> |
| | |
| | | <a-col :md="5" :sm="5"> |
| | | <a-space> |
| | | <a-button type="primary" @click="searchQuery" icon="search">æ¥è¯¢</a-button> |
| | | <!-- <a-button type="primary" @click="searchReset" icon="reload">éç½®</a-button>--> |
| | | </a-space> |
| | | </a-col> |
| | | </a-row> |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import mdcApi from '@api/mdc' |
| | | import moment from 'moment' |
| | | import { JeecgListMixin } from '@/mixins/JeecgListMixin' |
| | | import mdcApi from '@api/mdc' |
| | | import moment from 'moment' |
| | | import { JeecgListMixin } from '@/mixins/JeecgListMixin' |
| | | |
| | | export default { |
| | | name: 'GroupEquipmentUtilizationRateChart', |
| | | components: {}, |
| | | mixins: [JeecgListMixin], |
| | | data() { |
| | | return { |
| | | disableMixinCreated: true, |
| | | productionIds: [],//çç» |
| | | centerList: [], |
| | | groupList: [], |
| | | queryParam: { |
| | | month: moment().subtract('1', 'month').format('YYYYMM') |
| | | export default { |
| | | name: 'GroupEquipmentUtilizationRateChart', |
| | | components: {}, |
| | | mixins: [JeecgListMixin], |
| | | data() { |
| | | return { |
| | | disableMixinCreated: true, |
| | | productionIds: [],//çç» |
| | | centerList: [], |
| | | groupList: [], |
| | | queryParam: { |
| | | month: moment().subtract('1', 'month').format('YYYYMM') |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | mounted() { |
| | | window.addEventListener('resize', this.handleWindowResize) |
| | | this.handleWindowResize() |
| | | this.getCenterListByApi() |
| | | }, |
| | | methods: { |
| | | loadData() { |
| | | this.chartContainer = this.$echarts.init(document.getElementById('chart-container')) |
| | | this.initChart({}) |
| | | this.chartContainer.showLoading({ |
| | | text: 'æ°æ®å è½½ä¸ ...', |
| | | color: '#0696e1', // å è½½å¨ç»é¢è² |
| | | textColor: '#0696e1' |
| | | }) |
| | | const that = this |
| | | mdcApi.getGroupEquipmentChartDataApi(this.queryParam) |
| | | .then(res => { |
| | | if (res.success) { |
| | | if (Object.keys(res.result).length === 0 || res.result.equipmentNameList.length === 0) { |
| | | }, |
| | | mounted() { |
| | | window.addEventListener('resize', this.handleWindowResize) |
| | | this.handleWindowResize() |
| | | this.getCenterListByApi() |
| | | }, |
| | | methods: { |
| | | loadData() { |
| | | this.chartContainer = this.$echarts.init(document.getElementById('chart-container')) |
| | | this.initChart({}) |
| | | this.chartContainer.showLoading({ |
| | | text: 'æ°æ®å è½½ä¸ ...', |
| | | color: '#0696e1', // å è½½å¨ç»é¢è² |
| | | textColor: '#0696e1' |
| | | }) |
| | | const that = this |
| | | mdcApi.getGroupEquipmentChartDataApi(this.queryParam) |
| | | .then(res => { |
| | | if (res.success) { |
| | | if (Object.keys(res.result).length === 0 || res.result.equipmentNameList.length === 0) { |
| | | that.$notification.warning({ |
| | | message: 'æ¶æ¯', |
| | | description: 'ææ æ°æ®' |
| | | }) |
| | | // æ¤å¤æªreturnæ¯ä¸ºä¿è¯å¾è¡¨æ°æ®è½è¢«æ¸
é¤å¹¶å±ç¤ºç©ºå¾è¡¨ |
| | | } |
| | | that.initChart(res.result) |
| | | } else { |
| | | that.$notification.warning({ |
| | | message: 'æ¶æ¯', |
| | | description: 'ææ æ°æ®' |
| | | description: res.message |
| | | }) |
| | | // æ¤å¤æªreturnæ¯ä¸ºä¿è¯å¾è¡¨æ°æ®è½è¢«æ¸
é¤å¹¶å±ç¤ºç©ºå¾è¡¨ |
| | | } |
| | | that.initChart(res.result) |
| | | } else { |
| | | that.$notification.warning({ |
| | | message: 'æ¶æ¯', |
| | | description: res.message |
| | | }) |
| | | } |
| | | }) |
| | | .catch(err => { |
| | | that.$notification.error({ |
| | | message: 'æ¶æ¯', |
| | | description: err.message |
| | | }) |
| | | }) |
| | | }, |
| | | .catch(err => { |
| | | that.$notification.error({ |
| | | message: 'æ¶æ¯', |
| | | description: err.message |
| | | }) |
| | | }) |
| | | }, |
| | | |
| | | /** |
| | | * åå§åå¾è¡¨ |
| | | * @param chartDataObj æ°æ®å¯¹è±¡ Object |
| | | */ |
| | | initChart(chartDataObj) { |
| | | const option = { |
| | | title: { |
| | | text: '设å¤ç»¼åå©ç¨çï¼' + (this.queryParam.month.slice(-2) >= 10 ? this.queryParam.month.slice(-2) : this.queryParam.month.slice(-1)) + 'æï¼', |
| | | left: 'center', |
| | | top: 0, |
| | | textStyle: { |
| | | fontSize: 22 |
| | | } |
| | | }, |
| | | grid: { |
| | | top: '12%', |
| | | left: '1%', |
| | | right: '1%', |
| | | bottom: '8%', |
| | | containLabel: true |
| | | }, |
| | | legend: { |
| | | top: '6%', |
| | | right: 'center', |
| | | itemGap: 20, |
| | | data: ['24h综åå©ç¨ç', '24hå»é¤æ
é', '计å工使¶é´ç»¼åå©ç¨ç'] |
| | | }, |
| | | tooltip: { |
| | | show: true, |
| | | trigger: 'axis' |
| | | }, |
| | | xAxis: { |
| | | type: 'category', |
| | | // data: ['ç«å u1000-3', 'äºè½´125P', 'äºåæ å å·¥ä¸å¿GS1000', 'Aè½´1000PLUS', '梧å·80P_2', 'é廿º800TE', 'ååæ ç«å 104V', 'ç«å u1000-4', 'ç«å GX710_1', 'ä¸åæ ç«å 1350', 'å§å H5000-1', 'ç«å u1000-2', 'ç«å 1000HS_1', 'ç«å 1160_1', 'ç«å GX710_2', 'ç«å u1000-3', 'äºè½´125P', 'äºåæ å å·¥ä¸å¿GS1000', 'Aè½´1000PLUS', '梧å·80P_2', 'é廿º800TE', 'ååæ ç«å 104V', 'ç«å u1000-4', 'ç«å GX710_1', 'ä¸åæ ç«å 1350', 'å§å H5000-1', 'ç«å u1000-2', 'ç«å 1000HS_1', 'ç«å 1160_1', 'ç«å GX710_2', 'ç«å u1000-3', 'äºè½´125P', 'äºåæ å å·¥ä¸å¿GS1000', 'Aè½´1000PLUS', '梧å·80P_2', 'é廿º800TE', 'ååæ ç«å 104V'], |
| | | data: chartDataObj.equipmentNameList ? chartDataObj.equipmentNameList : [], |
| | | axisLabel: { |
| | | interval: 0, // åæ è½´å»åº¦æ ç¾çæ¾ç¤ºé´éï¼å¨ç±»ç®è½´ä¸ææï¼é»è®¤ä¼éç¨æ ç¾ä¸éå ççç¥é´éæ¾ç¤ºæ ç¾ï¼å¯ä»¥è®¾ç½®æ0å¼ºå¶æ¾ç¤ºæææ ç¾ï¼å¦æè®¾ç½®ä¸º1ï¼è¡¨ç¤ºãéä¸ä¸ªæ ç¾æ¾ç¤ºä¸ä¸ªæ ç¾ãï¼å¦æå¼ä¸º2ï¼è¡¨ç¤ºé两个æ ç¾æ¾ç¤ºä¸ä¸ªæ ç¾ï¼ä»¥æ¤ç±»æ¨ã |
| | | rotate: 45, // å»åº¦æ ç¾æè½¬çè§åº¦ï¼å¨ç±»ç®è½´çç±»ç®æ ç¾æ¾ç¤ºä¸ä¸çæ¶åå¯ä»¥éè¿æè½¬é²æ¢æ ç¾ä¹é´éå ï¼æè½¬çè§åº¦ä»-90度å°90度 |
| | | inside: false, // å»åº¦æ ç¾æ¯å¦æå
ï¼é»è®¤æå¤ |
| | | margin: 15, // å»åº¦æ ç¾ä¸è½´çº¿ä¹é´çè·ç¦» |
| | | fontSize: 14, |
| | | color: '#000' |
| | | } |
| | | }, |
| | | yAxis: [ |
| | | { |
| | | type: 'value', |
| | | name: 'å©ç¨ç(%)', |
| | | axisLine: { |
| | | show: true |
| | | }, |
| | | axisLabel: { |
| | | formatter: '{value}%' |
| | | /** |
| | | * åå§åå¾è¡¨ |
| | | * @param chartDataObj æ°æ®å¯¹è±¡ Object |
| | | */ |
| | | initChart(chartDataObj) { |
| | | const option = { |
| | | title: { |
| | | text: '设å¤ç»¼åå©ç¨çï¼' + (this.queryParam.month.slice(-2) >= 10 ? this.queryParam.month.slice(-2) : this.queryParam.month.slice(-1)) + 'æï¼', |
| | | left: 'center', |
| | | top: 0, |
| | | textStyle: { |
| | | fontSize: 22 |
| | | } |
| | | } |
| | | ], |
| | | series: [ |
| | | { |
| | | type: 'bar', |
| | | name: '24h综åå©ç¨ç', |
| | | // data: [53.28, 32.22, 23, 56, 24, 64, 34, 85, 32, 23, 56, 24, 85, 32, 23, 56, 24, 64, 34, 85, 32, 23, 56, 24, 23, 56, 24, 85, 32, 23, 56, 24, 85, 32, 85, 32, 23, 56, 24, 85, 32] |
| | | data: chartDataObj.dataList ? chartDataObj.dataList.map(item => item.utilizationRate) : [] |
| | | // label: { |
| | | // show: true, |
| | | // position: 'top', |
| | | // formatter: '{c}%', |
| | | // avoidLabelOverlap: true |
| | | // } |
| | | }, |
| | | { |
| | | type: 'bar', |
| | | name: '24hå»é¤æ
é', |
| | | data: chartDataObj.dataList ? chartDataObj.dataList.map(item => item.amendUtilizationRate) : [] |
| | | // data: [53.28, 32.22, 23, 56, 24, 64, 34, 85, 32, 23, 56, 24, 85, 32, 23, 56, 24, 64, 34, 85, 32, 23, 56, 24, 23, 56, 24, 85, 32, 23, 56, 24, 85, 32, 85, 32, 23, 56, 24, 85, 32] |
| | | grid: { |
| | | top: '12%', |
| | | left: '1%', |
| | | right: '1%', |
| | | bottom: '8%', |
| | | containLabel: true |
| | | }, |
| | | { |
| | | type: 'bar', |
| | | name: '计å工使¶é´ç»¼åå©ç¨ç', |
| | | data: chartDataObj.dataList ? chartDataObj.dataList.map(item => item.shiftUtilizationRate) : [] |
| | | // data: [63.25, 32.22, 23, 56, 24, 64, 34, 85, 32, 23, 56, 24, 85, 32, 23, 56, 24, 64, 34, 85, 32, 23, 56, 24, 85, 32, 23, 56, 24, 85, 32, 85, 32, 23, 56, 24, 85, 32] |
| | | } |
| | | ], |
| | | dataZoom: [ |
| | | { |
| | | type: 'slider', |
| | | legend: { |
| | | top: '6%', |
| | | right: 'center', |
| | | itemGap: 20, |
| | | data: ['24h综åå©ç¨ç', '24hå»é¤æ
é', '计å工使¶é´ç»¼åå©ç¨ç'] |
| | | }, |
| | | tooltip: { |
| | | show: true, |
| | | xAxisIndex: 0, |
| | | startValue: 0, |
| | | endValue: 19, |
| | | // æ¯å¦æ¾ç¤ºdetailï¼å³ææ½æ¶åæ¾ç¤ºè¯¦ç»æ°å¼ä¿¡æ¯ |
| | | showDetail: false, |
| | | // emptyï¼å½åæ°æ®çªå£å¤çæ°æ®ï¼è¢«è®¾ç½®ä¸ºç©ºã |
| | | // å³ä¸ä¼å½±åå
¶ä»è½´çæ°æ®èå´ |
| | | filterMode: 'empty', |
| | | // æ§å¶ææç尺寸 |
| | | // handleSize: 0, |
| | | // æ¯å¦éå®éæ©åºåï¼æå«åæ°æ®çªå£ï¼çå¤§å° |
| | | zoomLock: true, |
| | | brushSelect: false |
| | | trigger: 'axis' |
| | | }, |
| | | { |
| | | // 没æä¸é¢è¿åçè¯ï¼åªè½æå¨æ»å¨æ¡ï¼ |
| | | // é¼ æ æ»è½®å¨åºåå
ä¸è½æ§å¶å¤é¨æ»å¨æ¡ |
| | | type: 'inside', |
| | | show: true, |
| | | // æ§å¶åªä¸ªè½´ï¼å¦ææ¯number表示æ§å¶ä¸ä¸ªè½´ï¼ |
| | | xAxisIndex: 0, |
| | | // æ»è½®æ¯å¦è§¦åç¼©æ¾ |
| | | zoomOnMouseWheel: false, |
| | | // é¼ æ ç§»å¨è½å¦è§¦å平移 |
| | | moveOnMouseMove: true, |
| | | // é¼ æ æ»è½®è½å¦è§¦å平移 |
| | | moveOnMouseWheel: true |
| | | } |
| | | ] |
| | | xAxis: { |
| | | type: 'category', |
| | | // data: ['ç«å u1000-3', 'äºè½´125P', 'äºåæ å å·¥ä¸å¿GS1000', 'Aè½´1000PLUS', '梧å·80P_2', 'é廿º800TE', 'ååæ ç«å 104V', 'ç«å u1000-4', 'ç«å GX710_1', 'ä¸åæ ç«å 1350', 'å§å H5000-1', 'ç«å u1000-2', 'ç«å 1000HS_1', 'ç«å 1160_1', 'ç«å GX710_2', 'ç«å u1000-3', 'äºè½´125P', 'äºåæ å å·¥ä¸å¿GS1000', 'Aè½´1000PLUS', '梧å·80P_2', 'é廿º800TE', 'ååæ ç«å 104V', 'ç«å u1000-4', 'ç«å GX710_1', 'ä¸åæ ç«å 1350', 'å§å H5000-1', 'ç«å u1000-2', 'ç«å 1000HS_1', 'ç«å 1160_1', 'ç«å GX710_2', 'ç«å u1000-3', 'äºè½´125P', 'äºåæ å å·¥ä¸å¿GS1000', 'Aè½´1000PLUS', '梧å·80P_2', 'é廿º800TE', 'ååæ ç«å 104V'], |
| | | data: chartDataObj.equipmentNameList ? chartDataObj.equipmentNameList : [], |
| | | axisLabel: { |
| | | interval: 0, // åæ è½´å»åº¦æ ç¾çæ¾ç¤ºé´éï¼å¨ç±»ç®è½´ä¸ææï¼é»è®¤ä¼éç¨æ ç¾ä¸éå ççç¥é´éæ¾ç¤ºæ ç¾ï¼å¯ä»¥è®¾ç½®æ0å¼ºå¶æ¾ç¤ºæææ ç¾ï¼å¦æè®¾ç½®ä¸º1ï¼è¡¨ç¤ºãéä¸ä¸ªæ ç¾æ¾ç¤ºä¸ä¸ªæ ç¾ãï¼å¦æå¼ä¸º2ï¼è¡¨ç¤ºé两个æ ç¾æ¾ç¤ºä¸ä¸ªæ ç¾ï¼ä»¥æ¤ç±»æ¨ã |
| | | rotate: 45, // å»åº¦æ ç¾æè½¬çè§åº¦ï¼å¨ç±»ç®è½´çç±»ç®æ ç¾æ¾ç¤ºä¸ä¸çæ¶åå¯ä»¥éè¿æè½¬é²æ¢æ ç¾ä¹é´éå ï¼æè½¬çè§åº¦ä»-90度å°90度 |
| | | inside: false, // å»åº¦æ ç¾æ¯å¦æå
ï¼é»è®¤æå¤ |
| | | margin: 15, // å»åº¦æ ç¾ä¸è½´çº¿ä¹é´çè·ç¦» |
| | | fontSize: 14, |
| | | color: '#000' |
| | | } |
| | | }, |
| | | yAxis: [ |
| | | { |
| | | type: 'value', |
| | | name: 'å©ç¨ç(%)', |
| | | axisLine: { |
| | | show: true |
| | | }, |
| | | axisLabel: { |
| | | formatter: '{value}%' |
| | | } |
| | | } |
| | | ], |
| | | series: [ |
| | | { |
| | | type: 'bar', |
| | | name: '24h综åå©ç¨ç', |
| | | // data: [53.28, 32.22, 23, 56, 24, 64, 34, 85, 32, 23, 56, 24, 85, 32, 23, 56, 24, 64, 34, 85, 32, 23, 56, 24, 23, 56, 24, 85, 32, 23, 56, 24, 85, 32, 85, 32, 23, 56, 24, 85, 32] |
| | | data: chartDataObj.dataList ? chartDataObj.dataList.map(item => item.utilizationRate) : [] |
| | | // label: { |
| | | // show: true, |
| | | // position: 'top', |
| | | // formatter: '{c}%', |
| | | // avoidLabelOverlap: true |
| | | // } |
| | | }, |
| | | { |
| | | type: 'bar', |
| | | name: '24hå»é¤æ
é', |
| | | data: chartDataObj.dataList ? chartDataObj.dataList.map(item => item.amendUtilizationRate) : [] |
| | | // data: [53.28, 32.22, 23, 56, 24, 64, 34, 85, 32, 23, 56, 24, 85, 32, 23, 56, 24, 64, 34, 85, 32, 23, 56, 24, 23, 56, 24, 85, 32, 23, 56, 24, 85, 32, 85, 32, 23, 56, 24, 85, 32] |
| | | }, |
| | | { |
| | | type: 'bar', |
| | | name: '计å工使¶é´ç»¼åå©ç¨ç', |
| | | data: chartDataObj.dataList ? chartDataObj.dataList.map(item => item.shiftUtilizationRate) : [] |
| | | // data: [63.25, 32.22, 23, 56, 24, 64, 34, 85, 32, 23, 56, 24, 85, 32, 23, 56, 24, 64, 34, 85, 32, 23, 56, 24, 85, 32, 23, 56, 24, 85, 32, 85, 32, 23, 56, 24, 85, 32] |
| | | } |
| | | ], |
| | | dataZoom: [ |
| | | { |
| | | type: 'slider', |
| | | show: true, |
| | | xAxisIndex: 0, |
| | | startValue: 0, |
| | | endValue: 19, |
| | | // æ¯å¦æ¾ç¤ºdetailï¼å³ææ½æ¶åæ¾ç¤ºè¯¦ç»æ°å¼ä¿¡æ¯ |
| | | showDetail: false, |
| | | // emptyï¼å½åæ°æ®çªå£å¤çæ°æ®ï¼è¢«è®¾ç½®ä¸ºç©ºã |
| | | // å³ä¸ä¼å½±åå
¶ä»è½´çæ°æ®èå´ |
| | | filterMode: 'empty', |
| | | // æ§å¶ææç尺寸 |
| | | // handleSize: 0, |
| | | // æ¯å¦éå®éæ©åºåï¼æå«åæ°æ®çªå£ï¼çå¤§å° |
| | | zoomLock: true, |
| | | brushSelect: false |
| | | }, |
| | | { |
| | | // 没æä¸é¢è¿åçè¯ï¼åªè½æå¨æ»å¨æ¡ï¼ |
| | | // é¼ æ æ»è½®å¨åºåå
ä¸è½æ§å¶å¤é¨æ»å¨æ¡ |
| | | type: 'inside', |
| | | show: true, |
| | | // æ§å¶åªä¸ªè½´ï¼å¦ææ¯number表示æ§å¶ä¸ä¸ªè½´ï¼ |
| | | xAxisIndex: 0, |
| | | // æ»è½®æ¯å¦è§¦åç¼©æ¾ |
| | | zoomOnMouseWheel: false, |
| | | // é¼ æ ç§»å¨è½å¦è§¦å平移 |
| | | moveOnMouseMove: true, |
| | | // é¼ æ æ»è½®è½å¦è§¦å平移 |
| | | moveOnMouseWheel: true |
| | | } |
| | | ] |
| | | } |
| | | this.chartContainer.setOption(option, true) |
| | | this.chartContainer.hideLoading() |
| | | }, |
| | | |
| | | // è·åä¸å¿å表 |
| | | getCenterListByApi() { |
| | | const that = this |
| | | mdcApi.getCenterOrGroupListApi() |
| | | .then(res => { |
| | | if (res.success) { |
| | | that.centerList = res.result |
| | | that.queryParam.productionId = res.result[0].value |
| | | that.getGroupListByApi(res.result[0].value, true) |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | /** |
| | | * è·åçç»å表 |
| | | * @param productionId ä¸å¿Id |
| | | * @param isInitLoad æ¯å¦ä¸ºåå§åå è½½ |
| | | */ |
| | | getGroupListByApi(productionId, isInitLoad = false) { |
| | | const that = this |
| | | mdcApi.getCenterOrGroupListApi(productionId) |
| | | .then(res => { |
| | | if (res.success) { |
| | | that.groupList = res.result |
| | | that.handleGroupSelectChange(res.result && res.result.length > 0 && isInitLoad ? [res.result[0].value] : []) |
| | | if (!isInitLoad) return |
| | | that.loadData() |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | /** |
| | | * ä¸å¿æ¹åæ¶è§¦å |
| | | * @param value æ¹ååçä¸å¿Id |
| | | */ |
| | | handleCenterSelectChange(value) { |
| | | this.getGroupListByApi(value) |
| | | }, |
| | | |
| | | /** |
| | | * çç»åçæ¹åæ¶è§¦å |
| | | * @param value æ¹ååççç»Id |
| | | */ |
| | | handleGroupSelectChange(value) { |
| | | this.productionIds = value |
| | | this.queryParam.productionIds = value.join(',') |
| | | }, |
| | | |
| | | handleWindowResize() { |
| | | if (this.chartContainer) this.chartContainer.resize() |
| | | } |
| | | this.chartContainer.setOption(option, true) |
| | | this.chartContainer.hideLoading() |
| | | }, |
| | | |
| | | // è·åä¸å¿å表 |
| | | getCenterListByApi() { |
| | | const that = this |
| | | mdcApi.getCenterOrGroupListApi() |
| | | .then(res => { |
| | | if (res.success) { |
| | | that.centerList = res.result |
| | | that.queryParam.productionId = res.result[0].value |
| | | that.getGroupListByApi(res.result[0].value, true) |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | /** |
| | | * è·åçç»å表 |
| | | * @param productionId ä¸å¿Id |
| | | * @param isInitLoad æ¯å¦ä¸ºåå§åå è½½ |
| | | */ |
| | | getGroupListByApi(productionId, isInitLoad = false) { |
| | | const that = this |
| | | mdcApi.getCenterOrGroupListApi(productionId) |
| | | .then(res => { |
| | | if (res.success) { |
| | | that.groupList = res.result |
| | | if (!isInitLoad) return |
| | | that.handleGroupSelectChange([res.result[0].value]) |
| | | that.loadData() |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | /** |
| | | * ä¸å¿æ¹åæ¶è§¦å |
| | | * @param value æ¹ååçä¸å¿Id |
| | | */ |
| | | handleCenterSelectChange(value) { |
| | | if (this.productionIds.length > 0) { |
| | | this.groupList = [] |
| | | this.productionIds = [] |
| | | delete this.queryParam.productionIds |
| | | } |
| | | this.getGroupListByApi(value) |
| | | }, |
| | | |
| | | /** |
| | | * çç»åçæ¹åæ¶è§¦å |
| | | * @param value æ¹ååççç»Id |
| | | */ |
| | | handleGroupSelectChange(value) { |
| | | this.productionIds = value |
| | | if (value.length === 0) { |
| | | delete this.queryParam.productionIds |
| | | return |
| | | } |
| | | this.queryParam.productionIds = value.join(',') |
| | | }, |
| | | |
| | | handleWindowResize() { |
| | | if (this.chartContainer) this.chartContainer.resize() |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | |
| | | <a-row :gutter="24"> |
| | | <a-col :md="3" :sm="3"> |
| | | <a-form-item label="ä¸å¿"> |
| | | <a-select v-model="queryParam.productionId" placeholder="è¯·éæ©ä¸å¿"> |
| | | <a-select v-model="queryParam.productionId" placeholder="è¯·éæ©ä¸å¿" @change="handleCenterSelectChange"> |
| | | <a-select-option v-for="item in centerList" :key="item.key"> |
| | | {{ item.title }} |
| | | </a-select-option> |
| | |
| | | </a-form-item> |
| | | </a-col> |
| | | |
| | | |
| | | <!-- <a-col :md="5" :sm="5">--> |
| | | <!-- <a-form-item label="çæ¬¡">--> |
| | | <!-- <a-select v-model="queryParam.workTime" placeholder="è¯·éæ©çæ¬¡" mode="multiple" :maxTagCount="2">--> |
| | | <!-- <a-select-option key="123">ä¸ç</a-select-option>--> |
| | | <!-- <a-select-option key="234">äºç</a-select-option>--> |
| | | <!-- <a-select-option key="345">ä¸ç</a-select-option>--> |
| | | <!-- </a-select>--> |
| | | <!-- </a-form-item>--> |
| | | <!-- </a-col>--> |
| | | |
| | | <a-col :md="2" :sm="2"> |
| | | <a-space> |
| | | <a-button type="primary" @click="searchQuery" icon="search">æ¥è¯¢</a-button> |
| | | <!-- <a-button type="primary" @click="searchReset" icon="reload">éç½®</a-button>--> |
| | | </a-space> |
| | | </a-col> |
| | | </a-row> |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import mdcApi from '@api/mdc' |
| | | import { JeecgListMixin } from '@/mixins/JeecgListMixin' |
| | | import mdcApi from '@api/mdc' |
| | | import { JeecgListMixin } from '@/mixins/JeecgListMixin' |
| | | |
| | | export default { |
| | | name: 'GroupUtilizationRateChart', |
| | | components: {}, |
| | | mixins: [JeecgListMixin], |
| | | data() { |
| | | return { |
| | | disableMixinCreated: true, |
| | | queryParam: {}, |
| | | productionIds: [],//çç» |
| | | centerList: [], |
| | | groupList: [], |
| | | equipmentTypeList: [], |
| | | shiftList: [] |
| | | } |
| | | }, |
| | | mounted() { |
| | | window.addEventListener('resize', this.handleWindowResize) |
| | | this.handleWindowResize() |
| | | this.getCenterListByApi() |
| | | this.getEquipmentTypeListApi() |
| | | this.getShiftListByApi() |
| | | }, |
| | | methods: { |
| | | // è·åæ°æ® |
| | | loadData() { |
| | | this.chartContainer = this.$echarts.init(document.getElementById('chart-container')) |
| | | this.initChart({}) |
| | | this.chartContainer.showLoading({ |
| | | text: 'æ°æ®å è½½ä¸ ...', |
| | | color: '#0696e1', // å è½½å¨ç»é¢è² |
| | | textColor: '#0696e1' |
| | | }) |
| | | const that = this |
| | | |
| | | mdcApi.getGroupChartDataApi(this.queryParam) |
| | | .then(res => { |
| | | if (res.success) { |
| | | if (!res.result.dataList || (res.result.dataList && res.result.dataList.length === 0)) { |
| | | that.$notification.warning({ |
| | | message: 'æ¶æ¯', |
| | | description: 'ææ æ°æ®' |
| | | }) |
| | | } |
| | | that.initChart(res.result) |
| | | } |
| | | }) |
| | | export default { |
| | | name: 'GroupUtilizationRateChart', |
| | | components: {}, |
| | | mixins: [JeecgListMixin], |
| | | data() { |
| | | return { |
| | | disableMixinCreated: true, |
| | | queryParam: {}, |
| | | productionIds: [],//çç» |
| | | centerList: [], |
| | | groupList: [], |
| | | equipmentTypeList: [], |
| | | shiftList: [] |
| | | } |
| | | }, |
| | | mounted() { |
| | | window.addEventListener('resize', this.handleWindowResize) |
| | | this.handleWindowResize() |
| | | this.getCenterListByApi() |
| | | this.getEquipmentTypeListApi() |
| | | this.getShiftListByApi() |
| | | }, |
| | | methods: { |
| | | // è·åæ°æ® |
| | | loadData() { |
| | | this.chartContainer = this.$echarts.init(document.getElementById('chart-container')) |
| | | this.initChart({}) |
| | | this.chartContainer.showLoading({ |
| | | text: 'æ°æ®å è½½ä¸ ...', |
| | | color: '#0696e1', // å è½½å¨ç»é¢è² |
| | | textColor: '#0696e1' |
| | | }) |
| | | const that = this |
| | | |
| | | /** |
| | | * åå§åå¾è¡¨ |
| | | * @param dataList å¾è¡¨æ°æ®æº |
| | | * @param dateList æ¥æå表 |
| | | * @param shiftSubList çæ¬¡æ é¢å表 |
| | | * @param shiftDataList çæ¬¡æ°æ®å表 |
| | | */ |
| | | initChart({ dataList, dateList, shiftSubList, shiftDataList }) { |
| | | const defaultLegendData = ['24å°æ¶', '24å°æ¶ï¼å»é¤æ
éæ¶é´ï¼', 'çæ¬¡', '累计è¿è¡æ¶é´(h)'] |
| | | const defaultSeries = [ |
| | | { |
| | | type: 'line', |
| | | name: '24å°æ¶', |
| | | yAxisIndex: 0, |
| | | data: dataList ? dataList.map(item => item.utilizationRate) : [] |
| | | }, |
| | | { |
| | | type: 'line', |
| | | name: '24å°æ¶ï¼å»é¤æ
éæ¶é´ï¼', |
| | | yAxisIndex: 0, |
| | | data: dataList ? dataList.map(item => item.amendUtilizationRate) : [] |
| | | }, |
| | | { |
| | | type: 'line', |
| | | name: 'çæ¬¡', |
| | | yAxisIndex: 0, |
| | | data: dataList ? dataList.map(item => item.shiftUtilizationRate) : [] |
| | | }, |
| | | { |
| | | type: 'bar', |
| | | name: '累计è¿è¡æ¶é´(h)', |
| | | yAxisIndex: 1, |
| | | barWidth: '30%', |
| | | data: dataList ? dataList.map(item => item.processLong) : [] |
| | | } |
| | | ] |
| | | const option = { |
| | | title: { |
| | | text: '设å¤ç»¼åå©ç¨ç', |
| | | left: 'center', |
| | | top: 0, |
| | | textStyle: { |
| | | fontSize: 22 |
| | | } |
| | | }, |
| | | grid: { |
| | | top: '12%', |
| | | left: '1%', |
| | | right: '1%', |
| | | bottom: '1%', |
| | | containLabel: true |
| | | }, |
| | | legend: { |
| | | top: '6%', |
| | | right: 'center', |
| | | itemGap: 20, |
| | | data: defaultLegendData |
| | | }, |
| | | tooltip: { |
| | | show: true, |
| | | trigger: 'axis' |
| | | }, |
| | | xAxis: { |
| | | type: 'category', |
| | | data: dateList ? dateList : [] |
| | | }, |
| | | yAxis: [ |
| | | { |
| | | type: 'value', |
| | | name: 'å©ç¨ç(%)', |
| | | axisLine: { |
| | | show: true |
| | | }, |
| | | axisLabel: { |
| | | formatter: '{value}%' |
| | | mdcApi.getGroupChartDataApi(this.queryParam) |
| | | .then(res => { |
| | | if (res.success) { |
| | | if (!res.result.dataList || (res.result.dataList && res.result.dataList.length === 0)) { |
| | | that.$notification.warning({ |
| | | message: 'æ¶æ¯', |
| | | description: 'ææ æ°æ®' |
| | | }) |
| | | } |
| | | that.initChart(res.result) |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | /** |
| | | * åå§åå¾è¡¨ |
| | | * @param dataList å¾è¡¨æ°æ®æº |
| | | * @param dateList æ¥æå表 |
| | | * @param shiftSubList çæ¬¡æ é¢å表 |
| | | * @param shiftDataList çæ¬¡æ°æ®å表 |
| | | */ |
| | | initChart({ dataList, dateList, shiftSubList, shiftDataList }) { |
| | | const defaultLegendData = ['24å°æ¶', '24å°æ¶ï¼å»é¤æ
éæ¶é´ï¼', 'çæ¬¡', '累计è¿è¡æ¶é´(h)'] |
| | | const defaultSeries = [ |
| | | { |
| | | type: 'line', |
| | | name: '24å°æ¶', |
| | | yAxisIndex: 0, |
| | | data: dataList ? dataList.map(item => item.utilizationRate) : [] |
| | | }, |
| | | { |
| | | type: 'value', |
| | | name: 'è¿è¡æ¶é´(h)', |
| | | axisLine: { |
| | | show: true |
| | | } |
| | | } |
| | | ], |
| | | series: defaultSeries |
| | | } |
| | | if (shiftSubList) { |
| | | option.legend.data = defaultLegendData.concat(shiftSubList) |
| | | const newSeriesData = shiftDataList.map(item => { |
| | | return { |
| | | type: 'line', |
| | | name: item.shiftSubName, |
| | | name: '24å°æ¶ï¼å»é¤æ
éæ¶é´ï¼', |
| | | yAxisIndex: 0, |
| | | data: item.dataList ? item.dataList.map(item => item.utilizationRate) : [] |
| | | data: dataList ? dataList.map(item => item.amendUtilizationRate) : [] |
| | | }, |
| | | { |
| | | type: 'line', |
| | | name: 'çæ¬¡', |
| | | yAxisIndex: 0, |
| | | data: dataList ? dataList.map(item => item.shiftUtilizationRate) : [] |
| | | }, |
| | | { |
| | | type: 'bar', |
| | | name: '累计è¿è¡æ¶é´(h)', |
| | | yAxisIndex: 1, |
| | | barWidth: '30%', |
| | | data: dataList ? dataList.map(item => item.processLong) : [] |
| | | } |
| | | }) |
| | | ] |
| | | const option = { |
| | | title: { |
| | | text: '设å¤ç»¼åå©ç¨ç', |
| | | left: 'center', |
| | | top: 0, |
| | | textStyle: { |
| | | fontSize: 22 |
| | | } |
| | | }, |
| | | grid: { |
| | | top: '12%', |
| | | left: '1%', |
| | | right: '1%', |
| | | bottom: '1%', |
| | | containLabel: true |
| | | }, |
| | | legend: { |
| | | top: '6%', |
| | | right: 'center', |
| | | itemGap: 20, |
| | | data: defaultLegendData |
| | | }, |
| | | tooltip: { |
| | | show: true, |
| | | trigger: 'axis' |
| | | }, |
| | | xAxis: { |
| | | type: 'category', |
| | | data: dateList ? dateList : [] |
| | | }, |
| | | yAxis: [ |
| | | { |
| | | type: 'value', |
| | | name: 'å©ç¨ç(%)', |
| | | axisLine: { |
| | | show: true |
| | | }, |
| | | axisLabel: { |
| | | formatter: '{value}%' |
| | | } |
| | | }, |
| | | { |
| | | type: 'value', |
| | | name: 'è¿è¡æ¶é´(h)', |
| | | axisLine: { |
| | | show: true |
| | | } |
| | | } |
| | | ], |
| | | series: defaultSeries |
| | | } |
| | | if (shiftSubList) { |
| | | option.legend.data = defaultLegendData.concat(shiftSubList) |
| | | const newSeriesData = shiftDataList.map(item => { |
| | | return { |
| | | type: 'line', |
| | | name: item.shiftSubName, |
| | | yAxisIndex: 0, |
| | | data: item.dataList ? item.dataList.map(item => item.utilizationRate) : [] |
| | | } |
| | | }) |
| | | |
| | | option.series = defaultSeries.concat(newSeriesData) |
| | | option.series = defaultSeries.concat(newSeriesData) |
| | | } |
| | | |
| | | this.chartContainer.setOption(option, true) |
| | | this.chartContainer.hideLoading() |
| | | }, |
| | | |
| | | // è·åä¸å¿å表 |
| | | getCenterListByApi() { |
| | | this.centerList = [] |
| | | const that = this |
| | | mdcApi.getCenterOrGroupListApi() |
| | | .then(res => { |
| | | if (res.success) { |
| | | that.centerList = res.result |
| | | that.queryParam.productionId = res.result[0].value |
| | | that.handleCenterSelectChange(res.result[0].value, { isInitLoad: true }) |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | /** |
| | | * è·åçç»å表 |
| | | * @param productionId ä¸å¿Id |
| | | */ |
| | | getGroupListByApi(productionId, isInitLoad) { |
| | | this.groupList = [] |
| | | const that = this |
| | | mdcApi.getCenterOrGroupListApi(productionId) |
| | | .then(res => { |
| | | if (res.success) { |
| | | that.groupList = res.result |
| | | that.handleGroupSelectChange(res.result && res.result.length > 0 && isInitLoad ? [res.result[0].value] : []) |
| | | if (!isInitLoad) return |
| | | that.loadData() |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | /** |
| | | * ä¸å¿åçæ¹åæ¶è§¦å |
| | | * @param value æ¹ååçå¼ |
| | | * @param isInitLoad æ¯å¦ä¸ºåå§åå è½½ |
| | | */ |
| | | handleCenterSelectChange(value, { isInitLoad }) { |
| | | this.getGroupListByApi(value, isInitLoad) |
| | | }, |
| | | |
| | | /** |
| | | * çç»åçæ¹åæ¶è§¦å |
| | | * @param value æ¹ååçå¼ |
| | | */ |
| | | handleGroupSelectChange(value) { |
| | | this.productionIds = value |
| | | this.queryParam.productionIds = value.join(',') |
| | | }, |
| | | |
| | | // è·å设å¤ç±»åå表 |
| | | getEquipmentTypeListApi() { |
| | | const that = this |
| | | mdcApi.getEquipmentTypeListApi() |
| | | .then(res => { |
| | | if (res.success) { |
| | | that.equipmentTypeList = res.result |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | // è·åçå¶å表 |
| | | getShiftListByApi() { |
| | | const that = this |
| | | mdcApi.getShiftListApi() |
| | | .then(res => { |
| | | if (res.success) { |
| | | that.shiftList = res.result |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | handleWindowResize() { |
| | | if (this.chartContainer) this.chartContainer.resize() |
| | | } |
| | | |
| | | this.chartContainer.setOption(option, true) |
| | | this.chartContainer.hideLoading() |
| | | }, |
| | | |
| | | // è·åä¸å¿å表 |
| | | getCenterListByApi() { |
| | | const that = this |
| | | mdcApi.getCenterOrGroupListApi() |
| | | .then(res => { |
| | | if (res.success) { |
| | | that.centerList = res.result |
| | | that.queryParam.productionId = res.result[0].value |
| | | that.getGroupListByApi(res.result[0].value) |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | /** |
| | | * è·åçç»å表 |
| | | * @param productionId ä¸å¿Id |
| | | */ |
| | | getGroupListByApi(productionId) { |
| | | const that = this |
| | | mdcApi.getCenterOrGroupListApi(productionId) |
| | | .then(res => { |
| | | if (res.success) { |
| | | that.groupList = res.result |
| | | that.handleGroupSelectChange([res.result[0].value]) |
| | | that.loadData() |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | /** |
| | | * çç»åçæ¹åæ¶è§¦å |
| | | * @param value æ¹ååçå¼ |
| | | */ |
| | | handleGroupSelectChange(value) { |
| | | this.productionIds = value |
| | | this.queryParam.productionIds = value.join(',') |
| | | }, |
| | | |
| | | // è·å设å¤ç±»åå表 |
| | | getEquipmentTypeListApi() { |
| | | const that = this |
| | | mdcApi.getEquipmentTypeListApi() |
| | | .then(res => { |
| | | if (res.success) { |
| | | that.equipmentTypeList = res.result |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | // è·åçå¶å表 |
| | | getShiftListByApi() { |
| | | const that = this |
| | | mdcApi.getShiftListApi() |
| | | .then(res => { |
| | | if (res.success) { |
| | | that.shiftList = res.result |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | handleWindowResize() { |
| | | if (this.chartContainer) this.chartContainer.resize() |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | |
| | | <a-col :md="5" :sm="5"> |
| | | <a-space> |
| | | <a-button type="primary" @click="searchQuery" icon="search">æ¥è¯¢</a-button> |
| | | <!-- <a-button type="primary" @click="searchReset" icon="reload">éç½®</a-button>--> |
| | | </a-space> |
| | | </a-col> |
| | | </a-row> |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import mdcApi from '@api/mdc' |
| | | import { JeecgListMixin } from '@/mixins/JeecgListMixin' |
| | | import mdcApi from '@api/mdc' |
| | | import { JeecgListMixin } from '@/mixins/JeecgListMixin' |
| | | |
| | | export default { |
| | | name: 'GroupUtilizationRateCompareChart', |
| | | components: {}, |
| | | mixins: [JeecgListMixin], |
| | | data() { |
| | | return { |
| | | disableMixinCreated: true, |
| | | centerList: [], |
| | | chartsOptionList: [ |
| | | { |
| | | position: 'left', |
| | | title: 'çç»è®¾å¤ç»¼åå©ç¨çï¼24hï¼', |
| | | property: 'utilizationRateList' |
| | | }, |
| | | { |
| | | position: 'middle', |
| | | title: 'çç»è®¾å¤ç»¼åå©ç¨çï¼24hå»é¤æ
éæ¶é´ï¼', |
| | | property: 'amendUtilizationRateList' |
| | | }, |
| | | { |
| | | position: 'right', |
| | | title: 'çç»è®¾å¤ç»¼åå©ç¨çï¼è®¡å工使¶é´ï¼', |
| | | property: 'shiftUtilizationRateList' |
| | | } |
| | | ], |
| | | leftChartContainer: null, |
| | | middleChartContainer: null, |
| | | rightChartContainer: null |
| | | } |
| | | }, |
| | | |
| | | mounted() { |
| | | window.addEventListener('resize', this.handleWindowResize) |
| | | this.getCenterListByApi() |
| | | this.handleWindowResize() |
| | | }, |
| | | methods: { |
| | | // è·åå¾è¡¨æ°æ® |
| | | loadData() { |
| | | const that = this |
| | | this.chartsOptionList.forEach(item => { |
| | | that.initChart(item.position) |
| | | that.chartSetOption(item.position, item.title, [], [], false) |
| | | }) |
| | | mdcApi.getGroupRateCompareChartDataApi(this.queryParam.productionId) |
| | | .then(res => { |
| | | if (res.success) { |
| | | that.chartsOptionList.forEach(item => this.chartSetOption(item.position, item.title, res.result[item.property], res.result.dateList)) |
| | | } else { |
| | | that.$notification.warning({ |
| | | message: 'æ¶æ¯', |
| | | description: res.message |
| | | }) |
| | | } |
| | | }) |
| | | .catch(err => { |
| | | that.$notification.error({ |
| | | message: 'æ¶æ¯', |
| | | description: err.message |
| | | }) |
| | | }) |
| | | }, |
| | | |
| | | /** |
| | | * åå§åå¾è¡¨ |
| | | * @param position å¾è¡¨ä½ç½® String |
| | | */ |
| | | initChart(position) { |
| | | this[position + 'ChartContainer'] = this.$echarts.init(document.getElementById(`chart-container-${position}`)) |
| | | this[position + 'ChartContainer'].showLoading({ |
| | | text: 'æ°æ®å è½½ä¸ ...', |
| | | color: '#0696e1', // å è½½å¨ç»é¢è² |
| | | textColor: '#0696e1' |
| | | }) |
| | | }, |
| | | |
| | | /** |
| | | * è®¾ç½®å¾æ é项 |
| | | * @param position å¾è¡¨ä½ç½® String |
| | | * @param title å¾è¡¨æ é¢ String |
| | | * @param dataList å¾è¡¨æ°æ®æº Array |
| | | * @param dateList å¾è¡¨æ¨ªåæ æä»½ Array |
| | | * @param isHideLoading æ¯å¦å
³éå è½½å¾æ Boolean |
| | | */ |
| | | chartSetOption(position, title, dataList, dateList, isHideLoading = true) { |
| | | const option = { |
| | | title: { |
| | | text: title, |
| | | left: 'center', |
| | | top: 0, |
| | | textStyle: { |
| | | fontSize: 22 |
| | | } |
| | | }, |
| | | grid: { |
| | | top: '10%', |
| | | left: '1%', |
| | | right: '1%', |
| | | bottom: '12%', |
| | | containLabel: true |
| | | }, |
| | | legend: { |
| | | bottom: '3%', |
| | | right: 'center', |
| | | data: dataList.map(item => item.productionName) |
| | | }, |
| | | tooltip: { |
| | | show: true, |
| | | trigger: 'axis' |
| | | }, |
| | | xAxis: { |
| | | type: 'category', |
| | | data: dateList |
| | | }, |
| | | yAxis: [ |
| | | export default { |
| | | name: 'GroupUtilizationRateCompareChart', |
| | | components: {}, |
| | | mixins: [JeecgListMixin], |
| | | data() { |
| | | return { |
| | | disableMixinCreated: true, |
| | | centerList: [], |
| | | chartsOptionList: [ |
| | | { |
| | | type: 'value', |
| | | name: 'å©ç¨ç(%)', |
| | | axisLine: { |
| | | show: true |
| | | }, |
| | | axisLabel: { |
| | | formatter: '{value}%' |
| | | } |
| | | position: 'left', |
| | | title: 'çç»è®¾å¤ç»¼åå©ç¨çï¼24hï¼', |
| | | property: 'utilizationRateList' |
| | | }, |
| | | { |
| | | position: 'middle', |
| | | title: 'çç»è®¾å¤ç»¼åå©ç¨çï¼24hå»é¤æ
éæ¶é´ï¼', |
| | | property: 'amendUtilizationRateList' |
| | | }, |
| | | { |
| | | position: 'right', |
| | | title: 'çç»è®¾å¤ç»¼åå©ç¨çï¼è®¡å工使¶é´ï¼', |
| | | property: 'shiftUtilizationRateList' |
| | | } |
| | | ], |
| | | series: dataList.map(item => { |
| | | return { |
| | | type: 'line', |
| | | name: item.productionName, |
| | | data: item.dataList.map(item => item.utilizationRate) |
| | | } |
| | | }) |
| | | // series: [ |
| | | // { |
| | | // type: 'line', |
| | | // name: 'æ°é£ä¸ç', |
| | | // data: [85, 32, 23, 56, 24, 64] |
| | | // }, |
| | | // { |
| | | // type: 'line', |
| | | // name: 'æ°é£äºç', |
| | | // data: [23, 42, 76, 54, 87, 34] |
| | | // }, |
| | | // { |
| | | // type: 'line', |
| | | // name: 'æ°é£ä¸ç', |
| | | // data: [10, 84, 21, 42, 53, 57] |
| | | // }, |
| | | // { |
| | | // type: 'line', |
| | | // name: 'æ°è½¦ç', |
| | | // data: [23, 32, 42, 35, 64, 53] |
| | | // } |
| | | // ] |
| | | leftChartContainer: null, |
| | | middleChartContainer: null, |
| | | rightChartContainer: null |
| | | } |
| | | this[position + 'ChartContainer'].setOption(option, true) |
| | | if (isHideLoading) this[position + 'ChartContainer'].hideLoading() |
| | | }, |
| | | |
| | | // è·åä¸å¿å表 |
| | | getCenterListByApi() { |
| | | mdcApi.getCenterOrGroupListApi() |
| | | .then(res => { |
| | | if (res.success) { |
| | | this.centerList = res.result |
| | | this.queryParam.productionId = res.result[0].value |
| | | this.loadData() |
| | | } |
| | | mounted() { |
| | | window.addEventListener('resize', this.handleWindowResize) |
| | | this.getCenterListByApi() |
| | | this.handleWindowResize() |
| | | }, |
| | | methods: { |
| | | // è·åå¾è¡¨æ°æ® |
| | | loadData() { |
| | | const that = this |
| | | this.chartsOptionList.forEach(item => { |
| | | that.initChart(item.position) |
| | | that.chartSetOption(item.position, item.title, [], [], false) |
| | | }) |
| | | }, |
| | | mdcApi.getGroupRateCompareChartDataApi(this.queryParam.productionId) |
| | | .then(res => { |
| | | if (res.success) { |
| | | that.chartsOptionList.forEach(item => this.chartSetOption(item.position, item.title, res.result[item.property], res.result.dateList)) |
| | | } else { |
| | | that.$notification.warning({ |
| | | message: 'æ¶æ¯', |
| | | description: res.message |
| | | }) |
| | | } |
| | | }) |
| | | .catch(err => { |
| | | that.$notification.error({ |
| | | message: 'æ¶æ¯', |
| | | description: err.message |
| | | }) |
| | | }) |
| | | }, |
| | | |
| | | handleWindowResize() { |
| | | if (this.leftChartContainer) this.leftChartContainer.resize() |
| | | if (this.middleChartContainer) this.middleChartContainer.resize() |
| | | if (this.rightChartContainer) this.rightChartContainer.resize() |
| | | /** |
| | | * åå§åå¾è¡¨ |
| | | * @param position å¾è¡¨ä½ç½® String |
| | | */ |
| | | initChart(position) { |
| | | this[position + 'ChartContainer'] = this.$echarts.init(document.getElementById(`chart-container-${position}`)) |
| | | this[position + 'ChartContainer'].showLoading({ |
| | | text: 'æ°æ®å è½½ä¸ ...', |
| | | color: '#0696e1', // å è½½å¨ç»é¢è² |
| | | textColor: '#0696e1' |
| | | }) |
| | | }, |
| | | |
| | | /** |
| | | * è®¾ç½®å¾æ é项 |
| | | * @param position å¾è¡¨ä½ç½® String |
| | | * @param title å¾è¡¨æ é¢ String |
| | | * @param dataList å¾è¡¨æ°æ®æº Array |
| | | * @param dateList å¾è¡¨æ¨ªåæ æä»½ Array |
| | | * @param isHideLoading æ¯å¦å
³éå è½½å¾æ Boolean |
| | | */ |
| | | chartSetOption(position, title, dataList, dateList, isHideLoading = true) { |
| | | const option = { |
| | | title: { |
| | | text: title, |
| | | left: 'center', |
| | | top: 0, |
| | | textStyle: { |
| | | fontSize: 22 |
| | | } |
| | | }, |
| | | grid: { |
| | | top: '10%', |
| | | left: '1%', |
| | | right: '1%', |
| | | bottom: '12%', |
| | | containLabel: true |
| | | }, |
| | | legend: { |
| | | bottom: '3%', |
| | | right: 'center', |
| | | data: dataList.map(item => item.productionName) |
| | | }, |
| | | tooltip: { |
| | | show: true, |
| | | trigger: 'axis' |
| | | }, |
| | | xAxis: { |
| | | type: 'category', |
| | | data: dateList |
| | | }, |
| | | yAxis: [ |
| | | { |
| | | type: 'value', |
| | | name: 'å©ç¨ç(%)', |
| | | axisLine: { |
| | | show: true |
| | | }, |
| | | axisLabel: { |
| | | formatter: '{value}%' |
| | | } |
| | | } |
| | | ], |
| | | series: dataList.map(item => { |
| | | return { |
| | | type: 'line', |
| | | name: item.productionName, |
| | | data: item.dataList.map(item => item.utilizationRate) |
| | | } |
| | | }) |
| | | // series: [ |
| | | // { |
| | | // type: 'line', |
| | | // name: 'æ°é£ä¸ç', |
| | | // data: [85, 32, 23, 56, 24, 64] |
| | | // }, |
| | | // { |
| | | // type: 'line', |
| | | // name: 'æ°é£äºç', |
| | | // data: [23, 42, 76, 54, 87, 34] |
| | | // }, |
| | | // { |
| | | // type: 'line', |
| | | // name: 'æ°é£ä¸ç', |
| | | // data: [10, 84, 21, 42, 53, 57] |
| | | // }, |
| | | // { |
| | | // type: 'line', |
| | | // name: 'æ°è½¦ç', |
| | | // data: [23, 32, 42, 35, 64, 53] |
| | | // } |
| | | // ] |
| | | } |
| | | this[position + 'ChartContainer'].setOption(option, true) |
| | | if (isHideLoading) this[position + 'ChartContainer'].hideLoading() |
| | | }, |
| | | |
| | | // è·åä¸å¿å表 |
| | | getCenterListByApi() { |
| | | this.centerList = [] |
| | | const that = this |
| | | mdcApi.getCenterOrGroupListApi() |
| | | .then(res => { |
| | | if (res.success) { |
| | | that.centerList = res.result |
| | | that.$set(that.queryParam, 'productionId', res.result[0].value) |
| | | that.loadData() |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | handleWindowResize() { |
| | | if (this.leftChartContainer) this.leftChartContainer.resize() |
| | | if (this.middleChartContainer) this.middleChartContainer.resize() |
| | | if (this.rightChartContainer) this.rightChartContainer.resize() |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | |
| | | </div> |
| | | |
| | | <div> |
| | | <table cellpadding="0" cellspacing="0" width="100%"> |
| | | <tr> |
| | | <td> |
| | | <table width="100%"> |
| | | <tr style="word-break: keep-all;"> |
| | | <td align="right"><a id="btnMdcLogWline" href="#"> |
| | | <div style="padding-top: 15px;" @click="openWorkChart"> |
| | | <img src="../../../../../assets/image/linechart.png" alt=""> |
| | | <p>工使²çº¿</p> |
| | | </div> |
| | | </a></td> |
| | | <td width="100%" height="100%"> |
| | | <table width="100%" height="100%" align="center" cellpadding="0" cellspacing="0"> |
| | | <tr> |
| | | <td style="word-break: keep-all;" align="left"> |
| | | <div |
| | | style="width: 100%; height: 62px;border: 1px solid;border-color: #9d9d9d;position: relative;overflow: hidden"> |
| | | <div class="mdcLogShowOne" |
| | | :style='{display: "inline-block",width:item.dateProportion, height: "100%"}' |
| | | v-for="item in normal"> |
| | | <span v-if="item.status == 0" |
| | | :style='{display: "inline-block",width:item.dateProportion, height: "100%", background: "#A8A8A8",position:"absolute",top:"0"}'></span> |
| | | <span v-if="item.status == 1" |
| | | :style='{display: "inline-block",width:item.dateProportion, height: "100%", background: "#fffc5c",position:"absolute",top:"0"}'></span> |
| | | <span v-if="item.status == 2" |
| | | :style='{display: "inline-block",width:item.dateProportion, height: "100%", background: "#fffc5c",position:"absolute",top:"0"}'></span> |
| | | <span v-if="item.status == 3" |
| | | :style='{display: "inline-block",width:item.dateProportion, height: "100%", background: "#19FE01",position:"absolute",top:"0"}'></span> |
| | | <span v-if="item.status == 23" |
| | | :style='{display: "inline-block",width:item.dateProportion, height: "100%", background: "#19FE01",position:"absolute",bottom:"0"}'></span> |
| | | </div> |
| | | <div v-if="item.status == 22" style="z-index: 999;" |
| | | :style='{display: "inline-block",left:item.left,width:item.dateProportion, height: "100%",position:"absolute"}' |
| | | v-for="item in warning"> |
| | | <div class="equipment-status-container"> |
| | | <a href="#" @click="openWorkChart"> |
| | | <img src="@/assets/image/linechart.png" alt=""> |
| | | <div>工使²çº¿</div> |
| | | </a> |
| | | |
| | | <div> |
| | | <div :style='{display: "inline-block",width:item.dateProportion, height: "100%"}' v-for="item in normal"> |
| | | <span v-if="item.status == 0" |
| | | :style='{display: "inline-block",width:item.dateProportion, height: "100%", background: "#A8A8A8",position:"absolute",top:"0"}'></span> |
| | | <span v-if="item.status == 1" |
| | | :style='{display: "inline-block",width:item.dateProportion, height: "100%", background: "#fffc5c",position:"absolute",top:"0"}'></span> |
| | | <span v-if="item.status == 2" |
| | | :style='{display: "inline-block",width:item.dateProportion, height: "100%", background: "#fffc5c",position:"absolute",top:"0"}'></span> |
| | | <span v-if="item.status == 3" |
| | | :style='{display: "inline-block",width:item.dateProportion, height: "100%", background: "#19FE01",position:"absolute",top:"0"}'></span> |
| | | <span v-if="item.status == 23" |
| | | :style='{display: "inline-block",width:item.dateProportion, height: "100%", background: "#19FE01",position:"absolute",bottom:"0"}'></span> |
| | | </div> |
| | | <div v-if="item.status == 22" |
| | | :style='{display: "inline-block",left:item.left,width:item.dateProportion, height: "100%",position:"absolute"}' |
| | | v-for="item in warning"> |
| | | <span |
| | | :style='{display: "inline-block",width:"100%", left:0, height: "68%", background: "#FD0008",position:"absolute",bottom:"0"}'></span> |
| | | </div> |
| | | <div v-if="item.status == 25" style="z-index: 1000;" |
| | | :style='{display: "inline-block",left:item.left,width:item.dateProportion, height: "100%",position:"absolute"}' |
| | | v-for="item in fault"> |
| | | </div> |
| | | <div v-if="item.status == 25" |
| | | :style='{display: "inline-block",left:item.left,width:item.dateProportion, height: "100%",position:"absolute"}' |
| | | v-for="item in fault"> |
| | | <span |
| | | :style='{display: "inline-block",width:"100%", left:0, height: "50%", background: "#C11900",position:"absolute",bottom:"0"}'></span> |
| | | </div> |
| | | </div> |
| | | </td> |
| | | </tr> |
| | | </table> |
| | | </td> |
| | | <td align="left"><a id="btnMdcLogBar" href="#"> |
| | | <div style="padding-top: 15px;" @click="openHistoryChart"> |
| | | <img src="../../../../../assets/image/Histogram.png" alt=""> |
| | | <p>åå²è®°å½</p> |
| | | </div> |
| | | </a></td> |
| | | </tr> |
| | | <tr> |
| | | <td align="right">0</td> |
| | | <td width="100%"> |
| | | <table width="100%;" cellpadding="0" cellspacing="0"> |
| | | <tr align="right" style="word-break: keep-all;"> |
| | | <td>02:00</td> |
| | | <td>04:00</td> |
| | | <td>06:00</td> |
| | | <td>08:00</td> |
| | | <td>10:00</td> |
| | | <td>12:00</td> |
| | | <td>14:00</td> |
| | | <td>16:00</td> |
| | | <td>18:00</td> |
| | | <td>20:00</td> |
| | | <td>22:00</td> |
| | | <td>24:00</td> |
| | | </tr> |
| | | </table> |
| | | </td> |
| | | <td></td> |
| | | </tr> |
| | | </table> |
| | | </td> |
| | | </tr> |
| | | </table> |
| | | </div> |
| | | </div> |
| | | |
| | | <a href="#" @click="openHistoryChart"> |
| | | <img src="@/assets/image/Histogram.png" alt=""> |
| | | <div>åå²è®°å½</div> |
| | | </a> |
| | | </div> |
| | | |
| | | <div class="time-container"> |
| | | <div>0</div> |
| | | <div> |
| | | <div v-for="item in 12">{{('0'+item*2).slice(-2)}}:00</div> |
| | | </div> |
| | | <div></div> |
| | | </div> |
| | | |
| | | <a-space class="date-change-container"> |
| | | <img @click="dataBefore" src="@/assets/image/left.png" alt=""> |
| | |
| | | </script> |
| | | |
| | | <style scoped="scoped" lang="less"> |
| | | @image-container-width: 58px; |
| | | |
| | | .equipment-status-container { |
| | | display: flex; |
| | | |
| | | > a { |
| | | display: inline-block; |
| | | text-align: center; |
| | | width: @image-container-width |
| | | } |
| | | |
| | | > div { |
| | | height: 62px; |
| | | border: 1px solid #9d9d9d; |
| | | position: relative; |
| | | overflow: hidden; |
| | | flex: 1 |
| | | } |
| | | } |
| | | |
| | | .time-container { |
| | | display: flex; |
| | | align-items: center; |
| | | |
| | | > div:not(:nth-child(2)) { |
| | | width: @image-container-width; |
| | | text-align: right; |
| | | } |
| | | |
| | | > div:nth-child(2) { |
| | | width: calc(100% - @image-container-width * 2); |
| | | display: flex; |
| | | |
| | | div { |
| | | width: calc(100% / 12); |
| | | text-align: right; |
| | | } |
| | | } |
| | | } |
| | | |
| | | .date-change-container { |
| | | display: flex; |
| | | align-items: center; |
| | |
| | | <a-row> |
| | | <a-col :span="24"> |
| | | <a-form-model-item label="设å¤ç»" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="equipmentIds"> |
| | | <a-input-search :readOnly="true" v-model="model.equipmentIds" |
| | | <a-input-search :readOnly="true" v-model="model.equipmentIds" @click="deviceSearch" |
| | | @search="deviceSearch" :disabled="disableSelectDevice" enter-button |
| | | placeholder="è¯·éæ©è®¾å¤"></a-input-search> |
| | | </a-form-model-item> |
| | |
| | | <a-button type="primary" @click="searchReset" icon="reload">éç½®</a-button> |
| | | </a-space> |
| | | </a-col> |
| | | <!--<a-col :md="2" :sm="3" :xs="3">--> |
| | | <!--<a-button type="primary" @click="searchQuery" icon="search">æ¥è¯¢</a-button>--> |
| | | <!--</a-col>--> |
| | | <!--<a-col :md="2" :sm="2" :xs="2">--> |
| | | <!--<a-button type="primary" @click="searchReset" icon="reload">éç½®</a-button>--> |
| | | <!--</a-col>--> |
| | | <!--<a-col :lg="2" :md="3" :sm="3" :xs="3">--> |
| | | <!--<a-button type="primary" @click="exportExcel" icon="download">导åº</a-button>--> |
| | | <!--</a-col>--> |
| | | </a-row> |
| | | </a-form> |
| | | </div> |
| | |
| | | </a-table> |
| | | </div> |
| | | <!-- tableåºå-end --> |
| | | <!--<device-repair-model></device-repair-model>--> |
| | | <torqueconfiguration-modal ref="modalForm" @ok="modalFormOk"></torqueconfiguration-modal> |
| | | <torqueconfiguration-modaledit ref="modalFormedit" @ok="modalFormOk">></torqueconfiguration-modaledit> |
| | | <!--<device-repair-model-add ref="modalFormadd" @ok="modalFormOk"></device-repair-model-add>--> |
| | | <!--<device-repair-model-edit ref="modalFormedit" @ok="modalFormOk"></device-repair-model-edit>--> |
| | | <!--<repair-model ref="repairModelFrom" @ok="modalFormOk"></repair-model>--> |
| | | |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | <a-col :span="12"> |
| | | <a-form-item label="设å¤ç»" :labelCol="labelCol" :wrapperCol="wrapperCol"> |
| | | <a-input-search :readOnly="true" v-decorator="['equipmentIds', validatorRules.equipmentIds]" |
| | | @search="deviceSearch" enter-button placeholder="è¯·éæ©è®¾å¤"/> |
| | | @search="deviceSearch" @click="deviceSearch" enter-button placeholder="è¯·éæ©è®¾å¤"/> |
| | | </a-form-item> |
| | | </a-col> |
| | | <a-col :span="12"> |
| | |
| | | <a-row :gutter="24"> |
| | | <a-col :md="5" :sm="5"> |
| | | <a-form-item label="设å¤"> |
| | | <a-input-search :readOnly="true" v-model="queryParam.equipmentId" @search="deviceSearch" |
| | | <a-input-search :readOnly="true" v-model="queryParam.equipmentId" @search="deviceSearch" @click="deviceSearch" |
| | | placeholder='è¯·éæ©è®¾å¤'/> |
| | | </a-form-item> |
| | | </a-col> |
| | |
| | | <a-button v-has="'user.disposition'" type="primary" @click="handleAdd" icon="plus">é
ç½®</a-button> |
| | | </a-space> |
| | | </a-col> |
| | | <!--<a-col :md="2" :sm="2" :xs="2">--> |
| | | <!--<a-button type="primary" @click="searchQuery" icon="search">æ¥è¯¢</a-button>--> |
| | | <!--</a-col>--> |
| | | <!--<a-col :md="2" :sm="2">--> |
| | | <!--<!–//æ²é£–>--> |
| | | <!--<a-button v-has="'user.disposition'" type="primary" @click="handleAdd" icon="plus">é
ç½®</a-button>--> |
| | | |
| | | <!--<!–<a-button type="primary" @click="handleAdd" icon="plus">é
ç½®</a-button>–>--> |
| | | <!--</a-col>--> |
| | | |
| | | |
| | | </a-row> |
| | | </a-form> |
| | | </div> |
| | |
| | | <a-col :span="24"> |
| | | <a-form-item label="设å¤ç»" :labelCol="labelColLong" :wrapperCol="wrapperColLong"> |
| | | <a-input-search :readOnly="true" v-decorator="['equipmentId', validatorRules.equipmentId]" |
| | | @search="deviceSearch" enter-button placeholder="è¯·éæ©è®¾å¤"/> |
| | | @search="deviceSearch" @click="deviceSearch" enter-button placeholder="è¯·éæ©è®¾å¤"/> |
| | | </a-form-item> |
| | | </a-col> |
| | | </a-row> |
| | |
| | | </script> |
| | | |
| | | <style scoped lang="less"> |
| | | |
| | | /deep/ .ant-modal-close { |
| | | color: #1191b0; |
| | | font-size: 24px; |
| | | } |
| | | |
| | | /deep/ .ant-modal-close-x { |
| | | font-size: 24px; |
| | | } |
| | | |
| | | .ant-btn { |
| | | padding: 0 10px; |
| | | margin-left: 3px; |
| | | } |
| | | |
| | | .ant-form-item-control { |
| | | line-height: 0px; |
| | | } |
| | | |
| | | /** 主表åè¡é´è· */ |
| | | .ant-form .ant-form-item { |
| | | margin-bottom: 10px; |
| | | } |
| | | |
| | | /** Tab页é¢è¡é´è· */ |
| | | .ant-tabs-content .ant-form-item { |
| | | margin-bottom: 0px; |
| | | } |
| | | |
| | | /deep/ .mark1 { |
| | | color: white !important; |
| | | background-color: #1890ff !important; |
| | |
| | | {{tableHead.openRate | numFilter}} |
| | | </td> |
| | | <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('gzl') > -1"> |
| | | {{tableHead.faultRate | numFilter}} |
| | | {{tableHead.faultRate }} |
| | | </td> |
| | | <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('kjsj') > -1"> |
| | | {{tableHead.openLong | getFormattedTime}} |