| | |
| | | <template> |
| | | <!-- 所有文件(内、外部文件)的发放与回收记录 --> |
| | | <div class="DistributionRetrievalRecordsAllDocuments"> |
| | | <el-row class="title"> |
| | | <el-col :span="12" style="padding-left: 20px;text-align: left;">所有文件(内、外部文件)的发放与回收记录</el-col> |
| | | <el-col :span="12" style="text-align: right;"> |
| | | <el-button size="medium" type="primary" @click="openAdd" v-if="addPower">新增</el-button> |
| | | <el-upload :action="action" :multiple="false" :show-file-list="false" accept='.doc,.docx' :headers="headers" |
| | | :on-change="beforeUpload" :on-error="onError" ref='upload' v-if="upPower" :on-success="handleSuccessUp" |
| | | style="display:inline-block;margin-left: 20px;"> |
| | | <el-button type="primary" size="medium">导入</el-button></el-upload> |
| | | <el-button size="medium" type="primary" @click="handleDown" :loading="outLoading" v-if="outPower" |
| | | style="display:inline-block;margin-left: 20px;">导出</el-button> |
| | | </el-col> |
| | | </el-row> |
| | | <div class="search"> |
| | | <div class="search_thing"> |
| | | <div class="search_label">文件名称:</div> |
| | | <div class="search_input"><el-input size="small" placeholder="请输入" clearable |
| | | v-model="componentData.entity.documentName" @keyup.enter.native="refreshTable()"></el-input></div> |
| | | <div class="search_input"><el-input size="small" placeholder="请输入" clearable v-model="queryParams.documentName" |
| | | @keyup.enter.native="refreshTable()"></el-input></div> |
| | | </div> |
| | | <div class="search_thing"> |
| | | <div class="search_label">文件编号:</div> |
| | | <div class="search_input"> |
| | | <el-input size="small" placeholder="请输入" clearable v-model="componentData.entity.documentCode" |
| | | <el-input size="small" placeholder="请输入" clearable v-model="queryParams.documentCode" |
| | | @keyup.enter.native="refreshTable()"></el-input> |
| | | </div> |
| | | </div> |
| | |
| | | <el-button size="small" @click="refresh()">重 置</el-button> |
| | | <el-button size="small" type="primary" @click="refreshTable()">查 询</el-button> |
| | | </div> |
| | | <div class="btn"> |
| | | <el-button size="small" type="primary" @click="openAdd">新增</el-button> |
| | | <el-upload :action="action" :multiple="false" :show-file-list="false" accept='.doc,.docx' |
| | | :headers="uploadHeader" :on-change="beforeUpload" :on-error="onError" ref='upload' |
| | | :on-success="handleSuccessUp" style="display:inline-block;margin-left: 20px;"> |
| | | <el-button type="primary" size="small">导入</el-button></el-upload> |
| | | <el-button size="small" type="primary" @click="handleDown" :loading="outLoading" |
| | | style="display:inline-block;margin-left: 20px;">导出</el-button> |
| | | </div> |
| | | </div> |
| | | <div class="table"> |
| | | <ValueTable ref="ValueTable" :url="$api.manageRecordIssueRecycle.pageManageRecordIssueRecycle" |
| | | :delUrl="$api.manageRecordIssueRecycle.delManageRecordIssueRecycle" :componentData="componentData" |
| | | :upUrl="$api.manageRecordIssueRecycle.doManageRecordIssueRecycle" :key="upIndex" /> |
| | | <lims-table :tableData="tableData" :column="column" :page="page" :tableLoading="tableLoading" |
| | | :height="'calc(100vh - 260px)'" @pagination="pagination"></lims-table> |
| | | </div> |
| | | <el-dialog :title="title" :visible.sync="addDialogVisible" width="400px" top="6vh"> |
| | | <el-row> |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import ValueTable from '@/components/Table/value-table.vue' |
| | | import limsTable from "@/components/Table/lims-table.vue"; |
| | | import { |
| | | getYearAndMonthAndDays |
| | | } from '@/utils/date' |
| | | import { getToken } from "@/utils/auth"; |
| | | import { |
| | | selectUserCondition, |
| | | } from "@/api/business/inspectionTask.js"; |
| | | import { |
| | | exportOutManageRecordIssueRecycle, |
| | | doManageRecordIssueRecycle, |
| | | addManageRecordIssueRecycle, |
| | | selectCNSAPersonTree, |
| | | pageManageRecordIssueRecycle, |
| | | delManageRecordIssueRecycle, |
| | | } from '@/api/cnas/systemManagement/documentRecords.js' |
| | | import { |
| | | pageManageDocumentList, |
| | | } from '@/api/cnas/systemManagement/documentControl.js' |
| | | import { mapGetters } from "vuex"; |
| | | export default { |
| | | name: 'DistributionCollectionRecord', |
| | | components: { |
| | | ValueTable |
| | | limsTable |
| | | }, |
| | | data() { |
| | | return { |
| | |
| | | upPower: true, |
| | | outLoading: false, |
| | | addLoading: false, |
| | | componentData: { |
| | | entity: { |
| | | documentName: null, |
| | | documentCode: null, |
| | | orderBy: { |
| | | field: 'id', |
| | | order: 'desc' |
| | | } |
| | | }, |
| | | isIndex: true, |
| | | showSelect: false, |
| | | select: false, |
| | | // selectMethod: 'handleChangeTask', |
| | | do: [{ |
| | | id: 'delete', |
| | | font: '删除', |
| | | type: 'text', |
| | | method: 'doDiy', |
| | | disabFun: (row, index) => { |
| | | return !!row.signedUser |
| | | } |
| | | }, { |
| | | id: 'handleEdit', |
| | | font: '修改', |
| | | type: 'text', |
| | | method: 'handleEdit', |
| | | field: [], |
| | | disabFun: (row, index) => { |
| | | return !!row.signedUser |
| | | } |
| | | }, { |
| | | id: 'handleBack', |
| | | font: '回收', |
| | | type: 'text', |
| | | method: 'handleBack', |
| | | disabFun: (row, index) => { |
| | | return !!row.signedUser |
| | | } |
| | | }], |
| | | tagField: { |
| | | // documentType:{ |
| | | // select: [] |
| | | // }, |
| | | // receiveUserName:{ |
| | | // select: [] |
| | | // }, |
| | | }, |
| | | selectField: { |
| | | // documentType:{ |
| | | // select: [] |
| | | // }, |
| | | // receiveUserName:{ |
| | | // select: [] |
| | | // }, |
| | | }, |
| | | addUpload: ['signatoryUrl'], |
| | | requiredAdd: [], |
| | | requiredUp: [], |
| | | datePicker: ['receiveDate'], |
| | | noHead: ['signedUserName', 'signedDate', 'departLims'],//不参与新增编辑的字段 |
| | | needSort: [], |
| | | inputType: '' |
| | | }, |
| | | entityCopy: {}, |
| | | upIndex: 0, |
| | | title: '新增', |
| | | addDialogVisible: false, |
| | | addInfo: {}, |
| | | personList: [], |
| | | fileType: [], |
| | | fileList: [], |
| | | list: [] |
| | | list: [], |
| | | queryParams: {}, |
| | | tableData: [], |
| | | column: [ |
| | | { label: "文件编号", prop: "documentCode" }, |
| | | { label: "文件名称", prop: "documentName", width: "120px" }, |
| | | { |
| | | label: "版号", |
| | | prop: "documentVersion", |
| | | }, |
| | | { label: "份数", prop: "pages" }, |
| | | { label: "文件类别", prop: "documentType" }, |
| | | { label: "分发号", prop: "number" }, |
| | | { label: "接受人", prop: "receiveUserName" }, |
| | | { label: "接收部门", prop: "departLims" }, |
| | | { label: "接受日期", prop: "receiveDate" }, |
| | | { label: "签收人", prop: "signedUserName" }, |
| | | { label: "签收日期", prop: "signedDate" }, |
| | | { |
| | | dataType: "action", |
| | | fixed: "right", |
| | | label: "操作", |
| | | operation: [ |
| | | { |
| | | name: "编辑", |
| | | type: "text", |
| | | clickFun: (row) => { |
| | | this.handleEdit(row); |
| | | }, |
| | | disabled: (row) => { |
| | | return !!row.signedUser |
| | | }, |
| | | }, |
| | | { |
| | | name: "回收", |
| | | type: "text", |
| | | clickFun: (row) => { |
| | | this.handleBack(row); |
| | | }, |
| | | disabled: (row) => { |
| | | return !!row.signedUser |
| | | }, |
| | | }, |
| | | { |
| | | name: "删除", |
| | | type: "text", |
| | | clickFun: (row) => { |
| | | this.handleDelete(row); |
| | | }, |
| | | disabled: (row) => { |
| | | return !!row.signedUser |
| | | }, |
| | | }, |
| | | ], |
| | | }, |
| | | ], |
| | | page: { |
| | | total: 0, |
| | | size: 10, |
| | | current: 0, |
| | | }, |
| | | tableLoading: false, |
| | | } |
| | | }, |
| | | // 用于上传文件的信息 |
| | | computed: { |
| | | headers() { |
| | | return { |
| | | 'Authorization': "Bearer " + getToken() |
| | | } |
| | | }, |
| | | action() { |
| | | return this.javaApi + this.$api.manageRecordIssueRecycle.exportInManageRecordIssueRecycle |
| | | } |
| | | return this.javaApi + '/manageRecordIssueRecycle/exportInManageRecordIssueRecycle' |
| | | }, |
| | | ...mapGetters(["userId"]), |
| | | }, |
| | | mounted() { |
| | | this.entityCopy = this.HaveJson(this.componentData.entity); |
| | | this.getPower() |
| | | // this.entityCopy = this.HaveJson(this.componentData.entity); |
| | | this.getList() |
| | | this.getAuthorizedPerson() |
| | | this.selectEnumByCategory() |
| | | this.getFileList() |
| | | this.selectTreeList() |
| | | // TODO 部门接口需要重写 |
| | | // this.selectTreeList() |
| | | }, |
| | | methods: { |
| | | getPower() { |
| | | let power = JSON.parse(sessionStorage.getItem('power')) |
| | | let add = false |
| | | let del = false |
| | | let up = false; |
| | | let out = false; |
| | | let edit = false |
| | | for (var i = 0; i < power.length; i++) { |
| | | if (power[i].menuMethod == 'addManageRecordIssueRecycle') { |
| | | add = true |
| | | } |
| | | if (power[i].menuMethod == 'delManageRecordIssueRecycle') { |
| | | del = true |
| | | } |
| | | if (power[i].menuMethod == 'exportInManageRecordIssueRecycle') { |
| | | up = true |
| | | } |
| | | if (power[i].menuMethod == 'doManageRecordIssueRecycle') { |
| | | edit = true |
| | | } |
| | | if (power[i].menuMethod == 'exportOutManageRecordIssueRecycle') { |
| | | out = true |
| | | } |
| | | } |
| | | if (!add) { |
| | | this.componentData.do.splice(2, 1) |
| | | } |
| | | if (!add) { |
| | | this.componentData.do.splice(1, 1) |
| | | } |
| | | if (!del) { |
| | | this.componentData.do.splice(0, 1) |
| | | } |
| | | this.addPower = add |
| | | this.outPower = out |
| | | this.upPower = up |
| | | }, |
| | | // 新增 |
| | | openAdd() { |
| | | // this.$refs.ValueTable.openAddDia(this.$api.manageRecordIssueRecycle.addManageRecordIssueRecycle); |
| | |
| | | // 导出 |
| | | handleDown() { |
| | | this.outLoading = true |
| | | this.$axios.post(this.$api.manageRecordIssueRecycle.exportOutManageRecordIssueRecycle, { entity: this.componentData.entity }, { headers: { 'Content-Type': 'application/json' } }).then(res => { |
| | | 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.message |
| | | const link = document.createElement('a'); |
| | | link.href = url; |
| | | link.download = '文件发放与回收记录'; |
| | | link.click(); |
| | | this.$download.saveAs(res.data, '文件发放与回收记录') |
| | | }) |
| | | }, |
| | | refreshTable() { |
| | | this.refreshTable()() |
| | | getList() { |
| | | this.tableLoading = true; |
| | | let param = { ...this.queryParams, ...this.page }; |
| | | delete param.total; |
| | | pageManageRecordIssueRecycle({ ...param }) |
| | | .then((res) => { |
| | | this.tableLoading = false; |
| | | if (res.code === 200) { |
| | | this.tableData = res.data.records; |
| | | this.page.total = res.data.total; |
| | | } |
| | | }) |
| | | .catch((err) => { |
| | | this.tableLoading = false; |
| | | }); |
| | | }, |
| | | pagination({ page, limit }) { |
| | | this.page.current = page; |
| | | this.page.size = limit; |
| | | this.getList(); |
| | | }, |
| | | refresh() { |
| | | this.componentData.entity = this.HaveJson(this.entityCopy) |
| | | this.upIndex++ |
| | | this.refreshTable() |
| | | this.queryParams = {}; |
| | | this.page.current = 1; |
| | | this.getList(); |
| | | }, |
| | | refreshTable() { |
| | | this.page.current = 1; |
| | | this.getList(); |
| | | }, |
| | | getAuthorizedPerson() { |
| | | this.$axios.get(this.$api.user.getUserMenu).then(res => { |
| | | selectUserCondition().then(res => { |
| | | let data = [] |
| | | res.data.forEach(a => { |
| | | data.push({ |
| | |
| | | value: a.id |
| | | }) |
| | | }) |
| | | // this.componentData.tagField.receiveUserName.select = data |
| | | // this.componentData.selectField.receiveUserName.select = data |
| | | this.personList = data |
| | | }) |
| | | }, |
| | |
| | | this.upLoading = false; |
| | | if (response.code == 200) { |
| | | this.$message.success('上传成功'); |
| | | this.refreshTable()() |
| | | this.refreshTable() |
| | | } else { |
| | | this.$message.error('上传失败'); |
| | | } |
| | | }, |
| | | selectEnumByCategory() { |
| | | this.$axios.post(this.$api.enums.selectEnumByCategory, { |
| | | category: "文件类别" |
| | | }).then(res => { |
| | | // this.componentData.tagField.documentType.select = res.data |
| | | // this.componentData.selectField.documentType.select = res.data |
| | | this.fileType = res.data |
| | | }) |
| | | // 文件类别 |
| | | this.getDicts("document_type").then((response) => { |
| | | this.fileType = this.dictToValue(response.data); |
| | | }); |
| | | }, |
| | | // 获取文件列表--文件清单 |
| | | getFileList() { |
| | | this.$axios.post(this.$api.manageDocumentList.pageManageDocumentList, { |
| | | entity: { |
| | | orderBy: { |
| | | field: 'createTime', |
| | | order: 'desc' |
| | | } |
| | | }, |
| | | page: { |
| | | current: -1, |
| | | size: -1 |
| | | } |
| | | }, { |
| | | headers: { |
| | | 'Content-Type': 'application/json' |
| | | } |
| | | pageManageDocumentList({ |
| | | current: -1, |
| | | size: -1 |
| | | }).then(res => { |
| | | this.fileList = res.data.body.records.map(m => { |
| | | this.fileList = res.data.records.map(m => { |
| | | m.title = m.documentCode |
| | | return m |
| | | }) |
| | |
| | | let { id, documentCode, documentName, documentVersion, pages, documentType, number, receiveUser, receiveDate, departLims } = this.addInfo |
| | | obj = { id, documentCode, documentName, documentVersion, pages, documentType, number, receiveUser, receiveDate, departLims } |
| | | } |
| | | this.$axios.post(this.$api.manageRecordIssueRecycle[this.title == '新增' ? 'addManageRecordIssueRecycle' : 'doManageRecordIssueRecycle'], obj, { headers: { 'Content-Type': 'application/json' }, noQs: true }).then(res => { |
| | | this.addLoading = false |
| | | if (res.code == 201) { |
| | | return |
| | | } |
| | | this.addDialogVisible = false |
| | | this.$message({ |
| | | type: 'success', |
| | | message: '操作成功!' |
| | | }); |
| | | this.refreshTable() |
| | | }).catch(err => { }) |
| | | if (this.title == '新增') { |
| | | addManageRecordIssueRecycle(obj).then(res => { |
| | | this.addLoading = false |
| | | this.addDialogVisible = false |
| | | this.$message({ |
| | | type: 'success', |
| | | message: '操作成功!' |
| | | }); |
| | | this.refreshTable() |
| | | }).catch(err => { }) |
| | | } else { |
| | | doManageRecordIssueRecycle(obj).then(res => { |
| | | this.addLoading = false |
| | | this.addDialogVisible = false |
| | | this.$message({ |
| | | type: 'success', |
| | | message: '操作成功!' |
| | | }); |
| | | this.refreshTable() |
| | | }).catch(err => { }) |
| | | } |
| | | }, |
| | | // 回收 |
| | | handleBack(row) { |
| | |
| | | }).then(() => { |
| | | let obj = {} |
| | | let { id, documentCode, documentName, documentVersion, pages, documentType, number, receiveUser, receiveDate, departLims } = row |
| | | obj = { id, documentCode, documentName, documentVersion, pages, documentType, number, receiveUser, receiveDate, departLims, signedDate: getYearAndMonthAndDays(), signedUser: JSON.parse(localStorage.getItem("user")).userId } |
| | | this.$axios.post(this.$api.manageRecordIssueRecycle.doManageRecordIssueRecycle, obj, { headers: { 'Content-Type': 'application/json' }, noQs: true }).then(res => { |
| | | obj = { id, documentCode, documentName, documentVersion, pages, documentType, number, receiveUser, receiveDate, departLims, signedDate: getYearAndMonthAndDays(), signedUser: this.userId } |
| | | doManageRecordIssueRecycle(obj).then(res => { |
| | | this.addLoading = false |
| | | if (res.code == 201) { |
| | | return |
| | | } |
| | | this.addDialogVisible = false |
| | | this.$message({ |
| | | type: 'success', |
| | |
| | | }, |
| | | // 查询树形列表 |
| | | selectTreeList() { |
| | | this.$axios.get(this.$api.personnel.selectCNSAPersonTree).then((res) => { |
| | | selectCNSAPersonTree().then((res) => { |
| | | this.list = res.data[0].children; |
| | | }); |
| | | }, |
| | | handleDelete(row) { |
| | | this.$confirm("是否删除该条数据?", "提示", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning", |
| | | }) |
| | | .then(() => { |
| | | delManageRecordIssueRecycle({ id: row.id }).then((res) => { |
| | | this.$message.success("删除成功"); |
| | | this.refresh(); |
| | | }); |
| | | }) |
| | | .catch(() => { }); |
| | | }, |
| | | } |
| | | } |
| | |
| | | .table { |
| | | margin-top: 10px; |
| | | background-color: #fff; |
| | | width: calc(100% - 40px); |
| | | height: calc(100% - 60px - 80px - 10px - 40px); |
| | | padding: 20px; |
| | | padding-top: 0; |
| | | } |
| | | </style> |