DNC模块:
1、解决点击tabs栏空白处出现空内容组件问题
2、新增树内容搜索时若清空内容后还原为搜索前展开的树节点的功能
产品结构树:
1、工艺和工步层级开放其他文档列表的展示
2、零件层级下新增工艺规程版本层级,并实现工艺规程版本层级的相应功能(增删改)
3、解决因设备结构树数据未加载完成就跳转至产品结构树页面导致接口获取到的前页面方法影响后页面从而出现混乱问题
| | |
| | | DeviceStructureMainBottom |
| | | }, |
| | | created() { |
| | | this.$bus.$on('sendCurrentTreeNodeInfo', this.receiveCurrentTreeNodeInfo) |
| | | this.$bus.$on('sendDeviceTreeNodeInfo', this.receiveCurrentTreeNodeInfo) |
| | | }, |
| | | data() { |
| | | return { |
| | |
| | | if (this.$refs.mainTopRef) this.$refs.mainTopRef.releaseLoadDocumentListApi() |
| | | }) |
| | | } |
| | | console.log('currentTreeNodeInfo------------------', this.currentTreeNodeInfo) |
| | | } |
| | | } |
| | | } |
| | |
| | | <template> |
| | | <a-tabs style="height: 100%" v-model="activeTabKey" @change="handleTabChange"> |
| | | <a-tab-pane :key="1" tab="设å¤å±æ§" v-if="currentTreeNodeInfo.type===2&&!currentDocumentInfo.docId"> |
| | | <DeviceInfo :currentLevelDetails="currentTreeNodeInfo.entity" :size="containerSize"/> |
| | | </a-tab-pane> |
| | | |
| | | <template v-if="currentDocumentInfo.docId"> |
| | | <a-tab-pane :key="1" tab="ææ¡£å±æ§"> |
| | | <DocumentInfo :currentLevelDetails="currentDocumentInfo" :size="containerSize"/> |
| | | <div> |
| | | <a-tabs v-model="activeTabKey" @change="handleTabChange"> |
| | | <a-tab-pane :key="1" tab="设å¤å±æ§" v-if="currentTreeNodeInfo.type===2&&!currentDocumentInfo.docId"> |
| | | <DeviceInfo :currentLevelDetails="currentTreeNodeInfo.entity" :size="containerSize"/> |
| | | </a-tab-pane> |
| | | |
| | | <a-tab-pane :key="2" tab="é¢è§"> |
| | | <FilePreview ref="filePreviewRef" :currentDocumentInfo="currentDocumentInfo"/> |
| | | </a-tab-pane> |
| | | <template v-if="currentDocumentInfo.docId"> |
| | | <a-tab-pane :key="1" tab="ææ¡£å±æ§"> |
| | | <DocumentInfo :currentLevelDetails="currentDocumentInfo" :size="containerSize"/> |
| | | </a-tab-pane> |
| | | |
| | | <a-tab-pane :key="3" tab="ææ¡£çæ¬"> |
| | | <DocumentVersionTableList ref="documentVersionTableRef" :currentDocumentInfo="currentDocumentInfo" |
| | | @handleTableContextMenuOpen="handleTableContextMenuOpen" |
| | | @releaseFilePreviewApi="releaseFilePreviewApi" |
| | | :size="containerSize"/> |
| | | </a-tab-pane> |
| | | </template> |
| | | <a-tab-pane :key="2" tab="é¢è§"> |
| | | <FilePreview ref="filePreviewRef" :currentDocumentInfo="currentDocumentInfo"/> |
| | | </a-tab-pane> |
| | | |
| | | <a-tab-pane :key="3" tab="ææ¡£çæ¬"> |
| | | <DocumentVersionTableList ref="documentVersionTableRef" :currentDocumentInfo="currentDocumentInfo" |
| | | @handleTableContextMenuOpen="handleTableContextMenuOpen" |
| | | @releaseFilePreviewApi="releaseFilePreviewApi" |
| | | :size="containerSize"/> |
| | | </a-tab-pane> |
| | | </template> |
| | | </a-tabs> |
| | | |
| | | <TableContextMenu :tableRowInfo="currentRightClickedTableRowInfo" ref="tableContextMenuRef"/> |
| | | </a-tabs> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import DeviceInfo from './Device/DeviceInfo' |
| | | import DocumentInfo from '../../../common/DocumentInfo' |
| | |
| | | <template> |
| | | <a-tabs v-model="activeTabKey" @change="handleTabChange" @contextmenu.native="e=>e.preventDefault()" |
| | | v-if="Object.keys(currentTreeNodeInfo).length!==0"> |
| | | <a-tab-pane :key="1" tab="åé"> |
| | | <HasSentDocumentTableList ref="hasSentDocumentTableListRef" :currentTreeNodeInfo="currentTreeNodeInfo" |
| | | @handleTableContextMenuOpen="handleTableContextMenuOpen" :size="tableContainerSize"/> |
| | | </a-tab-pane> |
| | | <div> |
| | | <a-tabs v-model="activeTabKey" @change="handleTabChange" @contextmenu.native="e=>e.preventDefault()" |
| | | v-if="Object.keys(currentTreeNodeInfo).length!==0"> |
| | | <a-tab-pane :key="1" tab="åé"> |
| | | <HasSentDocumentTableList ref="hasSentDocumentTableListRef" :currentTreeNodeInfo="currentTreeNodeInfo" |
| | | @handleTableContextMenuOpen="handleTableContextMenuOpen" :size="tableContainerSize"/> |
| | | </a-tab-pane> |
| | | |
| | | <a-tab-pane :key="2" tab="æ¥æ¶"> |
| | | <HasReceivedDocumentTableList ref="hasReceivedDocumentTableListRef" :currentTreeNodeInfo="currentTreeNodeInfo" |
| | | @handleTableContextMenuOpen="handleTableContextMenuOpen" |
| | | :size="tableContainerSize"/> |
| | | </a-tab-pane> |
| | | <a-tab-pane :key="2" tab="æ¥æ¶"> |
| | | <HasReceivedDocumentTableList ref="hasReceivedDocumentTableListRef" :currentTreeNodeInfo="currentTreeNodeInfo" |
| | | @handleTableContextMenuOpen="handleTableContextMenuOpen" |
| | | :size="tableContainerSize"/> |
| | | </a-tab-pane> |
| | | </a-tabs> |
| | | |
| | | <TableContextMenu :tableRowInfo="currentRightClickedTableRowInfo" ref="tableContextMenuRef"/> |
| | | |
| | | <DocumentBatchDeleteModal :currentDocumentInfo="currentRightClickedTableRowInfo" :size="tableContainerSize" |
| | | @reloadDocumentListData="reloadDocumentListData" ref="documentBatchDeleteModalRef"/> |
| | | </a-tabs> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | |
| | | treeDataSource: [], |
| | | selectedKeys: [], |
| | | expandedKeys: [], |
| | | beforeSearchExpandedKeys: [], |
| | | searchValue: '', |
| | | dataList: [], |
| | | autoExpandParent: true, |
| | |
| | | this.allTreeKeys = [] |
| | | this.treeDataSource = res.result |
| | | this.generateList(this.treeDataSource) |
| | | this.expandedKeys = this.allTreeKeys |
| | | this.$bus.$emit('sendCurrentTreeNodeInfo', this.treeDataSource[0]) |
| | | this.expandedKeys = this.beforeSearchExpandedKeys = this.allTreeKeys |
| | | this.$bus.$emit('sendDeviceTreeNodeInfo', this.treeDataSource[0]) |
| | | } else { |
| | | this.$message.warn(res.message) |
| | | } |
| | |
| | | this.currentSelected = Object.assign({}, record) |
| | | this.selectedKeys = selectedKeys |
| | | // åå³ä¾§ç¶çº§ç»ä»¶åéå½åé䏿 èç¹ä¿¡æ¯ |
| | | this.$bus.$emit('sendCurrentTreeNodeInfo', this.currentSelected) |
| | | this.$bus.$emit('sendDeviceTreeNodeInfo', this.currentSelected) |
| | | }, |
| | | |
| | | /** |
| | |
| | | * @param expandedKeys å±å¼é¡¹key |
| | | */ |
| | | handleTreeExpand(expandedKeys) { |
| | | this.expandedKeys = expandedKeys |
| | | this.expandedKeys = this.beforeSearchExpandedKeys = expandedKeys |
| | | console.log('beforeSearchExpandedKeys', this.beforeSearchExpandedKeys) |
| | | this.autoExpandParent = 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) |
| | | let expandedKeys |
| | | let autoExpandParent |
| | | if (search !== '') { |
| | | expandedKeys = this.dataList |
| | | .map(item => { |
| | | if (item.title != null) { |
| | | if (item.title.indexOf(search) > -1) { |
| | | return this.getParentKey(item.key, this.treeDataSource) |
| | | } |
| | | return null |
| | | } |
| | | return null |
| | | } |
| | | }) |
| | | .filter((item, i, self) => item && self.indexOf(item) === i) |
| | | }) |
| | | .filter((item, i, self) => item && self.indexOf(item) === i) |
| | | autoExpandParent = true |
| | | } else { |
| | | expandedKeys = this.beforeSearchExpandedKeys |
| | | autoExpandParent = false |
| | | } |
| | | |
| | | Object.assign(this, { |
| | | expandedKeys, |
| | | searchValue: search, |
| | | autoExpandParent: true |
| | | autoExpandParent |
| | | }) |
| | | }, |
| | | |
| | |
| | | this.$nextTick(() => { |
| | | if (this.$refs.realForm) { |
| | | this.$refs.realForm.add({ |
| | | productId: this.currentTreeNodeInfo.productId, |
| | | componentId: this.currentTreeNodeInfo.componentId |
| | | productId: this.currentTreeNodeInfo.entity.productId, |
| | | componentId: this.currentTreeNodeInfo.entity.componentId |
| | | }) |
| | | } |
| | | }) |
| | |
| | | }) |
| | | }, |
| | | |
| | | |
| | | /** |
| | | * ç¹å»é¶ä»¶å建é¶ä»¶ä¸çº§å·¥åº |
| | | */ |
| | | handlePartsAddRelative() { |
| | | this.isAddNextLevel = true |
| | | this.visible = true |
| | | this.$nextTick(() => { |
| | | if (this.$refs.realForm) { |
| | | this.$refs.realForm.add({ |
| | | productId: this.currentTreeNodeInfo.entity.productId, |
| | | componentId: this.currentTreeNodeInfo.entity.componentId, |
| | | partsId: this.currentTreeNodeInfo.entity.partsId |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | /** |
| | | * ç¹å»å·¥åºæ·»å åçº§å·¥åº |
| | | */ |
| | |
| | | }) |
| | | }, |
| | | |
| | | // å建工èºè§ç¨çæ¬ä¸çº§å·¥åº |
| | | handleVersionAddChild() { |
| | | this.isAddNextLevel = true |
| | | this.visible = true |
| | | this.$nextTick(() => { |
| | | if (this.$refs.realForm) { |
| | | this.$refs.realForm.add({ |
| | | productId: this.currentTreeNodeInfo.entity.productId, |
| | | componentId: this.currentTreeNodeInfo.entity.componentId, |
| | | partsId: this.currentTreeNodeInfo.entity.partsId, |
| | | psvId: this.currentTreeNodeInfo.id |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | /** |
| | | * ç¼è¾å·¥åºä¿¡æ¯ |
| | | */ |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <j-modal |
| | | :title="title" |
| | | :width="width" |
| | | :visible="visible" |
| | | switchFullscreen |
| | | :maskClosable="false" |
| | | @ok="handleOk" |
| | | @cancel="handleCancel" |
| | | cancelText="å
³é"> |
| | | <ProcessSpecVersionModalForm ref="realForm" @ok="submitCallback" :allDeviceList="allDeviceList"/> |
| | | </j-modal> |
| | | </template> |
| | | |
| | | <script> |
| | | import dncApi from '@/api/dnc' |
| | | import ProcessSpecVersionModalForm from './ProcessSpecVersionModalForm.vue' |
| | | |
| | | export default { |
| | | name: 'ProcessSpecVersionModal', |
| | | components: { |
| | | ProcessSpecVersionModalForm |
| | | }, |
| | | props: { |
| | | currentTreeNodeInfo: { |
| | | type: Object |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | | title: '', |
| | | width: 500, |
| | | visible: false, |
| | | allDeviceList: [], |
| | | isAddNextLevel: false // æ¯å¦ä¸ºæ·»å ä¸çº§ï¼ä½ä¸ºæ èç¹æ¯å¦å±å¼ç夿 |
| | | } |
| | | }, |
| | | created() { |
| | | this.$bus.$on('treeMenuItemMethodTrigger', this.triggerCorrespondingMethod) |
| | | }, |
| | | methods: { |
| | | handleOk() { |
| | | this.$refs.realForm.submitForm() |
| | | }, |
| | | |
| | | |
| | | // å建é¶ä»¶ä¸çº§å·¥èºè§ç¨çæ¬ |
| | | handlePartsAddRelative() { |
| | | this.isAddNextLevel = true |
| | | this.visible = true |
| | | this.$nextTick(() => { |
| | | if (this.$refs.realForm) { |
| | | this.$refs.realForm.add({ |
| | | productId: this.currentTreeNodeInfo.entity.productId, |
| | | componentId: this.currentTreeNodeInfo.entity.componentId, |
| | | partsId: this.currentTreeNodeInfo.entity.partsId |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | // å建å级工èºè§ç¨çæ¬ |
| | | handleVersionAdd() { |
| | | this.isAddNextLevel = false |
| | | this.visible = true |
| | | this.$nextTick(() => { |
| | | if (this.$refs.realForm) { |
| | | this.$refs.realForm.add({ |
| | | productId: this.currentTreeNodeInfo.entity.productId, |
| | | componentId: this.currentTreeNodeInfo.entity.componentId, |
| | | partsId: this.currentTreeNodeInfo.entity.partsId |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | // ç¼è¾å·¥èºè§ç¨çæ¬ |
| | | handleVersionEdit() { |
| | | this.isAddNextLevel = false |
| | | this.visible = true |
| | | this.$nextTick(() => { |
| | | if (this.$refs.realForm) { |
| | | this.$refs.realForm.edit({ id: this.currentTreeNodeInfo.id, ...this.currentTreeNodeInfo.entity }) |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | submitCallback() { |
| | | this.$emit('submitSuccess', this.isAddNextLevel) |
| | | this.visible = false |
| | | }, |
| | | |
| | | handleCancel() { |
| | | this.$emit('close') |
| | | this.visible = false |
| | | }, |
| | | |
| | | triggerCorrespondingMethod({ methodName, modalTitle }) { |
| | | if (this[methodName]) { |
| | | this[methodName]() |
| | | this.title = modalTitle |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </script> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <a-spin :spinning="confirmLoading"> |
| | | <a-form-model ref="form" :model="model" :rules="validatorRules" :labelCol="labelColLong" :wrapperCol="wrapperColLong"> |
| | | <a-row> |
| | | <a-col :span="24"> |
| | | <a-form-model-item label="å·¥èºè§ç¨çæ¬å·"> |
| | | <a-input v-model="model.processSpecVersionCode" placeholder="请è¾å
¥å·¥èºè§ç¨çæ¬å·"/> |
| | | </a-form-model-item> |
| | | </a-col> |
| | | |
| | | <a-col :span="24"> |
| | | <a-form-model-item label="å·¥èºè§ç¨åç§°"> |
| | | <a-input v-model="model.processSpecVersionName" placeholder="请è¾å
¥å·¥èºè§ç¨åç§°"/> |
| | | </a-form-model-item> |
| | | </a-col> |
| | | |
| | | <a-col :span="24"> |
| | | <a-form-model-item label="æè¿°"> |
| | | <a-textarea v-model="model.description" placeholder="请è¾å
¥æè¿°"/> |
| | | </a-form-model-item> |
| | | </a-col> |
| | | </a-row> |
| | | </a-form-model> |
| | | </a-spin> |
| | | </template> |
| | | |
| | | <script> |
| | | import { httpAction, getAction } from '@/api/manage' |
| | | |
| | | export default { |
| | | name: 'ProcessSpecVersionModalForm', |
| | | components: {}, |
| | | data() { |
| | | return { |
| | | model: {}, |
| | | labelColLong: { |
| | | xs: { span: 24 }, |
| | | sm: { span: 6 } |
| | | }, |
| | | wrapperColLong: { |
| | | xs: { span: 24 }, |
| | | sm: { span: 18 } |
| | | }, |
| | | confirmLoading: false, |
| | | validatorRules: { |
| | | processCode: [ |
| | | { required: true, message: '请è¾å
¥å·¥åºå·!' } |
| | | ], |
| | | processName: [ |
| | | { required: true, message: '请è¾å
¥å·¥åºåç§°!' } |
| | | ] |
| | | }, |
| | | url: { |
| | | add: '/nc/processSpecVersion/add', |
| | | edit: '/nc/processSpecVersion/edit' |
| | | } |
| | | } |
| | | }, |
| | | created() { |
| | | //å¤ä»½modelåå§å¼ |
| | | this.modelDefault = JSON.parse(JSON.stringify(this.model)) |
| | | }, |
| | | methods: { |
| | | add(params) { |
| | | this.edit({ ...this.modelDefault, ...params }) |
| | | }, |
| | | edit(record) { |
| | | this.model = Object.assign({}, record) |
| | | console.log('model', this.model) |
| | | }, |
| | | submitForm() { |
| | | const that = this |
| | | // 触å表åéªè¯ |
| | | this.$refs.form.validate(valid => { |
| | | if (valid) { |
| | | that.confirmLoading = true |
| | | let httpUrl = '' |
| | | let method = '' |
| | | if (!this.model.id) { |
| | | httpUrl += this.url.add |
| | | method = 'post' |
| | | } else { |
| | | httpUrl += this.url.edit + `/${this.model.id}` |
| | | method = 'put' |
| | | } |
| | | httpAction(httpUrl, this.model, method).then((res) => { |
| | | if (res.success) { |
| | | that.$notification.success({ |
| | | message: 'æ¶æ¯', |
| | | description: res.message |
| | | }) |
| | | that.$emit('ok') |
| | | } else { |
| | | that.$notification.warning({ |
| | | message: 'æ¶æ¯', |
| | | description: res.message |
| | | }) |
| | | } |
| | | }).finally(() => { |
| | | that.confirmLoading = false |
| | | }) |
| | | } |
| | | |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | |
| | | <a-row> |
| | | <a-col :span="12"> |
| | | <a-form-model-item label="å·¥æ¥å·" prop="stepCode"> |
| | | <a-input v-model="model.stepCode" placeholder="请è¾å
¥å·¥åºå·"></a-input> |
| | | <a-input v-model="model.stepCode" placeholder="请è¾å
¥å·¥æ¥å·"></a-input> |
| | | </a-form-model-item> |
| | | </a-col> |
| | | <a-col :span="12"> |
| | | <a-form-model-item label="å·¥æ¥åç§°" prop="stepName"> |
| | | <a-input v-model="model.stepName" placeholder="请è¾å
¥å·¥åºåç§°"></a-input> |
| | | <a-input v-model="model.stepName" placeholder="请è¾å
¥å·¥æ¥åç§°"></a-input> |
| | | </a-form-model-item> |
| | | </a-col> |
| | | </a-row> |
| | |
| | | <template> |
| | | <a-tabs style="height: 100%" v-model="activeTabKey" v-if="Object.keys(currentLevelInfo).length>0" |
| | | @change="handleTabChange"> |
| | | <a-tab-pane :key="1" tab="屿§ä¿¡æ¯" v-if="currentLevelInfo.type===1"> |
| | | <ProductInfo :currentLevelDetails="currentLevelInfo.entity" :size="containerSize"/> |
| | | </a-tab-pane> |
| | | |
| | | <a-tab-pane :key="1" tab="屿§ä¿¡æ¯" v-if="currentLevelInfo.type===2"> |
| | | <ComponentInfo :currentLevelDetails="currentLevelInfo.entity" :size="containerSize"/> |
| | | </a-tab-pane> |
| | | |
| | | <a-tab-pane :key="1" tab="é¶ä»¶å±æ§" v-if="currentLevelInfo.type===3"> |
| | | <PartInfo :currentLevelDetails="currentLevelInfo.entity" :size="containerSize"/> |
| | | </a-tab-pane> |
| | | |
| | | <a-tab-pane :key="1" tab="å·¥åºå±æ§" v-if="currentLevelInfo.type===5"> |
| | | <ProcessInfo :currentLevelDetails="currentLevelInfo.entity" :size="containerSize"/> |
| | | </a-tab-pane> |
| | | |
| | | <a-tab-pane :key="1" tab="å·¥æ¥å±æ§" v-if="currentLevelInfo.type===6"> |
| | | <ProcessStepInfo :currentLevelDetails="currentLevelInfo.entity" :size="containerSize"/> |
| | | </a-tab-pane> |
| | | |
| | | <template v-if="currentLevelInfo.hasOwnProperty('attributionType')"> |
| | | <a-tab-pane :key="1" tab="ææ¡£å±æ§"> |
| | | <DocumentInfo :currentLevelDetails="currentLevelInfo" :size="containerSize"/> |
| | | <div v-if="currentLevelInfo.type!==4"> |
| | | <a-tabs v-model="activeTabKey" v-if="Object.keys(currentLevelInfo).length>0" @change="handleTabChange"> |
| | | <a-tab-pane :key="1" tab="屿§ä¿¡æ¯" v-if="currentLevelInfo.type===1"> |
| | | <ProductInfo :currentLevelDetails="currentLevelInfo.entity" :size="containerSize"/> |
| | | </a-tab-pane> |
| | | |
| | | <a-tab-pane :key="2" tab="é¢è§"> |
| | | <FilePreview ref="filePreviewRef" :currentDocumentInfo="currentLevelInfo"/> |
| | | <a-tab-pane :key="1" tab="屿§ä¿¡æ¯" v-if="currentLevelInfo.type===2"> |
| | | <ComponentInfo :currentLevelDetails="currentLevelInfo.entity" :size="containerSize"/> |
| | | </a-tab-pane> |
| | | |
| | | <a-tab-pane :key="3" tab="ææ¡£çæ¬"> |
| | | <DocumentVersionTableList ref="documentVersionTableRef" :currentDocumentInfo="currentLevelInfo" |
| | | @handleTableContextMenuOpen="handleTableContextMenuOpen" |
| | | @releaseFilePreviewApi="releaseFilePreviewApi" |
| | | :size="containerSize"/> |
| | | <a-tab-pane :key="1" tab="é¶ä»¶å±æ§" v-if="currentLevelInfo.type===3"> |
| | | <PartInfo :currentLevelDetails="currentLevelInfo.entity" :size="containerSize"/> |
| | | </a-tab-pane> |
| | | |
| | | <a-tab-pane :key="4" tab="使ç¨è®¾å¤" v-if="currentLevelInfo.attributionType===5"> |
| | | <UseDocumentEquipmentTableList ref="useDocumentEquipmentTableRef" :currentDocumentInfo="currentLevelInfo" |
| | | :size="containerSize"/> |
| | | <a-tab-pane :key="1" tab="å·¥åºå±æ§" v-if="currentLevelInfo.type===5"> |
| | | <ProcessInfo :currentLevelDetails="currentLevelInfo.entity" :size="containerSize"/> |
| | | </a-tab-pane> |
| | | </template> |
| | | |
| | | <a-tab-pane :key="1" tab="å·¥æ¥å±æ§" v-if="currentLevelInfo.type===6"> |
| | | <ProcessStepInfo :currentLevelDetails="currentLevelInfo.entity" :size="containerSize"/> |
| | | </a-tab-pane> |
| | | |
| | | <template v-if="currentLevelInfo.hasOwnProperty('attributionType')"> |
| | | <a-tab-pane :key="1" tab="ææ¡£å±æ§"> |
| | | <DocumentInfo :currentLevelDetails="currentLevelInfo" :size="containerSize"/> |
| | | </a-tab-pane> |
| | | |
| | | <a-tab-pane :key="2" tab="é¢è§"> |
| | | <FilePreview ref="filePreviewRef" :currentDocumentInfo="currentLevelInfo"/> |
| | | </a-tab-pane> |
| | | |
| | | <a-tab-pane :key="3" tab="ææ¡£çæ¬"> |
| | | <DocumentVersionTableList ref="documentVersionTableRef" :currentDocumentInfo="currentLevelInfo" |
| | | @handleTableContextMenuOpen="handleTableContextMenuOpen" |
| | | @releaseFilePreviewApi="releaseFilePreviewApi" |
| | | :size="containerSize"/> |
| | | </a-tab-pane> |
| | | |
| | | <a-tab-pane :key="4" tab="使ç¨è®¾å¤" v-if="currentLevelInfo.attributionType===5"> |
| | | <UseDocumentEquipmentTableList ref="useDocumentEquipmentTableRef" :currentDocumentInfo="currentLevelInfo" |
| | | :size="containerSize"/> |
| | | </a-tab-pane> |
| | | </template> |
| | | </a-tabs> |
| | | |
| | | <TableContextMenu :tableRowInfo="currentRightClickedTableRowInfo" ref="tableContextMenuRef"/> |
| | | </a-tabs> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | |
| | | <template> |
| | | <a-tabs v-model="activeTabKey" @contextmenu.native="e=>e.preventDefault()" |
| | | v-if="Object.keys(currentTreeNodeInfo).length!==0"> |
| | | <a-tab-pane :key="1" tab="NCææ¡£" v-if="currentTreeNodeInfo.type===5||currentTreeNodeInfo.type===6"> |
| | | <NcDocumentTableList ref="ncDocumentTableListRef" :currentTreeNodeInfo="currentTreeNodeInfo" |
| | | @handleTableContextMenuOpen="handleTableContextMenuOpen" :size="tableContainerSize"/> |
| | | </a-tab-pane> |
| | | <div v-if="currentTreeNodeInfo.type!==4"> |
| | | <a-tabs v-model="activeTabKey" @contextmenu.native="e=>e.preventDefault()" @change="handleTabChange" |
| | | v-if="Object.keys(currentTreeNodeInfo).length!==0"> |
| | | <a-tab-pane :key="1" tab="NCææ¡£" v-if="currentTreeNodeInfo.type===5||currentTreeNodeInfo.type===6"> |
| | | <NcDocumentTableList ref="ncDocumentTableListRef" :currentTreeNodeInfo="currentTreeNodeInfo" |
| | | @handleTableContextMenuOpen="handleTableContextMenuOpen" :size="tableContainerSize"/> |
| | | </a-tab-pane> |
| | | |
| | | <a-tab-pane :key="1" tab="å
¶ä»ææ¡£" v-else> |
| | | <OtherDocumentTableList ref="otherDocumentTableListRef" :currentTreeNodeInfo="currentTreeNodeInfo" |
| | | @handleTableContextMenuOpen="handleTableContextMenuOpen" :size="tableContainerSize"/> |
| | | </a-tab-pane> |
| | | <a-tab-pane :key="2" tab="å
¶ä»ææ¡£"> |
| | | <OtherDocumentTableList ref="otherDocumentTableListRef" :currentTreeNodeInfo="currentTreeNodeInfo" |
| | | @handleTableContextMenuOpen="handleTableContextMenuOpen" :size="tableContainerSize"/> |
| | | </a-tab-pane> |
| | | </a-tabs> |
| | | |
| | | <TableContextMenu :tableRowInfo="currentRightClickedTableRowInfo" ref="tableContextMenuRef"/> |
| | | |
| | | <DocumentBatchDeleteModal :currentDocumentInfo="currentRightClickedTableRowInfo" :size="tableContainerSize" |
| | | @reloadDocumentListData="reloadDocumentListData" ref="documentBatchDeleteModalRef"/> |
| | | </a-tabs> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | |
| | | components: { DocumentBatchDeleteModal, TableContextMenu, OtherDocumentTableList, NcDocumentTableList }, |
| | | data() { |
| | | return { |
| | | activeTabKey: 1, |
| | | activeTabKey: 2, |
| | | tableContainerSize: 'small', |
| | | currentRightClickedTableRowInfo: {}, |
| | | currentTreeNodeInfo: {} |
| | | currentTreeNodeInfo: {}, |
| | | hasLoadedDataTabKeyArray: [] |
| | | } |
| | | }, |
| | | created() { |
| | |
| | | // 仿 ç»ä»¶æ¥åæ èç¹ä¿¡æ¯åä»ç¶ç»ä»¶æµå
¥åç»ä»¶ |
| | | this.currentTreeNodeInfo = treeNodeInfo |
| | | // æ¸
空ä¸ä¸èç¹å·²ç»å è½½è¿å¾ææ¡£å表tabKey |
| | | this.hasLoadedDataTabKeyArray = [] |
| | | if (treeNodeInfo.type === 5 || treeNodeInfo.type === 6) { |
| | | this.activeTabKey = 1 |
| | | this.$nextTick(() => { |
| | | if (this.$refs.ncDocumentTableListRef) this.$refs.ncDocumentTableListRef.loadData(1) |
| | | }) |
| | | } else { |
| | | this.activeTabKey = 2 |
| | | this.$nextTick(() => { |
| | | if (this.$refs.otherDocumentTableListRef) this.$refs.otherDocumentTableListRef.loadData(1) |
| | | }) |
| | | } |
| | | this.hasLoadedDataTabKeyArray.push(this.activeTabKey) |
| | | }, |
| | | |
| | | /** |
| | | * tabæ 忢æ¶è§¦å |
| | | * @param activeTabKey 忢åçtabKey |
| | | */ |
| | | handleTabChange(activeTabKey) { |
| | | if (!this.hasLoadedDataTabKeyArray.includes(activeTabKey)) { |
| | | this.$nextTick(() => { |
| | | if (this.$refs.otherDocumentTableListRef) this.$refs.otherDocumentTableListRef.loadData(1) |
| | | }) |
| | | // 黿¢æ¥å£å¨åä¸ææ¡£ä¸æ¬¡ç¹å»å
夿¬¡è§¦å |
| | | this.hasLoadedDataTabKeyArray.push(activeTabKey) |
| | | } |
| | | }, |
| | | /** |
| | | * ææ¡£ä»¥åNCç¨åºå¯¼å
¥/åºåº/å
¥åºæåå触åéæ°å è½½ææ¡£å表 |
| | | * @param docClassCode ææ¡£ç±»å« |
| | | * @param attributionId èç¹Id |
| | |
| | | <a-icon slot="product" type="shopping"/> |
| | | <a-icon slot="component" type="camera"/> |
| | | <a-icon slot="part" type="hdd"/> |
| | | <a-icon slot="processSpecVersion" type="tag"/> |
| | | <a-icon slot="process" type="apartment"/> |
| | | <a-icon slot="processStep" type="tool"/> |
| | | </a-tree> |
| | |
| | | <ComponentModal :currentTreeNodeInfo="rightClickSelected" @submitSuccess="modalFormSubmitSuccess"/> |
| | | <!--é¶ä»¶å¼¹çª--> |
| | | <PartModal :currentTreeNodeInfo="rightClickSelected" @submitSuccess="modalFormSubmitSuccess"/> |
| | | <!--å·¥èºè§ç¨çæ¬å¼¹çª--> |
| | | <ProcessSpecVersionModal :currentTreeNodeInfo="rightClickSelected" @submitSuccess="modalFormSubmitSuccess"/> |
| | | <!--å·¥åºå¼¹çª--> |
| | | <ProcessModal :currentTreeNodeInfo="rightClickSelected" @submitSuccess="modalFormSubmitSuccess"/> |
| | | <!--å·¥æ¥å¼¹çª--> |
| | |
| | | import ProductModal from './Product/ProductModal' |
| | | import ComponentModal from './Component/ComponentModal' |
| | | import PartModal from './Part/PartModal' |
| | | import ProcessSpecVersionModal from './ProcessSpecVersion/ProcessSpecVersionModal' |
| | | import ProcessModal from './Process/ProcessModal' |
| | | import ProcessStepModal from './ProcessStep/ProcessStepModal' |
| | | import AssignPermissionModal from './Permission/AssignPermissionModal' |
| | |
| | | AssignPermissionModal, |
| | | ProcessStepModal, |
| | | ProcessModal, |
| | | ProcessSpecVersionModal, |
| | | PartModal, |
| | | ComponentModal, |
| | | ProductModal, |
| | |
| | | treeDataSource: [], |
| | | selectedKeys: [], |
| | | expandedKeys: [], |
| | | beforeSearchExpandedKeys: [], |
| | | searchValue: '', |
| | | dataList: [], |
| | | autoExpandParent: true, |
| | |
| | | this.treeDataSource = res.list |
| | | this.generateList(this.treeDataSource) |
| | | // this.expandedKeys = this.allTreeKeys |
| | | if (this.expandedKeys.length === 0) this.expandedKeys = [this.treeDataSource[0].id] |
| | | if (this.expandedKeys.length === 0) this.expandedKeys = this.beforeSearchExpandedKeys = [this.treeDataSource[0].id] |
| | | } else { |
| | | this.$message.warn(res.message) |
| | | } |
| | |
| | | * @param expandedKeys å±å¼é¡¹key |
| | | */ |
| | | handleTreeExpand(expandedKeys) { |
| | | this.expandedKeys = expandedKeys |
| | | this.expandedKeys = this.beforeSearchExpandedKeys = expandedKeys |
| | | this.autoExpandParent = 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) |
| | | let expandedKeys |
| | | let autoExpandParent |
| | | if (search !== '') { |
| | | expandedKeys = this.dataList |
| | | .map(item => { |
| | | if (item.title != null) { |
| | | if (item.title.indexOf(search) > -1) { |
| | | return this.getParentKey(item.key, this.treeDataSource) |
| | | } |
| | | return null |
| | | } |
| | | return null |
| | | } |
| | | }) |
| | | .filter((item, i, self) => item && self.indexOf(item) === i) |
| | | }) |
| | | .filter((item, i, self) => item && self.indexOf(item) === i) |
| | | autoExpandParent = true |
| | | } else { |
| | | expandedKeys = this.beforeSearchExpandedKeys |
| | | autoExpandParent = false |
| | | } |
| | | |
| | | Object.assign(this, { |
| | | expandedKeys, |
| | | searchValue: search, |
| | | autoExpandParent: true |
| | | autoExpandParent |
| | | }) |
| | | }, |
| | | |
| | |
| | | case 3: |
| | | treeNode.slots = { icon: 'part' } |
| | | break |
| | | case 4: |
| | | treeNode.slots = { icon: 'processSpecVersion' } |
| | | break |
| | | case 5: |
| | | treeNode.slots = { icon: 'process' } |
| | | break |
| | |
| | | //é¶ä»¶ |
| | | part: [ |
| | | { label: 'æ·»å é¶ä»¶', code: 'parts_add', icon: 'plus', isCommonMethod: false }, |
| | | { label: 'å建工åº', code: 'parts_add_relative', icon: 'plus', isCommonMethod: false }, |
| | | { label: 'å建工èºè§ç¨çæ¬', code: 'parts_add_relative', icon: 'plus', isCommonMethod: false }, |
| | | // { label: 'å建工åº', code: 'parts_add_relative', icon: 'plus', isCommonMethod: false }, |
| | | { label: 'ç¼è¾é¶ä»¶ä¿¡æ¯', code: 'parts_edit', icon: 'edit', isCommonMethod: false }, |
| | | // { label: 'å¯¼åºææ¡£', code: 'parts_export', icon: 'export', isCommonMethod: true }, |
| | | { label: '导å
¥å
¶ä»ææ¡£', code: 'parts_import', icon: 'import', isCommonMethod: true }, |
| | | { label: 'å é¤', code: 'parts_delete', icon: 'delete', isCommonMethod: true }, |
| | | { label: 'æéé
ç½®', code: 'public_assign_permission', icon: 'idcard', isCommonMethod: true } |
| | | ], |
| | | //å·¥èºè§ç¨çæ¬ |
| | | processSpecVersion: [ |
| | | { label: 'å建工èºè§ç¨çæ¬', code: 'version_add', icon: 'plus', isCommonMethod: false }, |
| | | { label: 'å建工åº', code: 'version_add_child', icon: 'plus', isCommonMethod: false }, |
| | | { label: 'ç¼è¾å·¥èºè§ç¨çæ¬ä¿¡æ¯', code: 'version_edit', icon: 'edit', isCommonMethod: false }, |
| | | { label: 'å é¤', code: 'version_delete', icon: 'delete', isCommonMethod: true }, |
| | | { label: 'æéé
ç½®', code: 'public_assign_permission', icon: 'idcard', isCommonMethod: true } |
| | | ], |
| | | //å·¥åº |
| | |
| | | { label: 'å建工æ¥', code: 'process_add_child', icon: 'plus', isCommonMethod: false }, |
| | | { label: 'ç¼è¾å·¥åºä¿¡æ¯', code: 'process_edit', icon: 'edit', isCommonMethod: false }, |
| | | { label: 'å é¤', code: 'process_delete', icon: 'delete', isCommonMethod: true }, |
| | | // { label: '导åºNCç¨åº', code: 'process_export', icon: 'import', isCommonMethod: true }, |
| | | { label: '导å
¥NCç¨åº', code: 'process_import', icon: 'export', isCommonMethod: true }, |
| | | // { label: '导åºNCç¨åº', code: 'process_export', icon: 'export', isCommonMethod: true }, |
| | | { label: '导å
¥NCç¨åº', code: 'process_import', icon: 'import', isCommonMethod: true }, |
| | | { label: 'æéé
ç½®', code: 'public_assign_permission', icon: 'idcard', isCommonMethod: true } |
| | | ], |
| | | //å·¥æ¥ |
| | |
| | | { label: 'ç¼è¾å·¥æ¥ä¿¡æ¯', code: 'processStep_edit', icon: 'edit', isCommonMethod: false }, |
| | | { label: 'å é¤', code: 'processStep_delete', icon: 'delete', isCommonMethod: true }, |
| | | // { label: '导åºNCç¨åº', code: 'processStep_export', icon: 'import', isCommonMethod: true }, |
| | | { label: '导å
¥NCç¨åº', code: 'processStep_import', icon: 'export', isCommonMethod: true }, |
| | | { label: '导å
¥NCç¨åº', code: 'processStep_import', icon: 'import', isCommonMethod: true }, |
| | | { label: 'æéé
ç½®', code: 'public_assign_permission', icon: 'idcard', isCommonMethod: true } |
| | | ] |
| | | } |
| | |
| | | return 'component' |
| | | case 3: |
| | | return 'part' |
| | | case 4: |
| | | return 'processSpecVersion' |
| | | case 5: |
| | | return 'process' |
| | | case 6: |