方法验证模块恢复为本地版本:移除合并进来的同事 Word 表单组件(新增/编辑切换)与上岗证实时查询,恢复本地列表列、搜索与上岗证弹窗实现;人员授权下拉优化与 vite 配置等其余合并内容保留
| | |
| | | }); |
| | | } |
| | | |
| | | // æå½åæéæ£æµäººå宿¶è¯»åä»»èææè¯ä¹¦ |
| | | export function getCurrentWorkFiles(query) { |
| | | return request({ |
| | | url: '/processMethodVerify/getCurrentWorkFiles', |
| | | method: 'get', |
| | | params: query, |
| | | }) |
| | | } |
| | | |
| | | // ä¿®æ¹æ åæ¹æ³éªè¯ |
| | | export function updateMethodVerify(data) { |
| | | return request({ |
| | |
| | | <div> |
| | | <el-dialog v-model="filesDialogVisible" title="æ¥çä¸å²è¯" width="80%" @closed="closeFilesLook"> |
| | | <div> |
| | | <el-alert v-if="!tableLoading && tableData.length === 0" type="info" :closable="false" |
| | | title="æéæ£æµäººåææ ä»»èææè®°å½ï¼è¯·æ ¸å¯¹è¢«ä»»è人å䏿£æµäººåæ¯å¦ä¸ºåä¸äººã"/> |
| | | <limsTable |
| | | ref="yearTable" |
| | | :column="columnData" |
| | |
| | | fullscreen |
| | | title="æ¥çéä»¶" top="5vh" width="800px"> |
| | | <filePreview v-if="lookDialogVisible" :currentFile="{}" |
| | | :fileUrl="fileUrl(currentInfo)" style="max-height: 90vh;overflow-y: auto;"/> |
| | | :fileUrl="javaApi+'/img/'+currentInfo.fileUrl" style="max-height: 90vh;overflow-y: auto;"/> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | |
| | | import file from '@/utils/file'; |
| | | import filePreview from '@/components/Preview/filePreview.vue'; |
| | | import limsTable from '@/components/Table/lims-table.vue' |
| | | import {getCurrentWorkFiles} from '@/api/cnas/process/method/methodVerification' |
| | | |
| | | export default { |
| | | name: 'viewWorkPermitDia', |
| | |
| | | }, |
| | | // æ¹æ³éå |
| | | methods: { |
| | | fileUrl(row) { |
| | | const image = /\.(png|jpe?g|gif|bmp|webp)$/i.test(row.fileUrl || '') |
| | | return this.javaApi + (image ? '/img/' : '/word/') + row.fileUrl |
| | | }, |
| | | // 两ç§ç¨æ³ï¼æ°ç»=æ£æµäººåidï¼å®æ¶æ¥è¯¢ï¼ï¼è¡å¯¹è±¡=ä¼å
å±ç¤ºå·²ä¿åçä¸å²è¯ï¼å
¶æ¬¡æå·²éæ£æµäººå宿¶æ¥è¯¢ |
| | | openDia(payload = {}) { |
| | | openDia(row) { |
| | | this.filesDialogVisible = true |
| | | this.tableData = [] |
| | | if (Array.isArray(payload)) { |
| | | this.loadCurrentFiles(payload) |
| | | return |
| | | } |
| | | this.info = payload || {} |
| | | if (Array.isArray(payload.workFileList) && payload.workFileList.length) { |
| | | this.tableData = payload.workFileList |
| | | return |
| | | } |
| | | this.loadCurrentFiles(Array.isArray(payload.confirmUser) ? payload.confirmUser : []) |
| | | }, |
| | | loadCurrentFiles(userIds) { |
| | | if (!userIds.length) return |
| | | this.tableLoading = true |
| | | getCurrentWorkFiles({userIds: userIds.join(',')}).then(res => { |
| | | if (res.code === 200) this.tableData = res.data || [] |
| | | }).catch(() => { |
| | | this.$message.error('ä¸å²è¯è¯»å失败ï¼è¯·ç¨åéè¯') |
| | | }).finally(() => { |
| | | this.tableLoading = false |
| | | }) |
| | | this.info = row |
| | | this.tableData = this.info.workFileList |
| | | }, |
| | | closeFilesLook() { |
| | | this.filesDialogVisible = false |
| | | }, |
| | | // æ¥çæä»¶ |
| | | handleLook(row) { |
| | | if (!row.fileUrl) { |
| | | this.$message.warning('该人åå·²æä»»èææè®°å½ï¼ä½å°æªä¸ä¼ ä¸å²è¯ä¹¦æä»¶') |
| | | return |
| | | } |
| | | this.currentInfo = row |
| | | this.lookDialogVisible = true |
| | | }, |
| | | // ä¸è½½ |
| | | upload(row) { |
| | | if (!row.fileUrl) { |
| | | this.$message.warning('该人åå·²æä»»èææè®°å½ï¼ä½å°æªä¸ä¼ ä¸å²è¯ä¹¦æä»¶') |
| | | return |
| | | } |
| | | let url = ''; |
| | | if (/\.(png|jpe?g|gif|bmp|webp)$/i.test(row.fileUrl || '')) { |
| | | if(row.type==1){ |
| | | url = this.javaApi + '/img/' + row.fileUrl |
| | | file.downloadIamge(url, row.fileName) |
| | | } else { |
| | |
| | | <div style="display: flex;justify-content: space-between"> |
| | | <div style="display: flex;"> |
| | | <div style="margin-bottom: 18px;margin-right: 10px;display: flex;align-items: center;line-height: 32px;"> |
| | | <span style="width: 88px;font-size: 14px;font-weight: 700;color: var(--lims-text-2);">æ ååç§°</span> |
| | | <el-input size="small" placeholder="请è¾å
¥" clearable v-model="searchForm.standardName" |
| | | <span style="width: 88px;font-size: 14px;font-weight: 700;color: var(--lims-text-2);">æ åæ¹æ³</span> |
| | | <el-input size="small" placeholder="请è¾å
¥" clearable v-model="searchForm.methodName" |
| | | @keyup.enter="searchList"></el-input> |
| | | </div> |
| | | <div style="line-height: 30px;"> |
| | |
| | | @pagination="pagination"> |
| | | </limsTable> |
| | | </div> |
| | | <component :is="isWordForm ? 'wordFormDIa' : 'formDIa'" v-if="formDIa" ref="formDIa" |
| | | :operationType="operationType" @closeDia="closeDia" /> |
| | | <formDIa v-if="formDIa" ref="formDIa" :operationType="operationType" @closeDia="closeDia"></formDIa> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import limsTable from '@/components/Table/lims-table.vue' |
| | | import formDIa from './component/formDIa.vue'; |
| | | import wordFormDIa from './component/wordFormDIa.vue'; |
| | | import { delMethodVerify, exportMethodVerify, pagesMethodVerify } from '@/api/cnas/process/method/methodVerification' |
| | | |
| | | export default { |
| | | name: 'MethodVerification', |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | | components: { limsTable, formDIa, wordFormDIa }, |
| | | components: { limsTable, formDIa }, |
| | | data() { |
| | | // è¿éåæ¾æ°æ® |
| | | return { |
| | | searchForm: { |
| | | standardName: '', |
| | | methodName: '', |
| | | operationType: 1, |
| | | }, |
| | | options: [ |
| | |
| | | ], |
| | | tableColumn: [ |
| | | { |
| | | label: 'æ ååç§°', |
| | | prop: 'standardName', |
| | | label: 'æ åæ¹æ³', |
| | | prop: 'methodName', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | label: 'æ åç¼å·', |
| | | prop: 'standardCode', |
| | | label: 'éªè¯åå ', |
| | | prop: 'verifyReason', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | label: 'éªè¯é¡¹ç®', |
| | | prop: 'verifyItem', |
| | | label: 'ä¸»è¦ææ¯åå', |
| | | prop: 'technologyChange', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | |
| | | total: 0, |
| | | formDIa: false, |
| | | operationType: '', |
| | | isWordForm: true, |
| | | }; |
| | | }, |
| | | mounted() { |
| | |
| | | // æ¥è¯¢å表 |
| | | searchList() { |
| | | const entity = { |
| | | standardName: this.searchForm.standardName, |
| | | methodName: this.searchForm.methodName, |
| | | operationType: this.searchForm.operationType, |
| | | } |
| | | const page = this.page |
| | |
| | | }, |
| | | // éç½®æ¥è¯¢æ¡ä»¶ |
| | | resetSearchForm() { |
| | | this.searchForm.standardName = ''; |
| | | this.searchForm.methodName = ''; |
| | | this.searchList() |
| | | }, |
| | | openFormDia(type, row) { |
| | | this.formDIa = true |
| | | this.operationType = type |
| | | this.isWordForm = type === 'add' || !!row?.standardCode |
| | | this.$nextTick(() => { |
| | | this.$refs.formDIa.openDia(row) |
| | | }) |