From b64a83dda524fd1aa969622e2cb8e9469a95a283 Mon Sep 17 00:00:00 2001 From: gaoluyang <2820782392@qq.com> Date: 星期五, 28 二月 2025 17:12:23 +0800 Subject: [PATCH] 人员-人员能力、沟通记录搬迁 --- src/views/CNAS/personnel/personnelInfo/index.vue | 16 src/InspectionWorker.worker.js | 4 src/views/CNAS/personnel/personnelInfo/tabs/communicate.vue | 334 +++++++++---------------- src/views/CNAS/personnel/personnelInfo/components/communicateAdd.vue | 136 ++++++++++ src/utils/index.js | 2 src/api/cnas/personal/personPersonnelCapacity.js | 51 +++ src/views/CNAS/personnel/personnelInfo/tabs/personnel-capacity.vue | 193 +++++--------- src/api/cnas/personal/personPersonCommunicationAbilityPage.js | 35 ++ 8 files changed, 426 insertions(+), 345 deletions(-) diff --git a/src/InspectionWorker.worker.js b/src/InspectionWorker.worker.js index c8e0764..9f6d11c 100644 --- a/src/InspectionWorker.worker.js +++ b/src/InspectionWorker.worker.js @@ -1815,7 +1815,7 @@ // Create version of divisor with leading zero. bz.unshift(0); - // Add zeros to make remainder as long as divisor. + // CommunicateAdd zeros to make remainder as long as divisor. for (; rl++ < bl; ) r.push(0); do { @@ -1853,7 +1853,7 @@ } } - // Add the digit n to the result array. + // CommunicateAdd the digit n to the result array. qc[qi++] = cmp ? n : ++n; // Update the remainder. diff --git a/src/api/cnas/personal/personPersonCommunicationAbilityPage.js b/src/api/cnas/personal/personPersonCommunicationAbilityPage.js new file mode 100644 index 0000000..c1d553c --- /dev/null +++ b/src/api/cnas/personal/personPersonCommunicationAbilityPage.js @@ -0,0 +1,35 @@ +import request from "@/utils/request"; + +// 鏌ヨ浜哄憳娌熼�氳褰� +export function personPersonCommunicationAbilityPage(query) { + return request({ + url: "/personCommunicationAbility/personPersonCommunicationAbilityPage", + method: "get", + params: query + }); +} +// 鍒犻櫎浜哄憳娌熼�氳褰� +export function deletePersonCommunicationAbility(query) { + return request({ + url: "/personCommunicationAbility/deletePersonCommunicationAbility", + method: "delete", + params: query + }); +} +// 瀵煎嚭浜哄憳娌熼�氳褰� +export function exportPersonCommunicationAbility(query) { + return request({ + url: "/personCommunicationAbility/exportPersonCommunicationAbility", + method: "get", + params: query, + responseType: "blob" + }); +} +// 鏂板-缂栬緫浜哄憳娌熼�氳褰� +export function addOrUpdatePersonCommunicationAbility(query) { + return request({ + url: "/personCommunicationAbility/addOrUpdatePersonCommunicationAbility", + method: "post", + data: query + }); +} diff --git a/src/api/cnas/personal/personPersonnelCapacity.js b/src/api/cnas/personal/personPersonnelCapacity.js new file mode 100644 index 0000000..f5b4503 --- /dev/null +++ b/src/api/cnas/personal/personPersonnelCapacity.js @@ -0,0 +1,51 @@ +import request from "@/utils/request"; + +// 鏌ヨ浜哄憳鑳藉姏 +export function personPersonnelCapacityPage(query) { + return request({ + url: "/personPersonnelCapacity/personPersonnelCapacityPage", + method: "get", + params: query + }); +} +// 鏂板缂栬緫浜哄憳鑳藉姏 +export function addOrUpdatePersonPersonnelCapacity(query) { + return request({ + url: "/personPersonnelCapacity/addOrUpdatePersonPersonnelCapacity", + method: "post", + data: query + }); +} +// 鏂板缂栬緫浜哄憳鑳藉姏 +export function submitConfirmPersonnelCapability(query) { + return request({ + url: "/personPersonnelCapacity/submitConfirmPersonnelCapability", + method: "post", + data: query + }); +} +// 纭浜哄憳鑳藉姏 +export function confirmPersonnelCapability(query) { + return request({ + url: "/personPersonnelCapacity/confirmPersonnelCapability", + method: "get", + params: query + }); +} +// 鍒犻櫎浜哄憳鑳藉姏 +export function deletePersonPersonnelCapacity(query) { + return request({ + url: "/personPersonnelCapacity/deletePersonPersonnelCapacity", + method: "delete", + params: query + }); +} +// 瀵煎嚭浜哄憳鑳藉姏 +export function exportPersonnelCapacity(query) { + return request({ + url: "/personPersonnelCapacity/exportPersonnelCapacity", + method: "get", + params: query, + responseType: "blob" + }); +} diff --git a/src/utils/index.js b/src/utils/index.js index 6a246f9..553fb3c 100644 --- a/src/utils/index.js +++ b/src/utils/index.js @@ -307,7 +307,7 @@ } /** - * Add class to element + * CommunicateAdd class to element * @param {HTMLElement} elm * @param {string} cls */ diff --git a/src/views/CNAS/personnel/personnelInfo/components/communicateAdd.vue b/src/views/CNAS/personnel/personnelInfo/components/communicateAdd.vue new file mode 100644 index 0000000..8ac6ea6 --- /dev/null +++ b/src/views/CNAS/personnel/personnelInfo/components/communicateAdd.vue @@ -0,0 +1,136 @@ +<template><div class="add"> + <el-dialog + :title="isEdit ?'缂栬緫闄勪欢璧勬枡':'鏂板闄勪欢璧勬枡'" + :visible.sync="dialogVisible" + width="40%" + > + <el-form + :model="form" + ref="form" + :rules="rules" + label-width="80px" + size="small" + > + <el-form-item label="娌熼�氫汉" prop="userId"> + <el-select + v-model="form.userId" + placeholder="璇烽�夋嫨" + style="width: 100%" multiple + > + <el-option + v-for="(item, index) in userList" + :key="index" + :label="item.name" + :value="item.id" + ></el-option> + </el-select> + </el-form-item> + <el-form-item label="娌熼�氭椂闂�" prop="communicationTime"> + <el-date-picker + v-model="form.communicationTime" + type="datetime" + value-format="yyyy-MM-dd HH:mm:ss" + placeholder="璇烽�夋嫨鏃ユ湡鏃堕棿" + style="width: 100%" + > + </el-date-picker> + </el-form-item > + <el-form-item label="娌熼�氬湴鐐�" prop="communicationPlace"> + <el-input v-model="form.communicationPlace" placeholder="璇峰~鍐欐矡閫氬湴鐐�"></el-input> + </el-form-item > + <el-form-item label="娌熼�氬唴瀹�" prop="communicationContent"> + <el-input v-model="form.communicationContent" placeholder="璇峰~鍐欐矡閫氬唴瀹�"></el-input> + </el-form-item > + </el-form> + <div slot="footer" class="foot"> + <el-button @click="dialogVisible = false">鍙� 娑�</el-button> + <el-button type="primary" :loading="loading" @click="submitForm">纭� 瀹�</el-button> + </div> + </el-dialog> +</div> +</template> +<script> +import {selectUserCondition} from "@/api/business/inspectionTask"; +import {addOrUpdatePersonCommunicationAbility} from "@/api/cnas/personal/personPersonCommunicationAbilityPage"; + +export default { + data() { + return { + isEdit: false, + dialogVisible: false, + form: { + id: '', + userId: [], + communicationTime: undefined, + communicationPlace: undefined, + communicationContent: undefined + }, + rules: { + userId: [{ required: true, message: '璇烽�夋嫨娌熼�氫汉', trigger: 'change' }], + communicationTime: [{ required: true, message: '璇烽�夋嫨娌熼�氭椂闂�', trigger: 'change' }], + communicationPlace: [{ required: true, message: '璇峰~鍐欐矡閫氬湴鐐�', trigger: 'blur' }], + communicationContent: [{ required: true, message: '璇峰~鍐欐矡閫氬唴瀹�', trigger: 'blur' }], + }, + loading: false, + userList: [] + } + }, + methods: { + /** + * @desc 鏄剧ず妯℃�佹 + * @param {*} row + * @param {*} type + */ + openDialog(row, type) { + this.getUserList() + this.dialogVisible = true + if(type) { + this.isEdit = true + this.form.id = row.id + this.form.userId = row.userId.split(',').map(m=>Number(m)) + this.form.communicationTime = row.communicationTime + this.form.communicationPlace = row.communicationPlace + this.form.communicationContent = row.communicationContent + } else { + this.form.id = '' + this.resetForm('form') + } + }, + /** + * @desc 鑾峰彇鐢ㄦ埛淇℃伅 + */ + async getUserList() { + selectUserCondition().then((res) => { + this.userList = res.data; + }) + }, + /** + * @desc 鎻愪氦琛ㄥ崟 + */ + async submitForm() { + this.$refs.form.validate((valid) => { + if (valid) { + this.loading = true + const params = { + id: this.form.id, + userId: this.form.userId.join(','), + communicationTime: this.form.communicationTime, + communicationPlace: this.form.communicationPlace, + communicationContent: this.form.communicationContent, + } + addOrUpdatePersonCommunicationAbility(params).then((res) => { + this.loading = false + this.resetForm('form') + this.$emit('submit') + this.dialogVisible = false + }).catch((err) => { + this.loading = false + }) + } + }) + } + } +} +</script> +<style scoped> +</style> diff --git a/src/views/CNAS/personnel/personnelInfo/index.vue b/src/views/CNAS/personnel/personnelInfo/index.vue index 0fa410d..9867a41 100644 --- a/src/views/CNAS/personnel/personnelInfo/index.vue +++ b/src/views/CNAS/personnel/personnelInfo/index.vue @@ -78,14 +78,14 @@ <el-tab-pane label="浠昏亴鎺堟潈璁板綍" name="浠昏亴鎺堟潈璁板綍"> <Mandate v-if="activeName === '浠昏亴鎺堟潈璁板綍'" ref="manDateRef" :departId="departId" :isDepartment="isDepartment"></Mandate> </el-tab-pane> -<!-- <el-tab-pane label="浜哄憳鑳藉姏" name="浜哄憳鑳藉姏">--> -<!-- <personnel-capacity v-if="activeName === '浜哄憳鑳藉姏'" ref="personnelCapacity"--> -<!-- :departId="departId"--> -<!-- :isDepartment="isDepartment"></personnel-capacity>--> -<!-- </el-tab-pane>--> -<!-- <el-tab-pane label="娌熼�氳褰�" name="娌熼�氳褰�">--> -<!-- <Communicate v-if="activeName === '娌熼�氳褰�'" ref="communicateRef" :departId="departId" :isDepartment="isDepartment"></Communicate>--> -<!-- </el-tab-pane>--> + <el-tab-pane label="浜哄憳鑳藉姏" name="浜哄憳鑳藉姏"> + <personnel-capacity v-if="activeName === '浜哄憳鑳藉姏'" ref="personnelCapacity" + :departId="departId" + :isDepartment="isDepartment"></personnel-capacity> + </el-tab-pane> + <el-tab-pane label="娌熼�氳褰�" name="娌熼�氳褰�"> + <Communicate v-if="activeName === '娌熼�氳褰�'" ref="communicateRef" :departId="departId" :isDepartment="isDepartment"></Communicate> + </el-tab-pane> </el-tabs> </div> <el-dialog :visible.sync="addDia" title="鏋舵瀯鏂板" width="400px"> diff --git a/src/views/CNAS/personnel/personnelInfo/tabs/communicate.vue b/src/views/CNAS/personnel/personnelInfo/tabs/communicate.vue index 4ae47d9..186ee8e 100644 --- a/src/views/CNAS/personnel/personnelInfo/tabs/communicate.vue +++ b/src/views/CNAS/personnel/personnelInfo/tabs/communicate.vue @@ -1,48 +1,28 @@ <template> - <div class="flex_column"> -<!-- <TableCard :showForm="isDepartment" title="娌熼�氳褰�">--> -<!-- <template v-slot:form >--> -<!-- <div v-if="isDepartment" class="w100 items_center justify_between">--> -<!-- <div></div>--> -<!-- <div>--> -<!-- <!– <el-button type="primary" size="small">瀵煎嚭</el-button> –>--> -<!-- <el-button size="small" type="primary" @click="openDialog">鏂板</el-button>--> -<!-- </div>--> -<!-- </div>--> -<!-- </template>--> -<!-- <template v-slot:table>--> -<!-- <ZTTable--> -<!-- :column="columnData"--> -<!-- :height="'calc(100vh - 21em)'"--> -<!-- :table-data="tableData"--> -<!-- :table-loading="loading"--> -<!-- style="margin-top: 18px; padding: 0 15px;"--> -<!-- ></ZTTable>--> -<!-- <el-divider></el-divider>--> -<!-- <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=""--> -<!-- @size-change=""--> -<!-- >--> -<!-- </el-pagination>--> -<!-- </div>--> -<!-- </template>--> -<!-- </TableCard>--> - <Add ref="communicateModal" @submit="getTableData"></Add> + <div class="flex_column"> + <div v-if="isDepartment" style="display: flex;justify-content: space-between;margin-bottom: 10px"> + <el-button size="small" type="primary" @click="getTableData">鍒锋柊</el-button> + <el-button size="small" type="primary" icon="el-icon-plus" @click="openDialog">鏂板</el-button> </div> + <lims-table :tableData="tableData" :column="columnData" + @pagination="page" :height="'calc(100vh - 18em)'" + :page="pagination" :tableLoading="loading"></lims-table> + <Add ref="communicateModal" @submit="getTableData"></Add> + </div> </template> <script> -// import Add from "./Add.vue" +import CommunicateAdd from "../components/communicateAdd.vue" +import limsTable from "@/components/Table/lims-table.vue"; +import { + deletePersonCommunicationAbility, exportPersonCommunicationAbility, + personPersonCommunicationAbilityPage +} from "@/api/cnas/personal/personPersonCommunicationAbilityPage"; export default { - components: { - // Add - }, + components: { + limsTable, + Add: CommunicateAdd + }, props: { departId: { type: Number, @@ -55,158 +35,109 @@ default: false } }, - data() { - return { - // departId: 0, - columnData: [ - { - label: '搴忓彿', - prop: 'id' - }, { - label: '娌熼�氫汉', - prop: 'userName' - }, { - label: '娌熼�氭椂闂�', - prop: 'communicationTime' - }, { - label: '娌熼�氬湴鐐�', - prop: 'communicationPlace' - }, { - label: '娌熼�氬唴瀹�', - prop: 'communicationContent' - }, { - label: '鎿嶄綔', - dataType: 'action', - operation: [ - { - name: '缂栬緫', - type: 'text', - clickFun: (row) => { - this.openDialog(row, true) - } - }, { - name: '瀵煎嚭', - type: 'text', - clickFun: (row) => { - this.handleDown(row) - } - }, { - name: '鍒犻櫎', - type: 'text', - color: '#f56c6c', - clickFun: (row) => { - this.delPerson(row.id) - } - } - ] - }, - ], - tableData: [], - pagination: { - current: 1, - pageSize: 20, - total: 0 - }, - loading: false - } - }, - mounted() { - // this.getTableData() - }, - methods: { - openDialog(row, type=false) { - this.$refs.communicateModal.openDialog(row, type) - }, - async getTableData() { - this.loading = true - const params = this.isDepartment ? { - departLimsId: this.departId, - current: this.pagination.current, - size: this.pagination.pageSize - } : { - userId: this.departId, - current: this.pagination.current, - size: this.pagination.pageSize - } - const { code, data } = await this.$axios({ - method: 'get', - url: personPersonCommunicationAbilityPage, - params: params - }) - if(code == 200) { - this.pagination.total = data.total - this.tableData = data.records - this.loading = false - } - }, - /** - * @desc 鑾峰彇璁惧id - */ - getDepart(id) { - // this.departId = id - this.getTableData() - }, - /** - * @desc 鍒犻櫎娌熼�氳褰� - */ - delPerson(id) { - this.$confirm('姝ゆ搷浣滃皢姘镐箙鍒犻櫎璇ユ枃浠�, 鏄惁缁х画?', '鎻愮ず', { - confirmButtonText: '纭畾', - cancelButtonText: '鍙栨秷', - type: 'warning' - }).then(async () => { - let formData = new FormData() - formData.append('id', id) - const { code } = await this.$axios({ - method: 'delete', - url: deletePersonCommunicationAbility, - data: formData - }) - if(code == 200) { - this.$message({ - type: 'success', - message: '鍒犻櫎鎴愬姛!' - }); - this.getTableData() - } - }) - }, - async handleDown(row){ - this.$axios.post(this.$api.personCommunicationAbility.exportPersonCommunicationAbility,{id:row.id},{responseType: "blob"}).then(res => { - if(res.code == 201){ - this.$message.error(res.message) - return - } - const blob = new Blob([res],{ type: 'application/octet-stream' }); - //灏咮lob 瀵硅薄杞崲鎴愬瓧绗︿覆 - let reader = new FileReader(); - reader.readAsText(blob, 'utf-8'); - reader.onload = () => { - try { - let result = JSON.parse(reader.result); - if (result.message) { - this.$message.error(result.message); - } else { - const url = URL.createObjectURL(blob); - const link = document.createElement('a'); - link.href = url; - link.download = row.userName+'-娌熼�氳褰�'+'.docx'; - link.click(); - this.$message.success('瀵煎嚭鎴愬姛') - } - } catch (err) { - console.log(err); - const url = URL.createObjectURL(blob); - const link = document.createElement('a'); - link.href = url; - link.download = row.userName+'-娌熼�氳褰�'+'.docx'; - link.click(); - this.$message.success('瀵煎嚭鎴愬姛') + data() { + return { + columnData: [ + { + label: '娌熼�氫汉', + prop: 'userName' + }, { + label: '娌熼�氭椂闂�', + prop: 'communicationTime' + }, { + label: '娌熼�氬湴鐐�', + prop: 'communicationPlace' + }, { + label: '娌熼�氬唴瀹�', + prop: 'communicationContent' + }, { + label: '鎿嶄綔', + dataType: 'action', + operation: [ + { + name: '缂栬緫', + type: 'text', + clickFun: (row) => { + this.openDialog(row, true) + } + }, { + name: '瀵煎嚭', + type: 'text', + clickFun: (row) => { + this.handleDown(row) + } + }, { + name: '鍒犻櫎', + type: 'text', + color: '#f56c6c', + clickFun: (row) => { + this.delPerson(row.id) } } - }) - } + ] + }, + ], + tableData: [], + pagination: { + current: 1, + size: 20, + total: 0 + }, + loading: false + } + }, + mounted() { + this.getTableData() + }, + methods: { + openDialog(row, type=false) { + this.$refs.communicateModal.openDialog(row, type) }, + getTableData() { + this.loading = true + const params = this.isDepartment ? { + departLimsId: this.departId, + current: this.pagination.current, + size: this.pagination.size + } : { + userId: this.departId, + current: this.pagination.current, + size: this.pagination.size + } + personPersonCommunicationAbilityPage(params).then(res => { + this.loading = false + this.tableData = res.data.records + this.pagination.total = res.data.total + }).catch(err => { + this.loading = false + }) + }, + page (page) { + this.pagination.size = page.limit + this.getTableData() + }, + /** + * @desc 鍒犻櫎娌熼�氳褰� + */ + delPerson(id) { + this.$confirm('姝ゆ搷浣滃皢姘镐箙鍒犻櫎璇ユ枃浠�, 鏄惁缁х画?', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }).then(async () => { + deletePersonCommunicationAbility({id: id}).then(res => { + this.$message.success('鍒犻櫎鎴愬姛!'); + this.getTableData() + }) + }) + }, + async handleDown(row){ + exportPersonCommunicationAbility({id:row.id}).then(res => { + const blob = new Blob([res],{ type: 'application/octet-stream' }); + this.$download.saveAs(blob, row.userName+'-娌熼�氳褰�'+'.docx'); + }) + } + }, watch: { departId: { handler(newId, oldId) { @@ -219,31 +150,4 @@ } </script> <style scoped> -.flex_column { - display: flex; - flex-direction: column; - justify-content: space-between; -} -.w100 { - width: 100%; -} -.pagination { - display: flex; - justify-content: space-between -} -.items_center { - display: flex; - align-items: center; -} -.justify_between { - justify-content: space-between -} -.date_box { - margin: 0 5px; -} - -.search { - width: 150px; - padding: 0 16px; -} </style> diff --git a/src/views/CNAS/personnel/personnelInfo/tabs/personnel-capacity.vue b/src/views/CNAS/personnel/personnelInfo/tabs/personnel-capacity.vue index b6dc914..ac989ea 100644 --- a/src/views/CNAS/personnel/personnelInfo/tabs/personnel-capacity.vue +++ b/src/views/CNAS/personnel/personnelInfo/tabs/personnel-capacity.vue @@ -1,39 +1,29 @@ <!-- 浜哄憳鑳藉姏 --> <template> <div> - <div style="text-align: left; margin-bottom: 15px;padding: 0 16px"> - <label>濮撳悕</label> - <el-input v-model="userName" placeholder="璇疯緭鍏ュ鍚�" size="small" style="width: 20vh;"></el-input> - <el-button size="small" type="primary" @click="refreshTable">鏌ヨ</el-button> - <div v-if="!isDepartment" style="float: right;"> - <el-button size="small" type="primary" @click="addAppointPost('add')">鏂板</el-button> + <div style="display: flex;justify-content: space-between;"> + <el-form ref="page" size="small" :inline="true"> + <el-form-item label="濮撳悕"> + <el-input v-model="userName" placeholder="璇疯緭鍏ュ鍚�" size="small" clearable></el-input> + </el-form-item> + <el-form-item> + <el-button size="small" type="primary" @click="refreshTable">鏌� 璇�</el-button> + </el-form-item> + </el-form> + <div> + <el-button v-if="!isDepartment" size="small" type="primary" @click="addAppointPost('add')">鏂板</el-button> </div> </div> - <div class="table"> - <TableCard :showForm="false" :showTitle="false"> - <template v-slot:table> - <ZTTable - :column="yearColumnData" - :height="'calc(100vh - 20em)'" - :table-data="tableData" - :table-loading="yearLoading" - style="padding: 0 15px;margin-bottom: 16px" - > - <div slot="jobResponsibilities" slot-scope="scope"> - <div v-html="changeLine(scope.row.responsibilities)"></div> - </div> - <div slot="placeWorkSlot" slot-scope="scope"> - <div v-html="changeLine(scope.row.placeWork)"></div> - </div> - </ZTTable> - </template> - </TableCard> - <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> - </div> + <lims-table :tableData="tableData" :column="yearColumnData" + @pagination="pagination" :height="'calc(100vh - 20em)'" + :page="search" :tableLoading="yearLoading"> + <div slot="jobResponsibilities" slot-scope="scope"> + <div v-html="changeLine(scope.row.responsibilities)"></div> + </div> + <div slot="placeWorkSlot" slot-scope="scope"> + <div v-html="changeLine(scope.row.placeWork)"></div> + </div> + </lims-table> <!--鏂板鑳藉姏璁ゅ畾寮规--> <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" :title="title" :visible.sync="dialogVisible" @@ -48,11 +38,6 @@ </el-select> </el-form-item> </el-col> -<!-- <el-col :span="12">--> -<!-- <el-form-item label="鑱岀О锛�" label-width="110px" prop="technicalPost">--> -<!-- <el-input v-model="form.technicalPost" :disabled="operationType === 'view'" clearable size="small" style="width: 100%;"/>--> -<!-- </el-form-item>--> -<!-- </el-col>--> <el-col :span="24"> <div style="display: flex;justify-content: space-evenly;font-weight: 600"> <span>鏌ユ牳缁撴灉</span> @@ -67,7 +52,7 @@ </el-col> <el-col :span="8"> <el-form-item class="radio-group" prop="academicConformNot" style="text-align: center"> - <el-radio-group v-model="form.academicConformNot" :disabled="operationType === 'view' || operationType === 'confirm'"> + <el-radio-group v-model="form.academicConformNot" :disabled="operationType === 'view' || operationType === 'confirm'" v-removeAriaHidden> <el-radio :label="1">绗﹀悎</el-radio> <el-radio :label="2">涓嶇鍚�</el-radio> <el-radio :label="3">涓嶉�傜敤</el-radio> @@ -86,7 +71,7 @@ </el-col> <el-col :span="8"> <el-form-item class="radio-group" prop="relatedYearsConformNot" style="text-align: center"> - <el-radio-group v-model="form.relatedYearsConformNot" :disabled="operationType === 'view' || operationType === 'confirm'"> + <el-radio-group v-model="form.relatedYearsConformNot" :disabled="operationType === 'view' || operationType === 'confirm'" v-removeAriaHidden> <el-radio :label="1">绗﹀悎</el-radio> <el-radio :label="2">涓嶇鍚�</el-radio> <el-radio :label="3">涓嶉�傜敤</el-radio> @@ -105,7 +90,7 @@ </el-col> <el-col :span="8"> <el-form-item class="radio-group" prop="relatedTrainingConformNot" style="text-align: center"> - <el-radio-group v-model="form.relatedTrainingConformNot" :disabled="operationType === 'view' || operationType === 'confirm'"> + <el-radio-group v-model="form.relatedTrainingConformNot" :disabled="operationType === 'view' || operationType === 'confirm'" v-removeAriaHidden> <el-radio :label="1">绗﹀悎</el-radio> <el-radio :label="2">涓嶇鍚�</el-radio> <el-radio :label="3">涓嶉�傜敤</el-radio> @@ -125,7 +110,7 @@ </el-col> <el-col :span="8"> <el-form-item class="radio-group" prop="relevantExperienceConformNot" style="text-align: center"> - <el-radio-group v-model="form.relevantExperienceConformNot" :disabled="operationType === 'view' || operationType === 'confirm'"> + <el-radio-group v-model="form.relevantExperienceConformNot" :disabled="operationType === 'view' || operationType === 'confirm'" v-removeAriaHidden> <el-radio :label="1">绗﹀悎</el-radio> <el-radio :label="2">涓嶇鍚�</el-radio> <el-radio :label="3">涓嶉�傜敤</el-radio> @@ -147,7 +132,7 @@ </el-col> <el-col :span="8"> <el-form-item class="radio-group" prop="workLicenseConformNot" style="text-align: center"> - <el-radio-group v-model="form.workLicenseConformNot" :disabled="operationType === 'view' || operationType === 'confirm'"> + <el-radio-group v-model="form.workLicenseConformNot" :disabled="operationType === 'view' || operationType === 'confirm'" v-removeAriaHidden> <el-radio :label="1">绗﹀悎</el-radio> <el-radio :label="2">涓嶇鍚�</el-radio> <el-radio :label="3">涓嶉�傜敤</el-radio> @@ -163,7 +148,7 @@ <el-form-item label="宀椾綅鑱岃矗锛�" label-width="110px" prop="jobResponsibilitiesTem" style="height: 450px"> <el-checkbox-group v-model="form.jobResponsibilitiesTem" :disabled="operationType === 'view' || operationType === 'confirm'" @change="selectResponsibilities"> - <el-checkbox v-for="city in responsibilities" :key="city.value" :label="city.label" + <el-checkbox v-for="city in dict.type.responsibilities_list" :key="city.value" :label="city.label" :value="city.value"></el-checkbox> </el-checkbox-group> </el-form-item> @@ -171,7 +156,7 @@ <el-col :span="8"> <el-form-item class="radio-group" prop="jobResponsibilitiesConformNot" style="text-align: center;height: 420px"> - <el-radio-group v-model="form.jobResponsibilitiesConformNot" :disabled="operationType === 'view' || operationType === 'confirm'"> + <el-radio-group v-model="form.jobResponsibilitiesConformNot" :disabled="operationType === 'view' || operationType === 'confirm'" v-removeAriaHidden> <el-radio :label="1">绗﹀悎</el-radio> <el-radio :label="2">涓嶇鍚�</el-radio> <el-radio :label="3">涓嶉�傜敤</el-radio> @@ -189,7 +174,7 @@ </el-col> <el-col :span="16"> <el-form-item label="缁煎悎璇勪环锛�" label-width="110px" prop="comprehensiveAssessment"> - <el-radio-group v-model="form.comprehensiveAssessment" :disabled="operationType === 'view' || operationType === 'confirm'"> + <el-radio-group v-model="form.comprehensiveAssessment" :disabled="operationType === 'view' || operationType === 'confirm'" v-removeAriaHidden> <el-radio label="Qualified this position">鍙儨浠昏宀椾綅</el-radio> <el-radio label="You can work while training">鍙竟鍩硅杈逛笂宀�</el-radio> <el-radio label="Iconpetent for the position">涓嶈儨浠昏宀椾綅</el-radio> @@ -218,6 +203,18 @@ <script> +import limsTable from "@/components/Table/lims-table.vue"; +import { + addOrUpdatePersonPersonnelCapacity, + confirmPersonnelCapability, + deletePersonPersonnelCapacity, + exportPersonnelCapacity, + personPersonnelCapacityPage, + submitConfirmPersonnelCapability +} from "@/api/cnas/personal/personPersonnelCapacity"; +import {selectUserCondition} from "@/api/cnas/resourceDemand/facilitiesEnvironment/facilitiesAndEnvironment"; +import {mapGetters} from "vuex"; + export default { props: { departId: { @@ -232,8 +229,12 @@ } }, components: { - + limsTable }, + computed: { + ...mapGetters(["userId"]), + }, + dicts: ['responsibilities_list'], data() { return { userName: '', @@ -344,7 +345,7 @@ this.handleViewClick('confirm', row); }, disabled: (row) => { - if (row.confirmDate || JSON.parse(localStorage.getItem("user")).userId != row.confirmOperatingPersonnelId) { + if (row.confirmDate || this.userId != row.confirmOperatingPersonnelId) { return true } else { return false @@ -401,35 +402,10 @@ methods: { // 涓嬭浇 downLoadPost(row) { - this.$axios.get(this.$api.personnel.exportPersonnelCapacity + '?id=' + row.id,{responseType: "blob"}).then(res => { + exportPersonnelCapacity({id: row.id}).then(res => { this.outLoading = false const blob = new Blob([res],{ type: 'application/msword' }); - //灏咮lob 瀵硅薄杞崲鎴愬瓧绗︿覆 - let reader = new FileReader(); - reader.readAsText(blob, 'utf-8'); - reader.onload = () => { - try { - let result = JSON.parse(reader.result); - if (result.message) { - this.$message.error(result.message); - } else { - const url = URL.createObjectURL(blob); - const link = document.createElement('a'); - link.href = url; - link.download = "浜哄憳鑳藉姏瀵煎嚭" + '.docx'; - link.click(); - this.$message.success('瀵煎嚭鎴愬姛') - } - } catch (err) { - console.log(err); - const url = URL.createObjectURL(blob); - const link = document.createElement('a'); - link.href = url; - link.download = "浜哄憳鑳藉姏瀵煎嚭" + '.docx'; - link.click(); - this.$message.success('瀵煎嚭鎴愬姛') - } - } + this.$download.saveAs(blob, '浜哄憳鑳藉姏瀵煎嚭.docx') }) }, // 鏌ヨ @@ -439,11 +415,21 @@ // 鑾峰彇浜哄憳鑳藉姏鍒楄〃淇℃伅 getList(userId) { this.search.userId = userId; - const name = this.isDepartment ? 'departmentId' : 'userId'; + const params = this.isDepartment ? + { + departmentId: this.search.userId, + size: this.search.size, + current: this.search.current, + userName: this.userName, + }: { + userId: this.search.userId, + size: this.search.size, + current: this.search.current, + userName: this.userName, + } this.yearLoading = true - this.$axios.get(this.$api.personnel.personPersonnelCapacityPage + '?userName=' + this.userName + `&${name}=` + this.search.userId + '&size=' + this.search.size + '¤t=' + this.search.current).then(res => { + personPersonnelCapacityPage(params).then(res => { this.yearLoading = false - if (res.code === 201) return; this.tableData = res.data.records; this.search.total = res.data.total; }).catch(err => { @@ -451,22 +437,19 @@ this.yearLoading = false }) }, + pagination (page) { + this.search.size = page.limit + this.refreshTable() + }, selectResponsibilities(arr) { let arrTem = []; arr.map(val => { - const index = this.responsibilities.findIndex(item => item.label === val); + const index = this.dict.type.responsibilities_list.findIndex(item => item.label === val); if (index > -1) { - arrTem.push(this.responsibilities[index].value); + arrTem.push(this.dict.type.responsibilities_list[index].value); } }); this.form.jobResponsibilities = arrTem.join(','); - }, - getResponsibilities() { - this.$axios.post(this.$api.enums.selectEnumByCategory, { - category: '宀椾綅鑱岃矗' - }).then(res => { - this.responsibilities = res.data; - }); }, changeLine (val) { if(val) { @@ -480,13 +463,11 @@ this.operationType = type; this.title = '鏂板鑳藉姏璁ゅ畾' this.dialogVisible = true; - console.log('this.departId---', this.departId) this.form = { jobResponsibilitiesTem: [] } this.form.userId = this.departId this.getUserList(); - this.getResponsibilities(); }, // 缂栬緫/鏌ョ湅 @@ -502,17 +483,12 @@ this.$set(this.form, 'jobResponsibilitiesTem', []) } this.getUserList(); - this.getResponsibilities(); }, // 淇濆瓨 submitForm() { this.$refs.infoForm.validate((valid) => { if (valid) { - this.$axios.post(this.$api.personnel.addOrUpdatePersonPersonnelCapacity, this.form, { - headers: { - 'Content-Type': 'application/json' - } - }).then(res => { + addOrUpdatePersonPersonnelCapacity(this.form).then(res => { if (res.code == 200) { this.$message.success('鎻愪氦鎴愬姛'); this.getList(this.departId); @@ -526,11 +502,7 @@ submitForm1() { this.$refs.infoForm.validate((valid) => { if (valid) { - this.$axios.post(this.$api.personnel.submitConfirmPersonnelCapability, this.form, { - headers: { - 'Content-Type': 'application/json' - } - }).then(res => { + submitConfirmPersonnelCapability(this.form).then(res => { if (res.code == 200) { this.$message.success('鎻愪氦鎴愬姛'); this.getList(this.departId); @@ -541,7 +513,7 @@ }); }, verifyGet () { - this.$axios.get(this.$api.personnel.confirmPersonnelCapability + '?id=' + this.verifyGetId).then(res => { + confirmPersonnelCapability({id: this.verifyGetId}).then(res => { if (res.code == 200) { this.$message.success('纭鎴愬姛'); this.resetForm() @@ -556,7 +528,7 @@ cancelButtonText: '鍙栨秷', type: 'warning' }).then(() => { - this.$axios.delete(this.$api.personnel.deletePersonPersonnelCapacity + '?id=' + id).then(res => { + deletePersonPersonnelCapacity({id: id}).then(res => { if (res.code == 200) { this.$message.success('鍒犻櫎鎴愬姛'); this.getList(this.departId); @@ -571,20 +543,12 @@ this.dialogVisible = false; }, getUserList(){ - this.$axios.get(this.$api.user.selectDepartmentLimsUserList).then(res => { + selectUserCondition().then(res => { if (res.code == 200) { this.responsibleOptions = res.data } }) }, - handleSizeChange(val) { - this.search.size = val; - this.getList(this.departId); - }, - handleCurrentChange(val) { - this.search.current = val; - this.getList(this.departId); - } }, watch: { // 鐩戝惉鐐瑰嚮el-tree鐨勬暟鎹紝杩涜鏁版嵁鍒锋柊 @@ -593,21 +557,12 @@ this.getList(newId); } }, - // 鐩戝惉鐐瑰嚮el-tree鐨勬暟鎹紝杩涜鏁版嵁鍒锋柊 - isDepartment: { - handler(newId, oldId) { - this.getList(this.departId); - } - }, } }; </script> <style scoped> ->>>.el-dialog { - margin: 6vh auto 50px !important; -} >>> .el-dialog__body { - max-height: 70vh; + max-height: 74vh; overflow-y: auto; } -- Gitblit v1.9.3