From 952a20f1c005d80e9bf881287c40e6f4e4266a0b Mon Sep 17 00:00:00 2001
From: lxp <1928192722@qq.com>
Date: 星期三, 12 三月 2025 15:34:52 +0800
Subject: [PATCH] Merge branch 'dev' of http://114.132.189.42:9002/r/center-lims-before-ruoyi into dev
---
src/views/CNAS/personnel/personnelInfo/Department/components/PersonnelList/index.vue | 364 ++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 364 insertions(+), 0 deletions(-)
diff --git a/src/views/CNAS/personnel/personnelInfo/Department/components/PersonnelList/index.vue b/src/views/CNAS/personnel/personnelInfo/Department/components/PersonnelList/index.vue
new file mode 100644
index 0000000..04e8033
--- /dev/null
+++ b/src/views/CNAS/personnel/personnelInfo/Department/components/PersonnelList/index.vue
@@ -0,0 +1,364 @@
+<template>
+ <div>
+ <div class="search-list">
+ <span class="search-input">
+ <span class="search-label">
+ <span style="width: 120px;font-size: 14px;line-height: 32px">浜哄憳鍚嶇О锛�</span>
+ <el-input v-model="entity.name" clearable placeholder="璇疯緭鍏�" size="small" style="width: 100%;"
+ @keyup.enter.native="refreshTable()">
+ </el-input>
+ </span>
+ <el-button size="small" style="margin-left: 10px" @click="refresh()">閲� 缃�</el-button>
+ <el-button size="small" type="primary" @click="refreshTable()">鏌� 璇�</el-button>
+ </span>
+ <span>
+ <el-button :loading="synchronousLoading" size="small" type="primary" @click="synchronous"
+ :v-show="departId">鍚屾绗笁鏂逛汉鍛樹俊鎭�</el-button>
+ <el-button :loading="outLoading" size="small" type="primary" @click="handleDown">瀵煎嚭</el-button>
+ <el-button size="small" type="primary"
+ @click="selectUserDia = true, getList(), queryParams.name = '', multipleSelection = []">鏂板缓</el-button>
+ </span>
+ </div>
+ <div class="search-table">
+ <el-table v-loading="tableLoading" :data="tableData" border height="calc(100vh - 20em)" style="width: 100%;">
+ <el-table-column align="center" label="搴忓彿" width="60">
+ <template v-slot="scope">
+ <span>{{ (page.current - 1) * page.size + scope.$index + 1 }}</span>
+ </template>
+ </el-table-column>
+ <el-table-column label="鍛樺伐缂栧彿" prop="account" width="150"></el-table-column>
+ <el-table-column label="濮撳悕" prop="name" width="120"></el-table-column>
+ <el-table-column label="鍏ラ泦鍥㈡椂闂�" prop="groupTime" width="120"></el-table-column>
+ <el-table-column label="绫嶈疮" prop="nativePlace" width="120"></el-table-column>
+ <el-table-column label="璇佷欢鍙风爜" prop="identityCard" show-overflow-tooltip width="300"></el-table-column>
+ <el-table-column label="璇佷欢鍦板潃" prop="idAddress" show-overflow-tooltip width="100"></el-table-column>
+ <el-table-column label="鎵嬫満鍙�" prop="telephone" show-overflow-tooltip width="100"></el-table-column>
+ <el-table-column label="姣曚笟闄㈡牎" prop="graduatedInstitutions1" width="100"></el-table-column>
+ <el-table-column label="鎵�瀛︿笓涓�" prop="major1" width="100"></el-table-column>
+ <el-table-column label="姣曚笟鏃堕棿" prop="graduationTime1" width="100"></el-table-column>
+ <el-table-column label="鏈�楂樺鍘�" prop="officialAcademicRedentials" width="100"></el-table-column>
+ <el-table-column label="鏈�楂樺浣�" prop="highestDegree" width="100"></el-table-column>
+ <el-table-column label="鑱岀О" prop="professionalTitle" width="100"></el-table-column>
+ <el-table-column label="绱ф�ヨ仈绯讳汉" prop="emergencyContact" width="120"></el-table-column>
+ <el-table-column label="绱ф�ヨ仈绯荤數璇�" prop="emergencyContactPhone" width="120"></el-table-column>
+ <el-table-column fixed="right" label="鎿嶄綔" width="140">
+ <template slot-scope="scope">
+ <el-button size="small" type="text" @click="downPerson(scope.row)">涓嬭浇</el-button>
+ <el-button size="small" type="text" @click="$emit('updatePerson', scope.row)">缂栬緫
+ </el-button>
+ <el-button size="small" type="text" @click="deletePerson(scope.row)">鍒犻櫎
+ </el-button>
+ </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" layout="->,total, sizes, prev, pager, next, jumper"
+ style="margin-top: 16px" @size-change="handleSizeChange" @current-change="handleCurrentChange">
+ </el-pagination>
+ </div>
+ <el-dialog :visible.sync="selectUserDia" title="閫夋嫨鐢ㄦ埛" width="70%">
+ <div class="search" style="margin-bottom: 9px;">
+ <div class="search_thing" style="display: flex;">
+ <div class="search_label">鐢ㄦ埛鍚嶏細</div>
+ <div class="search_input">
+ <el-input v-model="queryParams.name" clearable placeholder="璇疯緭鍏�" size="small"
+ @keyup.enter.native="getList()" style="width: 150px;"></el-input>
+ </div>
+ </div>
+ </div>
+ <div v-if="selectUserDia" class="body" style="height: 60vh;">
+ <lims-table :tableData="personTableData" :column="column" :tableLoading="tableLoading"
+ :height="'calc(100vh - 290px)'" :page="personPage" :isSelection="true"
+ :handleSelectionChange="handleSelectionChange"></lims-table>
+ </div>
+ <span slot="footer" class="dialog-footer">
+ <el-button @click="selectUserDia = false">鍙� 娑�</el-button>
+ <el-button type="primary" @click="selectUser">纭� 瀹�</el-button>
+ </span>
+ </el-dialog>
+ </div>
+</template>
+
+<script>
+import limsTable from "@/components/Table/lims-table.vue";
+import {
+ getEmployees,
+ basicInformationOfPersonnelSelectPage,
+ delUserDepardLimsId,
+ upUserDepardLimsId,
+ exportPersonBasicInfo,
+ exportPersonBasicInfoById,
+ selectUserList,
+} from '@/api/cnas/personnel/personnelInfo.js'
+export default {
+ name: 'PersonnelList',
+ // import 寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢�
+ components: { limsTable },
+ props: {
+ departId: {
+ type: Number,
+ default: () => {
+ return null;
+ }
+ },
+ isDepartment: {
+ type: Boolean,
+ default: false
+ },
+ currentCompaniesList: {
+ type: Array,
+ default: []
+ }
+ },
+ data() {
+ // 杩欓噷瀛樻斁鏁版嵁
+ return {
+ entity: {},
+ multipleSelection: [],
+ synchronousLoading: false,
+ page: {
+ size: 20,
+ current: 1,
+ },
+ outLoading: false,
+ tableLoading: false,
+ tableData: [], // 浜哄憳鎬诲垪琛ㄦ暟鎹�
+ selectUserDia: false, // 娣诲姞浜哄憳寮规,
+ stateList: [
+ {
+ value: 1,
+ type: 'success',
+ label: '鍚敤'
+ },
+ {
+ value: 0,
+ type: 'danger',
+ label: '鍋滅敤'
+ }
+ ],
+ queryParams: {
+ name: ''
+ },
+ personTableData: [],
+ column: [
+ { label: "濮撳悕", prop: "name" },
+ { label: "璐﹀彿", prop: "account" },
+ {
+ label: "瑙掕壊",
+ prop: "roleName",
+ },
+ {
+ label: "鐘舵��", prop: "state", dataType: "tag",
+ formatData: (params) => {
+ let index = this.stateList.findIndex(
+ (item) => item.value == params
+ );
+ if (index > -1) {
+ return this.stateList[index].label;
+ } else {
+ return null;
+ }
+ },
+ formatType: (params) => {
+ let index = this.stateList.findIndex(
+ (item) => item.value == params
+ );
+ if (index > -1) {
+ return this.stateList[index].type;
+ } else {
+ return null;
+ }
+ },
+ },
+ { label: "鐢佃瘽鍙风爜", prop: "phone" },
+ ],
+ personPage: {
+ total: 0,
+ size: 10,
+ current: 0,
+ },
+ tableLoading: false,
+ };
+ },
+ mounted() {
+ this.refreshTable();
+ },
+ // 鏂规硶闆嗗悎
+ methods: {
+ synchronous() {
+ console.log('departId', this.departId);
+ this.$message.warning("姝e湪鍚屾锛岃绋嶅悗...")
+ this.synchronousLoading = true
+ getEmployees({ departId: this.departId }).then(res => {
+ this.synchronousLoading = false
+ this.$message.success("鍚屾鎴愬姛")
+ })
+ },
+ /**
+ * @desc 鑾峰彇璁惧id
+ */
+ // 閲嶇疆
+ refresh() {
+ this.page = {
+ size: 20,
+ current: 1,
+ };
+ this.entity.name = ''
+ this.refreshTable();
+ },
+ // 鏌ヨ浜哄憳鍒楄〃鏁版嵁
+ refreshTable(entity, type) {
+ try {
+ this.tableLoading = true;
+ this.entity.departmentId = this.departId;
+ let params = { ...this.page, ...this.entity }
+ delete params.total
+ basicInformationOfPersonnelSelectPage(params).then(res => {
+ this.tableLoading = false;
+ if (res.code === 201) {
+ return;
+ }
+ this.page.total = res.data.total;
+ this.tableData = res.data.records;
+ });
+ } catch (e) {
+ this.tableLoading = false;
+ }
+ },
+ // 鍒犻櫎浜哄憳
+ deletePerson(row) {
+ this.$confirm('鏄惁鍒犻櫎褰撳墠鏁版嵁?', '璀﹀憡', {
+ confirmButtonText: '纭畾',
+ cancelButtonText: '鍙栨秷',
+ type: 'warning'
+ })
+ .then(() => {
+ delUserDepardLimsId({ id: row.id }).then(res => {
+ if (res.code === 201) {
+ return;
+ }
+ this.$message.success('鍒犻櫎鎴愬姛');
+ this.refreshTable();
+ })
+ .catch(e => {
+ this.$message.error('鍒犻櫎澶辫触');
+ });
+ })
+ .catch(() => {
+ });
+ },
+ handleSizeChange(val) {
+ this.page.size = val;
+ this.refreshTable();
+ },
+ handleCurrentChange(val) {
+ this.page.current = val;
+ this.refreshTable();
+ },
+ handleSelectionChange(val) {
+ this.multipleSelection = val
+ },
+ selectUser() {
+ if (!this.currentCompaniesList.length > 0) {
+ this.$message.warning("璇烽�夋嫨閮ㄩ棬锛�")
+ return;
+ }
+ let selects = this.multipleSelection;
+ if (selects.length == 0) {
+ this.$message.error('鏈�夋嫨鏁版嵁');
+ return;
+ }
+ let ids = [];
+ selects.forEach(a => {
+ ids.push(a.id);
+ });
+ let str = '';
+ this.currentCompaniesList.forEach(a => {
+ if (a) {
+ str += a + ',';
+ }
+ });
+ this.selectUserDia = false;
+ upUserDepardLimsId({
+ ids: JSON.stringify(ids),
+ id: str
+ }).then(res => {
+ if (res.code === 201) {
+ return;
+ }
+ this.$message.success('娣诲姞鎴愬姛');
+ this.refreshTable();
+ });
+ this.$emit('refreshTree')
+ },
+ getList() {
+ this.tableLoading = true;
+ let param = { ...this.queryParams, ...this.personPage };
+ delete param.total;
+ selectUserList({ ...param })
+ .then((res) => {
+ this.tableLoading = false;
+ if (res.code === 200) {
+ this.personTableData = res.data;
+ }
+ })
+ .catch((err) => {
+ this.tableLoading = false;
+ });
+ },
+ pagination({ page, limit }) {
+ this.personPage.current = page;
+ this.personPage.size = limit;
+ this.getList();
+ },
+ handleDown() {
+ this.outLoading = true;
+ let entity = this.HaveJson(this.entity)
+ exportPersonBasicInfo(entity).then(res => {
+ this.outLoading = false;
+ if (res.code === 201) {
+ return;
+ }
+ const blob = new Blob([res], { type: 'application/octet-stream' });
+ this.$download.saveAs(blob, '浜哄憳淇℃伅.xlsx')
+ });
+ },
+ downPerson(row) {
+ exportPersonBasicInfoById({ id: row.userId }).then(res => {
+ this.$download.saveAs(res.data, res.data)
+ this.$message.success('涓嬭浇鎴愬姛')
+ });
+ }
+ },
+ watch: {
+ departId: {
+ handler(newId, oldId) {
+ if (newId) {
+ this.page.current = 1
+ this.refreshTable();
+ }
+ }
+ }
+ }
+};
+</script>
+
+<style scoped>
+.search-list {
+ padding: 0 16px 16px;
+ display: flex;
+ justify-content: space-between;
+}
+
+.search-table {
+ padding: 0 16px;
+}
+
+.search-input {
+ display: flex;
+}
+
+.search-label {
+ display: flex;
+}
+</style>
--
Gitblit v1.9.3