| | |
| | | </div> |
| | | </template> |
| | | <template v-slot:table> |
| | | <limsTable |
| | | :column="columns" |
| | | :currentChange="rowClick" |
| | | :height="'25vh'" |
| | | :highlightCurrentRow="true" |
| | | :isSelection="false" |
| | | :rowStyle="tableRowStyle" |
| | | :table-data="tableData" |
| | | rowKey="id" |
| | | style="margin-top: 18px; padding: 0 15px;" |
| | | > |
| | | <template v-slot:consumablesTypeSlot="{row}"> |
| | | <limsTable :column="columns" :currentChange="rowClick" :height="'25vh'" :highlightCurrentRow="true" |
| | | :isSelection="false" :rowStyle="tableRowStyle" :table-data="tableData" rowKey="id" |
| | | style="margin-top: 18px; padding: 0 15px;"> |
| | | <template v-slot:consumablesTypeSlot="{ row }"> |
| | | {{ findType(row.consumablesType) }} |
| | | </template> |
| | | <template v-slot:operation="scope"> |
| | |
| | | </limsTable> |
| | | <div class="pagination"> |
| | | <div></div> |
| | | <el-pagination |
| | | :page-size="pagination.pageSize" |
| | | :page-sizes="[10, 20, 30, 40]" |
| | | :total="pagination.total" |
| | | layout="total, sizes, prev, pager, next, jumper" |
| | | @current-change="handleCurrent" |
| | | @size-change="handleSize" |
| | | > |
| | | <el-pagination :page-size="pagination.pageSize" :page-sizes="[10, 20, 30, 40]" :total="pagination.total" |
| | | layout="total, sizes, prev, pager, next, jumper" @current-change="handleCurrent" @size-change="handleSize"> |
| | | </el-pagination> |
| | | </div> |
| | | </template> |
| | |
| | | <div> |
| | | <ConsumableProject ref="consumableProject"></ConsumableProject> |
| | | </div> |
| | | <Edit ref="editRef" :contentsId="contentsId" @submit="fetchData"/> |
| | | <Edit ref="editRef" :contentsId="contentsId" @submit="fetchData" /> |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | export default { |
| | | dicts: ["consumables_type"], |
| | | components: { |
| | | TableCard, limsTable,Edit, ConsumableProject |
| | | TableCard, limsTable, Edit, ConsumableProject |
| | | }, |
| | | props: { |
| | | contentsId: { |
| | |
| | | }, |
| | | methods: { |
| | | async fetchData() { |
| | | procurementSuppliesList({ contentId: this.contentsId}).then(res => { |
| | | procurementSuppliesList({ contentId: this.contentsId }).then(res => { |
| | | if (res.code === 200) { |
| | | this.tableData = res.data.records |
| | | if (this.tableData.length > 0) { |
| | |
| | | this.$nextTick() |
| | | let res |
| | | const e = this.options.find(item => item.value == val) |
| | | if(e) { |
| | | if (e) { |
| | | res = e.label |
| | | } else { |
| | | res = '-' |
| | |
| | | this.$refs.editRef.openDialog(row); |
| | | }, |
| | | async exportExcel() { |
| | | exportProcurementSuppliesList({parentId:this.contentsId}).then(res => { |
| | | const blob = new Blob([res], {type: 'application/octet-stream'}); |
| | | exportProcurementSuppliesList({ parentId: this.contentsId }).then(res => { |
| | | const blob = new Blob([res], { type: 'application/octet-stream' }); |
| | | this.$download.saveAs(blob, '耗材列表.xlsx') |
| | | this.$message.success('导出成功') |
| | | }) |
| | | }, |
| | | handleCurrent() { |
| | |
| | | handleSize() { |
| | | }, |
| | | handleDelete(row) { |
| | | deleteProcurementSuppliesList({ id:row.id }).then(res => { |
| | | deleteProcurementSuppliesList({ id: row.id }).then(res => { |
| | | if (res.code === 200) { |
| | | this.$message.success('删除成功') |
| | | this.fetchData() |
| | |
| | | rowClick(row) { |
| | | this.$refs.consumableProject.fetchListId(row) |
| | | }, |
| | | tableRowStyle({row}) { |
| | | if(row.currentAmount <= row.lowerLimit) { |
| | | tableRowStyle({ row }) { |
| | | if (row.currentAmount <= row.lowerLimit) { |
| | | return { background: '#ffcaca' } |
| | | } else { |
| | | return {} |
| | |
| | | </el-button> |
| | | </div> |
| | | <div class="table"> |
| | | <limsTable |
| | | :column="tableColumn" |
| | | :height="'calc(100vh - 20em)'" |
| | | :table-data="storageTableData" |
| | | :table-loading="tableLoading" |
| | | style="padding: 0 10px;margin-bottom: 16px" |
| | | :page="page" |
| | | @pagination="pagination"> |
| | | <limsTable :column="tableColumn" :height="'calc(100vh - 20em)'" :table-data="storageTableData" |
| | | :table-loading="tableLoading" style="padding: 0 10px;margin-bottom: 16px" :page="page" @pagination="pagination"> |
| | | </limsTable> |
| | | </div> |
| | | |
| | | <!-- 编辑-新增弹框 --> |
| | | <el-dialog :before-close="handleClose" :close-on-click-modal="false" |
| | | :close-on-press-escape="false" :title="title" |
| | | :visible.sync="dialogVisible" width="70%"> |
| | | <el-dialog :before-close="handleClose" :close-on-click-modal="false" :close-on-press-escape="false" :title="title" |
| | | :visible.sync="dialogVisible" width="70%"> |
| | | <!-- 入库单 --> |
| | | <div> |
| | | <div style="display: flex; align-items: center"> |
| | |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="入库日期"> |
| | | <el-date-picker v-model="form.storageTime" format="yyyy-MM-dd" |
| | | placeholder="选择日期" |
| | | size="small" |
| | | style="width: 100%" type="date" value-format="yyyy-MM-dd"></el-date-picker> |
| | | <el-date-picker v-model="form.storageTime" format="yyyy-MM-dd" placeholder="选择日期" size="small" |
| | | style="width: 100%" type="date" value-format="yyyy-MM-dd"></el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="入库人"> |
| | | <el-select v-model="form.storageUser" size="small" style="width: 100%"> |
| | | <el-option v-for="item in users" :key="item.id" :label="item.name" :value="item.id"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="入库人"> |
| | | <el-select v-model="form.storageUser" size="small" style="width: 100%"> |
| | | <el-option v-for="item in users" :key="item.id" :label="item.name" :value="item.id"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="入库说明"> |
| | | <el-input v-model="form.remark" :rows="2" placeholder="请输入内容" type="textarea"> |
| | |
| | | </el-input> |
| | | </div> |
| | | </div> |
| | | <el-button size="mini" type="primary" |
| | | @click="addTableData">添加 |
| | | <el-button size="mini" type="primary" @click="addTableData">添加 |
| | | </el-button> |
| | | </div> |
| | | <el-table :data="consumables" style="margin-top: 10px"> |
| | |
| | | label: '登记人', |
| | | prop: 'registrantName', |
| | | minWidth: '160' |
| | | },{ |
| | | }, { |
| | | label: '登记日期', |
| | | prop: 'registrantTime', |
| | | minWidth: '100' |
| | |
| | | // 添加表格数据 |
| | | addTableData() { |
| | | this.$nextTick() |
| | | console.log('this.consumableOptions',this.consumableOptions) |
| | | console.log('this.consumableOptions', this.consumableOptions) |
| | | this.consumableOptions.forEach(item => { |
| | | if (item.id === this.formTwo.id) { |
| | | this.consumables.push({ |
| | |
| | | this.consumables.splice(index, 1); |
| | | }, |
| | | // 打开弹框 |
| | | addOrUpdateStore(type,row) { |
| | | addOrUpdateStore(type, row) { |
| | | if (type === 'edit') { |
| | | this.dialogType = "update"; |
| | | selectStoreById({id:row.id}).then(res => { |
| | | selectStoreById({ id: row.id }).then(res => { |
| | | if (res.code === 201) return |
| | | this.consumables = res.data.consumables |
| | | this.form = {...res.data.store} |
| | | this.form = { ...res.data.store } |
| | | }).catch(err => { |
| | | console.log('err---', err); |
| | | }) |
| | |
| | | this.dialogVisible = true; |
| | | }, |
| | | // 查询列表 |
| | | searchList () { |
| | | searchList() { |
| | | this.tableLoading = true |
| | | storeList({...this.page,...this.searchForm}).then(res => { |
| | | storeList({ ...this.page, ...this.searchForm }).then(res => { |
| | | this.tableLoading = false |
| | | if (res.code === 200){ |
| | | if (res.code === 200) { |
| | | this.storageTableData = res.data.records |
| | | this.page.total = res.data.total |
| | | } |
| | |
| | | }, |
| | | // 导出excel |
| | | async importExcel() { |
| | | exportProcurementSuppliesStoreExcel({parentId:this.contentsId}).then(res => { |
| | | const blob = new Blob([res], {type: 'application/octet-stream'}); |
| | | exportProcurementSuppliesStoreExcel({ parentId: this.contentsId }).then(res => { |
| | | const blob = new Blob([res], { type: 'application/octet-stream' }); |
| | | this.$download.saveAs(blob, '耗材入库.xlsx') |
| | | this.$message.success('导出成功') |
| | | }) |
| | | }, |
| | | handleClose() { |
| | |
| | | // 获取所有用户 |
| | | getUserList() { |
| | | selectUserCondition().then((res) => { |
| | | this.users = res.data; |
| | | }); |
| | | this.users = res.data; |
| | | }); |
| | | }, |
| | | async fetchListOptions() { |
| | | procurementSuppliesList({contentsId: this.contentsId}).then(res => { |
| | | procurementSuppliesList({ contentsId: this.contentsId }).then(res => { |
| | | if (res.code === 200) { |
| | | this.consumableOptions = res.data.records |
| | | } |
| | |
| | | |
| | | }, |
| | | // 删除 |
| | | deleteStore (row) { |
| | | deleteStore(row) { |
| | | this.$confirm('此操作将永久删除该数据, 是否继续?', '提示', { |
| | | confirmButtonText: '确定', |
| | | cancelButtonText: '取消', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | this.tableLoading = true |
| | | console.log('row>>>>>>>>>>>>>>s',row) |
| | | console.log('row>>>>>>>>>>>>>>s', row) |
| | | deleteStore({ |
| | | id:row.id, |
| | | consumablesId:row.consumablesId |
| | | id: row.id, |
| | | consumablesId: row.consumablesId |
| | | }).then(res => { |
| | | this.tableLoading = false |
| | | if (res.code === 200){ |
| | | if (res.code === 200) { |
| | | this.$message.success('删除成功') |
| | | this.searchList() |
| | | } |
| | |
| | | .el-dialog { |
| | | margin: 6vh auto 50px !important; |
| | | } |
| | | |
| | | .el-dialog__body { |
| | | max-height: 42em; |
| | | overflow-y: auto; |
| | | } |
| | | |
| | | .input-form { |
| | | display: flex; |
| | | margin: 10px 0; |
| | |
| | | </div> |
| | | <div class="table"> |
| | | <lims-table :tableData="tableData" :column="tableColumn" :height="'calc(100vh - 250px)'" @pagination="pagination" |
| | | :page="page" :tableLoading="tableLoading"></lims-table> |
| | | :page="page" :tableLoading="tableLoading"></lims-table> |
| | | </div> |
| | | <form-dia ref="formDia" v-if="formDia" @closeDia="closeDia"></form-dia> |
| | | </div> |
| | |
| | | async getTableData() { |
| | | this.tableLoading = true; |
| | | selectQualifiedSupplierManagementPage(this.searchForm).then(res => { |
| | | this.tableLoading = false; |
| | | if(res.code === 200) { |
| | | this.tableData = res.data.records; |
| | | this.page.total = res.data.total |
| | | } |
| | | this.tableLoading = false; |
| | | if (res.code === 200) { |
| | | this.tableData = res.data.records; |
| | | this.page.total = res.data.total |
| | | } |
| | | }).catch(err => { |
| | | this.tableLoading = false |
| | | }) |
| | | }, |
| | | // 重置 |
| | | resetSearchForm () { |
| | | resetSearchForm() { |
| | | this.pagination.current = 1 |
| | | this.pagination.pageSize = 20 |
| | | this.searchForm.supplierName = '' |
| | |
| | | }) |
| | | }, |
| | | // 关闭弹框 |
| | | closeDia () { |
| | | closeDia() { |
| | | this.formDia = false |
| | | this.getTableData() |
| | | }, |
| | | // 删除记录 |
| | | deleteRow (row) { |
| | | deleteRow(row) { |
| | | this.$confirm('此操作将永久删除该文件, 是否继续?', '提示', { |
| | | confirmButtonText: '确定', |
| | | cancelButtonText: '取消', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | delSupplierManagement({supplierManagementId:row.supplierManagementId}).then(res => { |
| | | delSupplierManagement({ supplierManagementId: row.supplierManagementId }).then(res => { |
| | | if (res.code === 200) { |
| | | this.$message.success('删除成功!') |
| | | this.getTableData() |
| | |
| | | }, |
| | | // 导出excel |
| | | async exportExcel() { |
| | | exportSupplierManagement({deviceId:this.clickNodeVal.value}).then(res => { |
| | | exportSupplierManagement({ deviceId: this.clickNodeVal.value }).then(res => { |
| | | const blob = new Blob([res], { type: 'application/octet-stream' }); |
| | | this.$download.saveAs(blob, '合格供应商.xlsx') |
| | | this.$message.success('导出成功') |
| | | }) |
| | | } |
| | | }, |
| | |
| | | <el-table-column fixed="right" label="操作" width="140" align="center"> |
| | | <template v-slot="scope"> |
| | | <el-button v-if="!isDepartment || scope.row.currentState === '关闭'" size="small" type="text" |
| | | @click="handleViewClick(scope.row, 'view')">查看 |
| | | @click="handleViewClick(scope.row, 'view')">查看 |
| | | </el-button> |
| | | <el-button v-if="isDepartment && scope.row.currentState !== '关闭'" size="small" type="text" |
| | | @click="handleViewClick(scope.row, 'edit')">编辑 |
| | | @click="handleViewClick(scope.row, 'edit')">编辑 |
| | | </el-button> |
| | | <el-button size="small" type="text" @click="downLoadPost(scope.row)">导出</el-button> |
| | | <el-button v-if="isDepartment" size="small" style="color: #f56c6c" type="text" @click="deletePost(scope.row)">删除</el-button> |
| | | <el-button v-if="isDepartment" size="small" style="color: #f56c6c" type="text" |
| | | @click="deletePost(scope.row)">删除</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <el-pagination :current-page="1" :page-size="search.size" :page-sizes="[10, 20, 30, 50, 100]" |
| | | :total="search.total" layout="->,total, sizes, prev, pager, next, jumper" |
| | | background |
| | | style="margin-top: 10px" |
| | | @size-change="handleSizeChange" |
| | | @current-change="handleCurrentChange"> |
| | | :total="search.total" layout="->,total, sizes, prev, pager, next, jumper" background style="margin-top: 10px" |
| | | @size-change="handleSizeChange" @current-change="handleCurrentChange"> |
| | | </el-pagination> |
| | | </div> |
| | | <!-- 新增岗位职责 --> |
| | | <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" :visible.sync="dialogVisible" |
| | | title="新增岗位职责" |
| | | width="50%" @close="resetForm"> |
| | | <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" :visible.sync="dialogVisible" title="新增岗位职责" |
| | | width="50%" @close="resetForm"> |
| | | <el-steps :active="currentStep" align-center finish-status="success"> |
| | | <el-step v-for="(v, i) in steps" :key="i" :title="v" style="cursor:pointer" |
| | | @click.native="choiceStep(i)"></el-step> |
| | | @click.native="choiceStep(i)"></el-step> |
| | | </el-steps> |
| | | <el-form ref="form" :model="form" :rules="rules" label-width="130px"> |
| | | <div> |
| | |
| | | <el-col :span="12"> |
| | | <el-form-item label="岗位名称:" prop="postName"> |
| | | <el-input v-model="form.postName" :disabled="currentStep !== 0 || operationType === 'view'" |
| | | size="small"></el-input> |
| | | size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="24"> |
| | | <el-form-item label="工作目标:" prop="jobObjective"> |
| | | <el-input v-model="form.jobObjective" :disabled="currentStep !== 0 || operationType === 'view'" |
| | | size="small" |
| | | type="textarea"></el-input> |
| | | size="small" type="textarea"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="24"> |
| | | <el-form-item label="岗位职责:" prop="jobResponsibilities"> |
| | | <el-input v-model="form.jobResponsibilities" :disabled="currentStep !== 0 || operationType === 'view'" |
| | | size="small" |
| | | type="textarea"></el-input> |
| | | size="small" type="textarea"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col v-if="currentStep === 0 || operationType === 'view'" :span="12"> |
| | | <el-form-item |
| | | :rules="[{ required: currentStep === 0, message: '请选择任职人', trigger: 'change' }]" |
| | | label="任职人:" |
| | | prop="incumbentId"> |
| | | <el-select v-model="form.incumbentId" :disabled="operationType === 'view'" clearable |
| | | filterable |
| | | placeholder="请选择任职人" size="small" style="width: 100%;"> |
| | | <el-form-item :rules="[{ required: currentStep === 0, message: '请选择任职人', trigger: 'change' }]" |
| | | label="任职人:" prop="incumbentId"> |
| | | <el-select v-model="form.incumbentId" :disabled="operationType === 'view'" clearable filterable |
| | | placeholder="请选择任职人" size="small" style="width: 100%;"> |
| | | <el-option v-for="item in responsibleOptions" :key="item.id" :label="item.name" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col v-if="currentStep === 1 || operationType === 'view'" :span="12"> |
| | | <el-form-item |
| | | :rules="[{ required: currentStep === 1, message: '请选择主管', trigger: 'blur' }]" |
| | | label="主管:" |
| | | <el-form-item :rules="[{ required: currentStep === 1, message: '请选择主管', trigger: 'blur' }]" label="主管:" |
| | | prop="supervisorId"> |
| | | <el-select v-model="form.supervisorId" :disabled="currentStep !== 1 || operationType === 'view'" |
| | | clearable filterable |
| | | placeholder="请选择主管" size="small" style="width: 100%;"> |
| | | clearable filterable placeholder="请选择主管" size="small" style="width: 100%;"> |
| | | <el-option v-for="item in responsibleOptions" :key="item.id" :label="item.name" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button v-if="currentStep !== 0 && currentStep !== 3" @click="submitForm('3reject')">驳回</el-button> |
| | | <el-button v-if="currentStep === 0" @click="submitForm('2save')">保存</el-button> |
| | | <el-button v-if="currentStep !== 3" type="primary" |
| | | @click="submitForm('1submit')">{{ currentStep === 0 ? '提交' : '通过' }}</el-button> |
| | | <el-button v-if="currentStep !== 3" type="primary" @click="submitForm('1submit')">{{ currentStep === 0 ? '提交' : |
| | | '通过' |
| | | }}</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | </div> |
| | |
| | | personJobResponsibilitiesSave, |
| | | personJobResponsibilitiesSelect |
| | | } from "@/api/cnas/personal/personJobResponsibilities"; |
| | | import {selectUserCondition} from "@/api/cnas/resourceDemand/facilitiesEnvironment/facilitiesAndEnvironment"; |
| | | import {mapGetters} from "vuex"; |
| | | import { selectUserCondition } from "@/api/cnas/resourceDemand/facilitiesEnvironment/facilitiesAndEnvironment"; |
| | | import { mapGetters } from "vuex"; |
| | | |
| | | export default { |
| | | data() { |
| | |
| | | departmentId: this.search.userId, |
| | | size: this.search.size, |
| | | current: this.search.current, |
| | | }: { |
| | | } : { |
| | | userName: this.userName, |
| | | userId: this.search.userId, |
| | | size: this.search.size, |
| | |
| | | }, |
| | | // 下载岗位职责 |
| | | downLoadPost(row) { |
| | | exportPersonJobResponsibilities({id:row.id}).then(res => { |
| | | const blob = new Blob([res],{ type: 'application/octet-stream' }); |
| | | this.$download.saveAs(blob, row.incumbentName+'-岗位职责'+'.docx'); |
| | | this.$message.success('导出成功') |
| | | exportPersonJobResponsibilities({ id: row.id }).then(res => { |
| | | const blob = new Blob([res], { type: 'application/octet-stream' }); |
| | | this.$download.saveAs(blob, row.incumbentName + '-岗位职责' + '.docx'); |
| | | }) |
| | | }, |
| | | // 删除岗位职责 |
| | |
| | | cancelButtonText: '取消', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | personJobResponsibilitiesDelete({id: row.id}).then(res => { |
| | | personJobResponsibilitiesDelete({ id: row.id }).then(res => { |
| | | if (res.code == 200) { |
| | | this.$message.success('删除成功'); |
| | | this.getPostList(this.departId); |
| | |
| | | }, |
| | | }; |
| | | </script> |
| | | <style scoped> |
| | | </style> |
| | | <style scoped></style> |
| | |
| | | <template> |
| | | <div> |
| | | <div style="text-align: right;margin-bottom: 10px"> |
| | | <!-- <el-button size="small" @click="$emit('goBackList')">返回</el-button>--> |
| | | <!-- <el-button size="small" @click="$emit('goBackList')">返回</el-button>--> |
| | | <el-button size="small" type="primary" @click="downPerson">下载档案</el-button> |
| | | <el-button size="small" type="primary" @click="dialogVisible = true">人员分类</el-button> |
| | | <el-button :loading="saveLoading" size="small" type="primary" @click="save">保存</el-button> |
| | |
| | | <div style="display: flex;flex-direction: row;"> |
| | | <div style="width: 12em"> |
| | | <el-image :src="javaApi + '/img/' + form.pictureUrl" fit="fill" |
| | | style="width:100%;height: 300px;border: 1px solid #000;border-radius: 10px;margin-left: 6px;margin-top: 10px;"> |
| | | style="width:100%;height: 300px;border: 1px solid #000;border-radius: 10px;margin-left: 6px;margin-top: 10px;"> |
| | | <div slot="error" class="image-slot"> |
| | | <i class="el-icon-picture-outline" style="font-size: 40px;"></i> |
| | | </div> |
| | | </el-image> |
| | | <el-image :src="javaApi + '/img/' + form.signatureUrl" fit="fill" |
| | | style="width:80%;height: 50px;border: 1px solid #000;border-radius: 10px;margin-left: 22px;margin-top: 20px;"> |
| | | style="width:80%;height: 50px;border: 1px solid #000;border-radius: 10px;margin-left: 22px;margin-top: 20px;"> |
| | | <div slot="error" class="image-slot"> |
| | | <i class="el-icon-picture-outline" style="font-size: 40px;"></i> |
| | | </div> |
| | |
| | | </el-col> |
| | | <el-col :span="8"> |
| | | <el-form-item label="所属部门"> |
| | | <el-cascader v-model="form.departLimsId" :options="department" :props="{ label: 'name', value: 'id',checkStrictly: true }" filterable style="width: 100%;"></el-cascader> |
| | | <el-cascader v-model="form.departLimsId" :options="department" |
| | | :props="{ label: 'name', value: 'id', checkStrictly: true }" filterable |
| | | style="width: 100%;"></el-cascader> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | |
| | | <el-col :span="8"> |
| | | <el-form-item label="入集团时间"> |
| | | <el-date-picker v-model="form.groupTime" format="yyyy-MM-dd" placeholder="选择日期" size="small" |
| | | style="width: 99%;" type="date" value-format="yyyy-MM-dd HH:mm:ss"> |
| | | style="width: 99%;" type="date" value-format="yyyy-MM-dd HH:mm:ss"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | |
| | | <el-col :span="8"> |
| | | <el-form-item label="工作时间"> |
| | | <el-date-picker v-model="form.workingTime" format="yyyy-MM-dd" placeholder="选择日期" size="small" |
| | | style="width: 99%;" type="date" value-format="yyyy-MM-dd HH:mm:ss"> |
| | | style="width: 99%;" type="date" value-format="yyyy-MM-dd HH:mm:ss"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="8"> |
| | | <el-form-item label="合同到期时间"> |
| | | <el-date-picker v-model="form.contractLifeTime" format="yyyy-MM-dd" placeholder="选择日期" size="small" |
| | | style="width: 99%;" type="date" value-format="yyyy-MM-dd HH:mm:ss"> |
| | | style="width: 99%;" type="date" value-format="yyyy-MM-dd HH:mm:ss"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | |
| | | <el-col :span="8"> |
| | | <el-form-item label="出生日期"> |
| | | <el-date-picker v-model="form.dateBirth" format="yyyy-MM-dd" placeholder="选择日期" size="small" |
| | | @change="getAge" |
| | | style="width: 99%;" type="date" value-format="yyyy-MM-dd HH:mm:ss"> |
| | | @change="getAge" style="width: 99%;" type="date" value-format="yyyy-MM-dd HH:mm:ss"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | |
| | | </el-col> |
| | | <el-col :span="8"> |
| | | <el-form-item label="年龄"> |
| | | <el-input-number v-model="form.age" :max="130" :min="1" |
| | | controls-position="right" size="small" style="width: 99%;"></el-input-number> |
| | | <el-input-number v-model="form.age" :max="130" :min="1" controls-position="right" size="small" |
| | | style="width: 99%;"></el-input-number> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="8"> |
| | |
| | | <el-row> |
| | | <el-col :span="8"> |
| | | <el-form-item label="证件有效期"> |
| | | <el-date-picker v-model="form.validityPeriod" format="yyyy-MM-dd" placeholder="选择日期" |
| | | size="small" style="width: 99%;" type="date" |
| | | value-format="yyyy-MM-dd HH:mm:ss"> |
| | | <el-date-picker v-model="form.validityPeriod" format="yyyy-MM-dd" placeholder="选择日期" size="small" |
| | | style="width: 99%;" type="date" value-format="yyyy-MM-dd HH:mm:ss"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | |
| | | </el-col> |
| | | <el-col :span="8"> |
| | | <el-form-item label="入党/团时间"> |
| | | <el-date-picker v-model="form.dumplingTime" format="yyyy-MM-dd" placeholder="选择日期" |
| | | size="small" style="width: 99%;" type="date" |
| | | value-format="yyyy-MM-dd HH:mm:ss"> |
| | | <el-date-picker v-model="form.dumplingTime" format="yyyy-MM-dd" placeholder="选择日期" size="small" |
| | | style="width: 99%;" type="date" value-format="yyyy-MM-dd HH:mm:ss"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | |
| | | </el-col> |
| | | <el-col :span="8"> |
| | | <el-form-item label="毕业时间1"> |
| | | <el-date-picker v-model="form.graduationTime1" format="yyyy-MM-dd" placeholder="选择日期" |
| | | size="small" style="width: 99%;" type="date" |
| | | value-format="yyyy-MM-dd HH:mm:ss"> |
| | | <el-date-picker v-model="form.graduationTime1" format="yyyy-MM-dd" placeholder="选择日期" size="small" |
| | | style="width: 99%;" type="date" value-format="yyyy-MM-dd HH:mm:ss"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | |
| | | </el-col> |
| | | <el-col :span="8"> |
| | | <el-form-item label="毕业时间2"> |
| | | <el-date-picker v-model="form.graduationTime2" format="yyyy-MM-dd" placeholder="选择日期" |
| | | size="small" style="width: 99%;" type="date" |
| | | value-format="yyyy-MM-dd HH:mm:ss"> |
| | | <el-date-picker v-model="form.graduationTime2" format="yyyy-MM-dd" placeholder="选择日期" size="small" |
| | | style="width: 99%;" type="date" value-format="yyyy-MM-dd HH:mm:ss"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | |
| | | <el-row> |
| | | <el-col :span="8"> |
| | | <el-form-item label="登记时间"> |
| | | <el-date-picker v-model="form.lastUpdateTime" format="yyyy-MM-dd" placeholder="选择日期" |
| | | size="small" style="width: 99%;" type="date" |
| | | value-format="yyyy-MM-dd HH:mm:ss"> |
| | | <el-date-picker v-model="form.lastUpdateTime" format="yyyy-MM-dd" placeholder="选择日期" size="small" |
| | | style="width: 99%;" type="date" value-format="yyyy-MM-dd HH:mm:ss"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | |
| | | <el-form-item label="个人照片"> |
| | | <el-input v-model="form.pictureUrl" disabled size="small"> |
| | | <el-button v-if="form.pictureUrl" slot="append" icon="el-icon-delete-solid" |
| | | @click="deleteFile(form.pictureUrl, 'pictureUrl')"></el-button> |
| | | @click="deleteFile(form.pictureUrl, 'pictureUrl')"></el-button> |
| | | </el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="6"> |
| | | <el-upload ref="upload" :action="action" |
| | | :headers="uploadHeader" |
| | | :on-success="(response, file, fileList) => onSuccess(response, file, fileList, 'pictureUrl')" |
| | | :show-file-list="false" |
| | | style="float: left; margin: 0 10px 0 10px;"> |
| | | <el-upload ref="upload" :action="action" :headers="uploadHeader" |
| | | :on-success="(response, file, fileList) => onSuccess(response, file, fileList, 'pictureUrl')" |
| | | :show-file-list="false" style="float: left; margin: 0 10px 0 10px;"> |
| | | <el-button slot="trigger" class="uploadFile" size="mini" type="primary">上传</el-button> |
| | | </el-upload> |
| | | <el-button v-if="form.pictureUrl" class="uploadFile" size="mini" |
| | | type="primary" @click="downloadFile(form.pictureUrl)">下载</el-button> |
| | | <el-button v-if="form.pictureUrl" class="uploadFile" size="mini" type="primary" |
| | | @click="downloadFile(form.pictureUrl)">下载</el-button> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | |
| | | <el-form-item label="电子签名"> |
| | | <el-input v-model="form.signatureUrl" disabled size="small"> |
| | | <el-button v-if="form.signatureUrl" slot="append" icon="el-icon-delete-solid" |
| | | @click="deleteFile(form.signatureUrl, 'signatureUrl')"></el-button> |
| | | @click="deleteFile(form.signatureUrl, 'signatureUrl')"></el-button> |
| | | </el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="6"> |
| | | <el-upload ref="upload" :action="action" |
| | | :headers="uploadHeader" |
| | | :on-success="(response, file, fileList) => onSuccess(response, file, fileList, 'signatureUrl')" |
| | | :show-file-list="false" |
| | | style="float: left; margin: 0 10px 0 10px;"> |
| | | <el-upload ref="upload" :action="action" :headers="uploadHeader" |
| | | :on-success="(response, file, fileList) => onSuccess(response, file, fileList, 'signatureUrl')" |
| | | :show-file-list="false" style="float: left; margin: 0 10px 0 10px;"> |
| | | <el-button slot="trigger" class="uploadFile" size="small" type="primary">上传</el-button> |
| | | </el-upload> |
| | | <el-button v-if="form.signatureUrl" class="uploadFile" size="small" |
| | | type="primary" @click="downloadFile(form.signatureUrl)">下载</el-button> |
| | | <el-button v-if="form.signatureUrl" class="uploadFile" size="small" type="primary" |
| | | @click="downloadFile(form.signatureUrl)">下载</el-button> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="20"> |
| | | <el-form-item label="证书资料" > |
| | | <el-form-item label="证书资料"> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="4"> |
| | | <el-button size="mini" style="float: right;margin-right: 25px" type="primary" @click="annexAdd(0)">新增</el-button> |
| | | <el-button size="mini" style="float: right;margin-right: 25px" type="primary" |
| | | @click="annexAdd(0)">新增</el-button> |
| | | </el-col> |
| | | </el-row> |
| | | <lims-table :tableData="annexList" :column="columnData2" style="width: 96%;margin-left: 34px" |
| | | height="200" :tableLoading="tableLoading2"></lims-table> |
| | | <lims-table :tableData="annexList" :column="columnData2" style="width: 96%;margin-left: 34px" height="200" |
| | | :tableLoading="tableLoading2"></lims-table> |
| | | <el-row style="margin-top: 10px"> |
| | | <el-col :span="20"> |
| | | <el-form-item label="附件资料" > |
| | | <el-form-item label="附件资料"> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="4"> |
| | | <el-upload ref='upload' |
| | | :action="fileAction" |
| | | :auto-upload="true" :data="{userId: clickNodeVal.userId}" |
| | | :before-upload="fileBeforeUpload" |
| | | :headers="uploadHeader" :on-error="onError" |
| | | :on-success="handleSuccessUp" |
| | | :show-file-list="false" |
| | | accept='.jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar' style="width: 80px !important;"> |
| | | <el-upload ref='upload' :action="fileAction" :auto-upload="true" :data="{ userId: clickNodeVal.userId }" |
| | | :before-upload="fileBeforeUpload" :headers="uploadHeader" :on-error="onError" |
| | | :on-success="handleSuccessUp" :show-file-list="false" |
| | | accept='.jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar' |
| | | style="width: 80px !important;"> |
| | | <el-button size="small" type="primary">附件上传</el-button> |
| | | </el-upload> |
| | | </el-col> |
| | | </el-row> |
| | | <lims-table :tableData="tableData" :column="columnData" style="width: 96%;float: right;" |
| | | height="200" :tableLoading="tableLoading"></lims-table> |
| | | <lims-table :tableData="tableData" :column="columnData" style="width: 96%;float: right;" height="200" |
| | | :tableLoading="tableLoading"></lims-table> |
| | | <el-row style="margin-top: 10px"> |
| | | <el-col :span="20"> |
| | | <el-form-item label="工作经历" > |
| | | <el-form-item label="工作经历"> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="4"> |
| | | <el-button size="mini" style="float: right;margin-right: 25px" type="primary" @click="annexAdd1('add')">新增</el-button> |
| | | <el-button size="mini" style="float: right;margin-right: 25px" type="primary" |
| | | @click="annexAdd1('add')">新增</el-button> |
| | | </el-col> |
| | | </el-row> |
| | | <el-table :data="tableData1" border height="200" style="width: 96%;float: right;" v-loading="tableLoading1"> |
| | |
| | | </el-table-column> |
| | | <el-table-column align="center" label="操作"> |
| | | <template slot-scope="scope"> |
| | | <el-button type="text" size="mini" @click="annexAdd1('edit',scope.row)">编辑</el-button> |
| | | <el-button type="text" size="mini" @click="deleteAnnex1(scope.row)" style="color: #f56c6c">删除</el-button> |
| | | <el-button type="text" size="mini" @click="annexAdd1('edit', scope.row)">编辑</el-button> |
| | | <el-button type="text" size="mini" @click="deleteAnnex1(scope.row)" |
| | | style="color: #f56c6c">删除</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | |
| | | </el-col> |
| | | <el-col :span="20" style="text-align: left;"> |
| | | <el-checkbox-group v-model="checkList"> |
| | | <el-checkbox v-for="v in dict.type.personnl_type" :key="v.value" |
| | | :label="v.value"></el-checkbox> |
| | | <el-checkbox v-for="v in dict.type.personnl_type" :key="v.value" :label="v.value"></el-checkbox> |
| | | </el-checkbox-group> |
| | | </el-col> |
| | | </el-row> |
| | |
| | | </el-dialog> |
| | | |
| | | <!-- 新增附件资料 --> |
| | | <el-dialog :before-close="handleClose" :title="title" :visible.sync="dialogVisible1" width="40%" @open="getComparisonList"> |
| | | <el-dialog :before-close="handleClose" :title="title" :visible.sync="dialogVisible1" width="40%" |
| | | @open="getComparisonList"> |
| | | <el-form ref="annex" :model="annex" :rules="rules" label-width="100px"> |
| | | <el-row> |
| | | <el-col :span="16"> |
| | |
| | | <el-col :span="16"> |
| | | <el-form-item label="有效期" prop="periodValidity"> |
| | | <el-input v-model="annex.periodValidity" clearable size="small"></el-input> |
| | | <!-- <el-date-picker v-model="annex.periodValidity" format="yyyy-MM-dd" placeholder="选择日期" size="small"--> |
| | | <!-- style="width: 99%;" type="date" value-format="yyyy-MM-dd">--> |
| | | <!-- </el-date-picker>--> |
| | | <!-- <el-date-picker v-model="annex.periodValidity" format="yyyy-MM-dd" placeholder="选择日期" size="small"--> |
| | | <!-- style="width: 99%;" type="date" value-format="yyyy-MM-dd">--> |
| | | <!-- </el-date-picker>--> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | |
| | | <el-row style="margin-top: 15px"> |
| | | <el-col :span="16"> |
| | | <el-form-item label="文件"> |
| | | <el-upload |
| | | :action="action" |
| | | :before-upload="beforeAvatarUpload" |
| | | :headers="uploadHeader" |
| | | :on-success="(response,file,fileList) => onSuccess(response, file, fileList, 'fileName')" |
| | | <el-upload :action="action" :before-upload="beforeAvatarUpload" :headers="uploadHeader" |
| | | :on-success="(response, file, fileList) => onSuccess(response, file, fileList, 'fileName')" |
| | | :show-file-list="false"> |
| | | <span v-if="annex.fileName">{{annex.fileName}}</span> |
| | | <!-- <img v-if="imageUrl" :src="imageUrl" class="avatar">--> |
| | | <span v-if="annex.fileName">{{ annex.fileName }}</span> |
| | | <!-- <img v-if="imageUrl" :src="imageUrl" class="avatar">--> |
| | | <i v-else class="el-icon-upload avatar-uploader-icon"></i> |
| | | </el-upload> |
| | | </el-form-item> |
| | |
| | | <el-row> |
| | | <el-col :span="16"> |
| | | <el-form-item label="工作经历" prop="idNumber"> |
| | | <el-input type="textarea" v-model="annex2.workExperience" clearable size="small" style="width: 100%;"></el-input> |
| | | <el-input type="textarea" v-model="annex2.workExperience" clearable size="small" |
| | | style="width: 100%;"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | |
| | | label: '证件号', |
| | | prop: 'idNumber', |
| | | minWidth: '150px' |
| | | },{ |
| | | }, { |
| | | label: '发证单位', |
| | | prop: 'issueUnit', |
| | | minWidth: '150px' |
| | | },{ |
| | | }, { |
| | | label: '文件名称', |
| | | prop: 'fileName', |
| | | minWidth: '200px' |
| | | },{ |
| | | }, { |
| | | label: '级别', |
| | | prop: 'level', |
| | | minWidth: '150px' |
| | | },{ |
| | | }, { |
| | | label: '有效期', |
| | | prop: 'periodValidity', |
| | | minWidth: '150px' |
| | | },{ |
| | | }, { |
| | | label: '添加时间', |
| | | prop: 'createTime', |
| | | minWidth: '150px' |
| | |
| | | name: '编辑', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.annexAdd(1,row) |
| | | this.annexAdd(1, row) |
| | | } |
| | | }, |
| | | { |
| | |
| | | isSave: false, |
| | | } |
| | | }, |
| | | components: {limsTable, fileDownload}, |
| | | components: { limsTable, fileDownload }, |
| | | created() { |
| | | this.init() |
| | | this.searchTableList() |
| | |
| | | }, |
| | | methods: { |
| | | // 下载档案 |
| | | downPerson(){ |
| | | exportPersonBasicInfoById({id: this.clickNodeVal.userId}).then(res => { |
| | | const blob = new Blob([res],{ type: 'application/msword' }); |
| | | downPerson() { |
| | | exportPersonBasicInfoById({ id: this.clickNodeVal.userId }).then(res => { |
| | | const blob = new Blob([res], { type: 'application/msword' }); |
| | | this.$download.saveAs(blob, '人员档案.docx'); |
| | | this.$message.success('导出成功') |
| | | }) |
| | | }, |
| | | // 上传验证 |
| | |
| | | return Promise.reject(flag); //正确的终止 |
| | | } |
| | | }, |
| | | onError(err, file, fileList,type) { |
| | | onError(err, file, fileList, type) { |
| | | this.$message.error('上传失败') |
| | | this.$refs.upload.clearFiles() |
| | | }, |
| | | handleSuccessUp(response, ) { |
| | | handleSuccessUp(response,) { |
| | | this.upLoading = false; |
| | | if (response.code == 200) { |
| | | this.$message.success('上传成功'); |
| | |
| | | } |
| | | }, |
| | | // 查询附件列表 |
| | | searchTableList () { |
| | | searchTableList() { |
| | | this.tableLoading = true |
| | | getBasicInfoFileList({userId: this.clickNodeVal.userId}).then(res => { |
| | | getBasicInfoFileList({ userId: this.clickNodeVal.userId }).then(res => { |
| | | this.tableLoading = false |
| | | this.tableData = res.data |
| | | }).catch(err => { |
| | |
| | | }) |
| | | }, |
| | | // 下载 |
| | | upload (row) { |
| | | upload(row) { |
| | | let url = ''; |
| | | if(row.type==1){ |
| | | url = this.javaApi+'/img/'+row.fileUrl |
| | | fileDownload.downloadIamge(url,row.fileName) |
| | | }else{ |
| | | url = this.javaApi+'/word/'+row.fileUrl |
| | | if (row.type == 1) { |
| | | url = this.javaApi + '/img/' + row.fileUrl |
| | | fileDownload.downloadIamge(url, row.fileName) |
| | | } else { |
| | | url = this.javaApi + '/word/' + row.fileUrl |
| | | const link = document.createElement('a'); |
| | | link.href = url; |
| | | link.download = row.fileName; |
| | |
| | | } |
| | | }, |
| | | // 删除 |
| | | delete (row) { |
| | | delete(row) { |
| | | this.$confirm('此操作将删除该数据, 是否继续?', '提示', { |
| | | confirmButtonText: '确定', |
| | | cancelButtonText: '取消', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | this.tableLoading = true |
| | | delBasicInfoFileList({basicInfoFileId: row.basicInfoFileId}).then(res => { |
| | | delBasicInfoFileList({ basicInfoFileId: row.basicInfoFileId }).then(res => { |
| | | this.tableLoading = false |
| | | this.$message.success('删除成功') |
| | | this.searchTableList(); |
| | |
| | | }) |
| | | }, |
| | | // 打开工作经历探况 |
| | | annexAdd1 (type, row) { |
| | | annexAdd1(type, row) { |
| | | this.operationType = type |
| | | if (type === 'edit') { |
| | | this.basicInfoWorkId = row.basicInfoWorkId |
| | |
| | | this.dialogVisible2 = true |
| | | }, |
| | | // 提交工作经历 |
| | | submitForm2 () { |
| | | submitForm2() { |
| | | const params = { |
| | | workExperience: this.annex2.workExperience, |
| | | userId: this.clickNodeVal.userId, |
| | |
| | | } |
| | | }, |
| | | // 关闭工作经历弹框 |
| | | handleClose2 () { |
| | | handleClose2() { |
| | | this.dialogVisible2 = false |
| | | this.annex2.workExperience = '' |
| | | }, |
| | | // 删除工作经历 |
| | | deleteAnnex1 (row) { |
| | | deleteAnnex1(row) { |
| | | this.$confirm('此操作将删除该数据, 是否继续?', '提示', { |
| | | confirmButtonText: '确定', |
| | | cancelButtonText: '取消', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | this.tableLoading1 = true |
| | | delBasicInfoWorkList({basicInfoWorkId: row.basicInfoWorkId}).then(res => { |
| | | delBasicInfoWorkList({ basicInfoWorkId: row.basicInfoWorkId }).then(res => { |
| | | this.tableLoading1 = false |
| | | this.$message.success('删除成功') |
| | | this.searchTableList2(); |
| | |
| | | }); |
| | | }, |
| | | // 查询工作经历列表 |
| | | searchTableList2 () { |
| | | searchTableList2() { |
| | | this.tableLoading1 = true |
| | | getBasicInfoWorkList({userId: this.clickNodeVal.userId}).then(res => { |
| | | getBasicInfoWorkList({ userId: this.clickNodeVal.userId }).then(res => { |
| | | this.tableLoading1 = false |
| | | this.tableData1 = res.data |
| | | }).catch(err => { |
| | |
| | | console.log('err---', err); |
| | | }) |
| | | }, |
| | | annexAdd(type,row) { |
| | | if(type === 1) { |
| | | annexAdd(type, row) { |
| | | if (type === 1) { |
| | | this.title = '编辑附件资料' |
| | | this.addOrupdate = 1 |
| | | getAnnex({id: row.id}).then(res => { |
| | | getAnnex({ id: row.id }).then(res => { |
| | | this.annex = res.data |
| | | this.imageUrl = this.javaApi + '/img/' + res.data.fileName |
| | | }) |
| | | }else { |
| | | } else { |
| | | this.title = '新增附件资料' |
| | | this.addOrupdate = 2 |
| | | } |
| | |
| | | }) |
| | | }, |
| | | addAnnex() { |
| | | if(this.annex.fileName == "" || this.annex.fileName == null || this.annex.fileName == undefined) { |
| | | if (this.annex.fileName == "" || this.annex.fileName == null || this.annex.fileName == undefined) { |
| | | this.$message.error("请上传文件") |
| | | return |
| | | } |
| | | this.annex.userId = this.clickNodeVal.userId |
| | | if(this.addOrupdate === 1) { |
| | | if (this.addOrupdate === 1) { |
| | | updateAnnex(this.annex).then(res => { |
| | | if(res.code == 200) { |
| | | getAnnexByUserId({userId: this.clickNodeVal.userId}).then(res => { |
| | | if (res.code == 200) { |
| | | getAnnexByUserId({ userId: this.clickNodeVal.userId }).then(res => { |
| | | this.imageUrl = '' |
| | | this.resetForm('annex') |
| | | this.annexList = res.data |
| | |
| | | }) |
| | | } |
| | | }) |
| | | }else { |
| | | } else { |
| | | this.annex.id = null |
| | | addAnnex(this.annex).then(res => { |
| | | if(res.code == 200) { |
| | | getAnnexByUserId({userId: this.clickNodeVal.userId}).then(res => { |
| | | if (res.code == 200) { |
| | | getAnnexByUserId({ userId: this.clickNodeVal.userId }).then(res => { |
| | | this.imageUrl = '' |
| | | this.resetForm('annex') |
| | | this.annexList = res.data |
| | |
| | | cancelButtonText: '取消', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | deleteAnnex({id: row.id}).then(res => { |
| | | deleteAnnex({ id: row.id }).then(res => { |
| | | this.$message.success('删除成功!') |
| | | this.annexList = this.annexList.filter(item => item.id != row.id) |
| | | }) |
| | |
| | | } |
| | | }, |
| | | async onSuccess(response, file, fileList, entityVal) { |
| | | if(entityVal == 'fileName') { |
| | | if (entityVal == 'fileName') { |
| | | this.annex.fileName = response.data |
| | | } |
| | | // 在保存赋值新文件 |
| | |
| | | } |
| | | }, |
| | | getUserBasisInfo(userId) { |
| | | getCNASPersonnelInfo({userId: userId}).then(res => { |
| | | getCNASPersonnelInfo({ userId: userId }).then(res => { |
| | | this.form = res.data.PersonBasicInfoDto |
| | | this.department = res.data.department |
| | | this.annexList = res.data.annexList |
| | |
| | | async save() { |
| | | this.saveLoading = true |
| | | this.form.userId = this.clickNodeVal.userId |
| | | if(Array.isArray(this.form.departLimsId)) { |
| | | if(this.form.departLimsId.length > 0) { |
| | | if (Array.isArray(this.form.departLimsId)) { |
| | | if (this.form.departLimsId.length > 0) { |
| | | this.form.departLimsId = this.form.departLimsId.join(',').trim() + ',' |
| | | }else { |
| | | } else { |
| | | this.form.departLimsId = '' |
| | | } |
| | | } |
| | |
| | | }, |
| | | clickPersonnelClassificationSure() { |
| | | this.dialogVisible = false |
| | | this.form.personnelClassification = this.checkList.filter(m=>m).join(',') |
| | | this.form.personnelClassification = this.checkList.filter(m => m).join(',') |
| | | }, |
| | | async deleteFile(fileName, entityVal) { |
| | | await deleteCNASFile({fileName: fileName}).then(res => { |
| | | await deleteCNASFile({ fileName: fileName }).then(res => { |
| | | this.$message.success('删除成功!') |
| | | this.$set(this.form, entityVal, null) |
| | | let index = this.successFileList.indexOf(fileName) |
| | |
| | | resetForm(formName) { |
| | | this.$refs[formName].resetFields(); |
| | | }, |
| | | getAge (val) { |
| | | getAge(val) { |
| | | this.form.age = this.calculateAge(val) |
| | | }, |
| | | calculateAge(birthDateString) { |
| | |
| | | height: 12px; |
| | | /* 设置滚动条宽度 */ |
| | | } |
| | | |
| | | >>>.el-form-item { |
| | | margin-bottom: 3px; |
| | | margin-bottom: 3px; |
| | | } |
| | | |
| | | .el-input { |
| | | border-radius: 15px; |
| | | border-radius: 15px; |
| | | } |
| | | |
| | | .el-icon-picture-outline { |
| | | position: absolute; |
| | | left: 50%; |
| | | top: 50%; |
| | | transform: translate(-50%, -50%); |
| | | position: absolute; |
| | | left: 50%; |
| | | top: 50%; |
| | | transform: translate(-50%, -50%); |
| | | } |
| | | |
| | | .uploadFile { |
| | | margin-top: 2px; |
| | | float: left; |
| | | margin-top: 2px; |
| | | float: left; |
| | | } |
| | | .avatar-uploader-icon { |
| | | font-size: 28px; |
| | | color: #0f8bf1; |
| | | width: 178px; |
| | | height: 50px; |
| | | text-align: center; |
| | | border: 1px solid #d9d9d9; |
| | | } |
| | | .avatar { |
| | | width: 178px; |
| | | height: 178px; |
| | | display: block; |
| | | } |
| | | |
| | | .avatar-uploader-icon { |
| | | font-size: 28px; |
| | | color: #0f8bf1; |
| | | width: 178px; |
| | | height: 50px; |
| | | text-align: center; |
| | | border: 1px solid #d9d9d9; |
| | | } |
| | | |
| | | .avatar { |
| | | width: 178px; |
| | | height: 178px; |
| | | display: block; |
| | | } |
| | | </style> |
| | |
| | | </el-form-item> |
| | | </el-form> |
| | | <div> |
| | | <el-button |
| | | :loading="outLoading" |
| | | size="small" |
| | | type="primary" |
| | | @click="handleDown">导出</el-button> |
| | | <el-button :loading="outLoading" size="small" type="primary" @click="handleDown">导出</el-button> |
| | | <el-button size="small" type="primary" @click="openSelectUserDia">新建</el-button> |
| | | </div> |
| | | </div> |
| | |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <el-pagination |
| | | :current-page="1" |
| | | :current-page.sync="page.current" |
| | | :page-size="page.size" |
| | | :page-sizes="[10, 20, 30, 50, 100]" |
| | | :total="page.total" |
| | | background |
| | | layout="->,total, sizes, prev, pager, next, jumper" |
| | | style="margin-top: 10px" |
| | | @size-change="handleSizeChange" |
| | | @current-change="handleCurrentChange" |
| | | > |
| | | <el-pagination :current-page="1" :current-page.sync="page.current" :page-size="page.size" |
| | | :page-sizes="[10, 20, 30, 50, 100]" :total="page.total" background |
| | | layout="->,total, sizes, prev, pager, next, jumper" style="margin-top: 10px" @size-change="handleSizeChange" |
| | | @current-change="handleCurrentChange"> |
| | | </el-pagination> |
| | | </div> |
| | | <el-dialog :visible.sync="selectUserDia" title="选择用户" width="70%"> |
| | |
| | | <div class="search_thing"> |
| | | <div class="search_label">用户名:</div> |
| | | <div class="search_input"> |
| | | <el-input |
| | | v-model="addUserTableInfo.name" |
| | | clearable |
| | | placeholder="请输入" |
| | | size="small" |
| | | @change="selectUserList" |
| | | ></el-input> |
| | | <el-input v-model="addUserTableInfo.name" clearable placeholder="请输入" size="small" |
| | | @change="selectUserList"></el-input> |
| | | </div> |
| | | <el-button size="small" style="margin-left: 10px" type="primary" @click="selectUserList">查询</el-button> |
| | | </div> |
| | | </div> |
| | | <div v-if="selectUserDia" class="body" style="height: 60vh;"> |
| | | <lims-table :tableData="tableData1" :column="column1" |
| | | :isSelection="true" :handleSelectionChange="selectMethod" |
| | | :height="'calc(100vh - 290px)'" |
| | | :tableLoading="tableLoading1"></lims-table> |
| | | <lims-table :tableData="tableData1" :column="column1" :isSelection="true" :handleSelectionChange="selectMethod" |
| | | :height="'calc(100vh - 290px)'" :tableLoading="tableLoading1"></lims-table> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="selectUserDia = false">取 消</el-button> |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import {selectUserCondition} from "@/api/business/inspectionTask"; |
| | | import { selectUserCondition } from "@/api/business/inspectionTask"; |
| | | import limsTable from "@/components/Table/lims-table.vue"; |
| | | import { |
| | | basicInformationOfPersonnelSelectPage, |
| | |
| | | upUserDepardLimsId |
| | | } from "@/api/cnas/personal/personalList"; |
| | | import store from "@/store"; |
| | | import {Message} from "element-ui"; |
| | | import { Message } from "element-ui"; |
| | | |
| | | export default { |
| | | name: 'PersonnelList', |
| | | // import 引入的组件需要注入到对象中才能使用 |
| | | components: {limsTable}, |
| | | components: { limsTable }, |
| | | props: { |
| | | departId: { |
| | | type: Number, |
| | |
| | | tableData1: [], |
| | | tableLoading1: false, |
| | | column1: [ |
| | | {label: '姓名', prop: 'name'}, |
| | | {label: '账号', prop: 'account'}, |
| | | {label: '角色', prop: 'roleName'}, |
| | | { label: '姓名', prop: 'name' }, |
| | | { label: '账号', prop: 'account' }, |
| | | { label: '角色', prop: 'roleName' }, |
| | | { |
| | | dataType: 'tag', |
| | | label: '状态', |
| | |
| | | } |
| | | } |
| | | }, |
| | | {label: '电话号码', prop: 'phone'}, |
| | | { label: '电话号码', prop: 'phone' }, |
| | | ], |
| | | page1: { |
| | | total:0, |
| | | size:10, |
| | | current:1 |
| | | total: 0, |
| | | size: 10, |
| | | current: 1 |
| | | }, |
| | | selectUserDia: false, // 添加人员弹框 |
| | | entity: { |
| | |
| | | cancelButtonText: '取消', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | delUserDepardLimsId({id: row.userId}).then(res => { |
| | | delUserDepardLimsId({ id: row.userId }).then(res => { |
| | | this.$message.success('删除成功'); |
| | | this.refreshTable(); |
| | | this.$emit('refreshTree') |
| | |
| | | this.refreshTable(); |
| | | }, |
| | | // 打开新增人员弹框 |
| | | openSelectUserDia () { |
| | | openSelectUserDia() { |
| | | this.selectUserDia = true; |
| | | this.selectUserList() |
| | | }, |
| | | // 查询新增弹框的人员列表 |
| | | selectUserList () { |
| | | selectUserList() { |
| | | this.tableLoading1 = true |
| | | selectUserCondition().then(res => { |
| | | this.tableLoading1 = false |
| | |
| | | this.outLoading = true; |
| | | let entity = this.HaveJson(this.entity) |
| | | delete entity.orderBy; |
| | | exportPersonBasicInfo({...entity}).then(res => { |
| | | exportPersonBasicInfo({ ...entity }).then(res => { |
| | | this.outLoading = false; |
| | | const blob = new Blob([res], {type: 'application/octet-stream'}); |
| | | const blob = new Blob([res], { type: 'application/octet-stream' }); |
| | | this.$download.saveAs(blob, '人员信息.xlsx') |
| | | this.$message.success('导出成功') |
| | | }) |
| | | }, |
| | | }, |
| | |
| | | <el-button size="small" type="primary" @click="uploadDia = true, getUserList()">导入</el-button> |
| | | </div> |
| | | </div> |
| | | <lims-table :tableData="yearPlanTableData" :column="yearPlanColumn" |
| | | :currentChange="currentChange" |
| | | @pagination="pagination" height="40vh" |
| | | :page="page" :tableLoading="yearLoading"></lims-table> |
| | | <lims-table :tableData="yearPlanTableData" :column="yearPlanColumn" :currentChange="currentChange" |
| | | @pagination="pagination" height="40vh" :page="page" :tableLoading="yearLoading"></lims-table> |
| | | </div> |
| | | <div v-if="!editPlanShow" class="table"> |
| | | <div> |
| | |
| | | <div style="display: flex;justify-content: space-between;"> |
| | | <el-form :model="inDetailForm" ref="inDetailForm" size="small" :inline="true"> |
| | | <el-form-item label="培训讲师"> |
| | | <el-input v-model="inDetailForm.trainingLecturerName" class="search" clearable placeholder="请输入" size="small"></el-input> |
| | | <el-input v-model="inDetailForm.trainingLecturerName" class="search" clearable placeholder="请输入" |
| | | size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="培训日期"> |
| | | <el-date-picker v-model="inDetailForm.trainingDate" clearable |
| | | format="yyyy-MM-dd" placeholder="选择日期" size="small" |
| | | type="date" value-format="yyyy-MM-dd"></el-date-picker> |
| | | <el-date-picker v-model="inDetailForm.trainingDate" clearable format="yyyy-MM-dd" placeholder="选择日期" |
| | | size="small" type="date" value-format="yyyy-MM-dd"></el-date-picker> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button size="small" type="primary" @click="searchTable">查 询</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | <div> |
| | | <el-button v-if="isDepartment && currentChangeRow && isOperation" size="small" @click="batchDelete">批量删除</el-button> |
| | | <el-button v-if="isDepartment && currentChangeRow && isOperation" size="small" type="primary" @click="addTrainingPlan('add')">新增</el-button> |
| | | <el-button v-if="isDepartment && currentChangeRow && isOperation" size="small" |
| | | @click="batchDelete">批量删除</el-button> |
| | | <el-button v-if="isDepartment && currentChangeRow && isOperation" size="small" type="primary" |
| | | @click="addTrainingPlan('add')">新增</el-button> |
| | | </div> |
| | | </div> |
| | | <lims-table :tableData="inDetailPlanTableData" :column="inDetailPlanColumn" |
| | | :height="isDepartment ? '40vh' : '62vh' " |
| | | :isSelection="true" :handleSelectionChange="handleSelectionChange" |
| | | @pagination="pagination1" |
| | | :page="inDetailPagination" :tableLoading="yearDetailLoading"></lims-table> |
| | | :height="isDepartment ? '40vh' : '62vh'" :isSelection="true" :handleSelectionChange="handleSelectionChange" |
| | | @pagination="pagination1" :page="inDetailPagination" :tableLoading="yearDetailLoading"></lims-table> |
| | | </div> |
| | | </div> |
| | | <Add ref="addPlan" :currentChangeRow="currentChangeRow" @search="getInDetailPlan(currentRowId, departId)"></Add> |
| | | <Edit |
| | | v-if="editPlanShow" |
| | | ref="editPlan" |
| | | :currentRow="currentRow" |
| | | @del="getInDetailPlan(currentRowId, departId)" |
| | | @goBack="goBack" |
| | | ></Edit> |
| | | <Edit v-if="editPlanShow" ref="editPlan" :currentRow="currentRow" @del="getInDetailPlan(currentRowId, departId)" |
| | | @goBack="goBack"></Edit> |
| | | <el-dialog :visible.sync="reviewDialog" title="审核" width="30%" @close="auditRemarks = ''"> |
| | | <span> |
| | | 审核备注: |
| | |
| | | </span> |
| | | <span style="margin-top: 10px;display: inline-block"> |
| | | 批准人: |
| | | <el-select v-model="approverId" clearable |
| | | filterable size="small" style="width: 70%;"> |
| | | <el-select v-model="approverId" clearable filterable size="small" style="width: 70%;"> |
| | | <el-option v-for="item in responsibleOptions" :key="item.id" :label="item.name" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | |
| | | <el-dialog :visible.sync="uploadDia" title="数据导入" width="500px"> |
| | | <div style="display: flex;align-items: center;"> |
| | | <div style="width: 70px">年份:</div> |
| | | <el-date-picker |
| | | v-model="planYear" |
| | | type="year" |
| | | value-format="yyyy" |
| | | clearable |
| | | size="small" |
| | | format="yyyy" |
| | | <el-date-picker v-model="planYear" type="year" value-format="yyyy" clearable size="small" format="yyyy" |
| | | placeholder="选择年"> |
| | | </el-date-picker> |
| | | </div> |
| | | <div style="display: flex;align-items: center;margin: 10px 0"> |
| | | <div style="width: 70px">审核人:</div> |
| | | <el-select v-model="reviewerId" clearable |
| | | filterable size="small" style="width: 50%;"> |
| | | <el-select v-model="reviewerId" clearable filterable size="small" style="width: 50%;"> |
| | | <el-option v-for="item in responsibleOptions" :key="item.id" :label="item.name" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | </div> |
| | | <div style="margin: 0 auto;"> |
| | | <el-upload ref="upload" :action="javaApi + '/personTraining/personTrainingImport' + '?planYear=' + planYear + '&reviewerId=' + reviewerId" |
| | | :auto-upload="false" :before-upload="beforeUpload" :file-list="fileList" :headers="uploadHeader" |
| | | :limit="1" :on-error="onError" :on-success="onSuccess" accept=".xlsx" drag |
| | | name="file"> |
| | | <el-upload ref="upload" |
| | | :action="javaApi + '/personTraining/personTrainingImport' + '?planYear=' + planYear + '&reviewerId=' + reviewerId" |
| | | :auto-upload="false" :before-upload="beforeUpload" :file-list="fileList" :headers="uploadHeader" :limit="1" |
| | | :on-error="onError" :on-success="onSuccess" accept=".xlsx" drag name="file"> |
| | | <i class="el-icon-upload"></i> |
| | | <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div> |
| | | </el-upload> |
| | |
| | | <el-button @click="uploadDia = false">取 消</el-button> |
| | | <el-button :loading="uploading" type="primary" @click="submitUpload()">上 传</el-button> |
| | | </span> |
| | | </el-dialog > |
| | | </el-dialog> |
| | | <view-record v-if="ViewRecord" ref="ViewRecord"></view-record> |
| | | </div> |
| | | </template> |
| | |
| | | import Edit from '../components/Edit.vue'; |
| | | import ViewRecord from "../components/ViewRecord.vue"; |
| | | import limsTable from "@/components/Table/lims-table.vue"; |
| | | import {mapGetters} from "vuex"; |
| | | import { mapGetters } from "vuex"; |
| | | import { |
| | | approveAnnualPersonnelTraining, deleteAnnualPlanDetailTable, exportPersonTraining, exportPersonTrainingRecord, |
| | | personTraining, |
| | | personTrainingDelete, |
| | | queryTheAnnualPlanDetailsTable, reviewAnnualPersonnelTraining |
| | | } from "@/api/cnas/personal/personalTraining"; |
| | | import {selectUserCondition} from "@/api/system/user"; |
| | | import { selectUserCondition } from "@/api/system/user"; |
| | | |
| | | export default { |
| | | name: 'PersonnelTraining', |
| | | components: {limsTable, ViewRecord, Add, Edit }, |
| | | components: { limsTable, ViewRecord, Add, Edit }, |
| | | props: { |
| | | departId: { |
| | | type: Number, |
| | |
| | | label: '创建时间', |
| | | width: '160px', |
| | | prop: 'createTime' |
| | | },{ |
| | | }, { |
| | | label: '编制人', |
| | | prop: 'compilerName' |
| | | }, { |
| | |
| | | formatType: (params) => { |
| | | if (params == 1) { |
| | | return 'success'; |
| | | } else if (params == 2) { |
| | | } else if (params == 2) { |
| | | return 'danger'; |
| | | } else { |
| | | return null |
| | |
| | | name: '导出', |
| | | type: 'text', |
| | | disabled: (row) => { |
| | | if(row.approvalStatus === 1 && row.reviewerStatus === 1) { |
| | | if (row.approvalStatus === 1 && row.reviewerStatus === 1) { |
| | | return false; |
| | | } else { |
| | | return true; |
| | |
| | | name: '审核', |
| | | type: 'text', |
| | | disabled: (row) => { |
| | | if(row.reviewerStatus === 1 || this.userId != row.reviewerId) { |
| | | if (row.reviewerStatus === 1 || this.userId != row.reviewerId) { |
| | | return true; |
| | | } else { |
| | | return false; |
| | |
| | | name: '批准', |
| | | type: 'text', |
| | | disabled: (row) => { |
| | | if(row.approvalStatus === 1 || this.userId != row.approverId || row.reviewerStatus != 1) { |
| | | if (row.approvalStatus === 1 || this.userId != row.approverId || row.reviewerStatus != 1) { |
| | | return true; |
| | | } else { |
| | | return false; |
| | |
| | | this.deleteFun(row.id); |
| | | }, |
| | | disabled: (row) => { |
| | | if(row.reviewerStatus === 1) { |
| | | if (row.reviewerStatus === 1) { |
| | | return true; |
| | | } else { |
| | | return false; |
| | |
| | | }], |
| | | inDetailPlanTableData: [], // 年度计划明细表表数据 |
| | | inDetailPlanColumn: [ |
| | | { |
| | | { |
| | | label: '培训目标', |
| | | prop: 'trainingObjectives', |
| | | width: '100px', |
| | |
| | | ] |
| | | }], |
| | | page: { |
| | | total:0, |
| | | size:10, |
| | | current:1, |
| | | total: 0, |
| | | size: 10, |
| | | current: 1, |
| | | compilerName: "" |
| | | }, |
| | | inDetailPagination: { |
| | | total:0, |
| | | size:10, |
| | | current:1, |
| | | total: 0, |
| | | size: 10, |
| | | current: 1, |
| | | }, |
| | | editPlanShow: false, |
| | | currentRow: {}, |
| | |
| | | } |
| | | }, |
| | | methods: { |
| | | searchTable () { |
| | | searchTable() { |
| | | this.getInDetailPlan(this.currentRowId) |
| | | }, |
| | | // 查询-年度计划表 |
| | | getYearPlanList(userId) { |
| | | this.yearLoading = true |
| | | const params = this.isDepartment ? |
| | | { |
| | | departmentId: userId, |
| | | size: this.page.size, |
| | | current: this.page.current, |
| | | compilerName: this.page.compilerName, |
| | | }: { |
| | | { |
| | | departmentId: userId, |
| | | size: this.page.size, |
| | | current: this.page.current, |
| | | compilerName: this.page.compilerName, |
| | | } : { |
| | | userId: userId, |
| | | size: this.page.size, |
| | | current: this.page.current, |
| | |
| | | this.yearLoading = false |
| | | }) |
| | | }, |
| | | pagination (page) { |
| | | pagination(page) { |
| | | this.page.size = page.limit |
| | | this.getYearPlanList() |
| | | }, |
| | | currentChange (row) { |
| | | currentChange(row) { |
| | | const now = new Date(); |
| | | const currentYear = now.getFullYear(); |
| | | if (row) { |
| | | this.currentChangeRow = row |
| | | this.currentRowId = row.id |
| | | if (row.createTime.slice(0,4) == currentYear) { |
| | | if (row.createTime.slice(0, 4) == currentYear) { |
| | | this.isOperation = true; |
| | | } else { |
| | | this.isOperation = false; |
| | |
| | | this.getInDetailPlan(row.id) |
| | | } |
| | | }, |
| | | getInDetailPlan (id) { |
| | | getInDetailPlan(id) { |
| | | if (this.inDetailForm.trainingDate === null) { |
| | | this.inDetailForm.trainingDate = '' |
| | | } |
| | | const userId = this.isDepartment ? '' : this.departId |
| | | const params = |
| | | { |
| | | userId: userId, |
| | | size: this.inDetailPagination.pageSize, |
| | | current: this.inDetailPagination.current, |
| | | id: id, |
| | | trainingLecturerName: this.inDetailForm.trainingLecturerName, |
| | | trainingDate: this.inDetailForm.trainingDate, |
| | | } |
| | | { |
| | | userId: userId, |
| | | size: this.inDetailPagination.pageSize, |
| | | current: this.inDetailPagination.current, |
| | | id: id, |
| | | trainingLecturerName: this.inDetailForm.trainingLecturerName, |
| | | trainingDate: this.inDetailForm.trainingDate, |
| | | } |
| | | this.yearDetailLoading = true |
| | | queryTheAnnualPlanDetailsTable(params).then(res => { |
| | | this.yearDetailLoading = false |
| | |
| | | this.yearDetailLoading = false |
| | | }) |
| | | }, |
| | | pagination1 (page) { |
| | | pagination1(page) { |
| | | this.inDetailPagination.size = page.limit |
| | | this.getInDetailPlan(this.currentRowId) |
| | | }, |
| | |
| | | cancelButtonText: '取消', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | personTrainingDelete({id: id}).then(res => { |
| | | personTrainingDelete({ id: id }).then(res => { |
| | | this.$message.success('删除成功!'); |
| | | this.getYearPlanList(this.departId); |
| | | }); |
| | |
| | | this.getUserList() |
| | | }, |
| | | // 提交审核 |
| | | handleReview (status) { |
| | | handleReview(status) { |
| | | const personTrainingUpdateDto = { |
| | | id: this.currentRowId, |
| | | auditRemarks: this.auditRemarks, |
| | |
| | | this.approvalDialog = true |
| | | }, |
| | | // 提交批准 |
| | | handleApproval (status) { |
| | | handleApproval(status) { |
| | | const personTrainingUpdateDto = { |
| | | id: this.currentRowId, |
| | | approvalRemarks: this.approvalRemarks, |
| | |
| | | }, |
| | | // 年度计划表-下载 |
| | | downLoadPost(row) { |
| | | exportPersonTraining({id: row.id}).then(res => { |
| | | exportPersonTraining({ id: row.id }).then(res => { |
| | | this.outLoading = false |
| | | const blob = new Blob([res],{ type: 'application/msword' }); |
| | | const blob = new Blob([res], { type: 'application/msword' }); |
| | | this.$download.saveAs(blob, row.fileName + '.docx') |
| | | this.$message.success('导出成功') |
| | | }) |
| | | }, |
| | | // 年度计划-导入 |
| | |
| | | this.editPlanShow = false; |
| | | this.getInDetailPlan(this.currentRowId) |
| | | }, |
| | | viewRecord (row) { |
| | | viewRecord(row) { |
| | | this.ViewRecord = true |
| | | this.$nextTick(() => { |
| | | this.$refs.ViewRecord.openDia(row) |
| | |
| | | }, |
| | | // 年度计划明细表-下载 |
| | | downLoadInDetail(row) { |
| | | exportPersonTrainingRecord({id: row.id}).then(res => { |
| | | exportPersonTrainingRecord({ id: row.id }).then(res => { |
| | | this.outLoading = false |
| | | const blob = new Blob([res],{ type: 'application/msword' }); |
| | | const blob = new Blob([res], { type: 'application/msword' }); |
| | | this.$download.saveAs(blob, '人员培训与考核记录.docx') |
| | | this.$message.success('导出成功') |
| | | }) |
| | | }, |
| | | // 年度计划明细表-多选 |
| | |
| | | this.multipleSelection = list |
| | | }, |
| | | // 年度明细表-删除 |
| | | batchDelete () { |
| | | batchDelete() { |
| | | if (this.multipleSelection.length > 0) { |
| | | let ids = [] |
| | | this.multipleSelection.forEach(item => { |
| | |
| | | cancelButtonText: '取消', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | deleteAnnualPlanDetailTable({ids: ids.join(',')}).then(res => { |
| | | deleteAnnualPlanDetailTable({ ids: ids.join(',') }).then(res => { |
| | | if (res.code == 200) { |
| | | this.$message.success('删除成功'); |
| | | this.getInDetailPlan(this.currentRowId); |
| | |
| | | overflow: auto; |
| | | justify-content: space-between; |
| | | } |
| | | |
| | | .search { |
| | | width: 150px; |
| | | margin: 0 16px; |
| | | } |
| | | |
| | | .title { |
| | | position: relative; |
| | | font-size: 16px; |
| | |
| | | <div style="display: flex;justify-content: space-between;"> |
| | | <el-form :model="search" ref="page" size="small" :inline="true"> |
| | | <el-form-item label="姓名"> |
| | | <el-input v-model="search.userName" clearable placeholder="请输入关键字" size="small" style="width: 20vh;"></el-input> |
| | | <el-input v-model="search.userName" clearable placeholder="请输入关键字" size="small" |
| | | style="width: 20vh;"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="奖惩日期"> |
| | | <el-date-picker |
| | | v-model="search.searchTimeList" |
| | | :picker-options="pickerOptions" |
| | | align="right" |
| | | clearable |
| | | end-placeholder="结束日期" |
| | | format="yyyy-MM-dd" |
| | | range-separator="至" |
| | | size="small" |
| | | start-placeholder="开始日期" |
| | | style="width: 100%" |
| | | type="daterange" |
| | | unlink-panels |
| | | value-format="yyyy-MM-dd 00:00:00"> |
| | | <el-date-picker v-model="search.searchTimeList" :picker-options="pickerOptions" align="right" clearable |
| | | end-placeholder="结束日期" format="yyyy-MM-dd" range-separator="至" size="small" start-placeholder="开始日期" |
| | | style="width: 100%" type="daterange" unlink-panels value-format="yyyy-MM-dd 00:00:00"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | <el-form-item> |
| | |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <el-pagination :current-page="1" :page-size="search.size" |
| | | :page-sizes="[10, 20, 30, 50, 100]" |
| | | :total="search.total" layout="->,total, sizes, prev, pager, next, jumper" |
| | | background |
| | | style="margin-top: 10px" |
| | | @size-change="handleSizeChange" |
| | | @current-change="handleCurrentChange"> |
| | | <el-pagination :current-page="1" :page-size="search.size" :page-sizes="[10, 20, 30, 50, 100]" |
| | | :total="search.total" layout="->,total, sizes, prev, pager, next, jumper" background style="margin-top: 10px" |
| | | @size-change="handleSizeChange" @current-change="handleCurrentChange"> |
| | | </el-pagination> |
| | | </div> |
| | | <el-dialog |
| | | :visible.sync="dialogVisible" |
| | | title="奖惩记录" |
| | | width="50%" |
| | | @open="getUserList"> |
| | | <el-dialog :visible.sync="dialogVisible" title="奖惩记录" width="50%" @open="getUserList"> |
| | | <div style="height: 40vh"> |
| | | <el-form ref="form" :model="form" :rules="rules" label-width="120px"> |
| | | <el-col :span="12"> |
| | |
| | | <el-col :span="12"> |
| | | <el-form-item label="员工姓名" prop="userId"> |
| | | <el-select v-model="form.userId" placeholder="请选择" size="small" style="width: 100%" value-key="id" |
| | | @change="selectUserChange" :disabled="!isDepartment"> |
| | | @change="selectUserChange" :disabled="!isDepartment"> |
| | | <el-option v-for="item in responsibleOptions" :key="item.id" :label="item.name" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="奖惩时间" prop="rewardPunishTime"> |
| | | <el-date-picker |
| | | v-model="form.rewardPunishTime" |
| | | format="yyyy-MM-dd HH:mm:ss" |
| | | placeholder="选择日期" |
| | | size="small" |
| | | style="width: 100%" |
| | | type="datetime" |
| | | value-format="yyyy-MM-dd HH:mm:ss"> |
| | | <el-date-picker v-model="form.rewardPunishTime" format="yyyy-MM-dd HH:mm:ss" placeholder="选择日期" |
| | | size="small" style="width: 100%" type="datetime" value-format="yyyy-MM-dd HH:mm:ss"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | |
| | | rewardPunishmentExport, |
| | | rewardPunishmentPage |
| | | } from "@/api/cnas/personal/personRewardPunishmentRecord"; |
| | | import {selectUserCondition} from "@/api/system/user"; |
| | | import {delCustomById} from "@/api/system/customer"; |
| | | import { selectUserCondition } from "@/api/system/user"; |
| | | import { delCustomById } from "@/api/system/customer"; |
| | | |
| | | export default { |
| | | props: { |
| | |
| | | async getPersonnelTraining() { |
| | | const params = { |
| | | userId: this.isDepartment ? '' : this.departId, |
| | | departmentId: this.isDepartment ? this.departId : '', |
| | | current: this.search.curent, |
| | | size: this.search.size, |
| | | userName: this.search.userName, |
| | | startTime: this.search.searchTimeList && this.search.searchTimeList[0], |
| | | endTime: this.search.searchTimeList && this.search.searchTimeList[1], |
| | | departmentId: this.isDepartment ? this.departId : '', |
| | | current: this.search.curent, |
| | | size: this.search.size, |
| | | userName: this.search.userName, |
| | | startTime: this.search.searchTimeList && this.search.searchTimeList[0], |
| | | endTime: this.search.searchTimeList && this.search.searchTimeList[1], |
| | | } |
| | | this.tableLoading = true |
| | | rewardPunishmentPage(params).then(res => { |
| | |
| | | this.tableLoading = false |
| | | }) |
| | | }, |
| | | addRow () { |
| | | addRow() { |
| | | this.dialogVisible = true |
| | | if (!this.isDepartment) { |
| | | this.form.userId = this.departId |
| | | this.selectUserChange(this.form.userId) |
| | | } |
| | | }, |
| | | handleDown(){ |
| | | handleDown() { |
| | | this.outLoading = true |
| | | rewardPunishmentExport({ |
| | | userId: this.isDepartment ? '' : this.departId, |
| | |
| | | type: 'application/force-download' |
| | | }) |
| | | this.$download.saveAs(blob, '奖惩记录.xlsx') |
| | | this.$message.success('导出成功') |
| | | }) |
| | | }, |
| | | // 获取负责人信息接口 |
| | |
| | | // 打开表单弹框 |
| | | editForm(row) { |
| | | this.dialogVisible = true |
| | | this.form = {...row}; |
| | | this.form = { ...row }; |
| | | }, |
| | | // 提交表单数据 |
| | | saveOrUpdate() { |
| | |
| | | cancelButtonText: "取消", |
| | | type: "warning" |
| | | }).then(() => { |
| | | deleteRewardPunishment({id: row.id}).then(res => { |
| | | deleteRewardPunishment({ id: row.id }).then(res => { |
| | | if (res.code === 500) { |
| | | return |
| | | } |
| | |
| | | }).catch(e => { |
| | | this.$message.error('删除失败') |
| | | }) |
| | | }).catch(() => {}) |
| | | }).catch(() => { }) |
| | | |
| | | } |
| | | }, |
| | |
| | | <el-form :model="entitySearch" ref="entitySearch" size="small" :inline="true"> |
| | | <el-form-item label="试样名称" prop="sampleName"> |
| | | <el-input size="small" placeholder="请输入" clearable v-model="entitySearch.sampleName" |
| | | @keyup.enter.native="refreshTable"></el-input> |
| | | @keyup.enter.native="refreshTable"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="委托单位" prop="commissionUnit"> |
| | | <el-input v-model="entitySearch.commissionUnit" clearable placeholder="请输入" size="small" |
| | | @keyup.enter.native="refreshTable()"></el-input> |
| | | @keyup.enter.native="refreshTable()"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="生产单位" prop="production"> |
| | | <el-input v-model="entitySearch.production" clearable placeholder="请输入" size="small" |
| | | @keyup.enter.native="refreshTable()"></el-input> |
| | | @keyup.enter.native="refreshTable()"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="委托人" prop="commissionUser"> |
| | | <el-input v-model="entitySearch.commissionUser" clearable placeholder="请输入" size="small" |
| | | @keyup.enter.native="refreshTable()"></el-input> |
| | | @keyup.enter.native="refreshTable()"></el-input> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button icon="el-icon-refresh" size="mini" @click="refresh">重 置</el-button> |
| | |
| | | <el-button size="mini" type="text" @click="handleLook(scope.row)">查看</el-button> |
| | | <el-button size="mini" style="color:#F56C6C" type="text" @click="deleteOrder(scope.row)">删除</el-button> |
| | | <el-button size="mini" type="text" @click="openDownloadDia(scope.row)">下载</el-button> |
| | | <el-upload ref='upload' |
| | | :action="action" |
| | | :data="{inspectionOrderId: scope.row.inspectionOrderId}" :headers="uploadHeader" |
| | | :on-error="onError" :on-success="handleSuccessUp" :show-file-list="false" accept='image/jpg,image/jpeg,image/png,application/pdf,.doc,.docx,.xlsx' |
| | | name="file" style="background: transparent;display: inline;margin-left: 4px"> |
| | | <el-upload ref='upload' :action="action" :data="{ inspectionOrderId: scope.row.inspectionOrderId }" |
| | | :headers="uploadHeader" :on-error="onError" :on-success="handleSuccessUp" :show-file-list="false" |
| | | accept='image/jpg,image/jpeg,image/png,application/pdf,.doc,.docx,.xlsx' name="file" |
| | | style="background: transparent;display: inline;margin-left: 4px"> |
| | | <span style="color: #409EFF">上传</span> |
| | | </el-upload> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <el-pagination :current-page="1" :page-size="pages.size" :page-sizes="[10, 20, 30, 50, 100]" |
| | | :total="total1" layout="->,total, sizes, prev, pager, next" |
| | | style="margin-top: 10px" background |
| | | @size-change="handleSizeChange1" @current-change="handleCurrentChange1"> |
| | | <el-pagination :current-page="1" :page-size="pages.size" :page-sizes="[10, 20, 30, 50, 100]" :total="total1" |
| | | layout="->,total, sizes, prev, pager, next" style="margin-top: 10px" background @size-change="handleSizeChange1" |
| | | @current-change="handleCurrentChange1"> |
| | | </el-pagination> |
| | | </div> |
| | | <el-dialog |
| | | :close-on-click-modal="false" :close-on-press-escape="false" |
| | | :visible.sync="orderRowsVisible" title="新增检验任务单" width="1000px"> |
| | | <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" :visible.sync="orderRowsVisible" |
| | | title="新增检验任务单" width="1000px"> |
| | | <div style="display: flex; align-items: center;margin-bottom: 10px"> |
| | | <span style="width: 80px">委托编号:</span> |
| | | <el-input v-model="entity.entrustCode" clearable size="small" style="width: 300px;margin-right: 10px"></el-input> |
| | | <el-input v-model="entity.entrustCode" clearable size="small" |
| | | style="width: 300px;margin-right: 10px"></el-input> |
| | | <el-button size="small" type="primary" @click="searchTableData">查询</el-button> |
| | | <el-button size="small" @click="refreshTableData">重 置</el-button> |
| | | </div> |
| | |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <el-pagination :current-page="1" :page-size="tableSearch.size" :page-sizes="[10, 20, 30, 50, 100]" |
| | | :total="total" layout="->,total, sizes, prev, pager, next" |
| | | style="margin-top: 10px" background |
| | | @size-change="handleSizeChange" @current-change="handleCurrentChange"> |
| | | <el-pagination :current-page="1" :page-size="tableSearch.size" :page-sizes="[10, 20, 30, 50, 100]" :total="total" |
| | | layout="->,total, sizes, prev, pager, next" style="margin-top: 10px" background @size-change="handleSizeChange" |
| | | @current-change="handleCurrentChange"> |
| | | </el-pagination> |
| | | </el-dialog> |
| | | <el-dialog |
| | | :class="{downPdf:title=='下载'}" :close-on-click-modal="false" |
| | | :close-on-press-escape="false" |
| | | :modal="title!='下载'" :title="title" :visible.sync="detailDialogVisible" top="20px" width="1200px"> |
| | | <el-dialog :class="{ downPdf: title == '下载' }" :close-on-click-modal="false" :close-on-press-escape="false" |
| | | :modal="title != '下载'" :title="title" :visible.sync="detailDialogVisible" top="20px" width="1200px"> |
| | | <div style="max-height: 75vh;overflow-y: auto;"> |
| | | <div id="dialogBody"> |
| | | <table border="1" cellpadding="10" class="tables heads" style="border: 1px dashed black;"> |
| | |
| | | <span style="width: 100px">委托编号:</span> |
| | | <el-input v-model="currentInfo.entrustCode" clearable size="small"></el-input> |
| | | </p> |
| | | <p v-if="operationType === 'view'" style="margin-top: 16px;margin-left: 600px;">委托编号:{{ currentInfo.entrustCode }}</p> |
| | | <p v-if="operationType === 'view'" style="margin-top: 16px;margin-left: 600px;">委托编号:{{ |
| | | currentInfo.entrustCode }} |
| | | </p> |
| | | <table border="1" cellpadding="10" class="tables"> |
| | | <tr> |
| | | <td colspan="2"> |
| | | <p>试样名称</p> |
| | | </td> |
| | | <td v-if="operationType !== 'view'"><el-input v-model="currentInfo.sampleName" clearable size="small"></el-input></td> |
| | | <td v-if="operationType !== 'view'"><el-input v-model="currentInfo.sampleName" clearable |
| | | size="small"></el-input></td> |
| | | <td v-if="operationType === 'view'">{{ currentInfo.sampleName }}</td> |
| | | <td> |
| | | <p>委托时间</p> |
| | | </td> |
| | | <td v-if="operationType !== 'view'"> |
| | | <el-date-picker |
| | | v-model="currentInfo.commissionDate" |
| | | clearable |
| | | format="yyyy-MM-dd" |
| | | placeholder="选择日期" |
| | | size="small" |
| | | style="width: 100%" |
| | | type="date" |
| | | value-format="yyyy-MM-dd"> |
| | | <el-date-picker v-model="currentInfo.commissionDate" clearable format="yyyy-MM-dd" placeholder="选择日期" |
| | | size="small" style="width: 100%" type="date" value-format="yyyy-MM-dd"> |
| | | </el-date-picker> |
| | | </td> |
| | | <td v-if="operationType === 'view'">{{ currentInfo.commissionDate }}</td> |
| | |
| | | <td colspan="2"> |
| | | <p>型 号</p> |
| | | </td> |
| | | <td v-if="operationType !== 'view'"><el-input v-model="currentInfo.modelNo" clearable size="small"></el-input></td> |
| | | <td v-if="operationType !== 'view'"><el-input v-model="currentInfo.modelNo" clearable |
| | | size="small"></el-input> |
| | | </td> |
| | | <td v-if="operationType === 'view'">{{ currentInfo.modelNo }}</td> |
| | | <td> |
| | | <p>委托单位</p> |
| | | </td> |
| | | <td v-if="operationType !== 'view'"><el-input v-model="currentInfo.commissionUnit" clearable size="small"></el-input></td> |
| | | <td v-if="operationType !== 'view'"><el-input v-model="currentInfo.commissionUnit" clearable |
| | | size="small"></el-input></td> |
| | | <td v-if="operationType === 'view'">{{ currentInfo.commissionUnit }}</td> |
| | | </tr> |
| | | <tr> |
| | | <td colspan="2"> |
| | | <p>生产单位</p> |
| | | </td> |
| | | <td v-if="operationType !== 'view'"><el-input v-model="currentInfo.production" clearable size="small"></el-input></td> |
| | | <td v-if="operationType !== 'view'"><el-input v-model="currentInfo.production" clearable |
| | | size="small"></el-input></td> |
| | | <td v-if="operationType === 'view'">{{ currentInfo.production }}</td> |
| | | <td> |
| | | <p>委托人</p> |
| | | </td> |
| | | <td v-if="operationType !== 'view'"><el-input v-model="currentInfo.commissionUser" clearable size="small"></el-input></td> |
| | | <td v-if="operationType !== 'view'"><el-input v-model="currentInfo.commissionUser" clearable |
| | | size="small"></el-input></td> |
| | | <td v-if="operationType === 'view'">{{ currentInfo.commissionUser }}</td> |
| | | </tr> |
| | | <tr> |
| | | <td colspan="2"> |
| | | <p>样品数量</p> |
| | | </td> |
| | | <td v-if="operationType !== 'view'"><el-input v-model="currentInfo.quantity" clearable size="small"></el-input></td> |
| | | <td v-if="operationType !== 'view'"><el-input v-model="currentInfo.quantity" clearable |
| | | size="small"></el-input></td> |
| | | <td v-if="operationType === 'view'">{{ currentInfo.quantity }}</td> |
| | | <td> |
| | | <p>样品状态</p> |
| | | </td> |
| | | <td v-if="operationType !== 'view'"><el-input v-model="currentInfo.sampleStatus" clearable size="small"></el-input></td> |
| | | <td v-if="operationType === 'view'">{{ insStateList.find(m=>m.value==currentInfo.sampleStatus)?insStateList.find(m=>m.value==currentInfo.sampleStatus).label:'/' }}</td> |
| | | <td v-if="operationType !== 'view'"><el-input v-model="currentInfo.sampleStatus" clearable |
| | | size="small"></el-input></td> |
| | | <td v-if="operationType === 'view'">{{ |
| | | insStateList.find(m => m.value == currentInfo.sampleStatus) ? insStateList.find(m => m.value == currentInfo.sampleStatus).label:'/' |
| | | }}</td> |
| | | </tr> |
| | | <tr> |
| | | <td colspan="2"> |
| | |
| | | </el-radio-group> |
| | | </td> |
| | | <td v-if="operationType === 'view'"> |
| | | <span v-if="currentInfo.isLeave==1">是</span> |
| | | <span v-if="currentInfo.isLeave == 1">是</span> |
| | | <span v-else>否</span> |
| | | </td> |
| | | <td> |
| | |
| | | </el-radio-group> |
| | | </td> |
| | | <td v-if="operationType === 'view'"> |
| | | <span v-if="currentInfo.processing==0">委托单位取回</span> |
| | | <span v-if="currentInfo.processing == 0">委托单位取回</span> |
| | | <span v-else>实验室处理</span> |
| | | </td> |
| | | </tr> |
| | |
| | | <p>约定完成时间(报告日期)</p> |
| | | </td> |
| | | <td v-if="operationType !== 'view'"> |
| | | <el-date-picker |
| | | v-model="currentInfo.appointed" |
| | | clearable |
| | | format="yyyy-MM-dd" |
| | | placeholder="选择日期" |
| | | size="small" |
| | | style="width: 100%" |
| | | type="date" |
| | | value-format="yyyy-MM-dd"> |
| | | <el-date-picker v-model="currentInfo.appointed" clearable format="yyyy-MM-dd" placeholder="选择日期" |
| | | size="small" style="width: 100%" type="date" value-format="yyyy-MM-dd"> |
| | | </el-date-picker> |
| | | </td> |
| | | <td v-if="operationType === 'view'">{{ currentInfo.appointed }}</td> |
| | |
| | | </el-radio-group> |
| | | </td> |
| | | <td v-if="operationType === 'view'"> |
| | | <span v-if="currentInfo.send==1">自取</span> |
| | | <span v-if="currentInfo.send == 1">自取</span> |
| | | <span v-else>其他</span> |
| | | </td> |
| | | </tr> |
| | | <el-button size="small" type="primary" @click="addOrderDetailList" v-if="operationType !== 'view'">添加</el-button> |
| | | <el-button size="small" type="primary" @click="addOrderDetailList" |
| | | v-if="operationType !== 'view'">添加</el-button> |
| | | <tr> |
| | | <td> |
| | | <p>序号</p> |
| | |
| | | <p>备注</p> |
| | | </td> |
| | | </tr> |
| | | <tr v-for="(item,index) in currentInfo.orderDetailList" :key="index" > |
| | | <td>{{ index+1 }}</td> |
| | | <td v-if="operationType !== 'view'"><el-input v-model="item.sampleNumber" clearable size="small"></el-input></td> |
| | | <tr v-for="(item, index) in currentInfo.orderDetailList" :key="index"> |
| | | <td>{{ index + 1 }}</td> |
| | | <td v-if="operationType !== 'view'"><el-input v-model="item.sampleNumber" clearable |
| | | size="small"></el-input> |
| | | </td> |
| | | <td v-if="operationType === 'view'">{{ item.sampleNumber }}</td> |
| | | <td v-if="operationType !== 'view'"><el-input v-model="item.testItem" clearable size="small"></el-input></td> |
| | | <td v-if="operationType !== 'view'"><el-input v-model="item.testItem" clearable size="small"></el-input> |
| | | </td> |
| | | <td v-if="operationType === 'view'">{{ item.testItem }}</td> |
| | | <td v-if="operationType !== 'view'"><el-input v-model="item.testStandard" clearable size="small"></el-input></td> |
| | | <td v-if="operationType !== 'view'"><el-input v-model="item.testStandard" clearable |
| | | size="small"></el-input> |
| | | </td> |
| | | <td v-if="operationType === 'view'">{{ item.testStandard }}</td> |
| | | <td v-if="operationType !== 'view'"><el-input v-model="item.remark" clearable size="small"></el-input></td> |
| | | <td v-if="operationType !== 'view'"><el-input v-model="item.remark" clearable size="small"></el-input> |
| | | </td> |
| | | <td v-if="operationType === 'view'">{{ item.remark }}</td> |
| | | </tr> |
| | | <tr> |
| | |
| | | <el-radio :label="0">不考虑不确定度</el-radio> |
| | | <el-radio :label="1">考虑不确定度</el-radio> |
| | | </el-radio-group> |
| | | <span v-if="currentInfo.criterionRule === 1"><el-input v-model="currentInfo.criterionRuleRemark" clearable size="small" style="width: 60px"></el-input>%</span> |
| | | <span v-if="currentInfo.criterionRule === 1"><el-input v-model="currentInfo.criterionRuleRemark" |
| | | clearable size="small" style="width: 60px"></el-input>%</span> |
| | | </td> |
| | | <td v-if="operationType === 'view'" colspan="3"> |
| | | <span v-if="currentInfo.criterionRule===0">不考虑不确定度</span> |
| | | <span v-if="currentInfo.criterionRule===1">考虑不确定度</span> |
| | | <span v-if="currentInfo.criterionRule===1">{{ currentInfo.criterionRuleRemark + '%' }}</span> |
| | | <span v-if="currentInfo.criterionRule === 0">不考虑不确定度</span> |
| | | <span v-if="currentInfo.criterionRule === 1">考虑不确定度</span> |
| | | <span v-if="currentInfo.criterionRule === 1">{{ currentInfo.criterionRuleRemark + '%' }}</span> |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td colspan="2"> |
| | | <p>委托人签名</p> |
| | | </td> |
| | | <td v-if="operationType !== 'view'"><el-input v-model="currentInfo.commissionUser" clearable size="small"></el-input></td> |
| | | <td v-if="operationType !== 'view'"><el-input v-model="currentInfo.commissionUser" clearable |
| | | size="small"></el-input></td> |
| | | <td v-if="operationType === 'view'"> |
| | | {{currentInfo.commissionUser}} |
| | | {{ currentInfo.commissionUser }} |
| | | </td> |
| | | <td> |
| | | <p>委托日期</p> |
| | | </td> |
| | | <td v-if="operationType !== 'view'"> |
| | | <el-date-picker |
| | | v-model="currentInfo.commissionDate" |
| | | clearable |
| | | format="yyyy-MM-dd" |
| | | placeholder="选择日期" |
| | | size="small" |
| | | style="width: 100%" |
| | | type="date" |
| | | value-format="yyyy-MM-dd"> |
| | | <el-date-picker v-model="currentInfo.commissionDate" clearable format="yyyy-MM-dd" placeholder="选择日期" |
| | | size="small" style="width: 100%" type="date" value-format="yyyy-MM-dd"> |
| | | </el-date-picker> |
| | | </td> |
| | | <td v-if="operationType === 'view'">{{ currentInfo.commissionDate }}</td> |
| | |
| | | <td colspan="2"> |
| | | <p>委托人联系电话</p> |
| | | </td> |
| | | <td v-if="operationType !== 'view'" colspan="3"><el-input v-model="currentInfo.commissionPhone" clearable size="small"></el-input></td> |
| | | <td v-if="operationType !== 'view'" colspan="3"><el-input v-model="currentInfo.commissionPhone" clearable |
| | | size="small"></el-input></td> |
| | | <td v-if="operationType === 'view'" colspan="3">{{ currentInfo.commissionPhone }}</td> |
| | | </tr> |
| | | <tr> |
| | | <td colspan="2"> |
| | | <p>综合室签名</p> |
| | | </td> |
| | | <td v-if="operationType !== 'view'"><el-input v-model="currentInfo.generalOfficeUser" clearable size="small"></el-input></td> |
| | | <td v-if="operationType === 'view'">{{currentInfo.generalOfficeUser}}</td> |
| | | <td v-if="operationType !== 'view'"><el-input v-model="currentInfo.generalOfficeUser" clearable |
| | | size="small"></el-input></td> |
| | | <td v-if="operationType === 'view'">{{ currentInfo.generalOfficeUser }}</td> |
| | | <td> |
| | | <p>接收日期</p> |
| | | </td> |
| | | <td v-if="operationType !== 'view'"> |
| | | <el-date-picker |
| | | v-model="currentInfo.receiptData" |
| | | clearable |
| | | format="yyyy-MM-dd" |
| | | placeholder="选择日期" |
| | | size="small" |
| | | style="width: 100%" |
| | | type="date" |
| | | value-format="yyyy-MM-dd"> |
| | | <el-date-picker v-model="currentInfo.receiptData" clearable format="yyyy-MM-dd" placeholder="选择日期" |
| | | size="small" style="width: 100%" type="date" value-format="yyyy-MM-dd"> |
| | | </el-date-picker> |
| | | </td> |
| | | <td v-if="operationType === 'view'">{{ currentInfo.receiptData }}</td> |
| | |
| | | <td colspan="2"> |
| | | <p>领样员签名</p> |
| | | </td> |
| | | <td v-if="operationType !== 'view'"><el-input v-model="currentInfo.sampleTakerUser" clearable size="small"></el-input></td> |
| | | <td v-if="operationType !== 'view'"><el-input v-model="currentInfo.sampleTakerUser" clearable |
| | | size="small"></el-input></td> |
| | | <td v-if="operationType === 'view'">{{ currentInfo.sampleTakerUser }}</td> |
| | | <td> |
| | | <p>领样日期</p> |
| | | </td> |
| | | <td v-if="operationType !== 'view'"> |
| | | <el-date-picker |
| | | v-model="currentInfo.sampleData" |
| | | clearable |
| | | format="yyyy-MM-dd" |
| | | placeholder="选择日期" |
| | | size="small" |
| | | style="width: 100%" |
| | | type="date" |
| | | value-format="yyyy-MM-dd"> |
| | | <el-date-picker v-model="currentInfo.sampleData" clearable format="yyyy-MM-dd" placeholder="选择日期" |
| | | size="small" style="width: 100%" type="date" value-format="yyyy-MM-dd"> |
| | | </el-date-picker> |
| | | </td> |
| | | <td v-if="operationType === 'view'">{{ currentInfo.sampleData }}</td> |
| | |
| | | </div> |
| | | <span v-if="operationType !== 'view'" slot="footer" class="dialog-footer"> |
| | | <el-button @click="detailDialogVisible = false">取 消</el-button> |
| | | <el-button v-if="operationType === 'add'" :loading="buttonLoading" type="primary" @click="handleAdd">确 定</el-button> |
| | | <el-button v-if="operationType === 'edit'" :loading="buttonLoading" type="primary" @click="handleEdit">确 定</el-button> |
| | | <el-button v-if="operationType === 'add'" :loading="buttonLoading" type="primary" @click="handleAdd">确 |
| | | 定</el-button> |
| | | <el-button v-if="operationType === 'edit'" :loading="buttonLoading" type="primary" @click="handleEdit">确 |
| | | 定</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <el-dialog :visible.sync="downloadDialog" title="下载" width="600px"> |
| | |
| | | updateInspectionOrder |
| | | } from "@/api/cnas/process/demand/demand"; |
| | | import limsTable from "@/components/Table/lims-table.vue"; |
| | | import {selectUserCondition} from "@/api/business/inspectionTask"; |
| | | import { selectUserCondition } from "@/api/business/inspectionTask"; |
| | | |
| | | export default { |
| | | name: "a7-Inspection-Order-Form", |
| | | components: {limsTable}, |
| | | components: { limsTable }, |
| | | data() { |
| | | return { |
| | | title:'检验委托单', |
| | | detailDialogVisible:false, |
| | | addLoading:false, |
| | | outLoading:false, |
| | | currentInfo:{ |
| | | title: '检验委托单', |
| | | detailDialogVisible: false, |
| | | addLoading: false, |
| | | outLoading: false, |
| | | currentInfo: { |
| | | orderDetailList: [] |
| | | }, |
| | | personList:[], |
| | | insStateList:[ |
| | | personList: [], |
| | | insStateList: [ |
| | | { |
| | | label: '待审核', |
| | | value: 0 |
| | |
| | | } |
| | | }, |
| | | methods: { |
| | | addOrderDetailList () { |
| | | addOrderDetailList() { |
| | | if (this.currentInfo.orderDetailList == null) { |
| | | this.currentInfo.orderDetailList = [] |
| | | } |
| | |
| | | this.refreshTable() |
| | | }, |
| | | // 打开新增弹框 |
| | | goAdd () { |
| | | goAdd() { |
| | | this.operationType = 'add' |
| | | this.title = '新增检验委托单'; |
| | | this.orderRowsVisible = true |
| | | this.searchTableData() |
| | | }, |
| | | // 查询可新增的检验单 |
| | | searchTableData () { |
| | | searchTableData() { |
| | | this.tableLoading = true |
| | | getInsOrderOnInspection({ |
| | | ...this.tableSearch, |
| | |
| | | }) |
| | | }, |
| | | // 重置检验单列表 |
| | | refreshTableData () { |
| | | refreshTableData() { |
| | | this.entity = { |
| | | entrustCode: '' |
| | | } |
| | |
| | | this.refreshTable(); |
| | | }, |
| | | // 提交新增 |
| | | handleAdd () { |
| | | handleAdd() { |
| | | this.buttonLoading = true |
| | | addInspectionOrder(this.currentInfo).then(res => { |
| | | this.buttonLoading = false |
| | |
| | | }) |
| | | }, |
| | | // 提交修改 |
| | | handleEdit () { |
| | | handleEdit() { |
| | | this.buttonLoading = true |
| | | updateInspectionOrder(this.currentInfo).then(res => { |
| | | this.buttonLoading = false |
| | |
| | | }) |
| | | }, |
| | | // 查询需要新增的委托单详情 |
| | | goAddOrder (row) { |
| | | getInspectionOrderByInsOderId({insOrderId: row.id}).then(res => { |
| | | goAddOrder(row) { |
| | | getInspectionOrderByInsOderId({ insOrderId: row.id }).then(res => { |
| | | this.currentInfo = res.data |
| | | this.title = '新增检验委托单'; |
| | | this.detailDialogVisible = true |
| | |
| | | }) |
| | | }, |
| | | // 打开编辑弹框 |
| | | goUpdate (row) { |
| | | goUpdate(row) { |
| | | this.operationType = 'edit' |
| | | getInspectionOrderOne({inspectionOrderId: row.inspectionOrderId}).then(res => { |
| | | getInspectionOrderOne({ inspectionOrderId: row.inspectionOrderId }).then(res => { |
| | | this.currentInfo = res.data |
| | | this.title = '编辑检验委托单'; |
| | | this.detailDialogVisible = true |
| | |
| | | }) |
| | | }, |
| | | // 查看 |
| | | handleLook(row){ |
| | | handleLook(row) { |
| | | this.operationType = 'view' |
| | | getInspectionOrderOne({inspectionOrderId: row.inspectionOrderId}).then(res => { |
| | | getInspectionOrderOne({ inspectionOrderId: row.inspectionOrderId }).then(res => { |
| | | this.currentInfo = res.data |
| | | this.title = '查看检验委托单'; |
| | | this.detailDialogVisible = true |
| | |
| | | }) |
| | | }, |
| | | // 删除 |
| | | deleteOrder (row) { |
| | | deleteOrder(row) { |
| | | this.$confirm('此操作将永久删除该数据, 是否继续?', '提示', { |
| | | confirmButtonText: '确定', |
| | | cancelButtonText: '取消', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | delInspectionOrder({inspectionOrderId: row.inspectionOrderId}).then(res => { |
| | | delInspectionOrder({ inspectionOrderId: row.inspectionOrderId }).then(res => { |
| | | this.$message.success('删除成功!'); |
| | | this.refreshTable(); |
| | | }); |
| | |
| | | }); |
| | | }, |
| | | // 打开下载弹框 |
| | | openDownloadDia (row) { |
| | | openDownloadDia(row) { |
| | | this.downloadDialog = true |
| | | this.download = row |
| | | }, |
| | | // 委托单下载 |
| | | orderFormDown () { |
| | | orderFormDown() { |
| | | let url = this.download.fileUrl; |
| | | const link = document.createElement('a'); |
| | | link.href = this.javaApi + url; |
| | |
| | | link.click(); |
| | | }, |
| | | // 委托报告下载 |
| | | orderReportDown () { |
| | | orderReportDown() { |
| | | this.outLoading = true; |
| | | exportInspectionOrder({inspectionOrderId: this.download.inspectionOrderId}).then(res => { |
| | | exportInspectionOrder({ inspectionOrderId: this.download.inspectionOrderId }).then(res => { |
| | | this.outLoading = false; |
| | | const blob = new Blob([res], { type: 'application/octet-stream' }); |
| | | this.$download.saveAs(blob, '检验委托单.docx') |
| | | this.$message.success('导出成功'); |
| | | |
| | | }).catch(err => { |
| | | this.outLoading = false; |
| | | }) |
| | | }, |
| | | // 上传 |
| | | handleSuccessUp(response, ) { |
| | | handleSuccessUp(response,) { |
| | | if (response.code == 200) { |
| | | this.$message.success('上传成功'); |
| | | this.refreshTable() |
| | |
| | | } |
| | | </script> |
| | | |
| | | <style scoped> |
| | | </style> |
| | | <style scoped></style> |
| | |
| | | <div style="display: flex;justify-content: space-between;"> |
| | | <el-form :model="yearForm" ref="yearForm" size="small" :inline="true"> |
| | | <el-form-item label="计划名称" prop="monitorName"> |
| | | <el-input size="small" placeholder="请输入" clearable |
| | | v-model="yearForm.monitorName" |
| | | @keyup.enter.native="getYearPlanList"></el-input> |
| | | <el-input size="small" placeholder="请输入" clearable v-model="yearForm.monitorName" |
| | | @keyup.enter.native="getYearPlanList"></el-input> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button icon="el-icon-refresh" size="mini" @click="clearYear">重 置</el-button> |
| | |
| | | </div> |
| | | </div> |
| | | <lims-table :tableData="yearTableData" :column="yearColumnData" :page="yearPage" :tableLoading="yearLoading" |
| | | height="40vh" @pagination="pagination" :rowClick="rowClick" |
| | | key="yearTableData"></lims-table> |
| | | height="40vh" @pagination="pagination" :rowClick="rowClick" key="yearTableData"></lims-table> |
| | | </div> |
| | | <div style="margin-top: 20px"> |
| | | <div style="display: flex;justify-content: space-between;"> |
| | |
| | | <el-button size="small" type="primary" @click="showDialog('add')">新增</el-button> |
| | | </div> |
| | | </div> |
| | | <lims-table :tableData="yearDetailTableData" :column="yearDetailColumnData" :page="yearDetailPage" :tableLoading="yearDetailLoading" |
| | | height="40vh" @pagination="pagination1" |
| | | key="yearDetailTableData"></lims-table> |
| | | <lims-table :tableData="yearDetailTableData" :column="yearDetailColumnData" :page="yearDetailPage" |
| | | :tableLoading="yearDetailLoading" height="40vh" @pagination="pagination1" |
| | | key="yearDetailTableData"></lims-table> |
| | | </div> |
| | | <!--新增修改弹框--> |
| | | <detail-form-dialog v-if="formDia" ref="formDia" :qualityMonitorId="qualityMonitorId" @closeDia="closeDia"></detail-form-dialog> |
| | | <detail-form-dialog v-if="formDia" ref="formDia" :qualityMonitorId="qualityMonitorId" |
| | | @closeDia="closeDia"></detail-form-dialog> |
| | | <!--实施流程弹框--> |
| | | <carry-out-dialog v-if="carryOutDia" ref="carryOutDia" :qualityMonitorId="qualityMonitorId" @closeDia="closeCarryOutDia"></carry-out-dialog> |
| | | <carry-out-dialog v-if="carryOutDia" ref="carryOutDia" :qualityMonitorId="qualityMonitorId" |
| | | @closeDia="closeCarryOutDia"></carry-out-dialog> |
| | | <!--评价流程弹框--> |
| | | <evaluate-dialog v-if="evaluateDialog" ref="evaluateDialog" @closeEvaDia="closeEvaDia"></evaluate-dialog> |
| | | <el-dialog :visible.sync="examineDialog" title="审核" width="30%" @close="closeExamineDia"> |
| | |
| | | </span> |
| | | <span style="margin-top: 10px;display: inline-block"> |
| | | 批准人: |
| | | <el-select v-model="examineInfo.ratifyUserId" clearable |
| | | filterable size="small" style="width: 70%;"> |
| | | <el-select v-model="examineInfo.ratifyUserId" clearable filterable size="small" style="width: 70%;"> |
| | | <el-option v-for="item in responsibleOptions" :key="item.id" :label="item.name" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | |
| | | </span> |
| | | </el-dialog> |
| | | <!--预览报告--> |
| | | <el-dialog |
| | | :visible.sync="lookDialogVisible" |
| | | fullscreen |
| | | title="查看附件" top="5vh" width="800px"> |
| | | <el-dialog :visible.sync="lookDialogVisible" fullscreen title="查看附件" top="5vh" width="800px"> |
| | | <filePreview v-if="lookDialogVisible" :currentFile="{}" |
| | | :fileUrl="javaApi+'/word/' + currentInfo.finishReportUrl" style="height: 70vh;overflow-y: auto;"/> |
| | | :fileUrl="javaApi + '/word/' + currentInfo.finishReportUrl" style="height: 70vh;overflow-y: auto;" /> |
| | | <div> |
| | | 批准状态: |
| | | <el-tag v-if="this.ratifyStatus === 1" type="success">批准</el-tag> |
| | | <el-tag v-if="this.ratifyStatus === 0" type="danger">不批准</el-tag> |
| | | <el-tag v-if="this.ratifyStatus === 1" type="success">批准</el-tag> |
| | | <el-tag v-if="this.ratifyStatus === 0" type="danger">不批准</el-tag> |
| | | </div> |
| | | <div> |
| | | 批准意见: |
| | |
| | | </el-dialog> |
| | | <el-dialog :visible.sync="downloadDialog" title="导出" width="600px"> |
| | | <span> |
| | | <el-button plain type="primary" :disabled="!download.qualityMonitorDetailsId" @click="controlDown">实施计划导出</el-button> |
| | | <el-button plain type="primary" :disabled="!download.qualityMonitorDetailsId" @click="processingDown">评价导出</el-button> |
| | | <el-button plain type="primary" :disabled="!download.qualityMonitorDetailsId" |
| | | @click="controlDown">实施计划导出</el-button> |
| | | <el-button plain type="primary" :disabled="!download.qualityMonitorDetailsId" |
| | | @click="processingDown">评价导出</el-button> |
| | | </span> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="downloadDialog = false">取 消</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <!--导入计划--> |
| | | <el-dialog :visible.sync="uploadDia" title="数据导入" width="500px" :close-on-click-modal="false" :close-on-press-escape="false"> |
| | | <el-dialog :visible.sync="uploadDia" title="数据导入" width="500px" :close-on-click-modal="false" |
| | | :close-on-press-escape="false"> |
| | | <div style="display: flex; align-items: center;"> |
| | | <span style="width: 60px">年份:</span> |
| | | <el-date-picker |
| | | v-model="planYear" |
| | | type="year" |
| | | value-format="yyyy" |
| | | clearable |
| | | size="small" |
| | | format="yyyy" |
| | | <el-date-picker v-model="planYear" type="year" value-format="yyyy" clearable size="small" format="yyyy" |
| | | placeholder="选择年"> |
| | | </el-date-picker> |
| | | </div> |
| | | <div style="display: flex;align-items: center;margin: 10px 0"> |
| | | <div style="width: 60px">审核人:</div> |
| | | <el-select v-model="examineUserId" clearable |
| | | filterable size="small" style="width: 50%;"> |
| | | <el-select v-model="examineUserId" clearable filterable size="small" style="width: 50%;"> |
| | | <el-option v-for="item in responsibleOptions" :key="item.id" :label="item.name" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | </div> |
| | | <div style="margin: 0 auto;"> |
| | | <el-upload ref="upload" :action="action" :auto-upload="false" :file-list="fileList" |
| | | :headers="uploadHeader" :limit="1" |
| | | accept='.jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar' |
| | | :on-change="beforeUpload" :on-error="onError" :on-success="handleSuccessUp" drag |
| | | :data="{planYear: planYear, examineUserId: examineUserId}" |
| | | name="file"> |
| | | <el-upload ref="upload" :action="action" :auto-upload="false" :file-list="fileList" :headers="uploadHeader" |
| | | :limit="1" accept='.jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar' |
| | | :on-change="beforeUpload" :on-error="onError" :on-success="handleSuccessUp" drag |
| | | :data="{ planYear: planYear, examineUserId: examineUserId }" name="file"> |
| | | <i class="el-icon-upload"></i> |
| | | <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div> |
| | | </el-upload> |
| | |
| | | <el-input v-model="ratifyRemark" :disabled="this.ratifyStatus === 1" type="textarea"></el-input> |
| | | </div> |
| | | <div style="margin: 0 auto;"> |
| | | <el-upload ref="upload1" :action="action1" :auto-upload="false" :data="{qualityMonitorDetailsId: qualityMonitorDetailsId}" :file-list="fileList1" :headers="uploadHeader" |
| | | :limit="1" |
| | | :on-change="beforeUpload1" :on-error="onError1" :on-success="onSuccess1" accept='.doc,.docx' |
| | | drag |
| | | name="file"> |
| | | <el-upload ref="upload1" :action="action1" :auto-upload="false" |
| | | :data="{ qualityMonitorDetailsId: qualityMonitorDetailsId }" :file-list="fileList1" :headers="uploadHeader" |
| | | :limit="1" :on-change="beforeUpload1" :on-error="onError1" :on-success="onSuccess1" accept='.doc,.docx' drag |
| | | name="file"> |
| | | <i class="el-icon-upload"></i> |
| | | <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div> |
| | | </el-upload> |
| | |
| | | pageQualityMonitor, pageQualityMonitorDetail, ratifyFinishReport, |
| | | ratifyQualityMonitor |
| | | } from "@/api/cnas/process/ensureResults/qualityMonitor"; |
| | | import {selectUserCondition} from "@/api/performance/class"; |
| | | import {mapGetters} from "vuex"; |
| | | import { selectUserCondition } from "@/api/performance/class"; |
| | | import { mapGetters } from "vuex"; |
| | | |
| | | export default { |
| | | name: 'a7-Ensure-results-validity', |
| | | // import 引入的组件需要注入到对象中才能使用 |
| | | components: {limsTable, filePreview, EvaluateDialog, CarryOutDialog, DetailFormDialog }, |
| | | components: { limsTable, filePreview, EvaluateDialog, CarryOutDialog, DetailFormDialog }, |
| | | data() { |
| | | // 这里存放数据 |
| | | return { |
| | |
| | | label: '审核日期', |
| | | prop: 'examineTime', |
| | | minWidth: '160' |
| | | },{ |
| | | }, { |
| | | dataType: 'tag', |
| | | label: '批准状态', |
| | | prop: 'ratifyStatus', |
| | |
| | | return null; |
| | | } |
| | | } |
| | | },{ |
| | | }, { |
| | | label: '批准内容', |
| | | prop: 'ratifyRemark', |
| | | minWidth: '100' |
| | | },{ |
| | | }, { |
| | | label: '批准人', |
| | | prop: 'ratifyName', |
| | | minWidth: '100' |
| | | },{ |
| | | }, { |
| | | label: '批准日期', |
| | | prop: 'ratifyTime', |
| | | minWidth: '160' |
| | |
| | | this.delPlan(row) |
| | | }, |
| | | disabled: (row) => { |
| | | if(row.examineStatus === 1) { |
| | | if (row.examineStatus === 1) { |
| | | return true; |
| | | } else { |
| | | return false; |
| | |
| | | label: '预算(元)', |
| | | prop: 'budget', |
| | | minWidth: '150px' |
| | | },{ |
| | | }, { |
| | | label: '组织人员', |
| | | prop: 'organization', |
| | | minWidth: '150px' |
| | | },{ |
| | | }, { |
| | | label: '监控方式', |
| | | prop: 'monitorWay', |
| | | minWidth: '150px' |
| | |
| | | // 方法集合 |
| | | methods: { |
| | | // 查询年度计划表 |
| | | getYearPlanList () { |
| | | getYearPlanList() { |
| | | const entity = { |
| | | monitorName: this.yearForm.monitorName, |
| | | } |
| | |
| | | this.yearLoading = false |
| | | }) |
| | | }, |
| | | clearYear () { |
| | | clearYear() { |
| | | this.yearForm.monitorName = '' |
| | | this.getYearPlanList() |
| | | }, |
| | |
| | | this.yearDetailPage.size = limit; |
| | | this.getYearPlanList(); |
| | | }, |
| | | leadInto () { |
| | | leadInto() { |
| | | this.uploadDia = true |
| | | this.getUserList() |
| | | }, |
| | |
| | | this.$message.error(response.msg) |
| | | } |
| | | }, |
| | | submitUpload () { |
| | | submitUpload() { |
| | | if (!this.planYear) { |
| | | this.$message.warning('请选择年份') |
| | | return; |
| | |
| | | }, |
| | | // end |
| | | // 审核 |
| | | examinePlan (row) { |
| | | examinePlan(row) { |
| | | this.examineDialog = true |
| | | this.examineInfo = row |
| | | this.getUserList() |
| | | }, |
| | | handleReview (examineStatus) { |
| | | handleReview(examineStatus) { |
| | | // 审核状态 , 0 不通过, 1通过 |
| | | this.examineInfo.examineStatus = examineStatus |
| | | this.examineLoading = true |
| | |
| | | this.examineLoading = false |
| | | }) |
| | | }, |
| | | closeExamineDia () { |
| | | closeExamineDia() { |
| | | this.examineDialog = false |
| | | this.examineInfo.examineRemark = '' |
| | | this.getYearPlanList() |
| | | }, |
| | | // 批准 |
| | | approvalPlan (row) { |
| | | approvalPlan(row) { |
| | | this.ratifyDialog = true |
| | | this.ratifyInfo = row |
| | | }, |
| | | handleRatify (ratifyStatus) { |
| | | handleRatify(ratifyStatus) { |
| | | // 批准状态 , 0 不通过, 1通过 |
| | | this.ratifyInfo.ratifyStatus = ratifyStatus |
| | | this.ratifyLoading = true |
| | |
| | | this.ratifyLoading = false |
| | | }) |
| | | }, |
| | | closeRatifyDia () { |
| | | closeRatifyDia() { |
| | | this.ratifyDialog = false |
| | | this.ratifyInfo.ratifyRemark = '' |
| | | this.getYearPlanList() |
| | | }, |
| | | // 批准报告 |
| | | handleApproval (status) { |
| | | handleApproval(status) { |
| | | const personTrainingUpdateDto = { |
| | | qualityMonitorDetailsId: this.currentInfo.qualityMonitorDetailsId, |
| | | ratifyRemark: this.ratifyRemark, |
| | |
| | | }) |
| | | }, |
| | | // 导出 |
| | | handleDown (row) { |
| | | exportQualityMonitorDetail({qualityMonitorId: row.qualityMonitorId}).then(res => { |
| | | handleDown(row) { |
| | | exportQualityMonitorDetail({ qualityMonitorId: row.qualityMonitorId }).then(res => { |
| | | this.outLoading = false |
| | | const blob = new Blob([res],{ type: 'application/msword' }); |
| | | const blob = new Blob([res], { type: 'application/msword' }); |
| | | this.$download.saveAs(blob, row.monitorName + '.docx') |
| | | this.$message.success('导出成功') |
| | | }) |
| | | }, |
| | | // 删除进度计划表 |
| | | delPlan (row) { |
| | | delPlan(row) { |
| | | this.$confirm('此操作将永久删除该数据, 是否继续?', '提示', { |
| | | confirmButtonText: '确定', |
| | | cancelButtonText: '取消', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | this.yearLoading = true |
| | | delQualitySupervise({qualityMonitorId: row.qualityMonitorId}).then(res => { |
| | | delQualitySupervise({ qualityMonitorId: row.qualityMonitorId }).then(res => { |
| | | this.yearLoading = false |
| | | this.$message.success('删除成功') |
| | | this.getYearPlanList() |
| | |
| | | this.getYearDetailPlanList() |
| | | }, |
| | | // 获取年度明细表 |
| | | getYearDetailPlanList () { |
| | | getYearDetailPlanList() { |
| | | const entity = { |
| | | qualityMonitorId: this.qualityMonitorId, |
| | | monitorPurpose: this.yearDetailForm.monitorPurpose, |
| | |
| | | }) |
| | | }, |
| | | // 重置明细表 |
| | | clearDetail () { |
| | | clearDetail() { |
| | | this.yearDetailForm = { |
| | | monitorPurpose: '', |
| | | monitorProject: '' |
| | |
| | | this.getYearDetailPlanList() |
| | | }, |
| | | // 明细表实施 |
| | | carryOut (row) { |
| | | carryOut(row) { |
| | | this.carryOutDia = true |
| | | this.$nextTick(() => { |
| | | this.$refs.carryOutDia.openDia(row) |
| | | }) |
| | | }, |
| | | closeCarryOutDia () { |
| | | closeCarryOutDia() { |
| | | this.carryOutDia = false |
| | | this.getYearDetailPlanList() |
| | | }, |
| | | // 打开完成报告弹框 |
| | | record (row) { |
| | | record(row) { |
| | | this.qualityMonitorDetailsId = row.qualityMonitorDetailsId |
| | | this.ratifyRemark = row.ratifyRemark |
| | | if (row.finishReportUrl) { |
| | |
| | | }, |
| | | // end |
| | | // 打开评价弹框 |
| | | evaluate (row) { |
| | | evaluate(row) { |
| | | this.evaluateDialog = true |
| | | this.$nextTick(() => { |
| | | this.$refs.evaluateDialog.openDia(row) |
| | | }) |
| | | }, |
| | | closeEvaDia () { |
| | | closeEvaDia() { |
| | | this.evaluateDialog = false |
| | | this.getYearDetailPlanList() |
| | | }, |
| | | // 打开导出弹框 |
| | | downLoadPost (row) { |
| | | downLoadPost(row) { |
| | | this.downloadDialog = true |
| | | this.download = row |
| | | }, |
| | | // 打开年度明细新增、修改弹框 |
| | | showDialog (type, row) { |
| | | showDialog(type, row) { |
| | | this.formDia = true |
| | | this.$nextTick(() => { |
| | | this.$refs.formDia.openDia(type, row) |
| | | }) |
| | | }, |
| | | closeDia () { |
| | | closeDia() { |
| | | this.formDia = false |
| | | this.getYearDetailPlanList() |
| | | }, |
| | | // 控制单导出 |
| | | controlDown() { |
| | | exportQualityMonitorRatify({qualityMonitorDetailsId: this.download.qualityMonitorDetailsId}).then(res => { |
| | | exportQualityMonitorRatify({ qualityMonitorDetailsId: this.download.qualityMonitorDetailsId }).then(res => { |
| | | this.outLoading = false |
| | | const blob = new Blob([res], { type: 'application/msword' }); |
| | | this.$download.saveAs(blob, '质量监控实施计划.docx') |
| | | this.$message.success('导出成功') |
| | | }) |
| | | }, |
| | | // 处理单导出 |
| | | processingDown() { |
| | | exportQualityMonitorEvaluate({qualityMonitorDetailsId: this.download.qualityMonitorDetailsId}).then(res => { |
| | | exportQualityMonitorEvaluate({ qualityMonitorDetailsId: this.download.qualityMonitorDetailsId }).then(res => { |
| | | this.outLoading = false |
| | | const blob = new Blob([res], { type: 'application/msword' }); |
| | | this.$download.saveAs(blob, '质量监控评价.docx') |
| | | this.$message.success('导出成功') |
| | | }) |
| | | }, |
| | | delYearPlanDetail (row) { |
| | | delYearPlanDetail(row) { |
| | | this.$confirm('此操作将永久删除该数据, 是否继续?', '提示', { |
| | | confirmButtonText: '确定', |
| | | cancelButtonText: '取消', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | this.yearDetailLoading = true |
| | | delQualityMonitorDetail({qualityMonitorDetailsId: row.qualityMonitorDetailsId}).then(res => { |
| | | delQualityMonitorDetail({ qualityMonitorDetailsId: row.qualityMonitorDetailsId }).then(res => { |
| | | this.yearDetailLoading = false |
| | | this.$message.success('删除成功') |
| | | this.getYearDetailPlanList() |
| | |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped> |
| | | |
| | | </style> |
| | | <style scoped></style> |
| | |
| | | <div style="display: flex;justify-content: space-between;"> |
| | | <el-form :model="yearForm" ref="yearForm" size="small" :inline="true"> |
| | | <el-form-item label="计划名称" prop="superviseName"> |
| | | <el-input size="small" placeholder="请输入" clearable |
| | | v-model="yearForm.superviseName" |
| | | @keyup.enter.native="getYearPlanList"></el-input> |
| | | <el-input size="small" placeholder="请输入" clearable v-model="yearForm.superviseName" |
| | | @keyup.enter.native="getYearPlanList"></el-input> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button icon="el-icon-refresh" size="mini" @click="clearYear">重 置</el-button> |
| | |
| | | </div> |
| | | </div> |
| | | <lims-table :tableData="yearTableData" :column="yearColumnData" :page="yearPage" :tableLoading="yearLoading" |
| | | height="40vh" @pagination="pagination" :rowClick="rowClick" |
| | | key="yearTableData"></lims-table> |
| | | height="40vh" @pagination="pagination" :rowClick="rowClick" key="yearTableData"></lims-table> |
| | | </div> |
| | | <div style="margin-top: 20px"> |
| | | <div style="display: flex;justify-content: space-between;"> |
| | |
| | | <el-button size="small" type="primary" @click="showDialog('add')">新增</el-button> |
| | | </div> |
| | | </div> |
| | | <lims-table :tableData="yearDetailTableData" :column="yearDetailColumnData" :page="yearDetailPage" :tableLoading="yearDetailLoading" |
| | | height="40vh" @pagination="pagination1" |
| | | key="yearDetailTableData"></lims-table> |
| | | <lims-table :tableData="yearDetailTableData" :column="yearDetailColumnData" :page="yearDetailPage" |
| | | :tableLoading="yearDetailLoading" height="40vh" @pagination="pagination1" |
| | | key="yearDetailTableData"></lims-table> |
| | | </div> |
| | | <!--新增修改弹框--> |
| | | <detail-form-dialog v-if="formDia" ref="formDia" :superviseId="superviseId" @closeDia="closeDia"></detail-form-dialog> |
| | | <detail-form-dialog v-if="formDia" ref="formDia" :superviseId="superviseId" |
| | | @closeDia="closeDia"></detail-form-dialog> |
| | | <!--记录流程弹框--> |
| | | <records-dialog v-if="recordsDia" ref="recordsDia" :superviseId="superviseId" @closeRecordsDia="closeRecordsDia"></records-dialog> |
| | | <records-dialog v-if="recordsDia" ref="recordsDia" :superviseId="superviseId" |
| | | @closeRecordsDia="closeRecordsDia"></records-dialog> |
| | | <!--不符合处理流程弹框--> |
| | | <processing-sheet v-if="processingDia" ref="processingDia" :superviseId="superviseId" @closeProcessingDia="closeProcessingDia"></processing-sheet> |
| | | <processing-sheet v-if="processingDia" ref="processingDia" :superviseId="superviseId" |
| | | @closeProcessingDia="closeProcessingDia"></processing-sheet> |
| | | <!--纠正处理流程弹框--> |
| | | <rectify-dialog-new v-if="rectifyDia" ref="rectifyDia" :superviseId="superviseId" @closeProcessingDia="closeRectifyDia"></rectify-dialog-new> |
| | | <rectify-dialog-new v-if="rectifyDia" ref="rectifyDia" :superviseId="superviseId" |
| | | @closeProcessingDia="closeRectifyDia"></rectify-dialog-new> |
| | | <el-dialog :visible.sync="ratifyDialog" title="批准" width="30%" @close="closeRatifyDia"> |
| | | <span> |
| | | 批准备注: |
| | |
| | | <el-button :loading="ratifyLoading" type="primary" @click="handleRatify(1)">批 准</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <el-dialog |
| | | :visible.sync="downloadDialog" |
| | | title="导出" |
| | | width="600px"> |
| | | <span> |
| | | <el-button plain type="primary" @click="controlDown">记录单导出</el-button> |
| | | <el-button plain type="primary" @click="processingDown">处理单导出</el-button> |
| | | <el-button plain type="primary" @click="supervisoryDown">纠正单导出</el-button> |
| | | </span> |
| | | <el-dialog :visible.sync="downloadDialog" title="导出" width="600px"> |
| | | <span> |
| | | <el-button plain type="primary" @click="controlDown">记录单导出</el-button> |
| | | <el-button plain type="primary" @click="processingDown">处理单导出</el-button> |
| | | <el-button plain type="primary" @click="supervisoryDown">纠正单导出</el-button> |
| | | </span> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="downloadDialog = false">取 消</el-button> |
| | | </span> |
| | | <el-button @click="downloadDialog = false">取 消</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <!--导入计划--> |
| | | <el-dialog :visible.sync="uploadDia" title="数据导入" width="500px" |
| | | :close-on-click-modal="false" :close-on-press-escape="false"> |
| | | <el-dialog :visible.sync="uploadDia" title="数据导入" width="500px" :close-on-click-modal="false" |
| | | :close-on-press-escape="false"> |
| | | <div style="display: flex; align-items: center;"> |
| | | <span style="width: 80px">年份:</span> |
| | | <el-date-picker |
| | | v-model="superviseYear" |
| | | type="year" |
| | | value-format="yyyy" |
| | | clearable |
| | | size="small" |
| | | format="yyyy" |
| | | <el-date-picker v-model="superviseYear" type="year" value-format="yyyy" clearable size="small" format="yyyy" |
| | | placeholder="选择年"> |
| | | </el-date-picker> |
| | | <span style="width: 110px">监督员:</span> |
| | | <el-select v-model="recordUserIds" placeholder="请选择" size="small" |
| | | @change="splitList" |
| | | :multiple-limit="2" filterable multiple style="width: 100%"> |
| | | <span style="width: 110px">监督员:</span> |
| | | <el-select v-model="recordUserIds" placeholder="请选择" size="small" @change="splitList" :multiple-limit="2" |
| | | filterable multiple style="width: 100%"> |
| | | <el-option v-for="item in userList" :key="item.id" :label="item.name" :value="item.id"></el-option> |
| | | </el-select> |
| | | </div> |
| | | <div style="display: flex;align-items: center;margin: 10px 0"> |
| | | <div style="width: 60px">批准人:</div> |
| | | <el-select v-model="ratifyUserId" clearable |
| | | filterable size="small" style="width: 50%;"> |
| | | <el-select v-model="ratifyUserId" clearable filterable size="small" style="width: 50%;"> |
| | | <el-option v-for="item in userList" :key="item.id" :label="item.name" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | </div> |
| | | <div style="margin: 0 auto;"> |
| | | <el-upload ref="upload1" :action="action" :auto-upload="false" :file-list="fileList" :headers="uploadHeader" :limit="1" |
| | | accept='.jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar' |
| | | :on-change="beforeUpload" :on-error="onError" :on-success="handleSuccessUp" drag |
| | | :data="{recordUserIds: recordUserIds1, superviseYear: superviseYear, ratifyUserId: ratifyUserId}" |
| | | name="file"> |
| | | <el-upload ref="upload1" :action="action" :auto-upload="false" :file-list="fileList" :headers="uploadHeader" |
| | | :limit="1" accept='.jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar' |
| | | :on-change="beforeUpload" :on-error="onError" :on-success="handleSuccessUp" drag |
| | | :data="{ recordUserIds: recordUserIds1, superviseYear: superviseYear, ratifyUserId: ratifyUserId }" |
| | | name="file"> |
| | | <i class="el-icon-upload"></i> |
| | | <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div> |
| | | </el-upload> |
| | |
| | | ratifyQualitySupervise, superviseDetailAccordingExport, |
| | | exportSuperviseDetaillCorrect |
| | | } from "@/api/cnas/process/ensureResults/qualitySupervise"; |
| | | import {selectUserCondition} from "@/api/business/inspectionTask"; |
| | | import {mapGetters} from "vuex"; |
| | | import { selectUserCondition } from "@/api/business/inspectionTask"; |
| | | import { mapGetters } from "vuex"; |
| | | |
| | | export default { |
| | | name: 'a7-quality-control-plan', |
| | | // import 引入的组件需要注入到对象中才能使用 |
| | | components: {limsTable, RectifyDialogNew, ProcessingSheet, RecordsDialog, DetailFormDialog}, |
| | | components: { limsTable, RectifyDialogNew, ProcessingSheet, RecordsDialog, DetailFormDialog }, |
| | | data() { |
| | | // 这里存放数据 |
| | | return { |
| | |
| | | return null; |
| | | } |
| | | } |
| | | },{ |
| | | }, { |
| | | label: '批准内容', |
| | | prop: 'ratifyRemark', |
| | | minWidth: '100' |
| | | },{ |
| | | }, { |
| | | label: '批准人', |
| | | prop: 'ratifyUserName', |
| | | minWidth: '100' |
| | | },{ |
| | | }, { |
| | | label: '批准日期', |
| | | prop: 'ratifyTime', |
| | | minWidth: '160' |
| | |
| | | label: '监督原因', |
| | | prop: 'superviseReason', |
| | | minWidth: '150px' |
| | | },{ |
| | | }, { |
| | | label: '备注', |
| | | prop: 'remark', |
| | | minWidth: '150px' |
| | | },{ |
| | | }, { |
| | | dataType: 'action', |
| | | width: '260', |
| | | label: '操作', |
| | |
| | | // 方法集合 |
| | | methods: { |
| | | // 查询年度计划表 |
| | | getYearPlanList () { |
| | | getYearPlanList() { |
| | | const entity = { |
| | | superviseName: this.yearForm.superviseName, |
| | | } |
| | |
| | | this.yearLoading = false |
| | | }) |
| | | }, |
| | | clearYear () { |
| | | clearYear() { |
| | | this.yearForm.superviseName = '' |
| | | this.getYearPlanList() |
| | | }, |
| | |
| | | }, 1000) |
| | | } |
| | | }, |
| | | splitList (val) { |
| | | splitList(val) { |
| | | const string = this.HaveJson(val) |
| | | this.recordUserIds1 = string.join(','); |
| | | console.log(this.recordUserIds1) |
| | |
| | | this.$refs.upload1.submit(); |
| | | }, |
| | | // 关闭导入弹框 |
| | | closeUploadDia () { |
| | | closeUploadDia() { |
| | | this.uploadDia = false; |
| | | this.recordUserIds = [] |
| | | this.ratifyUserId = '' |
| | |
| | | this.getYearPlanList() |
| | | }, |
| | | // 打开报告弹框 |
| | | record (row) { |
| | | record(row) { |
| | | this.uploadDia = true |
| | | this.getUserList() |
| | | }, |
| | | getUserList(){ |
| | | getUserList() { |
| | | selectUserCondition({ type: 0 }).then((res) => { |
| | | this.userList = res.data; |
| | | }) |
| | | }, |
| | | // 批准 |
| | | approvalPlan (row) { |
| | | approvalPlan(row) { |
| | | this.ratifyDialog = true |
| | | this.ratifyInfo = row |
| | | }, |
| | | handleRatify (ratifyStatus) { |
| | | handleRatify(ratifyStatus) { |
| | | // 批准状态 , 0 不通过, 1通过 |
| | | this.ratifyInfo.ratifyStatus = ratifyStatus |
| | | this.ratifyLoading = true |
| | |
| | | this.ratifyLoading = false |
| | | }) |
| | | }, |
| | | closeRatifyDia () { |
| | | closeRatifyDia() { |
| | | this.ratifyDialog = false |
| | | this.ratifyInfo.ratifyRemark = '' |
| | | this.getYearPlanList() |
| | | }, |
| | | // 导出 |
| | | handleDown (row) { |
| | | exportQualitySupervise({superviseId: row.superviseId}).then(res => { |
| | | handleDown(row) { |
| | | exportQualitySupervise({ superviseId: row.superviseId }).then(res => { |
| | | try { |
| | | this.outLoading = false |
| | | const blob = new Blob([res],{ type: 'application/msword' }); |
| | | const blob = new Blob([res], { type: 'application/msword' }); |
| | | this.$download.saveAs(blob, row.superviseName + '.docx') |
| | | this.$message.success('导出成功') |
| | | } catch (error) { |
| | | console.error('创建Blob对象时出错:', error); |
| | | } |
| | | }) |
| | | }, |
| | | // 删除进度计划表 |
| | | delPlan (row) { |
| | | delPlan(row) { |
| | | this.$confirm('此操作将永久删除该数据, 是否继续?', '提示', { |
| | | confirmButtonText: '确定', |
| | | cancelButtonText: '取消', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | this.yearLoading = true |
| | | delQualitySupervise({superviseId: row.superviseId}).then(res => { |
| | | delQualitySupervise({ superviseId: row.superviseId }).then(res => { |
| | | this.yearLoading = false |
| | | this.$message.success('删除成功') |
| | | this.getYearPlanList() |
| | |
| | | this.getYearDetailPlanList() |
| | | }, |
| | | // 获取年度明细表 |
| | | getYearDetailPlanList () { |
| | | getYearDetailPlanList() { |
| | | const entity = { |
| | | superviseId: this.superviseId, |
| | | supervisePurpose: this.yearDetailForm.supervisePurpose, |
| | |
| | | }) |
| | | }, |
| | | // 重置明细表 |
| | | clearDetail () { |
| | | clearDetail() { |
| | | this.yearDetailForm = { |
| | | supervisePurpose: '', |
| | | superviseProject: '' |
| | |
| | | this.getYearDetailPlanList() |
| | | }, |
| | | // 打开年度明细新增、修改弹框 |
| | | showDialog (type, row) { |
| | | showDialog(type, row) { |
| | | this.formDia = true |
| | | this.$nextTick(() => { |
| | | this.$refs.formDia.openDia(type, row) |
| | | }) |
| | | }, |
| | | closeDia () { |
| | | closeDia() { |
| | | this.formDia = false |
| | | this.getYearDetailPlanList() |
| | | }, |
| | | // 记录流程 |
| | | records (row) { |
| | | records(row) { |
| | | this.recordsDia = true |
| | | this.$nextTick(() => { |
| | | this.$refs.recordsDia.openDia(row) |
| | | }) |
| | | }, |
| | | closeRecordsDia () { |
| | | closeRecordsDia() { |
| | | this.recordsDia = false |
| | | this.getYearDetailPlanList() |
| | | }, |
| | | // 不符合流程弹框 |
| | | processing (row) { |
| | | processing(row) { |
| | | this.processingDia = true |
| | | this.$nextTick(() => { |
| | | this.$refs.processingDia.openDia(row) |
| | | }) |
| | | }, |
| | | closeProcessingDia () { |
| | | closeProcessingDia() { |
| | | this.processingDia = false |
| | | this.getYearDetailPlanList() |
| | | }, |
| | | // 纠正流程弹框 |
| | | rectify (row) { |
| | | rectify(row) { |
| | | this.rectifyDia = true |
| | | this.$nextTick(() => { |
| | | this.$refs.rectifyDia.openDia(row) |
| | | }) |
| | | }, |
| | | closeRectifyDia () { |
| | | closeRectifyDia() { |
| | | this.rectifyDia = false |
| | | this.getYearDetailPlanList() |
| | | }, |
| | | // 打开导出弹框 |
| | | openDownloadDia (row) { |
| | | openDownloadDia(row) { |
| | | this.downloadDialog = true |
| | | this.download = row |
| | | }, |
| | | // 导出记录 |
| | | controlDown () { |
| | | exportSuperviseDetailRecord({superviseDetailsId: this.download.superviseDetailsId}).then(res => { |
| | | controlDown() { |
| | | exportSuperviseDetailRecord({ superviseDetailsId: this.download.superviseDetailsId }).then(res => { |
| | | const blob = new Blob([res], { type: 'application/msword' }); |
| | | this.$download.saveAs(blob, '记录导出.docx') |
| | | this.$message.success('导出成功') |
| | | }).catch(err => { |
| | | console.log('err---', err); |
| | | }) |
| | | }, |
| | | // 处理单导出 |
| | | processingDown () { |
| | | superviseDetailAccordingExport({superviseDetailsId: this.download.superviseDetailsId}).then(res => { |
| | | processingDown() { |
| | | superviseDetailAccordingExport({ superviseDetailsId: this.download.superviseDetailsId }).then(res => { |
| | | const blob = new Blob([res], { type: 'application/msword' }); |
| | | this.$download.saveAs(blob, '不符合项导出.docx') |
| | | this.$message.success('导出成功') |
| | | }).catch(err => { |
| | | console.log('err---', err); |
| | | }) |
| | | }, |
| | | // 纠正单导出 |
| | | supervisoryDown () { |
| | | exportSuperviseDetaillCorrect({superviseDetailsCorrectId: this.download.superviseDetailsCorrectId}).then(res => { |
| | | supervisoryDown() { |
| | | exportSuperviseDetaillCorrect({ superviseDetailsCorrectId: this.download.superviseDetailsCorrectId }).then(res => { |
| | | const blob = new Blob([res], { type: 'application/msword' }); |
| | | this.$download.saveAs(blob, '监督纠正措施.docx') |
| | | this.$message.success('导出成功') |
| | | }) |
| | | }, |
| | | // 删除年度详情列表 |
| | | delYearPlanDetail (row) { |
| | | delYearPlanDetail(row) { |
| | | this.$confirm('此操作将永久删除该数据, 是否继续?', '提示', { |
| | | confirmButtonText: '确定', |
| | | cancelButtonText: '取消', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | this.yearDetailLoading = true |
| | | delQualitySuperviseDetail({superviseDetailsId: row.superviseDetailsId}).then(res => { |
| | | delQualitySuperviseDetail({ superviseDetailsId: row.superviseDetailsId }).then(res => { |
| | | this.yearDetailLoading = false |
| | | this.$message.success('删除成功') |
| | | this.getYearDetailPlanList() |
| | |
| | | .table-card { |
| | | background-color: #ffffff; |
| | | } |
| | | |
| | | .flex_column { |
| | | display: flex; |
| | | height: 80vh; |
| | |
| | | <div> |
| | | <TableCard :showForm="false" :showTitle="false"> |
| | | <template v-slot:table> |
| | | <limsTable |
| | | :column="tableColumn" |
| | | :height="'calc(100vh - 23em)'" |
| | | :table-data="tableData" |
| | | :table-loading="tableLoading" |
| | | style="padding: 0 15px;margin-bottom: 16px" |
| | | :page="page" |
| | | <limsTable :column="tableColumn" :height="'calc(100vh - 23em)'" :table-data="tableData" |
| | | :table-loading="tableLoading" style="padding: 0 15px;margin-bottom: 16px" :page="page" |
| | | @pagination="pagination"> |
| | | </limsTable> |
| | | </template> |
| | |
| | | } |
| | | const page = this.page |
| | | this.tableLoading = true |
| | | pagesMethodVerify({...page,...entity}).then(res => { |
| | | pagesMethodVerify({ ...page, ...entity }).then(res => { |
| | | this.tableLoading = false |
| | | if (res.code === 200){ |
| | | if (res.code === 200) { |
| | | this.tableData = res.data.records |
| | | this.page.total = res.data.total |
| | | } |
| | |
| | | }) |
| | | }, |
| | | // 删除 |
| | | deleteRow (row) { |
| | | deleteRow(row) { |
| | | this.$confirm('此操作将永久删除该数据, 是否继续?', '提示', { |
| | | confirmButtonText: '确定', |
| | | cancelButtonText: '取消', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | this.tableLoading = true |
| | | delMethodVerify({methodVerifyId: row.methodVerifyId}).then(res => { |
| | | delMethodVerify({ methodVerifyId: row.methodVerifyId }).then(res => { |
| | | this.tableLoading = false |
| | | if (res.code === 200){ |
| | | if (res.code === 200) { |
| | | this.$message.success('删除成功') |
| | | this.searchList() |
| | | } |
| | |
| | | this.searchForm.methodName = ''; |
| | | this.searchList() |
| | | }, |
| | | openFormDia (type, row) { |
| | | openFormDia(type, row) { |
| | | this.formDIa = true |
| | | this.operationType = type |
| | | this.$nextTick(() => { |
| | |
| | | }, |
| | | // 导出 |
| | | downLoadPost(row) { |
| | | exportMethodVerify({methodVerifyId:row.methodVerifyId}).then(res => { |
| | | exportMethodVerify({ methodVerifyId: row.methodVerifyId }).then(res => { |
| | | this.outLoading = false |
| | | const blob = new Blob([res],{ type: 'application/msword' }); |
| | | const blob = new Blob([res], { type: 'application/msword' }); |
| | | this.$download.saveAs(blob, '标准(方法)确认记录.docx') |
| | | this.$message.success('导出成功') |
| | | }) |
| | | }, |
| | | // 关闭弹框 |
| | | closeDia () { |
| | | closeDia() { |
| | | this.formDIa = false |
| | | this.searchList() |
| | | }, |
| | |
| | | <div> |
| | | <TableCard :showForm="false" :showTitle="false"> |
| | | <template v-slot:table> |
| | | <lims-table :tableData="tableData" :column="tableColumn" :height="'calc(100vh - 250px)'" @pagination="pagination" |
| | | :page="page" :tableLoading="tableLoading"></lims-table> |
| | | <lims-table :tableData="tableData" :column="tableColumn" :height="'calc(100vh - 250px)'" |
| | | @pagination="pagination" :page="page" :tableLoading="tableLoading"></lims-table> |
| | | </template> |
| | | </TableCard> |
| | | </div> |
| | |
| | | operationType: this.searchForm.operationType, |
| | | } |
| | | this.tableLoading = true |
| | | pagesMethodVerify({... this.page,...entity}).then(res => { |
| | | pagesMethodVerify({ ... this.page, ...entity }).then(res => { |
| | | this.tableLoading = false |
| | | if (res.code === 200){ |
| | | if (res.code === 200) { |
| | | this.tableData = res.data.records |
| | | this.page.total = res.data.total |
| | | } |
| | |
| | | }) |
| | | }, |
| | | // 删除 |
| | | deleteRow (row) { |
| | | deleteRow(row) { |
| | | this.$confirm('此操作将永久删除该数据, 是否继续?', '提示', { |
| | | confirmButtonText: '确定', |
| | | cancelButtonText: '取消', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | this.tableLoading = true |
| | | delMethodVerify({methodVerifyId:row.methodVerifyId}).then(res => { |
| | | delMethodVerify({ methodVerifyId: row.methodVerifyId }).then(res => { |
| | | this.tableLoading = false |
| | | if (res.code === 200){ |
| | | if (res.code === 200) { |
| | | this.$message.success('删除成功') |
| | | this.searchList() |
| | | } |
| | |
| | | this.searchForm.methodName = ''; |
| | | this.searchList() |
| | | }, |
| | | openFormDia (type, row) { |
| | | openFormDia(type, row) { |
| | | this.formDIa = true |
| | | this.operationType = type |
| | | this.$nextTick(() => { |
| | |
| | | }) |
| | | }, |
| | | // 关闭弹框 |
| | | closeDia () { |
| | | closeDia() { |
| | | this.formDIa = false |
| | | this.searchList() |
| | | }, |
| | | // 导出 |
| | | downLoadPost(row) { |
| | | this.outLoading = true |
| | | exportMethodVerify({methodVerifyId:row.methodVerifyId}).then(res => { |
| | | exportMethodVerify({ methodVerifyId: row.methodVerifyId }).then(res => { |
| | | this.outLoading = false |
| | | const blob = new Blob([res],{ type: 'application/msword' }); |
| | | const blob = new Blob([res], { type: 'application/msword' }); |
| | | this.$download.saveAs(blob, '标准(方法)确认记录.docx') |
| | | this.$message.success('导出成功') |
| | | }) |
| | | }, |
| | | // 分页切换 |
| | |
| | | </div> |
| | | <div> |
| | | <el-button size="medium" type="primary" @click="openApprovalDialog1">建 档</el-button> |
| | | <el-upload ref='upload' :action="action" |
| | | :before-upload="beforeUpload" :headers="headers" :on-error="onError" |
| | | :on-success="handleSuccessUp" :show-file-list="false" accept='.jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar' |
| | | style="display: inline-block; margin-left: 10px;"> |
| | | <el-button :loading="upLoading" size="medium" type="primary">导入</el-button> |
| | | <el-upload ref='upload' :action="action" :before-upload="beforeUpload" :headers="headers" :on-error="onError" |
| | | :on-success="handleSuccessUp" :show-file-list="false" |
| | | accept='.jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar' |
| | | style="display: inline-block; margin-left: 10px;"> |
| | | <el-button :loading="upLoading" size="medium" type="primary">导入</el-button> |
| | | </el-upload> |
| | | <el-button size="medium" style="margin-left: 10px;" type="primary" @click="openFormDia">新 增</el-button> |
| | | </div> |
| | |
| | | <div v-if="tabIndex === '0'"> |
| | | <TableCard :showForm="false" :showTitle="false"> |
| | | <template v-slot:table> |
| | | <lims-table |
| | | :column="tableColumn" |
| | | :height="'calc(100vh - 26em)'" |
| | | :table-data="tableData" |
| | | :table-loading="tableLoading" |
| | | :page="page" |
| | | @pagination="pagination"> |
| | | <lims-table :column="tableColumn" :height="'calc(100vh - 26em)'" :table-data="tableData" |
| | | :table-loading="tableLoading" :page="page" @pagination="pagination"> |
| | | </lims-table> |
| | | </template> |
| | | </TableCard> |
| | |
| | | <div v-if="tabIndex === '1'"> |
| | | <TableCard :showForm="false" :showTitle="false"> |
| | | <template v-slot:table> |
| | | <lims-table |
| | | :column="oldTableColumn" |
| | | :height="'calc(100vh - 20em)'" |
| | | :table-data="oldTableData" |
| | | :table-loading="oldTableLoading" |
| | | :page="oldPage" |
| | | @pagination="oldPagination"> |
| | | <lims-table :column="oldTableColumn" :height="'calc(100vh - 20em)'" :table-data="oldTableData" |
| | | :table-loading="oldTableLoading" :page="oldPage" @pagination="oldPagination"> |
| | | </lims-table> |
| | | </template> |
| | | </TableCard> |
| | |
| | | <el-dialog :visible.sync="viewRocordDia" title="详情" width="80%" @close="approvalDialog = false"> |
| | | <TableCard :showForm="false" :showTitle="false"> |
| | | <template v-slot:table> |
| | | <limsTable |
| | | :column="tableColumn1" |
| | | :height="'calc(100vh - 26em)'" |
| | | :table-data="tableData1" |
| | | :table-loading="tableLoading1" |
| | | style="padding: 0 15px;margin-bottom: 16px" |
| | | :page="page1" |
| | | <limsTable :column="tableColumn1" :height="'calc(100vh - 26em)'" :table-data="tableData1" |
| | | :table-loading="tableLoading1" style="padding: 0 15px;margin-bottom: 16px" :page="page1" |
| | | @pagination="pagination1"> |
| | | </limsTable> |
| | | </template> |
| | |
| | | standardNo: '', |
| | | }, |
| | | options: [ |
| | | {label: '上半年', value: '1'}, |
| | | {label: '下半年', value: '2'}, |
| | | { label: '上半年', value: '1' }, |
| | | { label: '下半年', value: '2' }, |
| | | ], |
| | | tableColumn: [ |
| | | { |
| | |
| | | tabIndex: '0', |
| | | formDialog: false, |
| | | editFormDialog: false, |
| | | upLoading:false, |
| | | outLoading:false, |
| | | upLoading: false, |
| | | outLoading: false, |
| | | ratifyInfo: { |
| | | writeUserId: '', |
| | | ratifyUserId: '', |
| | |
| | | // 方法集合 |
| | | methods: { |
| | | // 查询列表 |
| | | searchList () { |
| | | searchList() { |
| | | let params = {} |
| | | if (this.tabIndex === '0') { |
| | | params = { |
| | |
| | | } |
| | | if (this.tabIndex === '0') { |
| | | this.tableLoading = true |
| | | pageMethodSearchNew({...params.oldPage,...params.entity}).then(res => { |
| | | pageMethodSearchNew({ ...params.oldPage, ...params.entity }).then(res => { |
| | | this.tableLoading = false |
| | | if (res.code === 200){ |
| | | if (res.code === 200) { |
| | | this.tableData = res.data.records |
| | | this.page.total = res.data.total |
| | | } |
| | |
| | | } else { |
| | | this.oldTableLoading = true |
| | | pageSearchNewArchived({ |
| | | ...params.page,...params.entity |
| | | ...params.page, ...params.entity |
| | | }).then(res => { |
| | | this.oldTableLoading = false |
| | | if (res.code === 200){ |
| | | console.log('res>>>>>>>>>>>>',res) |
| | | if (res.code === 200) { |
| | | console.log('res>>>>>>>>>>>>', res) |
| | | this.oldTableData = res.data.records |
| | | this.oldPage.total = res.data.total |
| | | } |
| | |
| | | } |
| | | }, |
| | | // 打开历史档案详情弹框 |
| | | openViewDia (row) { |
| | | openViewDia(row) { |
| | | this.archivedId = row.archivedId |
| | | this.viewRocordDia = true |
| | | this.pageSearchNewBackups() |
| | | }, |
| | | pageSearchNewBackups () { |
| | | pageSearchNewBackups() { |
| | | const entity = { |
| | | archivedId: this.archivedId, |
| | | } |
| | | this.tableLoading1 = true |
| | | pageSearchNewBackups({...this.page1,...entity}).then(res => { |
| | | pageSearchNewBackups({ ...this.page1, ...entity }).then(res => { |
| | | this.tableLoading1 = false |
| | | if (res.code === 200){ |
| | | if (res.code === 200) { |
| | | this.tableData1 = res.data.records |
| | | this.page1.total = res.data.total |
| | | } |
| | |
| | | }) |
| | | }, |
| | | // 打开批准弹框 |
| | | openApprovalDialog (row) { |
| | | openApprovalDialog(row) { |
| | | this.approvalDialog = true |
| | | this.archivedId = row.archivedId |
| | | }, |
| | | // 打开批准弹框 |
| | | openApprovalDialog1 (row) { |
| | | openApprovalDialog1(row) { |
| | | this.approvalDialog1 = true |
| | | this.archivedId = row.archivedId |
| | | }, |
| | | // 提交批准 |
| | | handleApproval (status) { |
| | | handleApproval(status) { |
| | | this.approvalLoading = true |
| | | let internalReport = { |
| | | archivedId: this.archivedId, |
| | |
| | | }) |
| | | }, |
| | | // 提交批准 |
| | | handleApproval1 (status) { |
| | | handleApproval1(status) { |
| | | this.approvalLoading = true |
| | | let internalReport = { |
| | | archivedName: this.archivedName, |
| | |
| | | }) |
| | | }, |
| | | // 重置查询条件 |
| | | resetSearchForm () { |
| | | resetSearchForm() { |
| | | this.searchForm.standardNo = ''; |
| | | this.searchList() |
| | | }, |
| | | // 操作新增框 |
| | | openFormDia (row) { |
| | | openFormDia(row) { |
| | | this.formDialog = true |
| | | this.$nextTick(() => { |
| | | this.$refs.formDialog.openDia(row) |
| | | }) |
| | | }, |
| | | // 关闭新增弹框 |
| | | closeDia () { |
| | | closeDia() { |
| | | this.formDialog = false |
| | | this.searchList() |
| | | }, |
| | | // 打开修改弹框 |
| | | openEditFormDia (row) { |
| | | openEditFormDia(row) { |
| | | this.editFormDialog = true |
| | | this.$nextTick(() => { |
| | | this.$refs.editFormDialog.openDia(row) |
| | | }) |
| | | }, |
| | | // |
| | | closeEditDia () { |
| | | closeEditDia() { |
| | | this.editFormDialog = false |
| | | this.searchList() |
| | | }, |
| | | // 导出 |
| | | handleOut (row) { |
| | | handleOut(row) { |
| | | this.outLoading = true |
| | | exportMethodSearchNew({archivedId:row.archivedId}).then(res => { |
| | | const blob = new Blob([res],{ type: 'application/octet-stream' }); |
| | | exportMethodSearchNew({ archivedId: row.archivedId }).then(res => { |
| | | const blob = new Blob([res], { type: 'application/octet-stream' }); |
| | | this.$download.saveAs(blob, '标准查新导出.xlsx') |
| | | this.$message.success('导出成功') |
| | | }) |
| | | }, |
| | | // 导入 |
| | |
| | | } |
| | | }, |
| | | // 分页 |
| | | pagination(page){ |
| | | pagination(page) { |
| | | this.page.size = page.limit |
| | | this.searchList(); |
| | | }, |
| | | pagination1(page){ |
| | | pagination1(page) { |
| | | this.page1.size = page.limit |
| | | this.pageSearchNewBackups(); |
| | | }, |
| | | oldPagination(page){ |
| | | oldPagination(page) { |
| | | this.oldPage.size = page.limit |
| | | this.searchList(); |
| | | }, |
| | | // |
| | | getUserList(){ |
| | | getUserList() { |
| | | this.$axios.post(this.$api.user.selectUserList, { |
| | | page: {current: -1, size: -1,}, |
| | | entity: {name: null} |
| | | page: { current: -1, size: -1, }, |
| | | entity: { name: null } |
| | | }, { |
| | | headers: { |
| | | 'Content-Type': 'application/json' |
| | |
| | | display: flex; |
| | | justify-content: space-between; |
| | | } |
| | | |
| | | .table-tab { |
| | | margin-bottom: 10px; |
| | | } |
| | |
| | | handleDown(row) { |
| | | exportInconsistentDistribution({ distributionId: row.distributionId }).then(res => { |
| | | this.outLoading = false |
| | | this.$message.success('导出成功') |
| | | const blob = new Blob([res], { type: 'application/msword' }); |
| | | this.$download.saveAs(blob, '不符合项的分布' + '.docx'); |
| | | }) |
| | |
| | | // 导出 |
| | | openDownloadDia(row) { |
| | | superviseDetailAccordingExport({ superviseDetailsId: row.superviseDetailsId }).then(res => { |
| | | this.$message.success('导出成功') |
| | | const blob = new Blob([res], { type: 'application/msword' }); |
| | | this.$download.saveAs(blob, '不符合项导出' + '.docx'); |
| | | }).catch(err => { |
| | |
| | | exportProcessReport({ ids: this.mutilSelect.map(m => m.id) }).then(res => { |
| | | this.outLoading = false |
| | | if (res.code === 201) return |
| | | this.$message.success('导出成功') |
| | | const url = this.javaApi + '/word/' + res.data; |
| | | this.$download.saveAs(url, "报告结果"); |
| | | }) |
| | |
| | | }) |
| | | const filename = decodeURI(this.clickNodeVal.label + '设备借出统计' + '.xlsx') |
| | | this.$download.saveAs(blob, filename) |
| | | this.$message.success('导出成功') |
| | | }) |
| | | }, |
| | | handleLookList(row) { |
| | |
| | | if (state) { |
| | | let url = this.javaApi + '/img/' + row.systemFileName; |
| | | this.$download.saveAs(url, row.systemFileName) |
| | | this.$message.success('下载成功') |
| | | } else { |
| | | const url = this.javaApi + '/word/' + row.systemFileName |
| | | this.$download.saveAs(url, row.systemFileName) |
| | | this.$message.success('下载成功') |
| | | } |
| | | }, |
| | | //导出 |
| | |
| | | this.outLoading = false |
| | | const blob = new Blob([res], { type: 'application/octet-stream' }); |
| | | this.$download.saveAs(blob, '设备校准.xlsx') |
| | | this.$message.success('导出成功') |
| | | }) |
| | | }, |
| | | deleteFile() { |
| | |
| | | this.outLoading = false |
| | | const blob = new Blob([res], { type: 'application/octet-stream' }); |
| | | this.$download.saveAs(blob, '设备验收.doc') |
| | | this.$message.success('导出成功') |
| | | }) |
| | | }, |
| | | // 删除 |
| | |
| | | this.outLoading = false |
| | | const blob = new Blob([res], { type: 'application/octet-stream' }); |
| | | this.$download.saveAs(blob, '仪器设备修理申请表.doc') |
| | | this.$message.success('导出成功') |
| | | }) |
| | | }, |
| | | // 删除 |
| | |
| | | this.outLoading = false |
| | | const blob = new Blob([res], { type: 'application/octet-stream' }); |
| | | this.$download.saveAs(blob, '仪器设备报废申请表.doc') |
| | | this.$message.success('导出成功') |
| | | }) |
| | | }, |
| | | // 删除 |
| | |
| | | this.outLoading = true |
| | | exportReviewExamineRecordContrast({ planDetailsId: this.downRow.planDetailsId }).then(res => { |
| | | this.outLoading = false |
| | | this.$message.success('导出成功') |
| | | const blob = new Blob([res], { type: 'application/octet-stream' }); |
| | | this.$download.saveAs(blob, '仪器设备期间核查比对记录表.doc') |
| | | }) |
| | |
| | | this.outLoading = false |
| | | const blob = new Blob([res], { type: 'application/octet-stream' }); |
| | | this.$download.saveAs(blob, '设备档案卡.doc') |
| | | this.$message.success('导出成功') |
| | | }) |
| | | }, |
| | | handleSuccessUpImg2(response) { |
| | |
| | | this.outLoading = false |
| | | const blob = new Blob([res], { type: 'application/octet-stream' }); |
| | | this.$download.saveAs(blob, '设备维护保养记录.doc') |
| | | this.$message.success('导出成功') |
| | | }) |
| | | }, |
| | | //操作详情删除 |
| | |
| | | this.outLoading = false |
| | | const blob = new Blob([res], { type: 'application/octet-stream' }); |
| | | this.$download.saveAs(blob, '设备停/启用.doc') |
| | | this.$message.success('导出成功') |
| | | }) |
| | | }, |
| | | // 删除 |
| | |
| | | this.outLoading = false |
| | | const blob = new Blob([res], { type: 'application/octet-stream' }); |
| | | this.$download.saveAs(blob, '设备停用/启用.xlsx') |
| | | this.$message.success('导出成功') |
| | | }).finally(() => { |
| | | this.outLoading = false |
| | | }) |
| | |
| | | <div> |
| | | <el-form :model="searchForm" ref="searchForm" size="small" :inline="true"> |
| | | <el-form-item label="日期" prop="registerDate"> |
| | | <el-date-picker v-model="searchForm.registerDate" |
| | | clearable |
| | | format="yyyy-MM-dd" |
| | | placeholder="选择日期" |
| | | size="small" |
| | | style="width: 100%" |
| | | type="date" |
| | | value-format="yyyy-MM-dd"> |
| | | <el-date-picker v-model="searchForm.registerDate" clearable format="yyyy-MM-dd" placeholder="选择日期" |
| | | size="small" style="width: 100%" type="date" value-format="yyyy-MM-dd"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | <el-form-item> |
| | |
| | | </div> |
| | | <div class="table"> |
| | | <lims-table :tableData="tableData" :column="tableColumn" :height="'calc(100vh - 250px)'" @pagination="pagination" |
| | | :page="page" :tableLoading="tableLoading"></lims-table> |
| | | :page="page" :tableLoading="tableLoading"></lims-table> |
| | | </div> |
| | | <personnel-management-dia v-if="threeWastesDia" ref="threeWastesDia" @closeThreeWastesDia="closeThreeWastesDia"></personnel-management-dia> |
| | | <personnel-management-dia v-if="threeWastesDia" ref="threeWastesDia" |
| | | @closeThreeWastesDia="closeThreeWastesDia"></personnel-management-dia> |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | export default { |
| | | name: 'Personnel-management', |
| | | // import 引入的组件需要注入到对象中才能使用 |
| | | components: { limsTable, PersonnelManagementDia}, |
| | | components: { limsTable, PersonnelManagementDia }, |
| | | data() { |
| | | // 这里存放数据 |
| | | return { |
| | |
| | | // 方法集合 |
| | | methods: { |
| | | // 查询列表 |
| | | searchList () { |
| | | searchList() { |
| | | this.tableLoading = true |
| | | pageForeignRegister({ |
| | | ...this.page, |
| | | ...this.searchForm |
| | | }).then(res => { |
| | | this.tableLoading = false |
| | | if (res.code === 200){ |
| | | if (res.code === 200) { |
| | | this.tableData = res.data.records |
| | | this.page.total = res.data.total |
| | | } |
| | |
| | | }) |
| | | }, |
| | | // 删除 |
| | | delPlan (row) { |
| | | delPlan(row) { |
| | | this.$confirm('此操作将永久删除该数据, 是否继续?', '提示', { |
| | | confirmButtonText: '确定', |
| | | cancelButtonText: '取消', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | this.tableLoading = true |
| | | delForeignRegister({registerId:row.registerId}).then(res =>{ |
| | | delForeignRegister({ registerId: row.registerId }).then(res => { |
| | | this.tableLoading = false |
| | | if (res.code === 200){ |
| | | if (res.code === 200) { |
| | | this.$message.success('删除成功') |
| | | this.searchList() |
| | | } |
| | |
| | | }); |
| | | }, |
| | | // 新增,编辑,批准弹框 |
| | | openFormDia (type, row) { |
| | | openFormDia(type, row) { |
| | | this.threeWastesDia = true |
| | | this.$nextTick(() => { |
| | | this.$refs.threeWastesDia.openDia(type, row) |
| | | }) |
| | | }, |
| | | // 导出 |
| | | handleDown () { |
| | | handleDown() { |
| | | exportForeignRegister(this.searchForm).then(res => { |
| | | const blob = new Blob([res],{ type: 'application/msword' }); |
| | | const blob = new Blob([res], { type: 'application/msword' }); |
| | | this.$download.saveAs(blob, '外来人员登记.docx') |
| | | this.$message.success('导出成功') |
| | | }) |
| | | }, |
| | | closeThreeWastesDia () { |
| | | closeThreeWastesDia() { |
| | | this.threeWastesDia = false |
| | | this.searchList() |
| | | }, |
| | | // 重置查询条件 |
| | | resetSearchForm () { |
| | | resetSearchForm() { |
| | | this.searchForm.registerDate = ''; |
| | | this.searchList() |
| | | }, |
| | |
| | | <el-button size="small" type="primary" @click="clickAdd">新 增</el-button> |
| | | </div> |
| | | </div> |
| | | <el-table |
| | | :data="tableData" |
| | | height="calc(100vh - 18em)" |
| | | style="width: 100%"> |
| | | <el-table :data="tableData" height="calc(100vh - 18em)" style="width: 100%"> |
| | | <el-table-column label="序号" type="index" width="120"> |
| | | <template v-slot="scope"> |
| | | <span>{{ (search.current - 1) * search.size + scope.$index + 1 }}</span> |
| | |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <el-pagination :current-page="1" :page-size="search.size" :page-sizes="[10, 20, 30, 50, 100]" |
| | | :total="search.total" layout="->,total, sizes, prev, pager, next, jumper" |
| | | @size-change="handleSizeChange" |
| | | @current-change="handleCurrentChange"> |
| | | <el-pagination :current-page="1" :page-size="search.size" :page-sizes="[10, 20, 30, 50, 100]" :total="search.total" |
| | | layout="->,total, sizes, prev, pager, next, jumper" @size-change="handleSizeChange" |
| | | @current-change="handleCurrentChange"> |
| | | </el-pagination> |
| | | <el-dialog |
| | | :visible.sync="dialogVisible" |
| | | title="新增" |
| | | width="50%" |
| | | @open="openDialog"> |
| | | <el-dialog :visible.sync="dialogVisible" title="新增" width="50%" @open="openDialog"> |
| | | <div style="height: 50vh; overflow-y: auto"> |
| | | <el-form ref="form" :model="form" label-width="120px"> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item :rules="[{ required: true, message: '请输入测试地点', trigger: 'change' }]" label="测试日期" |
| | | prop="testDate"> |
| | | <el-date-picker |
| | | v-model="form.testDate" |
| | | format="yyyy-MM-dd" |
| | | placeholder="选择日期" |
| | | size="small" |
| | | style="width: 100%" |
| | | type="date" |
| | | value-format="yyyy-MM-dd"> |
| | | prop="testDate"> |
| | | <el-date-picker v-model="form.testDate" format="yyyy-MM-dd" placeholder="选择日期" size="small" |
| | | style="width: 100%" type="date" value-format="yyyy-MM-dd"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item :rules="[{ required: true, message: '请输入设备名称', trigger: 'change' }]" label="设备名称" |
| | | prop="deviceId"> |
| | | <el-select v-model="form.deviceId" |
| | | class="table_input" |
| | | clearable |
| | | filterable |
| | | placeholder="设备名称" |
| | | size="small" @change="getCalibrationDateFun"> |
| | | <el-option v-for="item in equipOptions" :key="item.id" :label="item.deviceName" :value="item.id"> |
| | | {{item.deviceName + item.managementNumber}} |
| | | prop="deviceId"> |
| | | <el-select v-model="form.deviceId" class="table_input" clearable filterable placeholder="设备名称" |
| | | size="small" @change="getCalibrationDateFun"> |
| | | <el-option v-for="item in equipOptions" :key="item.id" :label="item.deviceName" :value="item.id"> |
| | | {{ item.deviceName + item.managementNumber }} |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="检测者" prop="recipientUser"> |
| | | <el-select v-model="form.testerId" clearable filterable placeholder="请选择" |
| | | size="small" style="width: 100%;"> |
| | | <el-select v-model="form.testerId" clearable filterable placeholder="请选择" size="small" |
| | | style="width: 100%;"> |
| | | <el-option v-for="item in responsibleOptions" :key="item.id" :label="item.name" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="核查人" prop="recipientUser"> |
| | | <el-select v-model="form.checkerId" clearable filterable placeholder="请选择" |
| | | size="small" style="width: 100%;" > |
| | | <el-select v-model="form.checkerId" clearable filterable placeholder="请选择" size="small" |
| | | style="width: 100%;"> |
| | | <el-option v-for="item in responsibleOptions" :key="item.id" :label="item.name" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | |
| | | </el-col> |
| | | <el-col :span="24"> |
| | | <el-form-item label="结论"> |
| | | <el-input |
| | | v-model="form.conclusion" |
| | | :rows="2" |
| | | placeholder="请输入内容" |
| | | type="textarea"> |
| | | <el-input v-model="form.conclusion" :rows="2" placeholder="请输入内容" type="textarea"> |
| | | </el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | |
| | | <el-button size="small" type="primary" @click="feMeasuredQuantityListAdd">新增</el-button> |
| | | </div> |
| | | <div> |
| | | <el-table |
| | | :data="form.illuminationDetectionAreaList" |
| | | height="40vh" |
| | | style="width: 100%; margin: auto"> |
| | | <el-table :data="form.illuminationDetectionAreaList" height="40vh" style="width: 100%; margin: auto"> |
| | | <el-table-column label="序号" type="index" width="80"></el-table-column> |
| | | <el-table-column |
| | | align="center" |
| | | label="检测区域名称" |
| | | min-width="180" |
| | | prop="detectionAreaLabel"> |
| | | <el-table-column align="center" label="检测区域名称" min-width="180" prop="detectionAreaLabel"> |
| | | <template #default="{ row }"> |
| | | <el-input v-model="row.detectionAreaLabel" :rows="1" type="textarea"></el-input> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | align="center" |
| | | label="检测值" |
| | | min-width="300" |
| | | prop="name"> |
| | | <el-table-column align="center" label="检测值" min-width="300" prop="name"> |
| | | <template> |
| | | <el-table-column align="center" label="第一次" min-width="100" prop="valueOne"> |
| | | <template #default="{ row }"> |
| | |
| | | </el-table-column> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | align="center" |
| | | label="备注" |
| | | min-width="180" |
| | | prop="detectionAreaLabel"> |
| | | <el-table-column align="center" label="备注" min-width="180" prop="detectionAreaLabel"> |
| | | <template #default="{ row }"> |
| | | <el-input v-model="row.remark" :rows="1" type="textarea"></el-input> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | fixed="right" |
| | | label="操作" |
| | | width="100"> |
| | | <el-table-column fixed="right" label="操作" width="100"> |
| | | <template slot-scope="scope"> |
| | | <el-button size="small" type="text" @click="feMeasuredQuantityListDelete(scope.row, scope.$index)"> |
| | | 删除 |
| | |
| | | </el-form> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="dialogVisible = false">取 消</el-button> |
| | | <el-button type="primary" :loading="submitLoading" @click="addPowerSupplyStability">确 定</el-button> |
| | | </span> |
| | | <el-button @click="dialogVisible = false">取 消</el-button> |
| | | <el-button type="primary" :loading="submitLoading" @click="addPowerSupplyStability">确 定</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | |
| | | if (!isNaN(row.valueOne) && !isNaN(row.valueTwo) && !isNaN(row.valueThree)) { |
| | | const avg = Number(row.valueOne) + Number(row.valueTwo) + Number(row.valueThree) |
| | | console.log(avg) |
| | | row.average = Math.round(avg/3); |
| | | row.average = Math.round(avg / 3); |
| | | } else { |
| | | this.$message.warning("必须为数字!") |
| | | } |
| | | } |
| | | }, |
| | | edit(row) { |
| | | getFeIlluminationDetectionArea({intensityIlluminationId:row.intensityIlluminationId}).then(res => { |
| | | this.form = {...row} |
| | | getFeIlluminationDetectionArea({ intensityIlluminationId: row.intensityIlluminationId }).then(res => { |
| | | this.form = { ...row } |
| | | this.form.illuminationDetectionAreaList = res.data; |
| | | this.dialogVisible = true |
| | | }); |
| | | }, |
| | | initData() { |
| | | getFeLightningProtection({...this.search}).then(res => { |
| | | if (res.code === 200){ |
| | | getFeLightningProtection({ ...this.search }).then(res => { |
| | | if (res.code === 200) { |
| | | this.tableData = res.data.records; |
| | | this.search.total = res.data.total; |
| | | } |
| | |
| | | cancelButtonText: '取消', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | deleteFeLightningProtection({intensityIlluminationId: row.intensityIlluminationId}).then(res => { |
| | | deleteFeLightningProtection({ intensityIlluminationId: row.intensityIlluminationId }).then(res => { |
| | | this.$message.success('删除成功!') |
| | | this.initData() |
| | | }) |
| | |
| | | }, |
| | | feMeasuredQuantityListDelete(row, index) { |
| | | if (row.detectionAreaId) { |
| | | deleteFeIlluminationDetectionArea({detectionAreaId:row.detectionAreaId}).then(res => { |
| | | if (res.code === 200){ |
| | | deleteFeIlluminationDetectionArea({ detectionAreaId: row.detectionAreaId }).then(res => { |
| | | if (res.code === 200) { |
| | | this.form.illuminationDetectionAreaList.splice(index, 1) |
| | | this.$message.success('删除成功!') |
| | | } |
| | |
| | | // 获取所有设备 |
| | | getEquipOptions() { |
| | | this.equipOptions = [] |
| | | deviceScopeSearch({status:'0'}).then(res => { |
| | | deviceScopeSearch({ status: '0' }).then(res => { |
| | | if (res.code === 200 && res.data) { |
| | | this.equipOptions = res.data |
| | | } |
| | |
| | | }, |
| | | // 导出 |
| | | downLoadPost(row) { |
| | | exportFeIllumination({intensityIlluminationId: row.intensityIlluminationId}).then(res => { |
| | | exportFeIllumination({ intensityIlluminationId: row.intensityIlluminationId }).then(res => { |
| | | this.outLoading = false |
| | | const blob = new Blob([res],{ type: 'application/msword' }); |
| | | const blob = new Blob([res], { type: 'application/msword' }); |
| | | this.$download.saveAs(blob, '照度记录.docx') |
| | | this.$message.success('导出成功') |
| | | }) |
| | | }, |
| | | } |
| | |
| | | <el-button size="small" type="primary" @click="openAddDia">新 增</el-button> |
| | | </div> |
| | | </div> |
| | | <el-table |
| | | :data="tableData" |
| | | height="calc(100vh - 18em)" |
| | | style="width: 100%"> |
| | | <el-table :data="tableData" height="calc(100vh - 18em)" style="width: 100%"> |
| | | <el-table-column label="序号" type="index" width="120"> |
| | | <template v-slot="scope"> |
| | | <span>{{ (search.current - 1) * search.size + scope.$index + 1 }}</span> |
| | |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <el-pagination :current-page="1" :page-size="search.size" :page-sizes="[10, 20, 30, 50, 100]" |
| | | :total="search.total" layout="->,total, sizes, prev, pager, next, jumper" |
| | | @size-change="handleSizeChange" |
| | | @current-change="handleCurrentChange"> |
| | | <el-pagination :current-page="1" :page-size="search.size" :page-sizes="[10, 20, 30, 50, 100]" :total="search.total" |
| | | layout="->,total, sizes, prev, pager, next, jumper" @size-change="handleSizeChange" |
| | | @current-change="handleCurrentChange"> |
| | | </el-pagination> |
| | | <el-dialog |
| | | :visible.sync="dialogVisible" |
| | | title="新增" |
| | | width="50%" |
| | | @open="openDialog"> |
| | | <el-dialog :visible.sync="dialogVisible" title="新增" width="50%" @open="openDialog"> |
| | | <div style="height: 50vh; overflow-y: auto"> |
| | | <el-form ref="form" :model="form" label-width="120px"> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item :rules="[{ required: true, message: '请输入测试地点', trigger: 'blur' }]" label="测试地点" |
| | | prop="testLocation"> |
| | | prop="testLocation"> |
| | | <el-input v-model="form.testLocation" size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item :rules="[{ required: true, message: '请输入测试日期', trigger: 'change' }]" label="测试日期" |
| | | prop="testDate"> |
| | | <el-date-picker |
| | | v-model="form.testDate" |
| | | format="yyyy-MM-dd" |
| | | placeholder="选择日期" |
| | | size="small" |
| | | style="width: 100%" |
| | | type="date" |
| | | value-format="yyyy-MM-dd"> |
| | | prop="testDate"> |
| | | <el-date-picker v-model="form.testDate" format="yyyy-MM-dd" placeholder="选择日期" size="small" |
| | | style="width: 100%" type="date" value-format="yyyy-MM-dd"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item :rules="[{ required: true, message: '请输入设备名称', trigger: 'change' }]" label="设备名称" |
| | | prop="deviceId"> |
| | | <el-select v-model="form.deviceId" |
| | | class="table_input" |
| | | clearable |
| | | filterable |
| | | placeholder="设备名称" |
| | | size="small" @change="getCalibrationDateFun"> |
| | | <el-option v-for="item in equipOptions" :key="item.id" :label="item.deviceName" :value="item.id"> |
| | | {{item.deviceName + item.managementNumber}} |
| | | prop="deviceId"> |
| | | <el-select v-model="form.deviceId" class="table_input" clearable filterable placeholder="设备名称" |
| | | size="small" @change="getCalibrationDateFun"> |
| | | <el-option v-for="item in equipOptions" :key="item.id" :label="item.deviceName" :value="item.id"> |
| | | {{ item.deviceName + item.managementNumber }} |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="检测者" prop="recipientUser"> |
| | | <el-select v-model="form.testerId" clearable filterable placeholder="请选择" |
| | | size="small" style="width: 100%;"> |
| | | <el-select v-model="form.testerId" clearable filterable placeholder="请选择" size="small" |
| | | style="width: 100%;"> |
| | | <el-option v-for="item in responsibleOptions" :key="item.id" :label="item.name" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="核查人" prop="recipientUser"> |
| | | <el-select v-model="form.checkerId" clearable filterable placeholder="请选择" |
| | | size="small" style="width: 100%;" > |
| | | <el-select v-model="form.checkerId" clearable filterable placeholder="请选择" size="small" |
| | | style="width: 100%;"> |
| | | <el-option v-for="item in responsibleOptions" :key="item.id" :label="item.name" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | |
| | | </el-col> |
| | | <el-col :span="24"> |
| | | <el-form-item label="结论"> |
| | | <el-input |
| | | v-model="form.conclusion" |
| | | :rows="2" |
| | | placeholder="请输入内容" |
| | | type="textarea"> |
| | | <el-input v-model="form.conclusion" :rows="2" placeholder="请输入内容" type="textarea"> |
| | | </el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | |
| | | <el-button size="small" type="primary" @click="feMeasuredQuantityListAdd">新增</el-button> |
| | | </div> |
| | | <div> |
| | | <el-table |
| | | :data="form.feMeasuredQuantityList" |
| | | height="40vh" |
| | | style="width: 100%; margin: auto"> |
| | | <el-table :data="form.feMeasuredQuantityList" height="40vh" style="width: 100%; margin: auto"> |
| | | <el-table-column label="序号" type="index" width="80"></el-table-column> |
| | | <el-table-column |
| | | align="center" |
| | | label="测定量名称" |
| | | min-width="180" |
| | | prop="measuredQuantityLabel"> |
| | | <el-table-column align="center" label="测定量名称" min-width="180" prop="measuredQuantityLabel"> |
| | | <template #default="{ row }"> |
| | | <el-input v-model="row.measuredQuantityLabel" :rows="1" type="textarea"></el-input> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | align="center" |
| | | label="值" |
| | | min-width="300" |
| | | prop="name"> |
| | | <el-table-column align="center" label="值" min-width="300" prop="name"> |
| | | <template> |
| | | <el-table-column align="center" label="A" min-width="100" prop="valueA"> |
| | | <template #default="{ row }"> |
| | |
| | | </el-table-column> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | fixed="right" |
| | | label="操作" |
| | | width="100"> |
| | | <el-table-column fixed="right" label="操作" width="100"> |
| | | <template slot-scope="scope"> |
| | | <el-button size="small" type="text" @click="feMeasuredQuantityListDelete(scope.row, scope.$index)"> |
| | | 删除 |
| | |
| | | getLaboratoryFacilityPowerStablePage({ |
| | | ...this.search |
| | | }).then(res => { |
| | | if (res.code === 200){ |
| | | if (res.code === 200) { |
| | | this.tableData = res.data.records; |
| | | this.search.total = res.data.total; |
| | | } |
| | |
| | | cancelButtonText: '取消', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | deleteLaboratoryFacilityPowerStable({powerStableId:row.powerStableId}).then(res => { |
| | | deleteLaboratoryFacilityPowerStable({ powerStableId: row.powerStableId }).then(res => { |
| | | this.$message.success('删除成功!') |
| | | this.initData() |
| | | }) |
| | | }) |
| | | }, |
| | | openAddDia () { |
| | | openAddDia() { |
| | | this.dialogVisible = true |
| | | this.getEquipOptions() |
| | | }, |
| | | // 获取所有设备 |
| | | getEquipOptions() { |
| | | this.equipOptions = [] |
| | | deviceScopeSearch({status:'0'}).then(res => { |
| | | deviceScopeSearch({ status: '0' }).then(res => { |
| | | if (res.code === 200 && res.data) { |
| | | this.equipOptions = res.data |
| | | } |
| | |
| | | // 电源稳定性-测定量弹框中表格的删除行 |
| | | feMeasuredQuantityListDelete(row, index) { |
| | | if (row.measuredQuantityId) { |
| | | deleteFeMeasuredQuantity({measuredQuantityId:row.measuredQuantityId}).then(res => { |
| | | deleteFeMeasuredQuantity({ measuredQuantityId: row.measuredQuantityId }).then(res => { |
| | | if (res.code === 201) return |
| | | this.form.feMeasuredQuantityList.splice(index, 1) |
| | | this.$message.success('删除成功!') |
| | |
| | | }, |
| | | // 导出 |
| | | downLoadPost(row) { |
| | | exportFePowerStable({powerStableId: row.powerStableId}).then(res => { |
| | | exportFePowerStable({ powerStableId: row.powerStableId }).then(res => { |
| | | this.outLoading = false |
| | | const blob = new Blob([res],{ type: 'application/msword' }); |
| | | const blob = new Blob([res], { type: 'application/msword' }); |
| | | this.$download.saveAs(blob, '电源稳定性.docx') |
| | | this.$message.success('导出成功') |
| | | }) |
| | | }, |
| | | // 电源稳定性 点击行编辑触发 |
| | | edit(row) { |
| | | getFeMeasuredQuantityService({powerStableId: row.powerStableId}).then((res => { |
| | | this.form = {...row} |
| | | getFeMeasuredQuantityService({ powerStableId: row.powerStableId }).then((res => { |
| | | this.form = { ...row } |
| | | this.form.feMeasuredQuantityList = res.data; |
| | | this.dialogVisible = true |
| | | })) |
| | |
| | | <el-button size="small" type="primary" @click="clickAdd">新 增</el-button> |
| | | </div> |
| | | </div> |
| | | <el-table |
| | | :data="tableData" |
| | | height="calc(100vh - 18em)" |
| | | highlight-current-row |
| | | style="width: 100%" |
| | | @row-click="clickRow"> |
| | | <el-table :data="tableData" height="calc(100vh - 18em)" highlight-current-row style="width: 100%" |
| | | @row-click="clickRow"> |
| | | <el-table-column label="序号" type="index" width="60" align="center"></el-table-column> |
| | | <el-table-column label="月度时间" min-width="180" prop="monthDate"></el-table-column> |
| | | <el-table-column label="试验区域名称" min-width="180" prop="testAreaName"></el-table-column> |
| | |
| | | <template v-slot="scope"> |
| | | <el-button size="small" type="text" @click="downLoadPost(scope.row)">导出</el-button> |
| | | <el-button size="small" type="text" @click="edit(scope.row)">编辑</el-button> |
| | | <el-button :disabled="scope.row.isAffirm === '1'" size="small" type="text" @click="openApprovalDialog(scope.row)">确认</el-button> |
| | | <el-button :disabled="scope.row.isAffirm === '1'" size="small" type="text" |
| | | @click="openApprovalDialog(scope.row)">确认</el-button> |
| | | <el-button size="small" type="text" @click="deleteRowFun(scope.row)">删除</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <el-pagination :current-page="1" :page-size="search.size" :page-sizes="[10, 20, 30, 50, 100]" |
| | | :total="search.total" layout="->,total, sizes, prev, pager, next, jumper" |
| | | @size-change="handleSizeChange" |
| | | @current-change="handleCurrentChange"> |
| | | :total="search.total" layout="->,total, sizes, prev, pager, next, jumper" @size-change="handleSizeChange" |
| | | @current-change="handleCurrentChange"> |
| | | </el-pagination> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <div class="header"> |
| | | <div>温湿度记录:{{ saveRow.monthDate }}</div> |
| | | <div> |
| | | <el-button v-if="saveRow.monthDate" size="small" type="primary" @click="dialogVisible1 = true">新 增</el-button> |
| | | <el-button v-if="saveRow.monthDate" size="small" type="primary" @click="dialogVisible1 = true">新 |
| | | 增</el-button> |
| | | </div> |
| | | </div> |
| | | <el-table |
| | | :data="tableData1" |
| | | height="calc(100vh - 18em)" |
| | | style="width: 100%"> |
| | | <el-table :data="tableData1" height="calc(100vh - 18em)" style="width: 100%"> |
| | | <el-table-column label="序号" type="index" width="60" align="center"></el-table-column> |
| | | <el-table-column label="日期" min-width="100" prop="recordDate"></el-table-column> |
| | | <el-table-column align="center" label="上午" min-width="200"> |
| | | <template> |
| | | <el-table-column label="时间" min-width="110" prop="morningTestTime" show-overflow-tooltip></el-table-column> |
| | | <el-table-column label="时间" min-width="110" prop="morningTestTime" |
| | | show-overflow-tooltip></el-table-column> |
| | | <el-table-column label="温度" min-width="80" prop="morningTemp" show-overflow-tooltip></el-table-column> |
| | | <el-table-column label="湿度" min-width="80" prop="morningHum" show-overflow-tooltip></el-table-column> |
| | | </template> |
| | |
| | | </el-table-column> |
| | | </el-table> |
| | | <el-pagination :current-page="1" :page-size="search1.size" :page-sizes="[10, 20, 30, 50, 100]" |
| | | :total="search1.total" layout="->,total, sizes, prev, pager, next, jumper" |
| | | @size-change="handleSizeChange1" |
| | | @current-change="handleCurrentChange1"> |
| | | :total="search1.total" layout="->,total, sizes, prev, pager, next, jumper" @size-change="handleSizeChange1" |
| | | @current-change="handleCurrentChange1"> |
| | | </el-pagination> |
| | | </el-col> |
| | | </el-row> |
| | | <el-dialog |
| | | :visible.sync="dialogVisible" |
| | | title="提示" |
| | | width="50%"> |
| | | <el-dialog :visible.sync="dialogVisible" title="提示" width="50%"> |
| | | <div style="height: 20vh;"> |
| | | <el-form ref="form" :model="form" label-width="80px"> |
| | | <el-row> |
| | | <el-col :span="24"> |
| | | <el-form-item :rules="[{ required: true, message: '请输入月度时间', trigger: 'blur' }]" label="月度时间" |
| | | prop="monthDate"> |
| | | <el-date-picker |
| | | v-model="form.monthDate" |
| | | format="yyyy-MM" |
| | | placeholder="选择月份" |
| | | size="small" |
| | | style="width: 100%" |
| | | type="month" |
| | | value-format="yyyy-MM"> |
| | | prop="monthDate"> |
| | | <el-date-picker v-model="form.monthDate" format="yyyy-MM" placeholder="选择月份" size="small" |
| | | style="width: 100%" type="month" value-format="yyyy-MM"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="24"> |
| | | <el-form-item :rules="[{ required: true, message: '请输入试验区域', trigger: 'blur' }]" label="试验区域" |
| | | prop="testAreaName"> |
| | | prop="testAreaName"> |
| | | <el-input v-model="form.testAreaName"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | |
| | | </el-form> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="dialogVisible = false">取 消</el-button> |
| | | <el-button type="primary" :loading="submitLoading" @click="addPowerSupplyStability">确 定</el-button> |
| | | </span> |
| | | <el-button @click="dialogVisible = false">取 消</el-button> |
| | | <el-button type="primary" :loading="submitLoading" @click="addPowerSupplyStability">确 定</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <el-dialog |
| | | :visible.sync="dialogVisible1" |
| | | title="提示" |
| | | width="50%" |
| | | @open="openDialog"> |
| | | <el-dialog :visible.sync="dialogVisible1" title="提示" width="50%" @open="openDialog"> |
| | | <div style="height: 40vh;"> |
| | | <el-form ref="form1" :model="form1" label-width="120px"> |
| | | <el-row> |
| | | <el-col :span="24"> |
| | | <el-form-item label="日期"> |
| | | <el-date-picker |
| | | v-model="form1.recordDate" |
| | | format="yyyy-MM-dd" |
| | | placeholder="请选择日期" |
| | | size="small" |
| | | style="width: 50%" |
| | | type="date" |
| | | value-format="yyyy-MM-dd"> |
| | | <el-date-picker v-model="form1.recordDate" format="yyyy-MM-dd" placeholder="请选择日期" size="small" |
| | | style="width: 50%" type="date" value-format="yyyy-MM-dd"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="上午时间"> |
| | | <el-time-picker |
| | | v-model="form1.morningTestTime" |
| | | size="small" |
| | | value-format="HH:mm:ss" |
| | | format="HH:mm:ss" |
| | | style="width: 100%" |
| | | placeholder="请选择时间"> |
| | | <el-time-picker v-model="form1.morningTestTime" size="small" value-format="HH:mm:ss" format="HH:mm:ss" |
| | | style="width: 100%" placeholder="请选择时间"> |
| | | </el-time-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="上午记录员"> |
| | | <el-select v-model="form1.morningRecorderId" clearable filterable placeholder="请选择" |
| | | size="small" style="width: 100%;"> |
| | | <el-select v-model="form1.morningRecorderId" clearable filterable placeholder="请选择" size="small" |
| | | style="width: 100%;"> |
| | | <el-option v-for="item in responsibleOptions" :key="item.id" :label="item.name" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="下午时间"> |
| | | <el-time-picker |
| | | v-model="form1.afternoonTime" |
| | | size="small" |
| | | value-format="HH:mm:ss" |
| | | format="HH:mm:ss" |
| | | style="width: 100%" |
| | | placeholder="请选择时间"> |
| | | <el-time-picker v-model="form1.afternoonTime" size="small" value-format="HH:mm:ss" format="HH:mm:ss" |
| | | style="width: 100%" placeholder="请选择时间"> |
| | | </el-time-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="下午记录员"> |
| | | <el-select v-model="form1.afternoonRecorderId" clearable filterable placeholder="请选择" |
| | | size="small" style="width: 100%;"> |
| | | <el-select v-model="form1.afternoonRecorderId" clearable filterable placeholder="请选择" size="small" |
| | | style="width: 100%;"> |
| | | <el-option v-for="item in responsibleOptions" :key="item.id" :label="item.name" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | |
| | | </el-col> |
| | | <el-col :span="24"> |
| | | <el-form-item label="备注"> |
| | | <el-input |
| | | v-model="form1.note" |
| | | :rows="2" |
| | | placeholder="请输入内容" |
| | | type="textarea"> |
| | | <el-input v-model="form1.note" :rows="2" placeholder="请输入内容" type="textarea"> |
| | | </el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | |
| | | </el-form> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="dialogVisible1 = false">取 消</el-button> |
| | | <el-button type="primary" :loading="submitLoading" @click="addPowerSupplyStability1">确 定</el-button> |
| | | </span> |
| | | <el-button @click="dialogVisible1 = false">取 消</el-button> |
| | | <el-button type="primary" :loading="submitLoading" @click="addPowerSupplyStability1">确 定</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <el-dialog :visible.sync="approvalDialog" title="确认" width="30%" @close="subjoin = ''"> |
| | | <span> |
| | |
| | | } |
| | | }, |
| | | methods: { |
| | | openApprovalDialog (row) { |
| | | openApprovalDialog(row) { |
| | | this.approvalDialog = true |
| | | this.approvalRow = row |
| | | }, |
| | | handleApproval () { |
| | | handleApproval() { |
| | | this.approvalLoading = true |
| | | const params = { |
| | | dateId: this.approvalRow.dateId, |
| | |
| | | this.initData1(row.dateId) |
| | | }, |
| | | edit(row) { |
| | | this.form = {...row} |
| | | this.form = { ...row } |
| | | this.dialogVisible = true |
| | | }, |
| | | deleteRowFun(row) { |
| | |
| | | cancelButtonText: '取消', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | deleteFeTempHumDate({dateId:row.dateId}).then(res => { |
| | | deleteFeTempHumDate({ dateId: row.dateId }).then(res => { |
| | | this.$message.success('删除成功!') |
| | | this.initData() |
| | | }) |
| | | }) |
| | | }, |
| | | edit1(row) { |
| | | this.form1 = {...row} |
| | | this.form1 = { ...row } |
| | | this.dialogVisible1 = true |
| | | }, |
| | | // 导出 |
| | | downLoadPost(row) { |
| | | exportTemperatureAndHumidityRecords({dateId:row.dateId}).then(res => { |
| | | exportTemperatureAndHumidityRecords({ dateId: row.dateId }).then(res => { |
| | | this.outLoading = false |
| | | const blob = new Blob([res],{ type: 'application/msword' }); |
| | | const blob = new Blob([res], { type: 'application/msword' }); |
| | | this.$download.saveAs(blob, '温湿度记录.docx') |
| | | this.$message.success('导出成功') |
| | | }) |
| | | }, |
| | | deleteRowFun1(row) { |
| | |
| | | cancelButtonText: '取消', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | deleteFeTempHumRecord({tempHumId:row.tempHumId}).then(res => { |
| | | deleteFeTempHumRecord({ tempHumId: row.tempHumId }).then(res => { |
| | | this.$message.success('删除成功!') |
| | | this.initData1(this.saveRow.dateId) |
| | | }) |
| | |
| | | initData() { |
| | | getFeTempHumDate({ |
| | | ...this.search, |
| | | ...this.search}).then(res => { |
| | | if (res.code === 200){ |
| | | ...this.search |
| | | }).then(res => { |
| | | if (res.code === 200) { |
| | | this.tableData = res.data.records; |
| | | this.search.total = res.data.total; |
| | | if (res.data.records.length === 0) { |
| | |
| | | }) |
| | | }, |
| | | initData1(dateId) { |
| | | let form = {dateId: dateId} |
| | | let form = { dateId: dateId } |
| | | getFeTempHumRecordPage({ |
| | | ...this.search1, |
| | | ...form |
| | | }).then(res => { |
| | | if (res.code === 200){ |
| | | if (res.code === 200) { |
| | | this.tableData1 = res.data.records; |
| | | this.search1.total = res.data.total; |
| | | } |
| | |
| | | <div> |
| | | <el-form :model="searchForm" ref="searchForm" size="small" :inline="true"> |
| | | <el-form-item label="备注" prop="remark"> |
| | | <el-input size="small" placeholder="请输入" clearable v-model="searchForm.remark"> |
| | | </el-input> |
| | | <el-input size="small" placeholder="请输入" clearable v-model="searchForm.remark"> |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button type="primary" icon="el-icon-search" size="mini" @click="searchList">查 询</el-button> |
| | | <el-button icon="el-icon-refresh" size="mini" @click="resetSearchForm">重 置</el-button> |
| | | <el-button type="primary" icon="el-icon-search" size="mini" @click="searchList">查 询</el-button> |
| | | <el-button icon="el-icon-refresh" size="mini" @click="resetSearchForm">重 置</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | |
| | | </div> |
| | | <div class="table"> |
| | | <lims-table :tableData="tableData" :column="tableColumn" :height="'calc(100vh - 250px)'" @pagination="pagination" |
| | | :page="page" :tableLoading="tableLoading"></lims-table> |
| | | :page="page" :tableLoading="tableLoading"></lims-table> |
| | | </div> |
| | | <three-wastes-dialog v-if="threeWastesDia" ref="threeWastesDia" @closeThreeWastesDia="closeThreeWastesDia"></three-wastes-dialog> |
| | | <three-wastes-dialog v-if="threeWastesDia" ref="threeWastesDia" |
| | | @closeThreeWastesDia="closeThreeWastesDia"></three-wastes-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | // 方法集合 |
| | | methods: { |
| | | // 查询列表 |
| | | searchList () { |
| | | searchList() { |
| | | this.tableLoading = true |
| | | pageInternalWastes({...this.page,...this.searchForm}).then(res => { |
| | | pageInternalWastes({ ...this.page, ...this.searchForm }).then(res => { |
| | | this.tableLoading = false |
| | | if (res.code === 200){ |
| | | if (res.code === 200) { |
| | | this.tableData = res.data.records |
| | | this.page.total = res.data.total |
| | | } |
| | |
| | | }) |
| | | }, |
| | | // 删除 |
| | | delPlan (row) { |
| | | delPlan(row) { |
| | | this.$confirm('此操作将永久删除该数据, 是否继续?', '提示', { |
| | | confirmButtonText: '确定', |
| | | cancelButtonText: '取消', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | this.tableLoading = true |
| | | removeStandardSubstance({wastesId:row.wastesId}).then(res => { |
| | | removeStandardSubstance({ wastesId: row.wastesId }).then(res => { |
| | | this.tableLoading = false |
| | | if (res.code === 200){ |
| | | if (res.code === 200) { |
| | | this.$message.success('删除成功') |
| | | this.searchList() |
| | | } |
| | |
| | | }); |
| | | }, |
| | | // 新增,编辑,批准弹框 |
| | | openFormDia (type, row) { |
| | | openFormDia(type, row) { |
| | | this.threeWastesDia = true |
| | | this.$nextTick(() => { |
| | | this.$refs.threeWastesDia.openDia(type, row) |
| | | }) |
| | | }, |
| | | // 导出 |
| | | handleDown (row) { |
| | | exportInternalWastes({wastesId:row.wastesId}).then(res =>{ |
| | | handleDown(row) { |
| | | exportInternalWastes({ wastesId: row.wastesId }).then(res => { |
| | | this.outLoading = false |
| | | const blob = new Blob([res],{ type: 'application/msword' }); |
| | | const blob = new Blob([res], { type: 'application/msword' }); |
| | | this.$download.saveAs(blob, '三废处理导出.docx') |
| | | this.$message.success('导出成功') |
| | | }) |
| | | }, |
| | | closeThreeWastesDia () { |
| | | closeThreeWastesDia() { |
| | | this.threeWastesDia = false |
| | | this.searchList() |
| | | }, |
| | | // 重置查询条件 |
| | | resetSearchForm () { |
| | | resetSearchForm() { |
| | | this.searchForm.remark = ''; |
| | | this.searchList() |
| | | }, |
| | |
| | | <el-form :model="searchForm" ref="searchForm" size="small" :inline="true"> |
| | | <el-form-item label="标准物质名称" prop="name"> |
| | | <el-input size="small" placeholder="请输入" clearable v-model="searchForm.name" |
| | | @keyup.enter.native="searchList"></el-input> |
| | | @keyup.enter.native="searchList"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="生产厂家" prop="factoryManufacturer"> |
| | | <el-input size="small" placeholder="请输入" clearable v-model="searchForm.factoryManufacturer" |
| | | @keyup.enter.native="searchList"></el-input> |
| | | @keyup.enter.native="searchList"></el-input> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button type="primary" icon="el-icon-search" size="mini" @click="searchList">查 询</el-button> |
| | |
| | | </div> |
| | | <div class="table"> |
| | | <lims-table :tableData="tableData" :column="tableColumn" :height="'calc(100vh - 250px)'" @pagination="pagination" |
| | | :page="page" :tableLoading="tableLoading"></lims-table> |
| | | :page="page" :tableLoading="tableLoading"></lims-table> |
| | | </div> |
| | | <form-dia v-if="formDia" ref="formDia" @closeYearDia="closeYearDia"></form-dia> |
| | | <borrow-dia v-if="borrowDia" ref="borrowDia" @closeYearDia="closeBorrowDia"></borrow-dia> |
| | |
| | | mounted() { |
| | | this.searchList() |
| | | }, |
| | | methods :{ |
| | | methods: { |
| | | exportFun() { |
| | | this.outLoading = true |
| | | exportOfStandardSubstanceList(this.searchForm).then(res =>{ |
| | | exportOfStandardSubstanceList(this.searchForm).then(res => { |
| | | this.outLoading = false |
| | | const blob = new Blob([res], {type: 'application/octet-stream'},false); |
| | | const blob = new Blob([res], { type: 'application/octet-stream' }, false); |
| | | this.$download.saveAs(blob, '标准物质清单.xlsx') |
| | | this.$message.success('导出成功') |
| | | }) |
| | | }, |
| | | // 查询列表 |
| | | searchList () { |
| | | searchList() { |
| | | this.tableLoading = true |
| | | getPageStandardSubstance({ |
| | | ...this.page, |
| | | ...this.searchForm |
| | | }).then(res => { |
| | | this.tableLoading = false |
| | | if (res.code === 200){ |
| | | if (res.code === 200) { |
| | | this.tableData = res.data.records |
| | | this.page.total = res.data.total |
| | | } |
| | | }) |
| | | }, |
| | | // 删除 |
| | | delPlan (row) { |
| | | delPlan(row) { |
| | | this.$confirm('此操作将永久删除该数据, 是否继续?', '提示', { |
| | | confirmButtonText: '确定', |
| | | cancelButtonText: '取消', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | this.tableLoading = true |
| | | removeStandardSubstance({id:row.id}).then(res => { |
| | | removeStandardSubstance({ id: row.id }).then(res => { |
| | | this.tableLoading = false |
| | | if (res.code === 200) { |
| | | this.$message.success('删除成功') |
| | |
| | | }); |
| | | }, |
| | | // 新增,编辑,批准弹框 |
| | | openFormDia (type, row) { |
| | | openFormDia(type, row) { |
| | | this.formDia = true |
| | | this.$nextTick(() => { |
| | | this.$refs.formDia.openDia(type, row) |
| | | }) |
| | | }, |
| | | closeYearDia () { |
| | | closeYearDia() { |
| | | this.formDia = false |
| | | this.searchList() |
| | | }, |
| | | // 借用 |
| | | borrow (row) { |
| | | borrow(row) { |
| | | this.borrowDia = true |
| | | this.$nextTick(() => { |
| | | this.$refs.borrowDia.openDia(row) |
| | | }) |
| | | }, |
| | | closeBorrowDia () { |
| | | closeBorrowDia() { |
| | | this.borrowDia = false |
| | | this.searchList() |
| | | }, |
| | | // 归还 |
| | | return (row) { |
| | | return(row) { |
| | | this.returnDia = true |
| | | this.$nextTick(() => { |
| | | this.$refs.returnDia.openDia(row) |
| | | }) |
| | | }, |
| | | closeReturnDia () { |
| | | closeReturnDia() { |
| | | this.returnDia = false |
| | | this.searchList() |
| | | }, |
| | | // 重置查询条件 |
| | | resetSearchForm () { |
| | | resetSearchForm() { |
| | | this.searchForm.name = ''; |
| | | this.searchForm.factoryManufacturer = ''; |
| | | this.searchList() |
| | |
| | | exportFeStandardSubstanceAcceptance().then(res => { |
| | | const blob = new Blob([res], { type: 'application/octet-stream' }); |
| | | this.$download.saveAs(blob, '标准物质验收.xlsx'); |
| | | this.$message.success('导出成功') |
| | | }) |
| | | }, |
| | | // 分页切换 |
| | |
| | | handleDown(row) { |
| | | exportSuperviseDetaillCorrect({ superviseDetailsCorrectId: row.superviseDetailsCorrectId }).then(res => { |
| | | this.outLoading = false |
| | | this.$message.success('导出成功') |
| | | const blob = new Blob([res], { type: 'application/msword' }); |
| | | this.$download.saveAs(blob, '监督纠正措施' + '.docx'); |
| | | }) |
| | |
| | | this.outLoading = false |
| | | const blob = new Blob([res], { type: 'application/octet-stream' }); |
| | | this.$download.saveAs(blob, '文件作废表.xlsx') |
| | | this.$message.success('导出成功') |
| | | }) |
| | | }, |
| | | handleDelete(row) { |
| | |
| | | exportOutManageRecordCheck(this.queryParams).then(res => { |
| | | this.outLoading = false |
| | | if (res.code == 201) return this.$message.error('导出失败') |
| | | this.$message.success('导出成功') |
| | | let url = this.javaApi + '/word/' + res.message |
| | | this.$download.saveAs(url, '文件审批记录') |
| | | }) |
| | |
| | | exportOutManageRecordCancel(this.queryParams).then(res => { |
| | | this.outLoading = false |
| | | if (res.code == 201) return this.$message.error('导出失败') |
| | | this.$message.success('导出成功') |
| | | let url = this.javaApi + '/word/' + res.data |
| | | this.$download.saveAs(url, "作废文件销毁记录"); |
| | | }) |
| | |
| | | exportOutManageRecordIssueRecycle(this.queryParams).then(res => { |
| | | this.outLoading = false |
| | | if (res.code == 201) return this.$message.error('导出失败') |
| | | this.$message.success('导出成功') |
| | | let url = this.javaApi + '/word/' + res.data |
| | | this.$download.saveAs(url, '文件发放与回收记录') |
| | | }) |
| | |
| | | exportOutManageRecordIntervals(this.queryParams).then(res => { |
| | | this.outLoading = false |
| | | if (res.code == 201) return this.$message.error('导出失败') |
| | | this.$message.success('导出成功') |
| | | let url = this.javaApi + 'word/' + res.message |
| | | this.$download.saveAs(url, "文件定期审查记录"); |
| | | }) |
| | |
| | | exportOutManageRecordAudit(this.queryParams).then(res => { |
| | | this.outLoading = false |
| | | if (res.code == 201) return this.$message.error('导出失败') |
| | | this.$message.success('导出成功') |
| | | let url = this.javaApi + '/word/' + res.data |
| | | this.$download.saveAs(url, "文件修订表"); |
| | | }) |
| | |
| | | handleDown(row) { |
| | | exportInternalCheck({ checkId: row.checkId }).then(res => { |
| | | this.outLoading = false |
| | | this.$message.success('导出成功') |
| | | const blob = new Blob([res], { type: 'application/msword' }); |
| | | this.$download.saveAs(blob, '内审检查' + '.docx'); |
| | | }) |
| | |
| | | handleDown(row) { |
| | | exportInternalMeeting({ meetingId: row.meetingId }).then(res => { |
| | | this.outLoading = false |
| | | this.$message.success('导出成功') |
| | | const blob = new Blob([res], { type: 'application/msword' }); |
| | | this.$download.saveAs(blob, '内审会议签到' + '.docx'); |
| | | }) |
| | |
| | | handleDown(row) { |
| | | exportInternalReport({ reportId: row.reportId }).then(res => { |
| | | this.outLoading = false |
| | | this.$message.success('导出成功') |
| | | const blob = new Blob([res], { type: 'application/msword' }); |
| | | this.$download.saveAs(blob, '内审报告' + '.docx'); |
| | | }) |
| | |
| | | handleDown(row) { |
| | | exportInternalCorrect({ correctId: row.correctId }).then(res => { |
| | | this.outLoading = false |
| | | this.$message.success('导出成功') |
| | | const blob = new Blob([res], { type: 'application/msword' }); |
| | | this.$download.saveAs(blob, '内审纠正措施' + '.docx'); |
| | | }) |
| | |
| | | handleDown(row) { |
| | | exportInternalImplement({ implementId: row.implementId }).then(res => { |
| | | this.outLoading = false |
| | | this.$message.success('导出成功') |
| | | const blob = new Blob([res], { type: 'application/msword' }); |
| | | this.$download.saveAs(blob, '内审实施计划' + '.docx'); |
| | | }) |
| | |
| | | handleDown(row) { |
| | | exportInternalPlan({ planId: row.planId }).then(res => { |
| | | this.outLoading = false |
| | | this.$message.success('导出成功') |
| | | const blob = new Blob([res], { type: 'application/msword' }); |
| | | this.$download.saveAs(blob, '内审年度计划' + '.docx'); |
| | | }) |
| | |
| | | openDownloadDia() { |
| | | exportHazardFactorIdentification().then(res => { |
| | | this.outLoading = false |
| | | this.$message.success('导出成功') |
| | | const blob = new Blob([res], { type: 'application/msword' }); |
| | | this.$download.saveAs(blob, '危险因素辨识与风险评价结果一览' + '.docx'); |
| | | }) |
| | |
| | | openDownloadDia() { |
| | | exportSignificantRiskFactors().then(res => { |
| | | this.outLoading = false |
| | | this.$message.success('导出成功') |
| | | const blob = new Blob([res], { type: 'application/msword' }); |
| | | this.$download.saveAs(blob, '重大风险因素分析及控制计划清单' + '.docx'); |
| | | }) |
| | |
| | | <div class="table-tab"> |
| | | <div> |
| | | <ul class="tab"> |
| | | <li v-for="(m, i) in tabList" :key="m.value" :class="{ active: m.value === tabIndex }" @click="handleTab(m)"> |
| | | <li v-for="(m, i) in tabList" :key="m.value" :class="{ active: m.value === tabIndex }" |
| | | @click="handleTab(m)"> |
| | | {{ m.label }}</li> |
| | | </ul> |
| | | </div> |
| | |
| | | </div> |
| | | <!--待下单--> |
| | | <div class="table"> |
| | | <lims-table :tableData="tableData" :column="column" |
| | | v-if="tabIndex === 0" @pagination="pagination" |
| | | :rowClassName="changeRowClass" |
| | | :height="'calc(100vh - 290px)'" key="tableData" |
| | | :page="page" :tableLoading="tableLoading"></lims-table> |
| | | <lims-table :tableData="tableData" :column="column" v-if="tabIndex === 0" @pagination="pagination" |
| | | :rowClassName="changeRowClass" :height="'calc(100vh - 290px)'" key="tableData" :page="page" |
| | | :tableLoading="tableLoading"></lims-table> |
| | | </div> |
| | | <!--检验中--> |
| | | <div class="table"> |
| | | <lims-table :tableData="tableData1" :column="column1" |
| | | v-if="tabIndex === 1" :isSelection="true" |
| | | :rowClassName="changeRowClass" |
| | | :handleSelectionChange="selectMethod" @pagination="pagination1" :height="'calc(100vh - 290px)'" |
| | | key="tableData1" :page="page1" :tableLoading="tableLoading1"></lims-table> |
| | | <lims-table :tableData="tableData1" :column="column1" v-if="tabIndex === 1" :isSelection="true" |
| | | :rowClassName="changeRowClass" :handleSelectionChange="selectMethod" @pagination="pagination1" |
| | | :height="'calc(100vh - 290px)'" key="tableData1" :page="page1" :tableLoading="tableLoading1"></lims-table> |
| | | </div> |
| | | <!--已检验--> |
| | | <div class="table"> |
| | | <lims-table :tableData="tableData2" :column="column2" v-if="tabIndex === 2" :isSelection="true" |
| | | :rowClassName="changeRowClass" |
| | | :handleSelectionChange="selectMethod" @pagination="pagination2" :height="'calc(100vh - 290px)'" |
| | | key="tableData2" :page="page2" :tableLoading="tableLoading2"></lims-table> |
| | | :rowClassName="changeRowClass" :handleSelectionChange="selectMethod" @pagination="pagination2" |
| | | :height="'calc(100vh - 290px)'" key="tableData2" :page="page2" :tableLoading="tableLoading2"></lims-table> |
| | | </div> |
| | | <!--全部--> |
| | | <div class="table"> |
| | | <lims-table :tableData="tableData3" :column="column3" v-if="tabIndex === 3" :isSelection="true" |
| | | :rowClassName="changeRowClass" |
| | | :handleSelectionChange="selectMethod" @pagination="pagination3" :height="'calc(100vh - 290px)'" |
| | | key="tableData3" :page="page3" :tableLoading="tableLoading3"></lims-table> |
| | | :rowClassName="changeRowClass" :handleSelectionChange="selectMethod" @pagination="pagination3" |
| | | :height="'calc(100vh - 290px)'" key="tableData3" :page="page3" :tableLoading="tableLoading3"></lims-table> |
| | | </div> |
| | | <!--季度检验--> |
| | | <div class="table"> |
| | | <lims-table :tableData="tableData4" :column="column4" v-if="tabIndex === 4" :isSelection="true" |
| | | :rowClassName="changeRowClass" |
| | | :handleSelectionChange="selectMethod" @pagination="pagination4" :height="'calc(100vh - 290px)'" |
| | | key="tableData4" :page="page4" :tableLoading="tableLoading4"></lims-table> |
| | | :rowClassName="changeRowClass" :handleSelectionChange="selectMethod" @pagination="pagination4" |
| | | :height="'calc(100vh - 290px)'" key="tableData4" :page="page4" :tableLoading="tableLoading4"></lims-table> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | </el-dialog> |
| | | <!-- 撤销报检 --> |
| | | <el-dialog :visible.sync="declareDialogVisible" title="报检撤销" width="30%"> |
| | | <p style="font-size:16px;color:#333333">批号<span |
| | | style="color:#34BD66">{{ this.insOrderRow.updateBatchNo }}</span>的信息是否<span style="color: #FF4902">撤销报检</span> |
| | | <p style="font-size:16px;color:#333333">批号<span style="color:#34BD66">{{ this.insOrderRow.updateBatchNo |
| | | }}</span>的信息是否<span style="color: #FF4902">撤销报检</span> |
| | | </p> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-row> |
| | |
| | | let entity = this.tabIndex === 3 ? { ...this.entity, isInspect: 2 } : { ...this.entity, state: 2, orderState: 4, } |
| | | delete entity.orderBy |
| | | this.outLoading = true |
| | | rawAllExport({entity: entity}).then(res => { |
| | | rawAllExport({ entity: entity }).then(res => { |
| | | this.outLoading = false |
| | | this.$message.success('导出成功') |
| | | let url = this.javaApi + '/word/' + res.data |
| | | this.$download.saveAs(url, '原材料检测信息导出.xlsx'); |
| | | }) |
| | |
| | | selectMethod(val) { |
| | | this.multipleSelection = val |
| | | }, |
| | | changeRowClass({row, rowIndex}) { |
| | | changeRowClass({ row, rowIndex }) { |
| | | if (row.isFirst == 1) { |
| | | return 'highlight-danger-row-border' |
| | | } |
| | |
| | | <div class="search"> |
| | | <el-form :model="entity" ref="entity" size="small" :inline="true"> |
| | | <el-form-item label="委托编号" prop="entrustCode"> |
| | | <el-input v-model="entity.entrustCode" clearable placeholder="请输入" |
| | | size="small" |
| | | @keyup.enter.native="refreshTable"> |
| | | <el-input v-model="entity.entrustCode" clearable placeholder="请输入" size="small" |
| | | @keyup.enter.native="refreshTable"> |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item label="样品名称" prop="sampleName"> |
| | | <el-input v-model="entity.partNo" clearable placeholder="请输入" size="small" |
| | | @keyup.enter.native="refreshTable"></el-input> |
| | | @keyup.enter.native="refreshTable"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="样品型号" prop="sampleModel"> |
| | | <el-input v-model="entity.sampleModel" clearable placeholder="请输入" |
| | | size="small" @keyup.enter.native="refreshTable()"></el-input> |
| | | <el-input v-model="entity.sampleModel" clearable placeholder="请输入" size="small" |
| | | @keyup.enter.native="refreshTable()"></el-input> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button :icon="!more?'el-icon-arrow-down':'el-icon-arrow-up'" style="color: #3A7BFA;" type="text" @click="more=!more">{{!more?'更多':'收起'}}</el-button> |
| | | <el-button :icon="!more ? 'el-icon-arrow-down' : 'el-icon-arrow-up'" style="color: #3A7BFA;" type="text" |
| | | @click="more = !more">{{ !more ? '更多' : '收起' }}</el-button> |
| | | <el-button size="small" @click="refresh()">重 置</el-button> |
| | | <el-button size="small" type="primary" @click="refreshTable()">查 询</el-button> |
| | | </el-form-item> |
| | | <el-form-item label="样品编号" prop="sampleCode" v-if="more"> |
| | | <el-input v-model="entity.sampleCode" clearable placeholder="请输入" size="small" |
| | | @keyup.enter.native="refreshTable"> |
| | | @keyup.enter.native="refreshTable"> |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item label="下单时间" prop="createTime" v-if="more"> |
| | | <el-date-picker v-model="entity.createTime" clearable |
| | | format="yyyy-MM-dd" |
| | | placeholder="选择日期" |
| | | size="small" |
| | | style="width:100%" |
| | | type="date" |
| | | value-format="yyyy-MM-dd HH:mm:ss"> |
| | | <el-date-picker v-model="entity.createTime" clearable format="yyyy-MM-dd" placeholder="选择日期" size="small" |
| | | style="width:100%" type="date" value-format="yyyy-MM-dd HH:mm:ss"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | <el-form-item label="委托人" prop="prepareUser" v-if="more"> |
| | | <el-input v-model="entity.prepareUser" clearable placeholder="请输入" size="small" |
| | | @keyup.enter.native="refreshTable"> |
| | | @keyup.enter.native="refreshTable"> |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item label="委托单位" prop="company" v-if="more"> |
| | | <el-input v-model="entity.company" clearable placeholder="请输入" size="small" |
| | | @keyup.enter.native="refreshTable"> |
| | | @keyup.enter.native="refreshTable"> |
| | | </el-input> |
| | | </el-form-item> |
| | | </el-form> |
| | |
| | | <div class="table-tab"> |
| | | <div> |
| | | <ul class="tab"> |
| | | <li v-for="(m,i) in tabList" :key="i+'afgh'" :class="{active:i==tabIndex}" @click="handleTab(m,i)">{{m.label}}</li> |
| | | <li v-for="(m, i) in tabList" :key="i + 'afgh'" :class="{ active: i == tabIndex }" @click="handleTab(m, i)">{{ m.label }} |
| | | </li> |
| | | </ul> |
| | | </div> |
| | | <div> |
| | | <el-button v-if="tabIndex === 2 || tabIndex === 3 || tabIndex === 6" size="small" @click="downLoad">导出</el-button> |
| | | <el-button v-if="tabIndex === 2 || tabIndex === 3 || tabIndex === 6" size="small" |
| | | @click="downLoad">导出</el-button> |
| | | <el-button v-if="tabIndex === 1" size="small" type="primary" @click="openAddIns">添加检验项</el-button> |
| | | <el-button size="small" type="primary" @click="openPrint">标签打印</el-button> |
| | | <el-button size="small" type="primary" @click="playOrder(1)">下单</el-button> |
| | | </div> |
| | | </div> |
| | | <div class="table"> |
| | | <lims-table :tableData="tableData" :column="column" |
| | | :isSelection="true" :handleSelectionChange="selectMethod" |
| | | @pagination="pagination" :height="'calc(100vh - 280px)'" :key="upIndex" |
| | | :page="page" :tableLoading="tableLoading"></lims-table> |
| | | <lims-table :tableData="tableData" :column="column" :isSelection="true" :handleSelectionChange="selectMethod" |
| | | @pagination="pagination" :height="'calc(100vh - 280px)'" :key="upIndex" :page="page" |
| | | :tableLoading="tableLoading"></lims-table> |
| | | </div> |
| | | <div> |
| | | <!-- 审核 --> |
| | | <el-dialog :before-close="handleClose" :visible.sync="verifyDialogVisible" title="下单审核" width="30%"> |
| | | <p v-if="!isPass" style="font-size:16px;color:#333333">委托编号<span |
| | | style="color:#34BD66">ZTMS2023071001</span>的信息是否通过</p> |
| | | style="color:#34BD66">ZTMS2023071001</span>的信息是否通过</p> |
| | | <el-form v-else ref="ruleForm" :label-position="labelPosition" :model="formData" label-width="150px"> |
| | | <el-form-item label="请输入样品库位号:"> |
| | | <el-input v-model="formData.specificationModel" size="small" style="width:60%"></el-input> |
| | | </el-form-item> |
| | | </el-form> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-row v-if="!isPass"> |
| | | <el-button @click="handleClose">退 回</el-button> |
| | | <el-button :loading="upLoad" type="primary" @click="submitForm">通 过</el-button> |
| | | </el-row> |
| | | <el-row v-else> |
| | | <el-button @click="handleClose">返 回</el-button> |
| | | <el-button :loading="upLoad" type="primary" @click="submitForm">确 定</el-button> |
| | | </el-row> |
| | | </span> |
| | | <el-row v-if="!isPass"> |
| | | <el-button @click="handleClose">退 回</el-button> |
| | | <el-button :loading="upLoad" type="primary" @click="submitForm">通 过</el-button> |
| | | </el-row> |
| | | <el-row v-else> |
| | | <el-button @click="handleClose">返 回</el-button> |
| | | <el-button :loading="upLoad" type="primary" @click="submitForm">确 定</el-button> |
| | | </el-row> |
| | | </span> |
| | | </el-dialog> |
| | | <!-- 撤销 --> |
| | | <el-dialog :before-close="handleClose" :visible.sync="quashDialogVisible" title="下单撤销" width="30%"> |
| | | <p v-if="!isQuash" style="font-size:16px;color:#333333">委托编号<span |
| | | style="color:#34BD66">{{this.insOrderRow.entrustCode}}</span>的信息是否撤销</p> |
| | | style="color:#34BD66">{{ this.insOrderRow.entrustCode }}</span>的信息是否撤销</p> |
| | | <el-form v-else ref="ruleForm" :label-position="labelPosition" :model="formData" label-width="150px"> |
| | | <el-form-item label="请输入撤销原因:"> |
| | | <el-input v-model="formData.specificationModel" size="small" style="width:60%"></el-input> |
| | | </el-form-item> |
| | | </el-form> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-row v-if="!isQuash"> |
| | | <el-button @click="handleClose">取 消</el-button> |
| | | <el-button :loading="upLoad" type="primary" @click="submitForm">确 定</el-button> |
| | | </el-row> |
| | | <el-row v-else> |
| | | <el-button @click="handleClose">返 回</el-button> |
| | | <el-button :loading="upLoad" type="primary" @click="submitForm">确 定</el-button> |
| | | </el-row> |
| | | </span> |
| | | <el-row v-if="!isQuash"> |
| | | <el-button @click="handleClose">取 消</el-button> |
| | | <el-button :loading="upLoad" type="primary" @click="submitForm">确 定</el-button> |
| | | </el-row> |
| | | <el-row v-else> |
| | | <el-button @click="handleClose">返 回</el-button> |
| | | <el-button :loading="upLoad" type="primary" @click="submitForm">确 定</el-button> |
| | | </el-row> |
| | | </span> |
| | | </el-dialog> |
| | | <!-- 下发 --> |
| | | <el-dialog :before-close="handleClose" :visible.sync="issuedDialogVisible" title="检验分配" width="400px"> |
| | |
| | | <div class="search_label"><span class="required-span">* </span>约定时间:</div> |
| | | <div class="search_input"> |
| | | <el-date-picker v-model="distributeData.appointed" format="yyyy-MM-dd" placeholder="选择日期" size="small" |
| | | style="width: 100%;" type="date" value-format="yyyy-MM-dd"> |
| | | style="width: 100%;" type="date" value-format="yyyy-MM-dd"> |
| | | </el-date-picker> |
| | | </div> |
| | | </el-col> |
| | | <el-col class="search_thing" style="width: 95%;"> |
| | | <div class="search_label"><span class="required-span">* </span>指派人员:</div> |
| | | <div class="search_input"> |
| | | <el-select v-model="distributeData.userId" clearable filterable placeholder="请选择" size="small" style="width: 100%;" @change="changeUser"> |
| | | <el-option v-for="(item,i) in personList" :key="i+'gbnm.'" :label="item.label" :value="item.value"> |
| | | <el-select v-model="distributeData.userId" clearable filterable placeholder="请选择" size="small" |
| | | style="width: 100%;" @change="changeUser"> |
| | | <el-option v-for="(item, i) in personList" :key="i + 'gbnm.'" :label="item.label" :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | | </div> |
| | | </el-col> |
| | | <el-col class="search_thing" style="width: 95%;"> |
| | | <div class="search_label"><span class="required-span" >* </span>试验室:</div> |
| | | <div class="search_label"><span class="required-span">* </span>试验室:</div> |
| | | <div class="search_input"> |
| | | <el-select v-model="distributeData.sonLaboratory" clearable filterable placeholder="请选择" size="small" style="width: 100%;"> |
| | | <el-option v-for="(item,i) in sonLaboratoryList" :key="i+'oooo'" :label="item.label" :value="item.value"> |
| | | <el-select v-model="distributeData.sonLaboratory" clearable filterable placeholder="请选择" size="small" |
| | | style="width: 100%;"> |
| | | <el-option v-for="(item, i) in sonLaboratoryList" :key="i + 'oooo'" :label="item.label" |
| | | :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | | </div> |
| | |
| | | </el-row> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-row> |
| | | <el-button @click="handleClose2">取 消</el-button> |
| | | <el-button :loading="upLoad" type="primary" @click="submitForm2">确 定</el-button> |
| | | </el-row> |
| | | </span> |
| | | <el-row> |
| | | <el-button @click="handleClose2">取 消</el-button> |
| | | <el-button :loading="upLoad" type="primary" @click="submitForm2">确 定</el-button> |
| | | </el-row> |
| | | </span> |
| | | </el-dialog> |
| | | <el-dialog :visible.sync="dataDialogVisible" title="数据查看" width="80%"> |
| | | <div v-if="dataDialogVisible"> |
| | | <lims-table :tableData="tableDataLook" :column="tableDataLookColumn" |
| | | @pagination="tableDataLookPagination" height="500px" key="tableDataLook" |
| | | :page="tableDataLookPage" :tableLoading="tableDataLookTableLoading"></lims-table> |
| | | <lims-table :tableData="tableDataLook" :column="tableDataLookColumn" @pagination="tableDataLookPagination" |
| | | height="500px" key="tableDataLook" :page="tableDataLookPage" |
| | | :tableLoading="tableDataLookTableLoading"></lims-table> |
| | | </div> |
| | | </el-dialog> |
| | | <el-dialog :visible.sync="filesDialogVisible" title="附件查看" width="80%"> |
| | | <div v-if="filesDialogVisible"> |
| | | <lims-table :tableData="tableDataFile" :column="columnFile" |
| | | @pagination="paginationFile" height="500px" key="tableDataFile" |
| | | :page="pageFile" :tableLoading="tableLoadingFile"></lims-table> |
| | | <lims-table :tableData="tableDataFile" :column="columnFile" @pagination="paginationFile" height="500px" |
| | | key="tableDataFile" :page="pageFile" :tableLoading="tableLoadingFile"></lims-table> |
| | | </div> |
| | | </el-dialog> |
| | | <el-dialog :title="deleteTilte" :visible.sync="deleteDialogVisible" width="80%"> |
| | | <div v-if="deleteDialogVisible" style="height: 70vh;overflow-y: auto;"> |
| | | <lims-table :tableData="componentDataDelete" :column="columnDelete" |
| | | :isSelection="true" :handleSelectionChange="selectDelete" |
| | | @pagination="paginationDelete" height="500px" key="componentDataDelete" |
| | | :page="pageDelete" :tableLoading="tableLoadingDelete"></lims-table> |
| | | <lims-table :tableData="componentDataDelete" :column="columnDelete" :isSelection="true" |
| | | :handleSelectionChange="selectDelete" @pagination="paginationDelete" height="500px" |
| | | key="componentDataDelete" :page="pageDelete" :tableLoading="tableLoadingDelete"></lims-table> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-row> |
| | | <el-button @click="handleNo">{{deleteTilte=='撤销'?'取 消':'不通过'}}</el-button> |
| | | <el-button :loading="printLoading" type="primary" @click="submitDelete">{{deleteTilte=='撤销'?'确 定':'通 过'}}</el-button> |
| | | <el-button @click="handleNo">{{ deleteTilte == '撤销' ? '取 消' : '不通过' }}</el-button> |
| | | <el-button :loading="printLoading" type="primary" @click="submitDelete">{{ deleteTilte == '撤销' ? '确 定' : '通 |
| | | 过'}}</el-button> |
| | | </el-row> |
| | | </span> |
| | | </el-dialog> |
| | |
| | | <el-dialog :visible.sync="printDialogVisible" title="标签打印" top="5vh" width="40%"> |
| | | <div v-loading="loadPint" style="width:100%;height: 400px;overflow-y: auto;"> |
| | | <div class="dia_body"> |
| | | <el-checkbox |
| | | v-model="checkAll" |
| | | :indeterminate="isIndeterminate" |
| | | style="margin: 10px 5px;" |
| | | <el-checkbox v-model="checkAll" :indeterminate="isIndeterminate" style="margin: 10px 5px;" |
| | | @change="handleCheckAllChange">全选</el-checkbox> |
| | | <el-checkbox-group v-model="checkIndexList" @change="changePrintCode()"> |
| | | <el-card v-for="(item, i) in qrData" :key="i+'wwwww'" class="box-card" style="margin-bottom: 15px; font-size: 16px !important;"> |
| | | <el-card v-for="(item, i) in qrData" :key="i + 'wwwww'" class="box-card" |
| | | style="margin-bottom: 15px; font-size: 16px !important;"> |
| | | <el-checkbox :key="i" :label="i" style="position: relative;top:-20px;left:5px"><br></el-checkbox> |
| | | <div> |
| | | <el-row style="font-size: 14px;padding-left: 20px;"> |
| | | <el-col style="font-weight: bold;">{{ item.pName }}</el-col> |
| | | <el-col style="font-weight: bold;">{{ item.pName }}</el-col> |
| | | </el-row> |
| | | <div style="display: flex;"> |
| | | <div> |
| | |
| | | </div> |
| | | <div style="margin-left: 50px;width: 100%;"> |
| | | <el-row> |
| | | <el-col style="font-weight: bold;font-size: 14px;"><span>样品编号: </span>{{ item.sampleCode }}</el-col> |
| | | <el-col style="font-weight: bold;font-size: 14px;"><span>样品编号: </span>{{ item.sampleCode |
| | | }}</el-col> |
| | | </el-row> |
| | | <el-row style="margin-top: 1px;font-size: 14px;"> |
| | | <el-col style="font-weight: bold;"><span>委托单号: </span>{{ item.code }}</el-col> |
| | | <el-col style="font-weight: bold;"><span>委托单号: </span>{{ item.code }}</el-col> |
| | | </el-row> |
| | | <el-row style="margin-top: 1px;font-size: 14px;"> |
| | | <el-col style="font-weight: bold;"><span>规格型号: </span>{{ item.model }}</el-col> |
| | | <el-col style="font-weight: bold;"><span>规格型号: </span>{{ item.model }}</el-col> |
| | | </el-row> |
| | | <el-row style="margin-top: 1px;font-size: 14px;"> |
| | | <el-col style="font-weight: bold;"><span>样品名称: </span>{{ item.sample }}</el-col> |
| | | <el-col style="font-weight: bold;"><span>样品名称: </span>{{ item.sample }}</el-col> |
| | | </el-row> |
| | | <el-row class="ellipsis-multiline" style="margin-top: 1px;font-size: 14px;"> |
| | | <el-col style="font-weight: bold;"><span>检测项目: </span>{{ item.item }}</el-col> |
| | | <el-col style="font-weight: bold;"><span>检测项目: </span>{{ item.item }}</el-col> |
| | | </el-row> |
| | | <el-row style="margin-top: 3px;font-size: 14px;"> |
| | | <el-col style="font-weight: bold;display: flex;align-items: center;"><span>样品状态: </span> |
| | | <el-col style="font-weight: bold;display: flex;align-items: center;"><span>样品状态: </span> |
| | | <el-radio-group :value="item.insState" disabled style="margin-top: 7px;margin-left: 4px;"> |
| | | <el-radio :label="0" style="font-weight: bold;margin-right: 7px;">待检</el-radio> |
| | | <el-radio :label="1" style="font-weight: bold;margin-right: 7px;">在检</el-radio> |
| | | <el-radio :label="2" style="font-weight: bold;margin-right: 7px;">已检</el-radio> |
| | | </el-radio-group><el-radio v-model="item.isLeave" :label="1" disabled style="font-weight: bold;margin-top: 7px;">留样</el-radio></el-col> |
| | | </el-radio-group><el-radio v-model="item.isLeave" :label="1" disabled |
| | | style="font-weight: bold;margin-top: 7px;">留样</el-radio></el-col> |
| | | </el-row> |
| | | </div> |
| | | </div> |
| | |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-row> |
| | | <el-button @click="printDialogVisible=false">取 消</el-button> |
| | | <el-button @click="printDialogVisible = false">取 消</el-button> |
| | | <el-button :loading="printLoading" type="primary" @click="submitPrint">打 印</el-button> |
| | | </el-row> |
| | | </span> |
| | | </el-dialog> |
| | | <div class="el-dialog__body" style="overflow-y: auto;margin-top: 0;position: fixed;top: 999px;z-index: 99999;display: none;"> |
| | | <div class="el-dialog__body" |
| | | style="overflow-y: auto;margin-top: 0;position: fixed;top: 999px;z-index: 99999;display: none;"> |
| | | <div id="printMOrder" ref="printMOrder" class="printMOrder"> |
| | | <el-card v-for="(item, i) in checkDataList" :key="i+'uuuuu'" class="box-card" style="font-size: 0.20cm !important;page-break-after: always;color: #000;box-shadow: none;margin: 0 !important;padding: 0 !important;"> |
| | | <el-card v-for="(item, i) in checkDataList" :key="i + 'uuuuu'" class="box-card" |
| | | style="font-size: 0.20cm !important;page-break-after: always;color: #000;box-shadow: none;margin: 0 !important;padding: 0 !important;"> |
| | | <div style="display: flex;"> |
| | | <div> |
| | | <el-col :offset="2" :span="10"> |
| | |
| | | </div> |
| | | <div style="margin-left: 0.32cm;line-height: 0.22cm;"> |
| | | <el-row> |
| | | <el-col class="single-line-ellipsis" style="font-size: 0.20cm;width: 4cm;"><span>样品编号: </span>{{ item.sampleCode }}</el-col> |
| | | <el-col class="single-line-ellipsis" style="font-size: 0.20cm;width: 4cm;"><span>样品编号: </span>{{ |
| | | item.sampleCode }}</el-col> |
| | | </el-row> |
| | | <el-row style="font-size: 0.20cm;"> |
| | | <el-col><span>委托单号: </span>{{ item.code }}</el-col> |
| | |
| | | <el-col><span>规格型号: </span>{{ item.model }}</el-col> |
| | | </el-row> |
| | | <el-row style="font-size: 0.20cm;"> |
| | | <el-col ><span>样品名称: </span>{{ item.sample }}</el-col> |
| | | <el-col><span>样品名称: </span>{{ item.sample }}</el-col> |
| | | </el-row> |
| | | <el-row style="font-size: 0.20cm;width: 4cm;"> |
| | | <el-col class="ellipsis-multiline"><span>检测项目: </span>{{ item.item }}</el-col> |
| | | </el-row> |
| | | <el-row style="margin-top: 0.01cm;font-size: 0.20cm;"> |
| | | <el-col style="display: flex;align-items: center;"><span>样品状态: |
| | | <el-col style="display: flex;align-items: center;"><span>样品状态: |
| | | </span> |
| | | <span style="white-space: nowrap;"><span v-if="item.insState==0">√</span><span v-if="item.insState!=0" class="scor"></span>待检 |
| | | <span v-if="item.insState==1">√</span><span v-if="item.insState!=1" class="scor"></span>在检 |
| | | <span v-if="item.insState==2">√</span><span v-if="item.insState!=2" class="scor"></span>已检 |
| | | <span v-if="item.isLeave==1">√</span><span v-if="item.isLeave!=1" class="scor"></span>留样</span> |
| | | <span style="white-space: nowrap;"><span v-if="item.insState == 0">√</span><span v-if="item.insState != 0" |
| | | class="scor"></span>待检 |
| | | <span v-if="item.insState == 1">√</span><span v-if="item.insState != 1" class="scor"></span>在检 |
| | | <span v-if="item.insState == 2">√</span><span v-if="item.insState != 2" class="scor"></span>已检 |
| | | <span v-if="item.isLeave == 1">√</span><span v-if="item.isLeave != 1" class="scor"></span>留样</span> |
| | | <!-- <el-radio-group :value="item.insState" style="margin-top: 3px;margin-left: 1px;" disabled> |
| | | <el-radio :label="0" style="margin-right: 3px;font-size: 6px;">待检</el-radio> |
| | | <el-radio :label="1" style="margin-right: 3px;font-size: 6px;">在检</el-radio> |
| | |
| | | </span> |
| | | </el-dialog> |
| | | <!--标签打印弹框--> |
| | | <print-dialog v-if="printDialog" ref="printDialog" |
| | | :printDialog="printDialog" |
| | | @closePrintDialog="closePrintDialog"></print-dialog> |
| | | <print-dialog v-if="printDialog" ref="printDialog" :printDialog="printDialog" |
| | | @closePrintDialog="closePrintDialog"></print-dialog> |
| | | <!--添加遗漏检验项弹框--> |
| | | <add-inspection-dia v-if="addInspectionDia" ref="addInspectionDia"></add-inspection-dia> |
| | | <!-- <Inspection v-if="state>0" :key="InspectionKey" :inspectorList="inspectorList" :orderId="orderId"--> |
| | | <!-- :sonLaboratory="sonLaboratory" :state="state"--> |
| | | <!-- :typeSource="typeSource" @goback="goback" @refreshView="refreshView"/>--> |
| | | <!-- <Inspection v-if="state>0" :key="InspectionKey" :inspectorList="inspectorList" :orderId="orderId"--> |
| | | <!-- :sonLaboratory="sonLaboratory" :state="state"--> |
| | | <!-- :typeSource="typeSource" @goback="goback" @refreshView="refreshView"/>--> |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | updateInspected, |
| | | updateOrderEntrustCode, updateStatus, upInsOrder, upPlanUser2 |
| | | } from "@/api/business/productOrder"; |
| | | import {selectUserCondition} from "@/api/performance/class"; |
| | | import {downFile, getFileList, selectSampleAndProductByOrderId} from "@/api/business/rawMaterialOrder"; |
| | | import { selectUserCondition } from "@/api/performance/class"; |
| | | import { downFile, getFileList, selectSampleAndProductByOrderId } from "@/api/business/rawMaterialOrder"; |
| | | // import Inspection from "../do/b1-inspect-order-plan/Inspection.vue"; |
| | | export default { |
| | | components: { |
| | |
| | | tableData: [], |
| | | tableLoading: false, |
| | | column: [ |
| | | {label: '委托编号', prop: 'entrustCode'}, |
| | | {label: '委托单位', prop: 'company'}, |
| | | {label: '样品名称', prop: 'sampleName'}, |
| | | {label: '样品型号', prop: 'sampleModel'}, |
| | | {label: '样品数量', prop: 'sampleNum'}, |
| | | {label: '检验人', prop: 'testingName'}, |
| | | { label: '委托编号', prop: 'entrustCode' }, |
| | | { label: '委托单位', prop: 'company' }, |
| | | { label: '样品名称', prop: 'sampleName' }, |
| | | { label: '样品型号', prop: 'sampleModel' }, |
| | | { label: '样品数量', prop: 'sampleNum' }, |
| | | { label: '检验人', prop: 'testingName' }, |
| | | { |
| | | dataType: 'tag', |
| | | label: '紧急程度', |
| | |
| | | } |
| | | } |
| | | }, |
| | | {label: '备注', prop: 'remark'}, |
| | | {label: '检验进度%', prop: 'insProgress'}, |
| | | {label: '约定时间', prop: 'appointed'}, |
| | | { label: '备注', prop: 'remark' }, |
| | | { label: '检验进度%', prop: 'insProgress' }, |
| | | { label: '约定时间', prop: 'appointed' }, |
| | | { |
| | | dataType: 'tag', |
| | | label: '检验结果', |
| | |
| | | return 'danger' |
| | | } else if (params == 3) { |
| | | return '' |
| | | } else { |
| | | } else { |
| | | return null |
| | | } |
| | | } |
| | | }, |
| | | {label: '下单时间', prop: 'createTime'}, |
| | | {label: '下发时间', prop: 'sendTime'}, |
| | | {label: '退回理由', prop: 'tell'}, |
| | | {label: '委托人', prop: 'prepareUser'}, |
| | | { label: '下单时间', prop: 'createTime' }, |
| | | { label: '下发时间', prop: 'sendTime' }, |
| | | { label: '退回理由', prop: 'tell' }, |
| | | { label: '委托人', prop: 'prepareUser' }, |
| | | { |
| | | dataType: 'action', |
| | | fixed: 'right', |
| | |
| | | this.handlEquashCheck(row); |
| | | }, |
| | | disabled: (row, index) => { |
| | | return (row.state != 1 && row.state != 0)||(this.tabIndex!=1)||row.isRevocation!=1 |
| | | return (row.state != 1 && row.state != 0) || (this.tabIndex != 1) || row.isRevocation != 1 |
| | | }, |
| | | showHide: (row) => { |
| | | return this.tabIndex === 1 |
| | |
| | | } |
| | | ], |
| | | page: { |
| | | total:0, |
| | | size:10, |
| | | current:1 |
| | | total: 0, |
| | | size: 10, |
| | | current: 1 |
| | | }, |
| | | state:0,// 0:台账页,1:检验页面,2检验页面(复核),默认为0,3数据查看 |
| | | state: 0,// 0:台账页,1:检验页面,2检验页面(复核),默认为0,3数据查看 |
| | | InspectionKey: 1, |
| | | inspectorList: [],//检验人员列表 |
| | | sonLaboratory: null,// 0:委托,1:原材料 |
| | | typeSource: null,// 0:成品下单,1:原材料下单 |
| | | deleteTilte:'撤销', |
| | | deleteTilte: '撤销', |
| | | examine: null, |
| | | deleteList:[], |
| | | loadPint:false, |
| | | deleteList: [], |
| | | loadPint: false, |
| | | checkAll: false, |
| | | isIndeterminate: true, |
| | | printLoading:false, |
| | | printDialogVisible:false, |
| | | printLoading: false, |
| | | printDialogVisible: false, |
| | | //是否审核通过 true是 false不是 |
| | | isPass: false, |
| | | //是否审核撤销 true是 false不是 |
| | |
| | | tableDataLookTableLoading: false, // 数据查看弹框 |
| | | tableDataLook: [], |
| | | tableDataLookPage: { |
| | | total:0, |
| | | size:10, |
| | | current:1 |
| | | total: 0, |
| | | size: 10, |
| | | current: 1 |
| | | }, |
| | | tableDataLookColumn: [ |
| | | {label: '样品编号', prop: 'sampleCode'}, |
| | | {label: '样品名称', prop: 'sample'}, |
| | | {label: '检验项分类', prop: 'inspectionItemClass'}, |
| | | {label: '检验项', prop: 'inspectionItem'}, |
| | | {label: '检验子项', prop: 'inspectionItemSubclass'}, |
| | | {label: '单位', prop: 'unit'}, |
| | | {label: '样品型号', prop: 'model'}, |
| | | {label: '条件', prop: 'radius'}, |
| | | {label: '电缆标识', prop: 'cableTag'}, |
| | | {label: '试验要求', prop: 'tell'}, |
| | | {label: '检验结果', prop: 'lastValue'}, |
| | | { label: '样品编号', prop: 'sampleCode' }, |
| | | { label: '样品名称', prop: 'sample' }, |
| | | { label: '检验项分类', prop: 'inspectionItemClass' }, |
| | | { label: '检验项', prop: 'inspectionItem' }, |
| | | { label: '检验子项', prop: 'inspectionItemSubclass' }, |
| | | { label: '单位', prop: 'unit' }, |
| | | { label: '样品型号', prop: 'model' }, |
| | | { label: '条件', prop: 'radius' }, |
| | | { label: '电缆标识', prop: 'cableTag' }, |
| | | { label: '试验要求', prop: 'tell' }, |
| | | { label: '检验结果', prop: 'lastValue' }, |
| | | { |
| | | dataType: 'tag', |
| | | label: '结果判定', |
| | |
| | | return 'danger' |
| | | } else if (params == 3) { |
| | | return '' |
| | | } else { |
| | | } else { |
| | | return '' |
| | | } |
| | | } |
| | |
| | | } |
| | | } |
| | | }, |
| | | {label: '附件名称', prop: 'fileName'}, |
| | | {label: '上传人', prop: 'name'}, |
| | | {label: '上传时间', prop: 'createTime'}, |
| | | { label: '附件名称', prop: 'fileName' }, |
| | | { label: '上传人', prop: 'name' }, |
| | | { label: '上传时间', prop: 'createTime' }, |
| | | { |
| | | dataType: 'action', |
| | | fixed: 'right', |
| | |
| | | } |
| | | ], |
| | | pageFile: { |
| | | total:0, |
| | | size:10, |
| | | current:1 |
| | | total: 0, |
| | | size: 10, |
| | | current: 1 |
| | | }, |
| | | formData: {}, |
| | | formData0: {}, |
| | |
| | | sampleId: '', |
| | | appointed: '', |
| | | userId: '', |
| | | sonLaboratory:'' |
| | | sonLaboratory: '' |
| | | }, |
| | | entrustCodeVisible: false, // 修改委托编号弹框 |
| | | entrustCodeInfo: {}, |
| | | submitCodeLoading: false, |
| | | // 人员列表 |
| | | personList: [], |
| | | orderId:'', |
| | | revocationInsProductIds:'', |
| | | orderId: '', |
| | | revocationInsProductIds: '', |
| | | componentDataDelete: [], |
| | | tableLoadingDelete: false, |
| | | columnDelete: [ |
| | | {label: '样品编号', prop: 'sampleCode'}, |
| | | {label: '检验项分类', prop: 'inspectionItemClass'}, |
| | | {label: '检验项', prop: 'inspectionItem'}, |
| | | {label: '检验项子类', prop: 'inspectionItemSubclass'}, |
| | | {label: '样品分类', prop: 'sampleType'}, |
| | | {label: '样品', prop: 'sample'}, |
| | | {label: '型号', prop: 'model'}, |
| | | {label: '线芯', prop: 'cableTag'}, |
| | | {label: '试验室', prop: 'sonLaboratory'}, |
| | | {label: '要求值', prop: 'ask'}, |
| | | {label: '要求描述', prop: 'tell'}, |
| | | { label: '样品编号', prop: 'sampleCode' }, |
| | | { label: '检验项分类', prop: 'inspectionItemClass' }, |
| | | { label: '检验项', prop: 'inspectionItem' }, |
| | | { label: '检验项子类', prop: 'inspectionItemSubclass' }, |
| | | { label: '样品分类', prop: 'sampleType' }, |
| | | { label: '样品', prop: 'sample' }, |
| | | { label: '型号', prop: 'model' }, |
| | | { label: '线芯', prop: 'cableTag' }, |
| | | { label: '试验室', prop: 'sonLaboratory' }, |
| | | { label: '要求值', prop: 'ask' }, |
| | | { label: '要求描述', prop: 'tell' }, |
| | | ], |
| | | pageDelete: { |
| | | total:0, |
| | | size:10, |
| | | current:1 |
| | | total: 0, |
| | | size: 10, |
| | | current: 1 |
| | | }, |
| | | deleteDialogVisible:false, |
| | | deleteDialogVisible: false, |
| | | upLoad: false, |
| | | tabList: [ |
| | | { |
| | |
| | | tabIndex: 0, |
| | | active: 0, //1:下单,2:查看,3:审核,4:光纤配置,默认为0 |
| | | currentId: null, |
| | | more:false, |
| | | insOrderRow:{}, |
| | | checkIndexList:[], |
| | | checkDataList:[ |
| | | more: false, |
| | | insOrderRow: {}, |
| | | checkIndexList: [], |
| | | checkDataList: [ |
| | | { |
| | | sampleCode:'11111' |
| | | sampleCode: '11111' |
| | | } |
| | | ], |
| | | qrData:[], |
| | | multipleSelection:[], |
| | | sonLaboratoryList:[], |
| | | qrData: [], |
| | | multipleSelection: [], |
| | | sonLaboratoryList: [], |
| | | printDialog: false, |
| | | addInspectionDia: false |
| | | } |
| | | }, |
| | | watch:{ |
| | | printDialogVisible(newVal){ |
| | | if(!newVal){ |
| | | watch: { |
| | | printDialogVisible(newVal) { |
| | | if (!newVal) { |
| | | this.qrData = [] |
| | | this.checkIndexList = [] |
| | | this.checkDataList = [] |
| | |
| | | methods: { |
| | | // 查询列表数据 |
| | | refreshTable() { |
| | | if (this.tabIndex !== 2 && this.tabIndex !==3) { |
| | | if (this.tabIndex !== 2 && this.tabIndex !== 3) { |
| | | this.entity.orderType = '' |
| | | } else { |
| | | if (this.tabIndex === 2) { |
| | |
| | | this.entity.orderType = '抽检' |
| | | } |
| | | } |
| | | const params = {...this.entity, state: this.tabList[this.tabIndex].value} |
| | | const params = { ...this.entity, state: this.tabList[this.tabIndex].value } |
| | | this.tableLoading = true |
| | | selectInsOrderParameter(params).then(res => { |
| | | this.upIndex++ |
| | |
| | | this.resetForm('entity') |
| | | this.refreshTable() |
| | | }, |
| | | pagination (page) { |
| | | pagination(page) { |
| | | this.page.size = page.limit |
| | | this.refreshTable() |
| | | }, |
| | | // 打开修改委托编号弹框 |
| | | changeEntrustCode (row) { |
| | | changeEntrustCode(row) { |
| | | this.entrustCodeVisible = true |
| | | this.entrustCodeInfo = {...row} |
| | | this.entrustCodeInfo = { ...row } |
| | | }, |
| | | // 提交修改委托编号 |
| | | submitCode () { |
| | | submitCode() { |
| | | this.submitCodeLoading = true |
| | | updateOrderEntrustCode({ |
| | | id: this.entrustCodeInfo.id, |
| | |
| | | this.submitCodeLoading = false |
| | | }) |
| | | }, |
| | | selectMethod(val){ |
| | | selectMethod(val) { |
| | | this.multipleSelection = val |
| | | }, |
| | | //选择要打印的二维码 |
| | | changePrintCode(){ |
| | | changePrintCode() { |
| | | let indexList = this.checkIndexList |
| | | let arr = [] |
| | | indexList.forEach(i=>{ |
| | | indexList.forEach(i => { |
| | | arr.push(this.qrData[i]) |
| | | }) |
| | | this.checkDataList = arr |
| | | }, |
| | | //全选 |
| | | handleCheckAllChange(val) { |
| | | if(val){ |
| | | for(var i=0;i<this.qrData.length;i++){ |
| | | if (val) { |
| | | for (var i = 0; i < this.qrData.length; i++) { |
| | | this.checkIndexList.push(i) |
| | | } |
| | | this.checkDataList = this.qrData |
| | | }else{ |
| | | } else { |
| | | this.checkIndexList = [] |
| | | this.checkDataList = [] |
| | | } |
| | | this.isIndeterminate = false; |
| | | }, |
| | | submitPrint(){ |
| | | if(this.checkDataList.length < 1){ |
| | | submitPrint() { |
| | | if (this.checkDataList.length < 1) { |
| | | this.$message.warning("请选择要打印的二维码") |
| | | return |
| | | } |
| | |
| | | PrintJS({ |
| | | printable: 'printMOrder',//页面 |
| | | type: "html",//文档类型 |
| | | maxWidth:360, |
| | | maxWidth: 360, |
| | | style: `@page { |
| | | margin:0; |
| | | size: 400px 75px collapse; |
| | |
| | | height: 75px; |
| | | margin:0; |
| | | }`, |
| | | onPrintDialogClose: this.erexcel=false, |
| | | onPrintDialogClose: this.erexcel = false, |
| | | targetStyles: ["*"], // 使用dom的所有样式,很重要 |
| | | font_size: '0.20cm', |
| | | }); |
| | | }, |
| | | // 打开添加检验项弹框 |
| | | openAddIns () { |
| | | openAddIns() { |
| | | if (this.multipleSelection.length === 0) { |
| | | this.$message.warning('请选择需要添加检验项的数据') |
| | | return |
| | |
| | | }) |
| | | }, |
| | | // 导出记录 |
| | | downLoad () { |
| | | rawAllInsOrderExport({...this.entity}).then(res => { |
| | | this.$message.success('导出成功') |
| | | downLoad() { |
| | | rawAllInsOrderExport({ ...this.entity }).then(res => { |
| | | let url = this.javaApi + '/word/' + res.data |
| | | this.$download.saveAs(url, '委托检测信息导出.xlsx'); |
| | | }).catch(err => { |
| | |
| | | }) |
| | | }, |
| | | // 打开标签打印弹框 |
| | | openPrint () { |
| | | openPrint() { |
| | | if (this.multipleSelection.length > 0) { |
| | | this.printDialog = true |
| | | this.$nextTick(() => { |
| | |
| | | } |
| | | }, |
| | | // 关闭标签打印弹框 |
| | | closePrintDialog () { |
| | | closePrintDialog() { |
| | | this.printDialog = false |
| | | }, |
| | | // 获取指派人员下拉列表 |
| | | getAuthorizedPerson() { |
| | | selectUserCondition({type: 1}).then(res => { |
| | | selectUserCondition({ type: 1 }).then(res => { |
| | | let data = [] |
| | | res.data.forEach(a => { |
| | | data.push({ |
| | |
| | | this.getDataTableList(row) |
| | | }, |
| | | // 查询数据查看列表数据 |
| | | getDataTableList (row) { |
| | | getDataTableList(row) { |
| | | this.tableDataLookTableLoading = true |
| | | selectSampleAndProductByOrderId({id: row.id}).then(res => { |
| | | selectSampleAndProductByOrderId({ id: row.id }).then(res => { |
| | | this.tableDataLookTableLoading = false |
| | | if (res.code === 200) { |
| | | this.tableDataLook = res.data.records |
| | |
| | | this.tableDataLookTableLoading = false |
| | | }) |
| | | }, |
| | | tableDataLookPagination (page) { |
| | | tableDataLookPagination(page) { |
| | | this.tableDataLookPage.size = page.limit |
| | | this.getDataTableList() |
| | | }, |
| | | // 附件查看 |
| | | handleFileLook (row) { |
| | | handleFileLook(row) { |
| | | this.filesDialogVisible = true |
| | | this.getFileList(row) |
| | | }, |
| | | getFileList(row) { |
| | | this.tableLoadingFile = true |
| | | getFileList({insOrderId: row.id}).then(res => { |
| | | getFileList({ insOrderId: row.id }).then(res => { |
| | | this.tableLoadingFile = false |
| | | if (res.code === 200) { |
| | | this.tableDataFile = res.data.records |
| | |
| | | this.tableLoadingFile = false |
| | | }) |
| | | }, |
| | | paginationFile (page) { |
| | | paginationFile(page) { |
| | | this.pageFile.size = page.limit |
| | | this.getFileList() |
| | | }, |
| | | // 附件下载 |
| | | handleDown(row){ |
| | | handleDown(row) { |
| | | downFile({ |
| | | id: row.id, |
| | | }).then(res => { |
| | | if (res.code === 200) { |
| | | let url = ''; |
| | | if(res.data.type==1){ |
| | | url = this.javaApi+'/img/'+res.data.fileUrl |
| | | if (res.data.type == 1) { |
| | | url = this.javaApi + '/img/' + res.data.fileUrl |
| | | this.$download.saveAs(url, row.fileName); |
| | | }else{ |
| | | url = this.javaApi+'/word/'+res.data.fileUrl |
| | | } else { |
| | | url = this.javaApi + '/word/' + res.data.fileUrl |
| | | this.$download.saveAs(url, row.fileName); |
| | | } |
| | | } |
| | |
| | | }, |
| | | // 下载报告 |
| | | download(row) { |
| | | let url = this.javaApi+'/word/' + row.urlS?row.urlS:row.url; |
| | | if(url){ |
| | | let url = this.javaApi + '/word/' + row.urlS ? row.urlS : row.url; |
| | | if (url) { |
| | | this.$download.saveAs(url, this.downLoadInfo.fileName); |
| | | } |
| | | }, |
| | | // 撤销 |
| | | handlEquash(row) { |
| | | if(this.tabIndex!=1){ |
| | | if (this.tabIndex != 1) { |
| | | this.quashDialogVisible = true; |
| | | this.insOrderRow=row |
| | | }else{ |
| | | this.insOrderRow = row |
| | | } else { |
| | | this.orderId = row.id |
| | | this.revocationInsProductIds = '' |
| | | this.deleteTilte = '撤销' |
| | |
| | | this.getDeleteList() |
| | | } |
| | | }, |
| | | getDeleteList () { |
| | | getDeleteList() { |
| | | this.tableLoadingDelete = true |
| | | selectNoProducts({orderId: this.orderId, revocationInsProductIds: this.revocationInsProductIds}).then(res => { |
| | | selectNoProducts({ orderId: this.orderId, revocationInsProductIds: this.revocationInsProductIds }).then(res => { |
| | | this.tableLoadingDelete = false |
| | | this.componentDataDelete = res.data.records |
| | | this.pageDelete.total = res.data.total |
| | |
| | | this.tableLoadingDelete = false |
| | | }) |
| | | }, |
| | | paginationDelete (page) { |
| | | paginationDelete(page) { |
| | | this.pageDelete.size = page.limit |
| | | this.getDeleteList() |
| | | }, |
| | | selectDelete(arr){ |
| | | selectDelete(arr) { |
| | | this.deleteList = arr; |
| | | }, |
| | | submitDelete(){ |
| | | if(this.deleteTilte=='撤销'){ |
| | | if(this.deleteList.length==0){ |
| | | submitDelete() { |
| | | if (this.deleteTilte == '撤销') { |
| | | if (this.deleteList.length == 0) { |
| | | this.$message.error('请选择要撤销的项') |
| | | return |
| | | } |
| | | let ids = this.deleteList.map(m=>m.id).join(',') |
| | | let ids = this.deleteList.map(m => m.id).join(',') |
| | | this.printLoading = true; |
| | | updateInspected({ids: ids,orderId: this.orderId}).then(res=>{ |
| | | if (res.code===200){ |
| | | this.printLoading=false |
| | | this.deleteDialogVisible=false |
| | | updateInspected({ ids: ids, orderId: this.orderId }).then(res => { |
| | | if (res.code === 200) { |
| | | this.printLoading = false |
| | | this.deleteDialogVisible = false |
| | | this.refreshTable('page') |
| | | this.$message.success("更新成功") |
| | | } |
| | | }) |
| | | }else{ |
| | | checkUpdate({orderId: this.orderId, state: 1}).then(res=>{ |
| | | if (res.code===200){ |
| | | this.printLoading=false |
| | | this.deleteDialogVisible=false |
| | | } else { |
| | | checkUpdate({ orderId: this.orderId, state: 1 }).then(res => { |
| | | if (res.code === 200) { |
| | | this.printLoading = false |
| | | this.deleteDialogVisible = false |
| | | this.refreshTable('page') |
| | | this.$message.success("更新成功") |
| | | } |
| | | }) |
| | | } |
| | | }, |
| | | handlEquashCheck(row){ |
| | | handlEquashCheck(row) { |
| | | this.orderId = row.id |
| | | this.revocationInsProductIds = row.revocationInsProductIds |
| | | this.deleteTilte = '撤销审核' |
| | | this.deleteDialogVisible = true; |
| | | }, |
| | | handleNo(){ |
| | | if(this.deleteTilte=='撤销'){ |
| | | this.deleteDialogVisible=false |
| | | }else{ |
| | | checkUpdate({orderId: this.orderId, state: 0}).then(res=>{ |
| | | if (res.code===200){ |
| | | this.printLoading=false |
| | | this.deleteDialogVisible=false |
| | | handleNo() { |
| | | if (this.deleteTilte == '撤销') { |
| | | this.deleteDialogVisible = false |
| | | } else { |
| | | checkUpdate({ orderId: this.orderId, state: 0 }).then(res => { |
| | | if (res.code === 200) { |
| | | this.printLoading = false |
| | | this.deleteDialogVisible = false |
| | | this.refreshTable('page') |
| | | this.$message.success("更新成功") |
| | | } |
| | |
| | | this.distributeData.type = row.type |
| | | }) |
| | | upPlanUser2({ |
| | | orderId:row.id, |
| | | orderId: row.id, |
| | | }).then(res => { |
| | | if (res.code === 200&&res.data.length>0) { |
| | | if (res.code === 200 && res.data.length > 0) { |
| | | this.sonLaboratoryList = []; |
| | | res.data.forEach(m=>{ |
| | | res.data.forEach(m => { |
| | | this.sonLaboratoryList.push({ |
| | | value:m, |
| | | label:m |
| | | value: m, |
| | | label: m |
| | | }) |
| | | }) |
| | | } |
| | |
| | | return |
| | | } |
| | | // |
| | | if(this.distributeData.userId==null||this.distributeData.userId==''){ |
| | | if (this.distributeData.userId == null || this.distributeData.userId == '') { |
| | | this.$message.error('指派人员未填写') |
| | | return |
| | | } |
| | | if(this.distributeData.userId&&(this.distributeData.sonLaboratory==null||this.distributeData.sonLaboratory=='')){ |
| | | if (this.distributeData.userId && (this.distributeData.sonLaboratory == null || this.distributeData.sonLaboratory == '')) { |
| | | this.$message.error('试验室未填写') |
| | | return |
| | | } |
| | |
| | | sampleId: this.distributeData.sampleId, |
| | | appointed: this.distributeData.appointed, |
| | | userId: this.distributeData.userId, |
| | | sonLaboratory:this.distributeData.sonLaboratory, |
| | | sonLaboratory: this.distributeData.sonLaboratory, |
| | | }).then(res => { |
| | | if (res.code === 201) { |
| | | this.upLoad = false |
| | |
| | | }, |
| | | submitForm() { |
| | | this.upLoad = true; |
| | | if (this.tabIndex==1){ |
| | | updateInspected({id: this.insOrderRow.id}).then(res=>{ |
| | | if (res.code===200){ |
| | | this.upLoad=false |
| | | this.quashDialogVisible=false |
| | | if (this.tabIndex == 1) { |
| | | updateInspected({ id: this.insOrderRow.id }).then(res => { |
| | | if (res.code === 200) { |
| | | this.upLoad = false |
| | | this.quashDialogVisible = false |
| | | this.refreshTable() |
| | | this.$message.success("更新成功") |
| | | } |
| | | }) |
| | | }else{ |
| | | updateStatus({id: this.insOrderRow.id}).then(res=>{ |
| | | if (res.code===200){ |
| | | } else { |
| | | updateStatus({ id: this.insOrderRow.id }).then(res => { |
| | | if (res.code === 200) { |
| | | this.upLoad = false |
| | | this.quashDialogVisible = false |
| | | this.refreshTable('page') |
| | |
| | | }, |
| | | // 下单 |
| | | playOrder(num) { |
| | | this.$router.push({ path: "/productOrder/add", query: {examine: 0,active: num, tabIndex: this.tabIndex} }); |
| | | this.$router.push({ path: "/productOrder/add", query: { examine: 0, active: num, tabIndex: this.tabIndex } }); |
| | | }, |
| | | // 审核 |
| | | handleVerify(row) { |
| | | this.$router.push({ path: "/productOrder/add", query: {examine: 1,active: 3, currentId: row.id} }); |
| | | this.$router.push({ path: "/productOrder/add", query: { examine: 1, active: 3, currentId: row.id } }); |
| | | }, |
| | | handleTab(m, i) { |
| | | this.tabIndex = i; |
| | | this.refreshTable() |
| | | }, |
| | | // 查看检验数据 |
| | | viewInspectInfo (row) { |
| | | viewInspectInfo(row) { |
| | | //当前检验任务的检验人列表 |
| | | let inspectorList = [] |
| | | if(row.userName){ |
| | | if (row.userName) { |
| | | inspectorList = row.userName.split(',') |
| | | } |
| | | let user = JSON.parse(localStorage.getItem('user')) |
| | | if(user){ |
| | | if (user) { |
| | | inspectorList.push(user.name) |
| | | } |
| | | this.inspectorList = inspectorList |
| | |
| | | this.refreshTable('page') |
| | | }, |
| | | // 刷新页面 |
| | | refreshView () { |
| | | refreshView() { |
| | | this.InspectionKey++ |
| | | }, |
| | | changeUser(){ |
| | | if(this.sonLaboratoryList.length>0){ |
| | | changeUser() { |
| | | if (this.sonLaboratoryList.length > 0) { |
| | | this.distributeData.sonLaboratory = this.sonLaboratoryList[0].value |
| | | } |
| | | }, |
| | | handleDelete(row){ |
| | | handleDelete(row) { |
| | | this.$confirm('是否删除当前数据?', "警告", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning" |
| | | }).then(() => { |
| | | delInsOrder({insOrderId: row.id}).then(res => { |
| | | delInsOrder({ insOrderId: row.id }).then(res => { |
| | | this.$message.success('删除成功') |
| | | this.refreshTable() |
| | | }).catch(e => { |
| | | this.$message.error('删除失败') |
| | | }) |
| | | }).catch(() => {}) |
| | | }).catch(() => { }) |
| | | } |
| | | } |
| | | } |
| | |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | } |
| | | |
| | | .tab { |
| | | list-style-type: none; |
| | | display: flex; |
| | |
| | | border-color: #3A7BFA; |
| | | color: #3A7BFA; |
| | | } |
| | | .box-card >>>.el-radio__inner { |
| | | |
| | | .box-card>>>.el-radio__inner { |
| | | border-radius: 2px !important; |
| | | } |
| | | .box-card >>>.el-radio__input.is-checked .el-radio__inner::after { |
| | | |
| | | .box-card>>>.el-radio__input.is-checked .el-radio__inner::after { |
| | | content: ''; |
| | | width: 8px; |
| | | height: 3px; |
| | |
| | | border-radius: 0px; |
| | | background: none; |
| | | } |
| | | >>>.el-radio__label{ |
| | | |
| | | >>>.el-radio__label { |
| | | color: #000 !important; |
| | | } |
| | | .el-dialog__body >>>.el-radio__label{ |
| | | |
| | | .el-dialog__body>>>.el-radio__label { |
| | | font-size: 8px; |
| | | } |
| | | .el-dialog__body >>>.el-radio__input.is-checked .el-radio__inner::after { |
| | | |
| | | .el-dialog__body>>>.el-radio__input.is-checked .el-radio__inner::after { |
| | | content: ''; |
| | | width: 4px; |
| | | height: 3px; |
| | |
| | | border-radius: 0px; |
| | | background: none; |
| | | } |
| | | >>>.el-radio__input.is-disabled.is-checked .el-radio__inner{ |
| | | |
| | | >>>.el-radio__input.is-disabled.is-checked .el-radio__inner { |
| | | background: #3A7BFA; |
| | | } |
| | | .el-dialog__body >>>.el-radio__input.is-disabled.is-checked .el-radio__inner{ |
| | | |
| | | .el-dialog__body>>>.el-radio__input.is-disabled.is-checked .el-radio__inner { |
| | | background: transparent; |
| | | } |
| | | .el-dialog__body >>>.el-radio__inner{ |
| | | |
| | | .el-dialog__body>>>.el-radio__inner { |
| | | width: 8px !important; |
| | | height: 8px !important; |
| | | } |
| | | .el-dialog__body >>>.el-radio__label{ |
| | | |
| | | .el-dialog__body>>>.el-radio__label { |
| | | padding-left: 2px !important; |
| | | } |
| | | .el-dialog__body >>>.el-card__body{ |
| | | |
| | | .el-dialog__body>>>.el-card__body { |
| | | padding: 0 !important; |
| | | } |
| | | .el-dialog__body >>>.el-card { |
| | | |
| | | .el-dialog__body>>>.el-card { |
| | | border: none; |
| | | } |
| | | .el-dialog__body >>>.el-radio__input.is-disabled .el-radio__inner{ |
| | | |
| | | .el-dialog__body>>>.el-radio__input.is-disabled .el-radio__inner { |
| | | border-color: #000 !important; |
| | | } |
| | | .el-dialog__body >>>.el-radio__input.is-disabled.is-checked .el-radio__inner{ |
| | | |
| | | .el-dialog__body>>>.el-radio__input.is-disabled.is-checked .el-radio__inner { |
| | | border: none !important; |
| | | } |
| | | .scor{ |
| | | |
| | | .scor { |
| | | width: 0.01cm; |
| | | height: 0.01cm; |
| | | border-radius: 1px; |
| | | border: 1px solid #000; |
| | | display: inline-block; |
| | | } |
| | | |
| | | .ellipsis-multiline { |
| | | display: -webkit-box; |
| | | -webkit-line-clamp: 2; |
| | |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | word-wrap: break-word; |
| | | max-height: 3.0em; /* 高度为字体大小的两倍 */ |
| | | line-height: 1.5em; /* 行高 */ |
| | | height: 3.0em; /* 高度为行高的两倍 */ |
| | | max-height: 3.0em; |
| | | /* 高度为字体大小的两倍 */ |
| | | line-height: 1.5em; |
| | | /* 行高 */ |
| | | height: 3.0em; |
| | | /* 高度为行高的两倍 */ |
| | | } |
| | | </style> |
| | |
| | | <div style="display: flex;justify-content: space-between"> |
| | | <el-form :model="entity" ref="entity" size="small" :inline="true"> |
| | | <el-form-item label="编号" prop="quarterNo" v-show="tabIndex === 0"> |
| | | <el-input v-model="entity.quarterNo" clearable placeholder="请输入" |
| | | size="small" |
| | | @keyup.enter.native="refreshTable"> |
| | | <el-input v-model="entity.quarterNo" clearable placeholder="请输入" size="small" |
| | | @keyup.enter.native="refreshTable"> |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item> |
| | |
| | | <div> |
| | | <div class="table"> |
| | | <ul class="tab"> |
| | | <li v-for="(m,i) in tabList" :key="i" :class="{active:i===tabIndex}" @click="handleTab(m,i)">{{m.label}}</li> |
| | | <li v-for="(m, i) in tabList" :key="i" :class="{ active: i === tabIndex }" @click="handleTab(m, i)">{{ m.label }}</li> |
| | | </ul> |
| | | <!--季度--> |
| | | <lims-table :tableData="tableData" :column="column" v-if="tabIndex === 0" |
| | | @pagination="pagination" :height="'calc(100vh - 290px)'" |
| | | :page="page" :tableLoading="tableLoading"></lims-table> |
| | | <lims-table :tableData="tableData" :column="column" v-if="tabIndex === 0" @pagination="pagination" |
| | | :height="'calc(100vh - 290px)'" :page="page" :tableLoading="tableLoading"></lims-table> |
| | | <!--年度--> |
| | | <lims-table :tableData="tableData1" :column="column1" v-if="tabIndex === 1" |
| | | @pagination="pagination1" :height="'calc(100vh - 290px)'" |
| | | key="tableData1" :page="page1" :tableLoading="tableLoading1"></lims-table> |
| | | <lims-table :tableData="tableData1" :column="column1" v-if="tabIndex === 1" @pagination="pagination1" |
| | | :height="'calc(100vh - 290px)'" key="tableData1" :page="page1" :tableLoading="tableLoading1"></lims-table> |
| | | </div> |
| | | </div> |
| | | <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" :visible.sync="yearSampleDia" title="年度抽样" width="70%" |
| | | @close="closeYearSampleDia"> |
| | | <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" :visible.sync="yearSampleDia" title="年度抽样" |
| | | width="70%" @close="closeYearSampleDia"> |
| | | <div style="display: flex;align-items: center;justify-content: space-between;margin-bottom: 10px"> |
| | | <div style="width: 30%;display: flex;align-items: center;" > |
| | | <el-input v-if="operationType !=='view'" v-model="currentYear" size="small"/> |
| | | <span v-if="operationType ==='view'" style="width: 160px;font-size: 18px;font-weight: 600">{{currentYear}}</span> |
| | | <div style="width: 30%;display: flex;align-items: center;"> |
| | | <el-input v-if="operationType !== 'view'" v-model="currentYear" size="small" /> |
| | | <span v-if="operationType === 'view'" |
| | | style="width: 160px;font-size: 18px;font-weight: 600">{{ currentYear }}</span> |
| | | </div> |
| | | <div v-if="operationType !== 'view'"> |
| | | <div v-if="operationType !== 'view'"> |
| | | <el-button size="small" type="primary" @click="addQuarter">添加</el-button> |
| | | <el-button size="small" type="danger" @click="clearTable">清空</el-button> |
| | | </div> |
| | |
| | | <el-table-column label="类别" prop="yearType" width="240"> |
| | | <template slot-scope="{row}"> |
| | | <template v-if="operationType !== 'view'"> |
| | | <el-input v-model="row.yearType" size="small" type="textarea" :rows="4"/> |
| | | <el-input v-model="row.yearType" size="small" type="textarea" :rows="4" /> |
| | | </template> |
| | | <template v-else> |
| | | <span size="small">{{row.yearType}}</span> |
| | | <span size="small">{{ row.yearType }}</span> |
| | | </template> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column header-align="center" label="1" prop="january" width="160"> |
| | | <template slot-scope="{row}"> |
| | | <template v-if="operationType !== 'view'"> |
| | | <el-input v-model="row.january" size="small" type="textarea" :rows="4"/> |
| | | <el-input v-model="row.january" size="small" type="textarea" :rows="4" /> |
| | | </template> |
| | | <template v-else> |
| | | <span size="small">{{row.january}}</span> |
| | | <span size="small">{{ row.january }}</span> |
| | | </template> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column header-align="center" label="2" prop="february" width="160"> |
| | | <template slot-scope="{row}"> |
| | | <template v-if="operationType !== 'view'"> |
| | | <el-input v-model="row.february" size="small" type="textarea" :rows="4"/> |
| | | <el-input v-model="row.february" size="small" type="textarea" :rows="4" /> |
| | | </template> |
| | | <template v-else> |
| | | <span size="small">{{row.february}}</span> |
| | | <span size="small">{{ row.february }}</span> |
| | | </template> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column header-align="center" label="3" prop="march" width="160"> |
| | | <template slot-scope="{row}"> |
| | | <template v-if="operationType !== 'view'"> |
| | | <el-input v-model="row.march" size="small" type="textarea" :rows="4"/> |
| | | <el-input v-model="row.march" size="small" type="textarea" :rows="4" /> |
| | | </template> |
| | | <template v-else> |
| | | <span size="small">{{row.march}}</span> |
| | | <span size="small">{{ row.march }}</span> |
| | | </template> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column header-align="center" label="4" prop="april" width="160"> |
| | | <template slot-scope="{row}"> |
| | | <template v-if="operationType !== 'view'"> |
| | | <el-input v-model="row.april" size="small" type="textarea" :rows="4"/> |
| | | <el-input v-model="row.april" size="small" type="textarea" :rows="4" /> |
| | | </template> |
| | | <template v-else> |
| | | <span size="small">{{row.april}}</span> |
| | | <span size="small">{{ row.april }}</span> |
| | | </template> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column header-align="center" label="5" prop="may" width="160"> |
| | | <template slot-scope="{row}"> |
| | | <template v-if="operationType !== 'view'"> |
| | | <el-input v-model="row.may" size="small" type="textarea" :rows="4"/> |
| | | <el-input v-model="row.may" size="small" type="textarea" :rows="4" /> |
| | | </template> |
| | | <template v-else> |
| | | <span size="small">{{row.may}}</span> |
| | | <span size="small">{{ row.may }}</span> |
| | | </template> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column header-align="center" label="6" prop="june" width="160"> |
| | | <template slot-scope="{row}"> |
| | | <template v-if="operationType !== 'view'"> |
| | | <el-input v-model="row.june" size="small" type="textarea" :rows="4"/> |
| | | <el-input v-model="row.june" size="small" type="textarea" :rows="4" /> |
| | | </template> |
| | | <template v-else> |
| | | <span size="small">{{row.june}}</span> |
| | | <span size="small">{{ row.june }}</span> |
| | | </template> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column header-align="center" label="7" prop="july" width="160"> |
| | | <template slot-scope="{row}"> |
| | | <template v-if="operationType !== 'view'"> |
| | | <el-input v-model="row.july" size="small" type="textarea" :rows="4"/> |
| | | <el-input v-model="row.july" size="small" type="textarea" :rows="4" /> |
| | | </template> |
| | | <template v-else> |
| | | <span size="small">{{row.july}}</span> |
| | | <span size="small">{{ row.july }}</span> |
| | | </template> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column header-align="center" label="8" prop="august" width="160"> |
| | | <template slot-scope="{row}"> |
| | | <template v-if="operationType !== 'view'"> |
| | | <el-input v-model="row.august" size="small" type="textarea" :rows="4"/> |
| | | <el-input v-model="row.august" size="small" type="textarea" :rows="4" /> |
| | | </template> |
| | | <template v-else> |
| | | <span size="small">{{row.august}}</span> |
| | | <span size="small">{{ row.august }}</span> |
| | | </template> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column header-align="center" label="9" prop="september" width="160"> |
| | | <template slot-scope="{row}"> |
| | | <template v-if="operationType !== 'view'"> |
| | | <el-input v-model="row.september" size="small" type="textarea" :rows="4"/> |
| | | <el-input v-model="row.september" size="small" type="textarea" :rows="4" /> |
| | | </template> |
| | | <template v-else> |
| | | <span size="small">{{row.september}}</span> |
| | | <span size="small">{{ row.september }}</span> |
| | | </template> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column header-align="center" label="10" prop="october" width="160"> |
| | | <template slot-scope="{row}"> |
| | | <template v-if="operationType !== 'view'"> |
| | | <el-input v-model="row.october" size="small" type="textarea" :rows="4"/> |
| | | <el-input v-model="row.october" size="small" type="textarea" :rows="4" /> |
| | | </template> |
| | | <template v-else> |
| | | <span size="small">{{row.october}}</span> |
| | | <span size="small">{{ row.october }}</span> |
| | | </template> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column header-align="center" label="11" prop="november" width="160"> |
| | | <template slot-scope="{row}"> |
| | | <template v-if="operationType !== 'view'"> |
| | | <el-input v-model="row.november" size="small" type="textarea" :rows="4"/> |
| | | <el-input v-model="row.november" size="small" type="textarea" :rows="4" /> |
| | | </template> |
| | | <template v-else> |
| | | <span size="small">{{row.november}}</span> |
| | | <span size="small">{{ row.november }}</span> |
| | | </template> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column header-align="center" label="12" prop="december" width="160"> |
| | | <template slot-scope="{row}"> |
| | | <template v-if="operationType !== 'view'"> |
| | | <el-input v-model="row.december" size="small" type="textarea" :rows="4"/> |
| | | <el-input v-model="row.december" size="small" type="textarea" :rows="4" /> |
| | | </template> |
| | | <template v-else> |
| | | <span size="small">{{row.december}}</span> |
| | | <span size="small">{{ row.december }}</span> |
| | | </template> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column v-if="operationType !== 'view'" fixed="right" label="操作" width="100"> |
| | | <el-table-column v-if="operationType !== 'view'" fixed="right" label="操作" width="100"> |
| | | <template slot-scope="scope"> |
| | | <el-button size="small" style="color: #f56c6c" type="text" @click="deleteScope(scope.$index)">删除</el-button> |
| | | <el-button size="small" style="color: #f56c6c" type="text" |
| | | @click="deleteScope(scope.$index)">删除</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </div> |
| | | <div style="display: flex;align-items: center;margin-top: 10px"> |
| | | <span style="width: 70px">注意事项:</span> |
| | | <el-input v-model="yearSampleForm.tableRemark" :disabled="operationType === 'view'" size="small" style="width: 50%" type="textarea"></el-input> |
| | | <el-input v-model="yearSampleForm.tableRemark" :disabled="operationType === 'view'" size="small" |
| | | style="width: 50%" type="textarea"></el-input> |
| | | </div> |
| | | <div style="display: flex;align-items: center;margin-top: 10px"> |
| | | <span style="width: 70px">备注:</span> |
| | | <el-input v-model="yearSampleForm.remark" :disabled="operationType === 'view'" size="small" style="width: 50%" type="textarea"></el-input> |
| | | <el-input v-model="yearSampleForm.remark" :disabled="operationType === 'view'" size="small" style="width: 50%" |
| | | type="textarea"></el-input> |
| | | </div> |
| | | <div v-if="operationType !== 'add'"> |
| | | <el-form ref="form" :model="editYearFormRow" label-width="70px"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="编制人:"> |
| | | <el-select v-model="editYearFormRow.writeUser" :disabled="operationType !=='edit'" placeholder="请选择" size="small" style="width: 100%"> |
| | | <el-select v-model="editYearFormRow.writeUser" :disabled="operationType !== 'edit'" placeholder="请选择" |
| | | size="small" style="width: 100%"> |
| | | <el-option v-for="item in userList" :key="item.id" :label="item.name" :value="item.id"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="会签人:"> |
| | | <el-select v-model="editYearFormRow.countersignUser" :disabled="operationType !=='edit'" multiple placeholder="请选择" size="small" style="width: 100%"> |
| | | <el-select v-model="editYearFormRow.countersignUser" :disabled="operationType !== 'edit'" multiple |
| | | placeholder="请选择" size="small" style="width: 100%"> |
| | | <el-option v-for="item in userList" :key="item.id" :label="item.name" :value="item.id"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="审核人:"> |
| | | <el-select v-model="editYearFormRow.examineUser" :disabled="operationType !=='edit'" placeholder="请选择" size="small" style="width: 100%"> |
| | | <el-select v-model="editYearFormRow.examineUser" :disabled="operationType !== 'edit'" placeholder="请选择" |
| | | size="small" style="width: 100%"> |
| | | <el-option v-for="item in userList" :key="item.id" :label="item.name" :value="item.id"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="批准人:"> |
| | | <el-select v-model="editYearFormRow.ratifyUser" :disabled="operationType !=='edit'" placeholder="请选择" size="small" style="width: 100%"> |
| | | <el-select v-model="editYearFormRow.ratifyUser" :disabled="operationType !== 'edit'" placeholder="请选择" |
| | | size="small" style="width: 100%"> |
| | | <el-option v-for="item in userList" :key="item.id" :label="item.name" :value="item.id"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | |
| | | finalReportSpotCheckYear, |
| | | getQuarterPage, getSpotCheckYear, getSpotCheckYearPage, updateSpotCheckYear |
| | | } from "@/api/business/productSamplingInfo"; |
| | | import {selectUserCondition} from "@/api/performance/class"; |
| | | import { selectUserCondition } from "@/api/performance/class"; |
| | | |
| | | export default { |
| | | name: "b1-product-sampling-info", |
| | | // import 引入的组件需要注入到对象中才能使用 |
| | | components: {limsTable, AddQuarterItem}, |
| | | components: { limsTable, AddQuarterItem }, |
| | | data() { |
| | | // 这里存放数据 |
| | | return { |
| | |
| | | tableData: [], |
| | | tableLoading: false, |
| | | column: [ |
| | | {label: '编号', prop: 'quarterNo'}, |
| | | {label: '备注', prop: 'remark'}, |
| | | {label: '创建人', prop: 'createUserName'}, |
| | | {label: '创建时间', prop: 'createTime'}, |
| | | { label: '编号', prop: 'quarterNo' }, |
| | | { label: '备注', prop: 'remark' }, |
| | | { label: '创建人', prop: 'createUserName' }, |
| | | { label: '创建时间', prop: 'createTime' }, |
| | | { |
| | | dataType: 'action', |
| | | label: '操作', |
| | |
| | | } |
| | | ], |
| | | page: { |
| | | total:0, |
| | | size:10, |
| | | current:1 |
| | | total: 0, |
| | | size: 10, |
| | | current: 1 |
| | | }, |
| | | tableData1: [], |
| | | tableLoading1: false, |
| | |
| | | this.getSpotCheckYearPageList() |
| | | } |
| | | }, |
| | | getQuarterPageList () { |
| | | getQuarterPageList() { |
| | | this.tableLoading = true |
| | | getQuarterPage({ |
| | | ...this.page,...this.entity |
| | | ...this.page, ...this.entity |
| | | }).then(res => { |
| | | this.tableLoading = false |
| | | this.page.total = res.data.total |
| | |
| | | this.tableLoading = false |
| | | }) |
| | | }, |
| | | getSpotCheckYearPageList () { |
| | | getSpotCheckYearPageList() { |
| | | this.tableLoading1 = true |
| | | getSpotCheckYearPage({ |
| | | ...this.page1 |
| | |
| | | this.resetForm('entity') |
| | | this.refreshTable() |
| | | }, |
| | | pagination (page) { |
| | | pagination(page) { |
| | | this.page.size = page.limit |
| | | this.refreshTable() |
| | | }, |
| | | pagination1 (page) { |
| | | pagination1(page) { |
| | | this.page1.size = page.limit |
| | | this.refreshTable() |
| | | }, |
| | | // 编辑季度抽样 |
| | | editForm (row) { |
| | | editForm(row) { |
| | | this.$refs.addQuarterItem.openDia(row, 'edit') |
| | | }, |
| | | // 查看季度抽样 |
| | | viewQuarterInfo (row) { |
| | | viewQuarterInfo(row) { |
| | | this.$refs.addQuarterItem.openDia(row, 'view') |
| | | }, |
| | | // 删除季度抽样 |
| | | deleteQuarterInfo (row) { |
| | | deleteQuarterInfo(row) { |
| | | this.$confirm('是否删除当前数据?', "警告", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning" |
| | | }).then(() => { |
| | | deleteQuarter({quarterId: row.quarterId}).then(res => { |
| | | deleteQuarter({ quarterId: row.quarterId }).then(res => { |
| | | if (res.code === 200) { |
| | | this.$message.success('删除成功') |
| | | this.refreshTable() |
| | | } |
| | | }) |
| | | }).catch(() => {}) |
| | | }).catch(() => { }) |
| | | }, |
| | | // 导出 |
| | | handleDown (row) { |
| | | handleDown(row) { |
| | | let randomNum = Math.random(); |
| | | finalReportQuarter({quarterId: row.quarterId, random: randomNum}).then(res => { |
| | | finalReportQuarter({ quarterId: row.quarterId, random: randomNum }).then(res => { |
| | | this.outLoading = false |
| | | const blob = new Blob([res], { type: 'application/octet-stream' }); |
| | | this.$download.saveAs(blob, '季度抽样信息导出.docx') |
| | | this.$message.success('导出成功') |
| | | }) |
| | | }, |
| | | // 年度下载 |
| | | download(row) { |
| | | finalReportSpotCheckYear({yearId: row.yearId}).then(res => { |
| | | finalReportSpotCheckYear({ yearId: row.yearId }).then(res => { |
| | | this.outLoading = false |
| | | const blob = new Blob([res], { type: 'application/octet-stream' }); |
| | | this.$download.saveAs(blob, row.yearHead + '.docx') |
| | | this.$message.success('导出成功') |
| | | }) |
| | | }, |
| | | // 删除年度抽样 |
| | | deleteYearInfo (row) { |
| | | deleteYearInfo(row) { |
| | | this.$confirm('是否删除当前数据?', "警告", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning" |
| | | }).then(() => { |
| | | deleteSpotCheckYear({yearId: row.yearId}).then(res => { |
| | | deleteSpotCheckYear({ yearId: row.yearId }).then(res => { |
| | | if (res.code === 200) { |
| | | this.$message.success('删除成功') |
| | | this.refreshTable() |
| | | } |
| | | }) |
| | | }).catch(() => {}) |
| | | }).catch(() => { }) |
| | | }, |
| | | // 查看年度详情 |
| | | viewYearInfo (row) { |
| | | viewYearInfo(row) { |
| | | this.operationType = 'view' |
| | | this.getUserList() |
| | | this.yearSampleDia = true |
| | | this.yearRow = row |
| | | getSpotCheckYear({yearId: row.yearId}).then(res => { |
| | | getSpotCheckYear({ yearId: row.yearId }).then(res => { |
| | | if (res.code === 200) { |
| | | this.currentYear = res.data.yearHead |
| | | this.yearItems = res.data.yearItems |
| | |
| | | }) |
| | | }, |
| | | // 编辑年度抽样 |
| | | editYearForm (row) { |
| | | editYearForm(row) { |
| | | this.operationType = 'edit' |
| | | this.getUserList() |
| | | this.yearSampleDia = true |
| | | getSpotCheckYear({yearId: row.yearId}).then(res => { |
| | | getSpotCheckYear({ yearId: row.yearId }).then(res => { |
| | | if (res.code === 200) { |
| | | this.currentYear = res.data.yearHead |
| | | this.yearItems = res.data.yearItems |
| | |
| | | }) |
| | | }, |
| | | // 提交年度计划 |
| | | handleSample () { |
| | | handleSample() { |
| | | if (this.operationType === 'add') { |
| | | this.yearSampleForm.yearItems = JSON.parse(JSON.stringify(this.yearItems)) |
| | | this.yearSampleForm.yearHead = this.currentYear |
| | |
| | | } |
| | | }) |
| | | } else { |
| | | const params = {...this.editYearFormRow} |
| | | const params = { ...this.editYearFormRow } |
| | | if (params.countersignUser != null) { |
| | | params.countersignUser = params.countersignUser.join(',') |
| | | } |
| | |
| | | }) |
| | | } |
| | | }, |
| | | yearSample (type) { |
| | | yearSample(type) { |
| | | this.operationType = type |
| | | const currentDate = new Date(); |
| | | this.yearSampleDia = true |
| | | this.currentYear = currentDate.getFullYear() + '年年度抽检计划' |
| | | }, |
| | | // 添加年度计划 |
| | | addQuarter () { |
| | | addQuarter() { |
| | | this.yearItems.push({}) |
| | | }, |
| | | // 清空抽样计划 |
| | | clearTable () { |
| | | clearTable() { |
| | | this.yearItems = [] |
| | | }, |
| | | // 手动删除 |
| | | deleteScope (index) { |
| | | deleteScope(index) { |
| | | this.yearItems.splice(index, 1) |
| | | }, |
| | | // 切换下单tab表格 |
| | |
| | | } |
| | | this.refreshTable() |
| | | }, |
| | | closeYearSampleDia () { |
| | | closeYearSampleDia() { |
| | | this.yearSampleForm = { |
| | | tableRemark: '', |
| | | remark: '' |
| | |
| | | this.yearItems = [] |
| | | this.yearSampleDia = false |
| | | }, |
| | | getStyle(){ |
| | | return 'height: calc(100% - '+'44'+'px)' |
| | | getStyle() { |
| | | return 'height: calc(100% - ' + '44' + 'px)' |
| | | }, |
| | | getUserList(){ |
| | | getUserList() { |
| | | selectUserCondition({ type: 0 }).then((res) => { |
| | | this.userList = res.data; |
| | | }) |
| | |
| | | <el-form :model="componentData" ref="componentData" size="small" :inline="true"> |
| | | <el-row> |
| | | <el-form-item label="批号" prop="updateBatchNo"> |
| | | <el-input v-model="componentData.updateBatchNo" clearable placeholder="请输入" |
| | | size="small" |
| | | @keyup.enter.native="refreshTable"></el-input> |
| | | <el-input v-model="componentData.updateBatchNo" clearable placeholder="请输入" size="small" |
| | | @keyup.enter.native="refreshTable"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="零件号" prop="partNo"> |
| | | <el-input v-model="componentData.partNo" clearable placeholder="请输入" |
| | | size="small" |
| | | @keyup.enter.native="refreshTable"> |
| | | <el-input v-model="componentData.partNo" clearable placeholder="请输入" size="small" |
| | | @keyup.enter.native="refreshTable"> |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item label="零件描述" prop="partDesc"> |
| | | <el-input v-model="componentData.partDesc" clearable placeholder="请输入" |
| | | size="small" |
| | | @keyup.enter.native="refreshTable"> |
| | | <el-input v-model="componentData.partDesc" clearable placeholder="请输入" size="small" |
| | | @keyup.enter.native="refreshTable"> |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item label="供应商" prop="supplierName" v-if="(tabIndex === 3 || tabIndex === 4)"> |
| | | <el-input v-model="componentData.supplierName" clearable placeholder="请输入" |
| | | size="small" |
| | | @keyup.enter.native="refreshTable"> |
| | | <el-input v-model="componentData.supplierName" clearable placeholder="请输入" size="small" |
| | | @keyup.enter.native="refreshTable"> |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button v-if="tabIndex === 3 || tabIndex === 4" :icon="!more?'el-icon-arrow-down':'el-icon-arrow-up'" style="color: #3A7BFA;" type="text" @click="more=!more">{{!more?'更多':'收起'}}</el-button> |
| | | <el-button v-if="tabIndex === 3 || tabIndex === 4" :icon="!more ? 'el-icon-arrow-down' : 'el-icon-arrow-up'" |
| | | style="color: #3A7BFA;" type="text" @click="more = !more">{{ !more ? '更多' : '收起' }}</el-button> |
| | | <el-button size="mini" icon="el-icon-search" type="primary" @click="refreshTable()">查 询</el-button> |
| | | <el-button size="mini" @click="refresh()" icon="el-icon-refresh">重 置</el-button> |
| | | </el-form-item> |
| | | </el-row> |
| | | <el-row> |
| | | <el-form-item label="检验状态" prop="inspectStatus" v-if="(tabIndex === 3 || tabIndex === 4) && more"> |
| | | <el-select v-model="componentData.inspectStatus" clearable |
| | | size="small" style="width: 100%;" @change="refreshTable()"> |
| | | <el-select v-model="componentData.inspectStatus" clearable size="small" style="width: 100%;" |
| | | @change="refreshTable()"> |
| | | <el-option v-for="(a, i) in queryStatusList" :key="i" :label="a.label" :value="a.value"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="下发时间" prop="date" v-if="(tabIndex === 3 || tabIndex === 4) && more"> |
| | | <el-date-picker |
| | | v-model="componentData.date" |
| | | end-placeholder="结束日期" |
| | | format="yyyy-MM-dd" |
| | | placeholder="选择日期" |
| | | range-separator="至" |
| | | size="small" |
| | | start-placeholder="开始日期" |
| | | style="width: 100%;" |
| | | type="daterange" |
| | | <el-date-picker v-model="componentData.date" end-placeholder="结束日期" format="yyyy-MM-dd" placeholder="选择日期" |
| | | range-separator="至" size="small" start-placeholder="开始日期" style="width: 100%;" type="daterange" |
| | | value-format="yyyy-MM-dd"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | <el-form-item label="委托编号" prop="entrustCode" v-if="(tabIndex === 3 || tabIndex === 4) && more"> |
| | | <el-input v-model="componentData.entrustCode" clearable placeholder="请输入" |
| | | size="small" |
| | | @keyup.enter.native="refreshTable"> |
| | | <el-input v-model="componentData.entrustCode" clearable placeholder="请输入" size="small" |
| | | @keyup.enter.native="refreshTable"> |
| | | </el-input> |
| | | </el-form-item> |
| | | </el-row> |
| | |
| | | <div class="table-tab"> |
| | | <div> |
| | | <ul class="tab"> |
| | | <li v-for="m in tabList" :key="m.value" :class="{active:m.value===tabIndex}" @click="handleTab(m)">{{m.label}}</li> |
| | | <li v-for="m in tabList" :key="m.value" :class="{ active: m.value === tabIndex }" @click="handleTab(m)"> |
| | | {{ m.label }}</li> |
| | | </ul> |
| | | </div> |
| | | <div> |
| | | <el-button v-show="tabIndex === 4" :loading="outLoading" size="small" type="primary" @click="handleDown">导出</el-button> |
| | | <el-button v-if="tabIndex === 0" :loading="btnLoading" size="small" type="primary" @click="openIFS">获取IFS订单</el-button> |
| | | <el-button v-show="tabIndex === 4" :loading="outLoading" size="small" type="primary" |
| | | @click="handleDown">导出</el-button> |
| | | <el-button v-if="tabIndex === 0" :loading="btnLoading" size="small" type="primary" |
| | | @click="openIFS">获取IFS订单</el-button> |
| | | <el-button v-if="tabIndex === 0" size="small" type="primary" @click="declareS">报检</el-button> |
| | | <el-button v-if="tabIndex === 0" size="small" type="primary" @click="addDeclare">新增报检信息</el-button> |
| | | </div> |
| | | </div> |
| | | <!--待报检、待下单--> |
| | | <div class="table"> |
| | | <lims-table :tableData="tableData" :column="column" v-if="tabIndex === 0 || tabIndex === 1" |
| | | :isSelection="true" :handleSelectionChange="selectMethod" |
| | | @pagination="pagination" :height="'calc(100vh - 290px)'" |
| | | :page="page" :tableLoading="tableLoading"></lims-table> |
| | | <lims-table :tableData="tableData" :column="column" v-if="tabIndex === 0 || tabIndex === 1" :isSelection="true" |
| | | :handleSelectionChange="selectMethod" @pagination="pagination" :height="'calc(100vh - 290px)'" :page="page" |
| | | :tableLoading="tableLoading"></lims-table> |
| | | </div> |
| | | <!--已完成、全部--> |
| | | <div class="table"> |
| | | <lims-table :tableData="tableData1" :column="column1" v-if="tabIndex === 3 || tabIndex === 4" |
| | | @pagination="pagination1" :height="'calc(100vh - 290px)'" |
| | | :page="page1" :tableLoading="tableLoading1"></lims-table> |
| | | @pagination="pagination1" :height="'calc(100vh - 290px)'" :page="page1" |
| | | :tableLoading="tableLoading1"></lims-table> |
| | | </div> |
| | | </div> |
| | | <!-- 批量报检 --> |
| | | <el-dialog :visible.sync="declareDialogSVisible" title="确认报检" width="30%"> |
| | | <p style="font-size:16px;color:#333333">是否确认报检选择的数据?</p> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-row> |
| | | <el-button @click="declareDialogSVisible = false">取 消</el-button> |
| | | <el-button :loading="submitDeclareLoading" type="primary" @click="submitDeclareS">确 定</el-button> |
| | | </el-row> |
| | | </span> |
| | | <el-row> |
| | | <el-button @click="declareDialogSVisible = false">取 消</el-button> |
| | | <el-button :loading="submitDeclareLoading" type="primary" @click="submitDeclareS">确 定</el-button> |
| | | </el-row> |
| | | </span> |
| | | </el-dialog> |
| | | <!-- 确认报检 --> |
| | | <el-dialog :close-on-click-modal="false" :title="declareType === 'add' ? '新增报检信息' : '原材料报检'" |
| | | :visible.sync="declareDialogVisible" |
| | | width="800px" @close="resetForm"> |
| | | <el-form ref="declareObj" :inline="true" :model="declareObj" :rules="declareObjRules" |
| | | label-width="130px" label-position="right"> |
| | | :visible.sync="declareDialogVisible" width="800px" @close="resetForm"> |
| | | <el-form ref="declareObj" :inline="true" :model="declareObj" :rules="declareObjRules" label-width="130px" |
| | | label-position="right"> |
| | | <el-form-item class="declareObj-form-item" label="订单号:" prop="orderNo"> |
| | | <el-input v-model="declareObj.orderNo" :disabled="declareType !== 'add'" class="addObj-info" clearable placeholder="" size="small"></el-input> |
| | | <el-input v-model="declareObj.orderNo" :disabled="declareType !== 'add'" class="addObj-info" clearable |
| | | placeholder="" size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item class="declareObj-form-item" label="零件号:" prop="partNo"> |
| | | <el-input v-model="declareObj.partNo" :disabled="declareType !== 'add'" class="addObj-info" clearable placeholder="" size="small"></el-input> |
| | | <el-input v-model="declareObj.partNo" :disabled="declareType !== 'add'" class="addObj-info" clearable |
| | | placeholder="" size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item class="declareObj-form-item" label="零件描述:" prop="partDesc"> |
| | | <el-input v-model="declareObj.partDesc" :disabled="declareType !== 'add'" class="addObj-info" clearable placeholder="" size="small"></el-input> |
| | | <el-input v-model="declareObj.partDesc" :disabled="declareType !== 'add'" class="addObj-info" clearable |
| | | placeholder="" size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item class="declareObj-form-item" label="抵达的采购数量:" prop="qtyArrived"> |
| | | <el-input v-model="declareObj.qtyArrived" :disabled="declareType !== 'add'" class="addObj-info" clearable placeholder="" size="small"></el-input> |
| | | <el-input v-model="declareObj.qtyArrived" :disabled="declareType !== 'add'" class="addObj-info" clearable |
| | | placeholder="" size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item v-if="declareType !== 'add'" class="declareObj-form-item" label="供应商编号:" prop="supplierId"> |
| | | <el-input v-model="declareObj.supplierId" :disabled="declareType !== 'add'" class="addObj-info" clearable placeholder="" size="small"></el-input> |
| | | <el-input v-model="declareObj.supplierId" :disabled="declareType !== 'add'" class="addObj-info" clearable |
| | | placeholder="" size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item class="declareObj-form-item" label="供应商名称:" prop="supplierName"> |
| | | <el-input v-model="declareObj.supplierName" :disabled="declareType !== 'add'" class="addObj-info" clearable placeholder="" size="small"></el-input> |
| | | <el-input v-model="declareObj.supplierName" :disabled="declareType !== 'add'" class="addObj-info" clearable |
| | | placeholder="" size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item class="declareObj-form-item" label="批号:" prop="updateBatchNo"> |
| | | <el-input v-model="declareObj.updateBatchNo" class="addObj-info" clearable size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item v-if="declareType !== 'add'" class="declareObj-form-item" label="库位号:" prop="locationNo"> |
| | | <el-input v-model="declareObj.locationNo" :disabled="declareType !== 'add'" class="addObj-info" clearable size="small"></el-input> |
| | | <el-input v-model="declareObj.locationNo" :disabled="declareType !== 'add'" class="addObj-info" clearable |
| | | size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item v-if="declareType !== 'add'" class="declareObj-form-item" label="接收时间:" prop="receiverDate"> |
| | | <el-input v-model="declareObj.receiverDate" class="addObj-info" clearable disabled size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item class="declareObj-form-item" label="单位:" prop="buyUnitMeas"> |
| | | <el-input v-model="declareObj.buyUnitMeas" :disabled="declareType !== 'add'" clearable class="addObj-info" size="small"></el-input> |
| | | <el-input v-model="declareObj.buyUnitMeas" :disabled="declareType !== 'add'" clearable class="addObj-info" |
| | | size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item class="declareObj-form-item" label="物料类型:" prop="isExpire"> |
| | | <el-select v-model="declareObj.isExpire" prop="isExpire" |
| | | :disabled="declareType !== 'add'" |
| | | clearable size="small"> |
| | | <el-select v-model="declareObj.isExpire" prop="isExpire" :disabled="declareType !== 'add'" clearable |
| | | size="small"> |
| | | <el-option :value="1" label="过期物料"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | |
| | | <el-dialog :visible.sync="deleteVisible" title="确认删除" width="30%"> |
| | | <p style="font-size:16px;color:#333333">是否确认删除?</p> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-row> |
| | | <el-button @click="deleteVisible = false">取 消</el-button> |
| | | <el-button :loading="deleteLoading" type="primary" @click="submitDelete">确 定</el-button> |
| | | </el-row> |
| | | </span> |
| | | <el-row> |
| | | <el-button @click="deleteVisible = false">取 消</el-button> |
| | | <el-button :loading="deleteLoading" type="primary" @click="submitDelete">确 定</el-button> |
| | | </el-row> |
| | | </span> |
| | | </el-dialog> |
| | | <!-- 撤销报检 --> |
| | | <el-dialog :visible.sync="declareDialogVisible1" title="报检撤销" width="30%"> |
| | | <p style="font-size:16px;color:#333333">批号<span |
| | | style="color:#34BD66">{{insOrderRow.updateBatchNo}}</span>的信息是否<span style="color: #FF4902">撤销报检</span></p> |
| | | style="color:#34BD66">{{ insOrderRow.updateBatchNo }}</span>的信息是否<span style="color: #FF4902">撤销报检</span></p> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-row> |
| | | <el-button @click="declareDialogVisible1 = false">取 消</el-button> |
| | | <el-button :loading="upLoad" type="primary" @click="submitDeclare1">确 定</el-button> |
| | | </el-row> |
| | | </span> |
| | | <el-row> |
| | | <el-button @click="declareDialogVisible1 = false">取 消</el-button> |
| | | <el-button :loading="upLoad" type="primary" @click="submitDeclare1">确 定</el-button> |
| | | </el-row> |
| | | </span> |
| | | </el-dialog> |
| | | <!--数据查看弹框--> |
| | | <data-look-visible v-if="dataDialogVisible" ref="dataDialogVisible" |
| | | :dataDialogVisible="dataDialogVisible" |
| | | :dataLookInfo="dataLookInfo" @closeDataLook="closeDataLook"></data-look-visible> |
| | | <data-look-visible v-if="dataDialogVisible" ref="dataDialogVisible" :dataDialogVisible="dataDialogVisible" |
| | | :dataLookInfo="dataLookInfo" @closeDataLook="closeDataLook"></data-look-visible> |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | |
| | | export default { |
| | | // import 引入的组件需要注入到对象中才能使用 |
| | | components: {limsTable, DataLookVisible}, |
| | | components: { limsTable, DataLookVisible }, |
| | | data() { |
| | | // 这里存放数据 |
| | | return { |
| | |
| | | } |
| | | } |
| | | }, |
| | | {label: '订单号', prop: 'orderNo'}, |
| | | {label: '抵达的采购数量', prop: 'qtyArrived',width: '140px',}, |
| | | {label: '批号', prop: 'updateBatchNo'}, |
| | | {label: '零件号', prop: 'partNo'}, |
| | | {label: '零件描述', prop: 'partDesc'}, |
| | | {label: '供应商名称', prop: 'supplierName'}, |
| | | { label: '订单号', prop: 'orderNo' }, |
| | | { label: '抵达的采购数量', prop: 'qtyArrived', width: '140px', }, |
| | | { label: '批号', prop: 'updateBatchNo' }, |
| | | { label: '零件号', prop: 'partNo' }, |
| | | { label: '零件描述', prop: 'partDesc' }, |
| | | { label: '供应商名称', prop: 'supplierName' }, |
| | | { |
| | | dataType: 'tag', |
| | | label: '物料类型', |
| | |
| | | } |
| | | } |
| | | }, |
| | | {label: '单位', prop: 'buyUnitMeas'}, |
| | | {label: '接收时间', prop: 'receiverDate'}, |
| | | {label: '报检时间', prop: 'declareDate'}, |
| | | { label: '单位', prop: 'buyUnitMeas' }, |
| | | { label: '接收时间', prop: 'receiverDate' }, |
| | | { label: '报检时间', prop: 'declareDate' }, |
| | | { |
| | | dataType: 'action', |
| | | label: '操作', |
| | |
| | | } |
| | | ], |
| | | page: { |
| | | total:0, |
| | | size:10, |
| | | current:1 |
| | | total: 0, |
| | | size: 10, |
| | | current: 1 |
| | | }, |
| | | tableData1: [], |
| | | tableLoading1: false, |
| | | column1: [ |
| | | {label: '委托编号', prop: 'entrustCode', width: '160px'}, |
| | | { label: '委托编号', prop: 'entrustCode', width: '160px' }, |
| | | { |
| | | dataType: 'tag', |
| | | label: '检验状态', |
| | |
| | | } |
| | | } |
| | | }, |
| | | {label: '订单号', prop: 'orderNo'}, |
| | | {label: '抵达的采购数量', prop: 'qtyArrived'}, |
| | | {label: '下发时间', prop: 'sendTime'}, |
| | | {label: '批号', prop: 'updateBatchNo'}, |
| | | {label: '零件号', prop: 'partNo'}, |
| | | {label: '零件描述', prop: 'partDesc'}, |
| | | {label: '供应商名称', prop: 'supplierName'}, |
| | | {label: '不合格描述', prop: 'unqualifiedDesc'}, |
| | | {label: '免检', prop: 'isExemption'}, |
| | | {label: '样品名称', prop: 'sampleName'}, |
| | | {label: '样品型号', prop: 'sampleModel'}, |
| | | {label: '检验人', prop: 'userName'}, |
| | | { label: '订单号', prop: 'orderNo' }, |
| | | { label: '抵达的采购数量', prop: 'qtyArrived' }, |
| | | { label: '下发时间', prop: 'sendTime' }, |
| | | { label: '批号', prop: 'updateBatchNo' }, |
| | | { label: '零件号', prop: 'partNo' }, |
| | | { label: '零件描述', prop: 'partDesc' }, |
| | | { label: '供应商名称', prop: 'supplierName' }, |
| | | { label: '不合格描述', prop: 'unqualifiedDesc' }, |
| | | { label: '免检', prop: 'isExemption' }, |
| | | { label: '样品名称', prop: 'sampleName' }, |
| | | { label: '样品型号', prop: 'sampleModel' }, |
| | | { label: '检验人', prop: 'userName' }, |
| | | { |
| | | dataType: 'tag', |
| | | label: '物料类型', |
| | |
| | | } |
| | | } |
| | | }, |
| | | {label: '单位', prop: 'buyUnitMeas'}, |
| | | {label: '接收时间', prop: 'receiverDate'}, |
| | | {label: '报检时间', prop: 'declareDate'}, |
| | | { label: '单位', prop: 'buyUnitMeas' }, |
| | | { label: '接收时间', prop: 'receiverDate' }, |
| | | { label: '报检时间', prop: 'declareDate' }, |
| | | { |
| | | dataType: 'action', |
| | | fixed: 'right', |
| | |
| | | } |
| | | ], |
| | | page1: { |
| | | total:0, |
| | | size:10, |
| | | current:1 |
| | | total: 0, |
| | | size: 10, |
| | | current: 1 |
| | | }, |
| | | more:false, |
| | | more: false, |
| | | declareObj: { |
| | | id: null, |
| | | orderNo: '', // 订单号 |
| | |
| | | dataLookInfo: {}, // 数据查看弹框数据 |
| | | declareType: '', // 操作报检的类型 |
| | | queryStatusList: [ |
| | | {label: '检验中', value: 0}, |
| | | {label: '合格', value: 1}, |
| | | {label: '不合格', value: 2}, |
| | | {label: '未下单', value: 3}, |
| | | {label: '让步放行', value: 4}, |
| | | { label: '检验中', value: 0 }, |
| | | { label: '合格', value: 1 }, |
| | | { label: '不合格', value: 2 }, |
| | | { label: '未下单', value: 3 }, |
| | | { label: '让步放行', value: 4 }, |
| | | ], |
| | | outLoading:false |
| | | outLoading: false |
| | | } |
| | | }, |
| | | mounted() { |
| | |
| | | } |
| | | }, |
| | | // 待报检、待下单查询 |
| | | getWarehouseSubmitApi () { |
| | | getWarehouseSubmitApi() { |
| | | this.tableLoading = true |
| | | const params = {...this.componentData, isInspect: this.tabIndex, state: this.tabIndex === 0 ? null : 0, ...this.page} |
| | | const params = { ...this.componentData, isInspect: this.tabIndex, state: this.tabIndex === 0 ? null : 0, ...this.page } |
| | | getWarehouseSubmit(params).then(res => { |
| | | this.tableLoading = false |
| | | if (res.code === 200) { |
| | |
| | | }) |
| | | }, |
| | | // 已完成部查询 |
| | | getIfsByFinishList () { |
| | | getIfsByFinishList() { |
| | | this.tableLoading1 = true |
| | | getIfsByFinish({...this.componentData, ...this.page1}).then(res => { |
| | | getIfsByFinish({ ...this.componentData, ...this.page1 }).then(res => { |
| | | this.tableLoading1 = false |
| | | if (res.code === 200) { |
| | | this.tableData1 = res.data.records |
| | |
| | | }) |
| | | }, |
| | | // 全部查询 |
| | | getIfsByAllList () { |
| | | getIfsByAllList() { |
| | | this.tableLoading1 = true |
| | | getIfsByAll({...this.componentData, ...this.page1}).then(res => { |
| | | getIfsByAll({ ...this.componentData, ...this.page1 }).then(res => { |
| | | this.tableLoading1 = false |
| | | if (res.code === 200) { |
| | | this.tableData1 = res.data.records |
| | |
| | | this.resetForm('componentData') |
| | | this.refreshTable() |
| | | }, |
| | | pagination (page) { |
| | | pagination(page) { |
| | | this.page.size = page.limit |
| | | this.refreshTable() |
| | | }, |
| | | pagination1 (page) { |
| | | pagination1(page) { |
| | | this.page1.size = page.limit |
| | | this.refreshTable() |
| | | }, |
| | | // 打开撤销报检弹框 |
| | | cancelDeclare (row) { |
| | | cancelDeclare(row) { |
| | | this.declareDialogVisible1 = true |
| | | this.insOrderRow = row |
| | | }, |
| | | // 提交撤销报检申请 |
| | | submitDeclare1 () { |
| | | revokeInspectionReport({id: this.insOrderRow.id}).then(res => { |
| | | submitDeclare1() { |
| | | revokeInspectionReport({ id: this.insOrderRow.id }).then(res => { |
| | | if (res.code === 200) { |
| | | this.declareDialogVisible1 = false |
| | | this.refreshTable('page') |
| | |
| | | this.dataDialogVisible = true; |
| | | }, |
| | | // 直接放行 |
| | | goPass (row) { |
| | | goPass(row) { |
| | | this.$confirm('是否放行当前数据?', '提示', { |
| | | confirmButtonText: '确定', |
| | | cancelButtonText: '取消', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | concessionRelease({ifsInventoryId: row.id}).then(res => { |
| | | concessionRelease({ ifsInventoryId: row.id }).then(res => { |
| | | if (res.code === 200) { |
| | | this.$message({ |
| | | type: 'success', |
| | |
| | | }); |
| | | }, |
| | | // 提前入库 |
| | | advancedGodown (row) { |
| | | advancedGodown(row) { |
| | | this.$confirm('当前原材料是否提前入库?', '提示', { |
| | | confirmButtonText: '确定', |
| | | cancelButtonText: '取消', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | advancedGodown({ifsInventoryId: row.id}).then(res => { |
| | | advancedGodown({ ifsInventoryId: row.id }).then(res => { |
| | | if (res.code === 200) { |
| | | this.$message({ |
| | | type: 'success', |
| | |
| | | }); |
| | | }, |
| | | // 关闭数据查看弹框 |
| | | closeDataLook () { |
| | | closeDataLook() { |
| | | this.dataDialogVisible = false |
| | | }, |
| | | // 手动报检 |
| | | addDeclare () { |
| | | addDeclare() { |
| | | this.clear() |
| | | this.declareDialogVisible = true |
| | | this.declareType = 'add' |
| | | }, |
| | | // 选择报检数据 |
| | | declareS () { |
| | | declareS() { |
| | | if (this.multipleSelection.length > 0) { |
| | | this.declareDialogSVisible = true |
| | | } else { |
| | |
| | | } |
| | | }, |
| | | // 提交批量报检 |
| | | submitDeclareS () { |
| | | submitDeclareS() { |
| | | let ids = [] |
| | | this.multipleSelection.forEach(item => { |
| | | ids.push(item.id) |
| | | }) |
| | | this.declareDialogSVisible = true |
| | | inspectionReport({ids: ids}).then(res => { |
| | | inspectionReport({ ids: ids }).then(res => { |
| | | if (res.code === 200) { |
| | | this.declareDialogSVisible = false |
| | | this.$message.success('报检成功') |
| | |
| | | }, |
| | | // 打开报检确认弹框 |
| | | declare(row) { |
| | | this.declareObj = {...row} |
| | | this.declareObj = { ...row } |
| | | this.declareDialogVisible = true |
| | | this.declareType = 'edit' |
| | | }, |
| | | // 提交报检 |
| | | submitDeclare () { |
| | | submitDeclare() { |
| | | if (this.declareType === 'add') { |
| | | this.$refs['declareObj'].validate((valid) => { |
| | | if (valid) { |
| | |
| | | }); |
| | | } |
| | | }, |
| | | resetForm () { |
| | | resetForm() { |
| | | this.$refs['declareObj'].resetFields(); |
| | | this.declareDialogVisible = false |
| | | }, |
| | | // 打开删除弹框 |
| | | deleteMaterial (row) { |
| | | deleteMaterial(row) { |
| | | this.deleteVisible = true |
| | | this.deleteInfo = row |
| | | }, |
| | | // 确认删除 |
| | | submitDelete () { |
| | | submitDelete() { |
| | | this.deleteLoading = true |
| | | delIfsInventory({id: this.deleteInfo.id}).then(res => { |
| | | delIfsInventory({ id: this.deleteInfo.id }).then(res => { |
| | | this.deleteVisible = false |
| | | this.$message.success('删除成功') |
| | | this.refreshTable() |
| | |
| | | }) |
| | | }, |
| | | // 全部导出 |
| | | handleDown(){ |
| | | let entity = {...this.componentData} |
| | | handleDown() { |
| | | let entity = { ...this.componentData } |
| | | delete entity.orderBy |
| | | this.outLoading = true |
| | | rawAllExport({ |
| | | entity:entity |
| | | entity: entity |
| | | }).then(res => { |
| | | this.outLoading = false |
| | | this.$message.success('导出成功') |
| | | let url = this.javaApi + '/word/' + res.data |
| | | this.$download.saveAs(url, "原材料检测信息导出.xlsx"); |
| | | }) |
| | |
| | | display: flex; |
| | | justify-content: space-between; |
| | | } |
| | | |
| | | .tab { |
| | | list-style-type: none; |
| | | display: flex; |
| | |
| | | <div> |
| | | <el-form :model="entity" ref="entity" size="small" :inline="true"> |
| | | <el-form-item label="报告编号" prop="code"> |
| | | <el-input v-model="entity.code" clearable placeholder="请输入" |
| | | size="small" @keyup.enter.native="refreshTable()"></el-input> |
| | | <el-input v-model="entity.code" clearable placeholder="请输入" size="small" |
| | | @keyup.enter.native="refreshTable()"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="状态" prop="queryStatus"> |
| | | <el-select v-model="entity.queryStatus" clearable size="small" @change="refreshTable()"> |
| | |
| | | </div> |
| | | <div> |
| | | <lims-table :tableData="valueTableData" :column="column" :page="page" :tableLoading="tableLoading" |
| | | :isSelection="true" :handleSelectionChange="handleChange" |
| | | :height="'calc(100vh - 290px)'" @pagination="pagination" key="valueTableData"> |
| | | :isSelection="true" :handleSelectionChange="handleChange" :height="'calc(100vh - 290px)'" |
| | | @pagination="pagination" key="valueTableData"> |
| | | <div slot="action" slot-scope="scope"> |
| | | <el-button size="small" type="text" @click="viewIssued(scope.row)">查看报告</el-button> |
| | | <el-upload ref='upload1' |
| | | style="display: inline;margin: 0 6px" |
| | | :action="fileAction1 +'?id='+ scope.row.id" |
| | | :auto-upload="true" |
| | | :before-upload="fileBeforeUpload1" |
| | | :headers="uploadHeader" :on-error="onError1" |
| | | :on-success="handleSuccessUp1" |
| | | :show-file-list="false" |
| | | accept='.doc,.docx'> |
| | | <el-button size="small" type="text" :disabled="scope.row.state != 0 || nickName !== scope.row.writeUserName">上传</el-button> |
| | | <el-upload ref='upload1' style="display: inline;margin: 0 6px" :action="fileAction1 + '?id=' + scope.row.id" |
| | | :auto-upload="true" :before-upload="fileBeforeUpload1" :headers="uploadHeader" :on-error="onError1" |
| | | :on-success="handleSuccessUp1" :show-file-list="false" accept='.doc,.docx'> |
| | | <el-button size="small" type="text" |
| | | :disabled="scope.row.state != 0 || nickName !== scope.row.writeUserName">上传</el-button> |
| | | </el-upload> |
| | | <el-button type="text" size="small" :disabled="scope.row.state != 0 || nickName !== scope.row.writeUserName" @click="handleRestore(scope.row)">还原</el-button> |
| | | <el-button type="text" size="small" :disabled="scope.row.state != 0 || nickName !== scope.row.writeUserName" @click="sendBackTask(scope.row)">退回任务</el-button> |
| | | <el-button type="text" size="small" :disabled="scope.row.state != 0 || nickName !== scope.row.writeUserName" @click="handle(scope.row)">提交</el-button> |
| | | <el-button type="text" size="small" :disabled="scope.row.state == null || scope.row.state == 0 ||scope.row.isExamine == 1 || nickName !== scope.row.examineUser" @click="handleIssued(scope.row)">审核</el-button> |
| | | <el-button type="text" size="small" :disabled="scope.row.state == null || scope.row.state == 0 || scope.row.isExamine == 0 || scope.row.isExamine == null || scope.row.isRatify == 1 || nickName !== scope.row.ratifyUser" @click="handleApprove(scope.row)">批准</el-button> |
| | | <el-button type="text" size="small" :disabled="scope.row.state != 0 || nickName !== scope.row.writeUserName" |
| | | @click="handleRestore(scope.row)">还原</el-button> |
| | | <el-button type="text" size="small" :disabled="scope.row.state != 0 || nickName !== scope.row.writeUserName" |
| | | @click="sendBackTask(scope.row)">退回任务</el-button> |
| | | <el-button type="text" size="small" :disabled="scope.row.state != 0 || nickName !== scope.row.writeUserName" |
| | | @click="handle(scope.row)">提交</el-button> |
| | | <el-button type="text" size="small" |
| | | :disabled="scope.row.state == null || scope.row.state == 0 || scope.row.isExamine == 1 || nickName !== scope.row.examineUser" |
| | | @click="handleIssued(scope.row)">审核</el-button> |
| | | <el-button type="text" size="small" |
| | | :disabled="scope.row.state == null || scope.row.state == 0 || scope.row.isExamine == 0 || scope.row.isExamine == null || scope.row.isRatify == 1 || nickName !== scope.row.ratifyUser" |
| | | @click="handleApprove(scope.row)">批准</el-button> |
| | | <el-popover placement="bottom" trigger="hover" style="margin-left: 6px"> |
| | | <template #reference> |
| | | <el-button link type="text" size="small">更多</el-button> |
| | |
| | | </lims-table> |
| | | </div> |
| | | <el-dialog :fullscreen="fullscreen" :modal-append-to-body="false" :visible.sync="claimVisible" title="在线编制" |
| | | width="22cm"> |
| | | width="22cm"> |
| | | <div class="full-screen"> |
| | | <i v-if="!fullscreen" class="el-icon-full-screen" style="cursor: pointer;font-size: 18px" |
| | | @click="fullscreen=true;"></i> |
| | | <img v-else alt="" src="@/assets/images/no-full.svg" style="cursor: pointer;" @click="fullscreen=false;"> |
| | | @click="fullscreen = true;"></i> |
| | | <img v-else alt="" src="@/assets/images/no-full.svg" style="cursor: pointer;" @click="fullscreen = false;"> |
| | | </div> |
| | | <Word v-if="claimVisible" ref="Word" :class="{fullscreen:fullscreen}" :value="value" style="height:70vh" /> |
| | | <Word v-if="claimVisible" ref="Word" :class="{ fullscreen: fullscreen }" :value="value" style="height:70vh" /> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="claimVisible = false">取 消</el-button> |
| | | <el-button type="primary" @click="confirmClaim">确 定</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <el-dialog :fullscreen="fullscreen" :modal-append-to-body="false" :visible.sync="issuedVisible" title="报告审核" |
| | | width="80vw"> |
| | | width="80vw"> |
| | | <div class="full-screen"> |
| | | <i v-if="!fullscreen" class="el-icon-full-screen" style="cursor: pointer;font-size: 18px" @click="fullscreen=true;"></i> |
| | | <img v-else alt="" src="@/assets/images/no-full.svg" style="cursor: pointer;" @click="fullscreen=false;" > |
| | | <i v-if="!fullscreen" class="el-icon-full-screen" style="cursor: pointer;font-size: 18px" |
| | | @click="fullscreen = true;"></i> |
| | | <img v-else alt="" src="@/assets/images/no-full.svg" style="cursor: pointer;" @click="fullscreen = false;"> |
| | | </div> |
| | | <div v-if="issuedVisible" style="height: 80vh;"> |
| | | <onlyoffice ref="onlyoffice" :options="option" style="width: 100%;height: 100%;" /> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button :disabled="loadingIssued" @click="issuedReasonVisible=true">不通过</el-button> |
| | | <el-button type="primary" @click="subIssued">通 过</el-button> |
| | | </span> |
| | | <el-button :disabled="loadingIssued" @click="issuedReasonVisible = true">不通过</el-button> |
| | | <el-button type="primary" @click="subIssued">通 过</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <el-dialog :modal-append-to-body="false" :visible.sync="issuedReasonVisible" title="不通过原因" width="400px"> |
| | | <div class="search_thing"> |
| | |
| | | <div class="search_input"><el-input v-model="reason" clearable placeholder="请输入" size="small"></el-input></div> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button :disabled="loadingIssuedReason" @click="issuedReasonVisible=false">取消</el-button> |
| | | <el-button :loading="loadingIssuedReason" type="primary" @click="handleIssuedReason">确定</el-button> |
| | | </span> |
| | | <el-button :disabled="loadingIssuedReason" @click="issuedReasonVisible = false">取消</el-button> |
| | | <el-button :loading="loadingIssuedReason" type="primary" @click="handleIssuedReason">确定</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <el-dialog :fullscreen="fullscreen" :modal-append-to-body="false" :visible.sync="approveVisible" title="报告批准" width="80vw"> |
| | | <el-dialog :fullscreen="fullscreen" :modal-append-to-body="false" :visible.sync="approveVisible" title="报告批准" |
| | | width="80vw"> |
| | | <div class="full-screen"> |
| | | <i v-if="!fullscreen" class="el-icon-full-screen" style="cursor: pointer;font-size: 18px" @click="fullscreen=true;"></i> |
| | | <img v-else alt="" src="@/assets/images/no-full.svg" style="cursor: pointer;" @click="fullscreen=false;" > |
| | | <i v-if="!fullscreen" class="el-icon-full-screen" style="cursor: pointer;font-size: 18px" |
| | | @click="fullscreen = true;"></i> |
| | | <img v-else alt="" src="@/assets/images/no-full.svg" style="cursor: pointer;" @click="fullscreen = false;"> |
| | | </div> |
| | | <div v-if="approveVisible" style="height: 80vh;"> |
| | | <onlyoffice ref="onlyoffice" :options="option" style="width: 100%;height: 100%;" /> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button :disabled="loadingApprove" @click="approveReasonVisible=true">不批准</el-button> |
| | | <el-button :loading="loadingApprove" type="primary" @click="subApprove">批 准</el-button> |
| | | </span> |
| | | <el-button :disabled="loadingApprove" @click="approveReasonVisible = true">不批准</el-button> |
| | | <el-button :loading="loadingApprove" type="primary" @click="subApprove">批 准</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <el-dialog :modal-append-to-body="false" :visible.sync="approveReasonVisible" title="不批准原因" width="400px"> |
| | | <div class="search_thing"> |
| | |
| | | <div class="search_input"><el-input v-model="reason" clearable placeholder="请输入" size="small"></el-input></div> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button :disabled="loadingApproveReason" @click="approveReasonVisible=false">取消</el-button> |
| | | <el-button :loading="loadingApproveReason" type="primary" @click="handleApproveReason">确定</el-button> |
| | | </span> |
| | | <el-button :disabled="loadingApproveReason" @click="approveReasonVisible = false">取消</el-button> |
| | | <el-button :loading="loadingApproveReason" type="primary" @click="handleApproveReason">确定</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <el-dialog :close-on-click-modal="false" :visible.sync="addApproverDia" title="指定批准人员" |
| | | width="400px" |
| | | @close="closeAddApproverDia"> |
| | | <el-dialog :close-on-click-modal="false" :visible.sync="addApproverDia" title="指定批准人员" width="400px" |
| | | @close="closeAddApproverDia"> |
| | | <div class="body" style="display: flex;padding: 10px;align-items: center;"> |
| | | <div class="search_label" style="width: 150px;"><span class="required-span">*</span>批准人:</div> |
| | | <div class="search_input" style="width: 100%;"> |
| | | <el-select v-model="approver" clearable filterable placeholder="请选择" size="small" style="width: 100%;"> |
| | | <el-option v-for="(item,i) in approverList" :key="i" :label="item.label" :value="item.value"> |
| | | <el-option v-for="(item, i) in approverList" :key="i" :label="item.label" :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | | </div> |
| | |
| | | <el-button :loading="loadingIssued" type="primary" @click="submitAddApprover">确 定</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <el-dialog :close-on-click-modal="false" :visible.sync="addVerifyDia" |
| | | title="指定审核人员" |
| | | width="400px" |
| | | @close="closeAddVerifyDia"> |
| | | <el-dialog :close-on-click-modal="false" :visible.sync="addVerifyDia" title="指定审核人员" width="400px" |
| | | @close="closeAddVerifyDia"> |
| | | <div class="body" style="display: flex;padding: 10px;align-items: center;"> |
| | | <div class="search_label" style="width: 150px;"><span class="required-span">*</span>审核人:</div> |
| | | <div class="search_input" style="width: 100%;"> |
| | | <el-select v-model="verifyUser" clearable filterable placeholder="请选择" size="small" style="width: 100%;"> |
| | | <el-option v-for="(item,i) in approverList" :key="i" :label="item.label" :value="item.value"> |
| | | <el-option v-for="(item, i) in approverList" :key="i" :label="item.label" :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | | </div> |
| | |
| | | </span> |
| | | </el-dialog> |
| | | <!--产业链信息查看--> |
| | | <!-- <ShowInfo v-if="showInfoDialog" ref="showInfoDialog" :showInfoDialog="showInfoDialog"></ShowInfo>--> |
| | | <!-- <ShowInfo v-if="showInfoDialog" ref="showInfoDialog" :showInfoDialog="showInfoDialog"></ShowInfo>--> |
| | | <!--报告查看--> |
| | | <el-dialog :fullscreen="fullscreen" :modal-append-to-body="false" :visible.sync="viewIssuedVisible" title="报告查看" |
| | | width="80vw"> |
| | | width="80vw"> |
| | | <div class="full-screen"> |
| | | <i v-if="!fullscreen" class="el-icon-full-screen" style="cursor: pointer;font-size: 18px" @click="fullscreen=true;"></i> |
| | | <img v-else alt="" src="@/assets/images/no-full.svg" style="cursor: pointer;" @click="fullscreen=false;" > |
| | | <i v-if="!fullscreen" class="el-icon-full-screen" style="cursor: pointer;font-size: 18px" |
| | | @click="fullscreen = true;"></i> |
| | | <img v-else alt="" src="@/assets/images/no-full.svg" style="cursor: pointer;" @click="fullscreen = false;"> |
| | | </div> |
| | | <div v-if="viewIssuedVisible" style="height: 80vh;"> |
| | | <onlyoffice ref="onlyoffice" :options="option" style="width: 100%;height: 100%;" /> |
| | |
| | | <!--附件查看--> |
| | | <el-dialog :visible.sync="filesDialogVisible" title="附件查看" width="80%" @closed="closeFilesLook"> |
| | | <div style="margin-bottom: 10px"> |
| | | <el-upload ref='upload' |
| | | :action="fileAction" |
| | | :auto-upload="true" |
| | | :before-upload="fileBeforeUpload" :data="{orderId: filesLookInfo.insOrderId}" |
| | | :headers="uploadHeader" :on-error="onError" |
| | | :on-success="handleSuccessUp" |
| | | :show-file-list="false" |
| | | accept='.jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar' style="width: 80px !important;"> |
| | | <el-upload ref='upload' :action="fileAction" :auto-upload="true" :before-upload="fileBeforeUpload" |
| | | :data="{ orderId: filesLookInfo.insOrderId }" :headers="uploadHeader" :on-error="onError" |
| | | :on-success="handleSuccessUp" :show-file-list="false" |
| | | accept='.jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar' style="width: 80px !important;"> |
| | | <el-button size="small" style="height: 38px" type="primary">附件上传</el-button> |
| | | </el-upload> |
| | | </div> |
| | | <lims-table :tableData="tableDataFile" :column="columnFile" @pagination="paginationFile" height="500px" |
| | | key="tableDataFile" :page="pageFile" :tableLoading="tableLoadingFile"></lims-table> |
| | | key="tableDataFile" :page="pageFile" :tableLoading="tableLoadingFile"></lims-table> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | |
| | | upReportUrl, |
| | | writeReport |
| | | } from "@/api/business/insReport"; |
| | | import {mapGetters} from "vuex"; |
| | | import {selectUserCondition} from "@/api/business/inspectionTask"; |
| | | import { mapGetters } from "vuex"; |
| | | import { selectUserCondition } from "@/api/business/inspectionTask"; |
| | | import limsTable from "@/components/Table/lims-table.vue"; |
| | | import {delfile, downFile, getFileList} from "@/api/business/rawMaterialOrder"; |
| | | import { delfile, downFile, getFileList } from "@/api/business/rawMaterialOrder"; |
| | | export default { |
| | | components: {limsTable, onlyoffice}, |
| | | components: { limsTable, onlyoffice }, |
| | | data() { |
| | | return { |
| | | entity: { |
| | |
| | | value: ``, |
| | | reason: '', |
| | | currentInfo: null, |
| | | option:null, |
| | | mutiList:[], |
| | | outLoading:false, |
| | | inLoading:false, |
| | | option: null, |
| | | mutiList: [], |
| | | outLoading: false, |
| | | inLoading: false, |
| | | addApproverDia: false, // 指定审批人员弹框 |
| | | approver: '', // 审批人员 |
| | | approverId: '', // 审批人员 |
| | |
| | | verifyUser: null, // 审核人员 |
| | | loadingVerify: false, // 审核人员 |
| | | typeSourceList: [ |
| | | {label: '成品下单', value: 0}, |
| | | {label: '原材料下单', value: 1}, |
| | | { label: '成品下单', value: 0 }, |
| | | { label: '原材料下单', value: 1 }, |
| | | ], |
| | | orderTypeList: [ |
| | | {label: '委托试验', value: 'Customer-ordered test'}, |
| | | {label: '抽检', value: '抽检'}, |
| | | {label: '进厂检验', value: '进厂检验'}, |
| | | {label: '季度检验', value: 'Quarterly inspection'}, |
| | | { label: '委托试验', value: 'Customer-ordered test' }, |
| | | { label: '抽检', value: '抽检' }, |
| | | { label: '进厂检验', value: '进厂检验' }, |
| | | { label: '季度检验', value: 'Quarterly inspection' }, |
| | | ], |
| | | showInfoDialog: false, // 产业链信息查看 |
| | | isReport: 1, |
| | |
| | | examine: null, |
| | | viewIssuedVisible: false, |
| | | queryStatusList: [ |
| | | {label: '待提交', value: 0}, |
| | | {label: '待审核', value: 1}, |
| | | {label: '待批准', value: 2}, |
| | | { label: '待提交', value: 0 }, |
| | | { label: '待审核', value: 1 }, |
| | | { label: '待批准', value: 2 }, |
| | | ], |
| | | state: 0, |
| | | orderId: 0, |
| | |
| | | refreshTable() { |
| | | this.tableLoading = true |
| | | pageInsReport({ |
| | | ...this.page,...this.entity |
| | | ...this.page, ...this.entity |
| | | }).then(res => { |
| | | this.tableLoading = false |
| | | this.page.total = res.data.body.total |
| | |
| | | this.resetForm('entity') |
| | | this.refreshTable(); |
| | | }, |
| | | handleChange(arr){ |
| | | handleChange(arr) { |
| | | this.mutiList = arr |
| | | }, |
| | | // 查看检验数据 |
| | | viewInspectInfo (row) { |
| | | viewInspectInfo(row) { |
| | | //当前检验任务的检验人列表 |
| | | let inspectorList = [] |
| | | if(row.userName){ |
| | | if (row.userName) { |
| | | inspectorList = row.userName.split(',') |
| | | } |
| | | inspectorList.push(this.nickName) |
| | |
| | | }) |
| | | }, |
| | | // 打开查看附件弹框 |
| | | handleFileLook (row) { |
| | | handleFileLook(row) { |
| | | this.filesLookInfo = row |
| | | this.filesDialogVisible = true |
| | | this.getFileList() |
| | |
| | | // 查询附件查看列表回调 |
| | | getFileList() { |
| | | this.tableLoadingFile = true |
| | | getFileList({insOrderId: this.filesLookInfo.insOrderId}).then(res => { |
| | | getFileList({ insOrderId: this.filesLookInfo.insOrderId }).then(res => { |
| | | this.tableLoadingFile = false |
| | | if (res.code === 200) { |
| | | this.tableDataFile = res.data.records |
| | |
| | | this.pageFile.size = page.limit |
| | | this.getFileList() |
| | | }, |
| | | closeFilesLook () { |
| | | closeFilesLook() { |
| | | this.filesDialogVisible = false |
| | | }, |
| | | handleSuccessUp(response, ) { |
| | | handleSuccessUp(response,) { |
| | | this.upLoading = false; |
| | | if (response.code == 200) { |
| | | this.$message.success('上传成功'); |
| | | this.getFileList() |
| | | } |
| | | }, |
| | | handleSuccessUp1(response, ) { |
| | | handleSuccessUp1(response,) { |
| | | if (response.code == 200) { |
| | | this.$message.success('上传成功'); |
| | | } |
| | | }, |
| | | // 下载附件的文件 |
| | | handleDown(row){ |
| | | handleDown(row) { |
| | | downFile({ |
| | | id: row.id, |
| | | }).then(res => { |
| | | if (res.code === 200) { |
| | | let url = ''; |
| | | if(res.data.type==1){ |
| | | url = this.javaApi+'/img/'+res.data.fileUrl |
| | | if (res.data.type == 1) { |
| | | url = this.javaApi + '/img/' + res.data.fileUrl |
| | | this.$download.saveAs(url, row.fileName); |
| | | }else{ |
| | | url = this.javaApi+'/word/'+res.data.fileUrl |
| | | } else { |
| | | url = this.javaApi + '/word/' + res.data.fileUrl |
| | | this.$download.saveAs(url, row.fileName); |
| | | } |
| | | } |
| | |
| | | }).catch(() => { }) |
| | | }, |
| | | // 查看产业链信息 |
| | | openInfoDialog (row) { |
| | | openInfoDialog(row) { |
| | | this.showInfoDialog = true |
| | | this.$nextTick(() => { |
| | | this.$refs.showInfoDialog.getInfo(row.ifsInventoryId) |
| | | }) |
| | | }, |
| | | handleDowns(){ |
| | | if(this.mutiList.length==0){ |
| | | handleDowns() { |
| | | if (this.mutiList.length == 0) { |
| | | this.$message.error('请选择报告') |
| | | return |
| | | } |
| | | let str = this.mutiList.map(m=>m.id).join(',') |
| | | let str = this.mutiList.map(m => m.id).join(',') |
| | | this.outLoading = true |
| | | downAll({ids: str}).then(res => { |
| | | downAll({ ids: str }).then(res => { |
| | | this.outLoading = false |
| | | this.$message.success('导出成功') |
| | | this.$download.saveAs(this.javaApi + res.message, row.fileName); |
| | | }) |
| | | }, |
| | | beforeUpload(file){ |
| | | beforeUpload(file) { |
| | | const isZip = file.type === 'application/zip' || file.name.endsWith('.zip'); |
| | | if (!isZip) { |
| | | this.$message.error('上传文件只能是 ZIP 格式!'); |
| | | } |
| | | if(isZip){ |
| | | if (isZip) { |
| | | this.inLoading = true; |
| | | } |
| | | return isZip; |
| | |
| | | return Promise.reject(flag); //正确的终止 |
| | | } |
| | | }, |
| | | handleSuccess(response,){ |
| | | handleSuccess(response,) { |
| | | this.inLoading = false; |
| | | if (response.code == 200) { |
| | | this.$message.success('导入成功') |
| | | this.refreshTable() |
| | | }else{ |
| | | } else { |
| | | this.$message.error(response.message) |
| | | } |
| | | }, |
| | | onError(err, file, fileList,type) { |
| | | onError(err, file, fileList, type) { |
| | | this.$message.error('上传失败') |
| | | this.$refs.upload.clearFiles() |
| | | }, |
| | | onError1(err, file, fileList,type) { |
| | | onError1(err, file, fileList, type) { |
| | | this.$message.error('上传失败') |
| | | this.$refs.upload1.clearFiles() |
| | | }, |
| | |
| | | // 审核按钮 |
| | | handleIssued(row) { |
| | | this.currentInfo = row; |
| | | let fileName = (row.urlS===null||row.urlS==='')?row.url:row.urlS |
| | | let fileName = (row.urlS === null || row.urlS === '') ? row.url : row.urlS |
| | | let fileType = "docx" |
| | | if (row.tempUrlPdf != null || row.tempUrlPdf === '') { |
| | | fileName = row.tempUrlPdf |
| | | fileType = "pdf" |
| | | } |
| | | fileName = fileName.replace('/word/','') |
| | | fileName = fileName.replace('/word/', '') |
| | | const userName = this.nickName |
| | | this.option = { |
| | | url: this.javaApi + "/word/" + fileName, |
| | |
| | | // 查看报告 |
| | | viewIssued(row) { |
| | | this.currentInfo = row; |
| | | let fileName = (row.urlS===null||row.urlS==='')?row.url:row.urlS |
| | | let fileName = (row.urlS === null || row.urlS === '') ? row.url : row.urlS |
| | | let fileType = "docx" |
| | | if (row.tempUrlPdf != null || row.tempUrlPdf === '') { |
| | | fileName = row.tempUrlPdf |
| | | fileType = "pdf" |
| | | } |
| | | fileName = fileName.replace('/word/','') |
| | | fileName = fileName.replace('/word/', '') |
| | | const userName = this.nickName |
| | | this.option = { |
| | | url: this.javaApi + "/word/" + fileName, |
| | |
| | | type: 'warning' |
| | | }).then(() => { |
| | | this.upLoad = true |
| | | sendBackTask({id: row.id}).then(res => { |
| | | sendBackTask({ id: row.id }).then(res => { |
| | | this.upLoad = false |
| | | this.$message.success('退回成功!') |
| | | this.refreshTable('page') |
| | |
| | | }); |
| | | }, |
| | | // 审核通过 |
| | | submitAddApprover () { |
| | | submitAddApprover() { |
| | | if (!this.approver) { |
| | | this.$message.error('请选择审批人') |
| | | return |
| | |
| | | this.loadingIssued = false; |
| | | }) |
| | | }, |
| | | closeAddApproverDia () { |
| | | closeAddApproverDia() { |
| | | this.addApproverDia = false |
| | | this.approver = '' |
| | | }, |
| | |
| | | // 批准按钮 |
| | | handleApprove(row) { |
| | | this.currentInfo = row; |
| | | let fileName = (row.urlS===null||row.urlS==='')?row.url:row.urlS |
| | | let fileName = (row.urlS === null || row.urlS === '') ? row.url : row.urlS |
| | | let fileType = "docx" |
| | | if (row.tempUrlPdf != null || row.tempUrlPdf === '') { |
| | | fileName = row.tempUrlPdf |
| | | fileType = "pdf" |
| | | } |
| | | fileName = fileName.replace('/word/','') |
| | | fileName = fileName.replace('/word/', '') |
| | | const userName = this.nickName |
| | | this.option = { |
| | | url: this.javaApi + "/word/" + fileName, |
| | |
| | | this.approveVisible = false; |
| | | }) |
| | | }, |
| | | handle (row) { |
| | | handle(row) { |
| | | this.getAuthorizedPerson() |
| | | this.currentInfo = row; |
| | | this.addVerifyDia = true |
| | |
| | | this.$message.error('提交失败') |
| | | }) |
| | | }, |
| | | closeAddVerifyDia () { |
| | | closeAddVerifyDia() { |
| | | this.addVerifyDia = false |
| | | this.verifyUser = '' |
| | | }, |
| | |
| | | <div class="search"> |
| | | <div class="search_thing" style="width: 200px"> |
| | | <div class="search_label">星期:</div> |
| | | <el-select |
| | | v-model="entity.weekDay" |
| | | clearable |
| | | placeholder="全部" |
| | | size="small" |
| | | @change="refreshTable()" |
| | | > |
| | | <el-option |
| | | v-for="item in weekList" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | > |
| | | <el-select v-model="entity.weekDay" clearable placeholder="全部" size="small" @change="refreshTable()"> |
| | | <el-option v-for="item in weekList" :key="item.value" :label="item.label" :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | | </div> |
| | | <div class="search_thing" style="width: 390px"> |
| | | <div class="search_label" style="width: 90px">时间范围:</div> |
| | | <div class="search_input"> |
| | | <el-date-picker |
| | | v-model="entity.dateTime" |
| | | clearable |
| | | end-placeholder="结束日期" |
| | | format="yyyy-MM-dd" |
| | | range-separator="至" |
| | | size="small" |
| | | start-placeholder="开始日期" |
| | | style="width: 100%" |
| | | type="daterange" |
| | | value-format="yyyy-MM-dd" |
| | | @change="refreshTable()" |
| | | > |
| | | <el-date-picker v-model="entity.dateTime" clearable end-placeholder="结束日期" format="yyyy-MM-dd" |
| | | range-separator="至" size="small" start-placeholder="开始日期" style="width: 100%" type="daterange" |
| | | value-format="yyyy-MM-dd" @change="refreshTable()"> |
| | | </el-date-picker> |
| | | </div> |
| | | </div> |
| | | <!-- 以下这两个为组长角色特有的 --> |
| | | <div class="search_thing" style="width: 200px"> |
| | | <div class="search_label">名字:</div> |
| | | <el-input |
| | | v-model="entity.name" |
| | | clearable |
| | | placeholder="请输入" |
| | | size="small" |
| | | @keyup.enter.native="refreshTable()" |
| | | ></el-input> |
| | | <el-input v-model="entity.name" clearable placeholder="请输入" size="small" |
| | | @keyup.enter.native="refreshTable()"></el-input> |
| | | </div> |
| | | <div |
| | | v-if="currentTable == 'ValueTable1'" |
| | | class="search_thing" |
| | | style="width: 250px" |
| | | > |
| | | <div v-if="currentTable == 'ValueTable1'" class="search_thing" style="width: 250px"> |
| | | <div class="search_label" style="width: 120px">样品编号:</div> |
| | | <el-input |
| | | v-model="entity.sample" |
| | | clearable |
| | | placeholder="请输入" |
| | | size="small" |
| | | @keyup.enter.native="refreshTable()" |
| | | ></el-input> |
| | | <el-input v-model="entity.sample" clearable placeholder="请输入" size="small" |
| | | @keyup.enter.native="refreshTable()"></el-input> |
| | | </div> |
| | | <div |
| | | v-if="currentTable == 'ValueTable0'" |
| | | class="search_thing" |
| | | style="width: 200px" |
| | | > |
| | | <div v-if="currentTable == 'ValueTable0'" class="search_thing" style="width: 200px"> |
| | | <div class="search_label">状态:</div> |
| | | <el-select |
| | | v-model="entity.state" |
| | | placeholder="全部" |
| | | size="small" |
| | | @change="refreshTable()" |
| | | clearable |
| | | > |
| | | <el-option |
| | | v-for="item in stateList" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | > |
| | | <el-select v-model="entity.state" placeholder="全部" size="small" @change="refreshTable()" clearable> |
| | | <el-option v-for="item in stateList" :key="item.value" :label="item.label" :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | | </div> |
| | | <div class="search_thing" style="padding-left: 30px; width: 100px"> |
| | | <el-button size="small" @click="refresh()">重 置</el-button> |
| | | <el-button size="small" type="primary" @click="refreshTable()" |
| | | >查 询</el-button |
| | | > |
| | | <el-button size="small" type="primary" @click="refreshTable()">查 询</el-button> |
| | | </div> |
| | | </div> |
| | | <div |
| | | style="display: flex; align-items: center; justify-content: space-between" |
| | | > |
| | | <div style="display: flex; align-items: center; justify-content: space-between"> |
| | | <el-radio-group :key="'111'" v-model="currentTable" size="small"> |
| | | <el-radio-button label="ValueTable0"> 辅助工时 </el-radio-button> |
| | | <el-radio-button label="ValueTable1"> 产量工时 </el-radio-button> |
| | | </el-radio-group> |
| | | <div style="display: flex; align-items: center"> |
| | | <p style="font-size: 14px; margin-right: 30px"> |
| | | 总工时汇总:<span |
| | | v-if="totalInfo" |
| | | style="font-size: 16px; color: #3a7bfa" |
| | | >{{ |
| | | totalInfo["产量工时汇总"] + totalInfo["辅助工时汇总"] |
| | | ? Number( |
| | | totalInfo["产量工时汇总"] + totalInfo["辅助工时汇总"] |
| | | ).tofixed(4) |
| | | : 0 |
| | | }}</span |
| | | > 产量工时汇总:<span |
| | | v-if="totalInfo" |
| | | style="font-size: 16px; color: #3a7bfa" |
| | | >{{ |
| | | 总工时汇总:<span v-if="totalInfo" style="font-size: 16px; color: #3a7bfa">{{ |
| | | totalInfo["产量工时汇总"] + totalInfo["辅助工时汇总"] |
| | | ? Number( |
| | | totalInfo["产量工时汇总"] + totalInfo["辅助工时汇总"] |
| | | ).tofixed(4) |
| | | : 0 |
| | | }}</span> 产量工时汇总:<span v-if="totalInfo" style="font-size: 16px; color: #3a7bfa">{{ |
| | | totalInfo["产量工时汇总"] |
| | | ? Number(totalInfo["产量工时汇总"]).tofixed(4) |
| | | : 0 |
| | | }}</span |
| | | > 辅助工时汇总:<span |
| | | v-if="totalInfo" |
| | | style="font-size: 16px; color: #3a7bfa" |
| | | >{{ |
| | | }}</span> 辅助工时汇总:<span v-if="totalInfo" style="font-size: 16px; color: #3a7bfa">{{ |
| | | totalInfo["辅助工时汇总"] |
| | | ? Number(totalInfo["辅助工时汇总"]).tofixed(4) |
| | | : 0 |
| | | }}</span |
| | | > |
| | | }}</span> |
| | | </p> |
| | | <el-button |
| | | v-show=" |
| | | currentTable == 'ValueTable0' && |
| | | checkPermi(['performance:manHour:workTimeManagement:add']) |
| | | " |
| | | size="small" |
| | | type="primary" |
| | | @click="openAdd" |
| | | >录入数据</el-button |
| | | > |
| | | <el-button |
| | | v-if="down && currentTable === 'ValueTable0'" |
| | | :loading="outLoading" |
| | | size="small" |
| | | type="primary" |
| | | @click="handleOut" |
| | | >导 出</el-button |
| | | > |
| | | <el-button |
| | | v-if="down && currentTable === 'ValueTable1'" |
| | | :loading="outLoading" |
| | | size="small" |
| | | type="primary" |
| | | @click="handleOut1" |
| | | >导 出</el-button |
| | | > |
| | | <el-button |
| | | v-show=" |
| | | currentTable == 'ValueTable0' && |
| | | checkPermi(['performance:manHour:workTimeManagement:add']) |
| | | " |
| | | size="small" |
| | | type="primary" |
| | | @click="openBatchCheck(1)" |
| | | >批量批准</el-button |
| | | > |
| | | <el-button v-show="currentTable == 'ValueTable0' && |
| | | checkPermi(['performance:manHour:workTimeManagement:add']) |
| | | " size="small" type="primary" @click="openAdd">录入数据</el-button> |
| | | <el-button v-if="down && currentTable === 'ValueTable0'" :loading="outLoading" size="small" type="primary" |
| | | @click="handleOut">导 出</el-button> |
| | | <el-button v-if="down && currentTable === 'ValueTable1'" :loading="outLoading" size="small" type="primary" |
| | | @click="handleOut1">导 出</el-button> |
| | | <el-button v-show="currentTable == 'ValueTable0' && |
| | | checkPermi(['performance:manHour:workTimeManagement:add']) |
| | | " size="small" type="primary" @click="openBatchCheck(1)">批量批准</el-button> |
| | | </div> |
| | | </div> |
| | | <div class="table"> |
| | | <lims-table |
| | | :tableData="tableData" |
| | | :column="column" |
| | | :page="page" |
| | | :tableLoading="tableLoading" |
| | | :height="'calc(100vh - 350px)'" |
| | | :isSelection="true" |
| | | v-if="currentTable == 'ValueTable0'" |
| | | @pagination="pagination" |
| | | :handleSelectionChange="handleSelectionChange" |
| | | ></lims-table> |
| | | <lims-table |
| | | :tableData="tableData0" |
| | | :column="column0" |
| | | :page="page0" |
| | | :tableLoading="tableLoading" |
| | | :height="'calc(100vh - 350px)'" |
| | | v-if="currentTable == 'ValueTable1'" |
| | | @pagination="pagination0" |
| | | ></lims-table> |
| | | <lims-table :tableData="tableData" :column="column" :page="page" :tableLoading="tableLoading" |
| | | :height="'calc(100vh - 350px)'" :isSelection="true" v-if="currentTable == 'ValueTable0'" |
| | | @pagination="pagination" :handleSelectionChange="handleSelectionChange"></lims-table> |
| | | <lims-table :tableData="tableData0" :column="column0" :page="page0" :tableLoading="tableLoading" |
| | | :height="'calc(100vh - 350px)'" v-if="currentTable == 'ValueTable1'" @pagination="pagination0"></lims-table> |
| | | </div> |
| | | <el-dialog |
| | | :before-close="handleClose" |
| | | :title="formData.id ? '编辑' : '录入数据'" |
| | | :visible.sync="addVisible" |
| | | width="600px" |
| | | > |
| | | <el-dialog :before-close="handleClose" :title="formData.id ? '编辑' : '录入数据'" :visible.sync="addVisible" |
| | | width="600px"> |
| | | <el-row style="display: flex; justify-content: space-around"> |
| | | <el-col :span="12"> |
| | | <el-form :model="formData" label-width="90px"> |
| | | <el-form-item label="录入时间:"> |
| | | <el-radio-group v-model="formData.dateTime" size="small"> |
| | | <el-radio :label="getYearAndMonthAndDays() + ' 00:00:00'" |
| | | >今天</el-radio |
| | | > |
| | | <el-radio |
| | | :label=" |
| | | getYearAndMonthAndDays( |
| | | new Date(new Date().getTime() - 24 * 60 * 60 * 1000) |
| | | ) + ' 00:00:00' |
| | | " |
| | | >昨天</el-radio |
| | | > |
| | | <el-radio :label="getYearAndMonthAndDays() + ' 00:00:00'">今天</el-radio> |
| | | <el-radio :label="getYearAndMonthAndDays( |
| | | new Date(new Date().getTime() - 24 * 60 * 60 * 1000) |
| | | ) + ' 00:00:00' |
| | | ">昨天</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | <el-form-item label="年份:"> |
| | | <el-input |
| | | v-model="formData.year" |
| | | disabled |
| | | size="small" |
| | | ></el-input> |
| | | <el-input v-model="formData.year" disabled size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="周次:"> |
| | | <el-input |
| | | v-model="formData.week" |
| | | disabled |
| | | size="small" |
| | | ></el-input> |
| | | <el-input v-model="formData.week" disabled size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="星期:"> |
| | | <!-- <el-input v-model="formData.weekDay" size="small" disabled></el-input> --> |
| | | <el-select |
| | | v-model="formData.weekDay" |
| | | disabled |
| | | placeholder="请选择" |
| | | size="small" |
| | | > |
| | | <el-option |
| | | v-for="item in weekList" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | > |
| | | <el-select v-model="formData.weekDay" disabled placeholder="请选择" size="small"> |
| | | <el-option v-for="item in weekList" :key="item.value" :label="item.label" :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="班次:"> |
| | | <el-input |
| | | v-model="formData.shift" |
| | | disabled |
| | | size="small" |
| | | ></el-input> |
| | | <el-input v-model="formData.shift" disabled size="small"></el-input> |
| | | </el-form-item> |
| | | </el-form> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form :model="formData" label-width="90px"> |
| | | <el-form-item label="编号:" required> |
| | | <el-input |
| | | v-model="formData.number" |
| | | size="small" |
| | | @blur="getInfoByCode" |
| | | ></el-input> |
| | | <el-input v-model="formData.number" size="small" @blur="getInfoByCode"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="数量:" required> |
| | | <el-input v-model="formData.amount" size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="核准工时:"> |
| | | <el-input |
| | | v-model="formData.approvedWorkingHour" |
| | | disabled |
| | | size="small" |
| | | ></el-input> |
| | | <el-input v-model="formData.approvedWorkingHour" disabled size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="辅助工时:"> |
| | | <el-input |
| | | v-model="formData.nonproductiveTime" |
| | | disabled |
| | | size="small" |
| | | ></el-input> |
| | | <el-input v-model="formData.nonproductiveTime" disabled size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="辅助项目:"> |
| | | <el-input |
| | | v-model="formData.auxiliaryProject" |
| | | disabled |
| | | size="small" |
| | | ></el-input> |
| | | <el-input v-model="formData.auxiliaryProject" disabled size="small"></el-input> |
| | | </el-form-item> |
| | | </el-form> |
| | | </el-col> |
| | | </el-row> |
| | | <el-form :model="formData" label-width="90px"> |
| | | <el-form-item label="辅助说明:"> |
| | | <el-input |
| | | v-model="formData.remarks" |
| | | :rows="3" |
| | | size="small" |
| | | type="textarea" |
| | | ></el-input> |
| | | <el-input v-model="formData.remarks" :rows="3" size="small" type="textarea"></el-input> |
| | | </el-form-item> |
| | | </el-form> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-row> |
| | | <el-button @click="handleClose">取 消</el-button> |
| | | <el-button :loading="addLoad" type="primary" @click="submitAdd" |
| | | >确 定</el-button |
| | | > |
| | | <el-button :loading="addLoad" type="primary" @click="submitAdd">确 定</el-button> |
| | | </el-row> |
| | | </span> |
| | | </el-dialog> |
| | |
| | | <el-col :span="12"> |
| | | <el-form :model="formData0" label-width="90px"> |
| | | <el-form-item label="年份:"> |
| | | <el-input |
| | | v-model="formData0.year" |
| | | :disabled="title == '批准'" |
| | | size="small" |
| | | ></el-input> |
| | | <el-input v-model="formData0.year" :disabled="title == '批准'" size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="周次:"> |
| | | <el-input |
| | | v-model="formData0.week" |
| | | :disabled="title == '批准'" |
| | | size="small" |
| | | ></el-input> |
| | | <el-input v-model="formData0.week" :disabled="title == '批准'" size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="星期:"> |
| | | <el-select |
| | | v-model="formData0.weekDay" |
| | | :disabled="title == '批准'" |
| | | placeholder="请选择" |
| | | size="small" |
| | | > |
| | | <el-option |
| | | v-for="item in weekList" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | > |
| | | <el-select v-model="formData0.weekDay" :disabled="title == '批准'" placeholder="请选择" size="small"> |
| | | <el-option v-for="item in weekList" :key="item.value" :label="item.label" :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="姓名:"> |
| | | <el-input |
| | | v-model="formData0.name" |
| | | disabled |
| | | size="small" |
| | | ></el-input> |
| | | <el-input v-model="formData0.name" disabled size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="班次:"> |
| | | <el-select |
| | | v-model="formData0.shift" |
| | | :disabled="title == '批准'" |
| | | placeholder="请选择" |
| | | size="small" |
| | | > |
| | | <el-option |
| | | v-for="item in classType" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | > |
| | | <el-select v-model="formData0.shift" :disabled="title == '批准'" placeholder="请选择" size="small"> |
| | | <el-option v-for="item in classType" :key="item.value" :label="item.label" :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="复核说明:"> |
| | | <el-input |
| | | v-model="formData0.reviewerRemark" |
| | | :rows="3" |
| | | size="small" |
| | | type="textarea" |
| | | ></el-input> |
| | | <el-input v-model="formData0.reviewerRemark" :rows="3" size="small" type="textarea"></el-input> |
| | | </el-form-item> |
| | | </el-form> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form :model="formData0" label-width="90px"> |
| | | <el-form-item label="编号:" required> |
| | | <el-input |
| | | v-model="formData0.number" |
| | | :disabled="title == '批准'" |
| | | size="small" |
| | | ></el-input> |
| | | <el-input v-model="formData0.number" :disabled="title == '批准'" size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="数量:" required> |
| | | <el-input |
| | | v-model="formData0.amount" |
| | | :disabled="title == '批准'" |
| | | size="small" |
| | | ></el-input> |
| | | <el-input v-model="formData0.amount" :disabled="title == '批准'" size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="复核数量:" required> |
| | | <el-input |
| | | v-model="formData0.reviewerNumber" |
| | | size="small" |
| | | ></el-input> |
| | | <el-input v-model="formData0.reviewerNumber" size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="核准工时:"> |
| | | <el-input |
| | | v-model="formData0.approvedWorkingHour" |
| | | disabled |
| | | size="small" |
| | | ></el-input> |
| | | <el-input v-model="formData0.approvedWorkingHour" disabled size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="复核工时:"> |
| | | <el-input |
| | | v-model="formData0.reviewerNonproductiveTime" |
| | | disabled |
| | | size="small" |
| | | ></el-input> |
| | | <el-input v-model="formData0.reviewerNonproductiveTime" disabled size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="辅助项目:"> |
| | | <el-input |
| | | v-model="formData0.auxiliaryProject" |
| | | disabled |
| | | size="small" |
| | | ></el-input> |
| | | <el-input v-model="formData0.auxiliaryProject" disabled size="small"></el-input> |
| | | </el-form-item> |
| | | </el-form> |
| | | </el-col> |
| | | </el-row> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-row> |
| | | <el-button :loading="checkLoadN" @click="submitCheck(0)" |
| | | >不批准</el-button |
| | | > |
| | | <el-button |
| | | :loading="checkLoadY" |
| | | type="primary" |
| | | @click="submitCheck(1)" |
| | | >批 准</el-button |
| | | > |
| | | <el-button :loading="checkLoadN" @click="submitCheck(0)">不批准</el-button> |
| | | <el-button :loading="checkLoadY" type="primary" @click="submitCheck(1)">批 准</el-button> |
| | | </el-row> |
| | | </span> |
| | | </el-dialog> |
| | | <el-dialog |
| | | :before-close="closeBatchCheckDialog" |
| | | :title="batchCheckTitle" |
| | | :visible.sync="batchCheckDialog" |
| | | width="30%" |
| | | > |
| | | <el-dialog :before-close="closeBatchCheckDialog" :title="batchCheckTitle" :visible.sync="batchCheckDialog" |
| | | width="30%"> |
| | | <span>{{ batchCheckDialogMessage }}</span> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="batchCheck(0)">不批准</el-button> |
| | |
| | | this.refreshTable("page"); |
| | | }); |
| | | }) |
| | | .catch(() => {}); |
| | | .catch(() => { }); |
| | | }, |
| | | handleClose() { |
| | | this.addVisible = false; |
| | |
| | | exportAssistantHours({ entity: entity }) |
| | | .then((res) => { |
| | | this.outLoading = false; |
| | | this.$message.success("导出成功"); |
| | | const blob = new Blob([res]); |
| | | this.$download.saveAs(blob, "辅助工时信息导出.xlsx"); |
| | | }) |
| | |
| | | exportOutputHours({ entity: entity }) |
| | | .then((res) => { |
| | | this.outLoading = false; |
| | | this.$message.success("导出成功"); |
| | | const blob = new Blob([res]); |
| | | this.$download.saveAs(blob, "产量工时信息导出.xlsx"); |
| | | }) |
| | |
| | | padding-top: 0; |
| | | /* scrollbar-width: none; */ |
| | | } |
| | | |
| | | /* .work-time-management::-webkit-scrollbar { |
| | | display: none; |
| | | } */ |