huangxw 7 ヶ月 前
コミット
ae55ff3842

+ 8 - 0
src/api/authority/index.ts

@@ -91,3 +91,11 @@ export const expertGroupCount = (query?: any): AxiosPromise => {
         method: 'get'
     });
 };
+// 查询专家抽取关联信息列表
+export const expertChooseRelationList = (query?: any): AxiosPromise => {
+    return request({
+        url: '/dgtmedicine/expertPersonRef/listExpertPersonRef',
+        method: 'get',
+        params: query
+    });
+};

+ 3 - 3
src/views/authority/authority-input/index.vue

@@ -74,8 +74,8 @@
                                 </el-form-item>
                             </el-col>
                             <el-col :span="6">
-                                <el-form-item label="工作单位" prop="workUnit">
-                                    <el-input v-model="form.workUnit" placeholder="请输入工作单位" clearable />
+                                <el-form-item label="单位" prop="workUnit">
+                                    <el-input v-model="form.workUnit" placeholder="请输入单位" clearable />
                                 </el-form-item>
                             </el-col>
                             <el-col :span="6">
@@ -182,7 +182,7 @@ const rules = reactive({
     major: [{ required: true, message: '请输入所学专业', trigger: 'blur' }],
     job: [{ required: true, message: '请输入从事专业', trigger: 'blur' }],
     post: [{ required: true, message: '请输入职称/职务', trigger: 'blur' }],
-    workUnit: [{ required: true, message: '请输入工作单位', trigger: 'blur' }],
+    workUnit: [{ required: true, message: '请输入单位', trigger: 'blur' }],
     personType: [{ required: true, message: '请选择拟加入专家组', trigger: 'change' }],
     variety: [{ required: true, message: '请输入专业品种', trigger: 'blur' }],
     address: [{ required: true, message: '请输入通信地址', trigger: 'blur' }],

+ 64 - 2
src/views/authority/choose-detail/index.vue

@@ -57,6 +57,32 @@
                             <span>抽取专家公示信息</span>
                             <span class="c-999 f-s-12">(公示时间:{{ form?.auditTime }})</span>
                         </div>
+                        <vxe-table :data="list" border keep-source :span-method="rowspanMethod" min-height="0" style="width: 100%">
+                            <vxe-column title="专家组" field="personType">
+                                <template #default="{ row }">
+                                    {{ selectDictLabel(dm_person_type, row.personType) || '-' }}
+                                </template>
+                            </vxe-column>
+                            <vxe-column title="人数" field="personType">
+                                <template #default="{ row }">{{ row?.allCount|| '-' }}人</template>
+                            </vxe-column>
+                            <!-- // 是否指定 -->
+                            <vxe-column title="是否指定人员">
+                                <template #default="{ row }">
+                                    {{ selectDictLabel(yes_no, row?.isAppoint) || '-' }}
+                                </template>
+                            </vxe-column>
+                            <vxe-column field="name" title="姓名" />
+                            <vxe-column title="性别">
+                                <template #default="{ row }">
+                                    {{ selectDictLabel(sys_sex_type, row?.sex) }}
+                                </template>
+                            </vxe-column>
+                            <vxe-column field="workUnit" title="单位" :formatter="colNoData" />
+                            <vxe-column title="职称/职务" field="post" :formatter="colNoData" />
+                            <vxe-column title="专业品种" field="variety" :formatter="colNoData" />
+                            <vxe-column title="联系电话" field="phone" :formatter="colNoData" />
+                        </vxe-table>
                     </template>
                 </div>
             </div>
@@ -74,12 +100,14 @@
 import { ref, reactive, onMounted } from 'vue';
 import { debounce } from 'lodash';
 import { useRouter } from 'vue-router';
-import { expertChooseApprove, expertChooseDetail } from '@/api/authority';
+import { expertChooseApprove, expertChooseDetail, expertChooseRelationList } from '@/api/authority';
 import { ChooseExpertCheck } from '../models';
+import { colNoData } from '@/utils/noData';
+import { VxeTablePropTypes } from 'vxe-table';
 
 const { proxy } = getCurrentInstance() as ComponentInternalInstance;
 const dict = proxy?.useDict('dm_person_type', 'dm_join_type', 'yes_no', 'sys_sex_type', 'dm_position_status');
-const { dm_person_type, dm_join_type, yes_no } = toRefs<any>(dict);
+const { dm_person_type, dm_join_type, yes_no, sys_sex_type } = toRefs<any>(dict);
 const router = useRouter();
 const route = useRoute();
 const form = ref<any>(null);
@@ -90,6 +118,10 @@ const getExpertDetail = async () => {
         const res = await expertChooseDetail(route.query.id);
         if (!res || res.code !== 200) return;
         form.value = res.data;
+        if (form.value?.res === '1') {
+            // 获取专家抽取关联列表
+            getExpertRelationList();
+        }
     }
 };
 const noPass = async () => {
@@ -150,6 +182,36 @@ const successChange = (val: any) => {
         submitApprove(params);
     }
 };
+const list = ref<any[]>([]);
+// 获取专家抽取关联列表
+const getExpertRelationList = async () => {
+    if (route.query?.id) {
+        const res = await expertChooseRelationList({ expertChooseId: route.query.id });
+        if (!res || res.code !== 200) return;
+        list.value = res.data;
+    }
+};
+// 通用行合并函数(将相同多列数据合并为一行)
+const rowspanMethod: any = ({ row, _rowIndex, column, visibleData }) => {
+    const fields = ['personType', 'personCount', 'id'];
+    const cellValue = row[column.field];
+    if (cellValue && fields.includes(column.field)) {
+        const prevRow = visibleData[_rowIndex - 1];
+        let nextRow = visibleData[_rowIndex + 1];
+        if (prevRow && prevRow[column.field] === cellValue) {
+            return { rowspan: 0, colspan: 0 };
+        } else {
+            let countRowspan = 1;
+            while (nextRow && nextRow[column.field] === cellValue) {
+                nextRow = visibleData[++countRowspan + _rowIndex];
+            }
+            if (countRowspan > 1) {
+                return { rowspan: countRowspan, colspan: 1 };
+            }
+        }
+    }
+};
+
 onMounted(() => {
     getExpertDetail();
 });

+ 3 - 3
src/views/authority/info/index.vue

@@ -9,8 +9,8 @@
                             <el-form-item label="姓名" prop="name">
                                 <el-input v-model="queryParams.name" placeholder="搜姓名" clearable style="width: 160px" @keyup.enter="handleQuery" />
                             </el-form-item>
-                            <el-form-item label="工作单位" prop="workUnit">
-                                <el-input v-model="queryParams.workUnit" placeholder="搜工作单位关键字" clearable style="width: 160px" @keyup.enter="handleQuery" />
+                            <el-form-item label="单位" prop="workUnit">
+                                <el-input v-model="queryParams.workUnit" placeholder="搜单位关键字" clearable style="width: 160px" @keyup.enter="handleQuery" />
                             </el-form-item>
                             <el-form-item label="拟加入专家组" prop="queryPersonType">
                                 <el-select style="width: 140px" v-model="queryParams.queryPersonType" clearable placeholder="请选择拟加入专家组">
@@ -56,7 +56,7 @@
                                 <DictTag :options="dm_person_type" :value="row?.personType"></DictTag>
                             </template>
                         </vxe-column>
-                        <vxe-column title="工作单位" field="workUnit" :formatter="colNoData" />
+                        <vxe-column title="单位" field="workUnit" :formatter="colNoData" />
                         <vxe-column title="职称/职务" field="post" :formatter="colNoData" />
                         <vxe-column title="专业品种" field="variety" :formatter="colNoData" />
                         <vxe-column title="岗位状态" width="90">

+ 3 - 3
src/views/authority/models/ChooseExpert.vue

@@ -7,8 +7,8 @@
                         <el-form-item label="姓名" prop="name">
                             <el-input v-model="queryParams.name" placeholder="搜姓名" clearable style="width: 160px" @keyup.enter="handleQuery" />
                         </el-form-item>
-                        <el-form-item label="工作单位" prop="workUnit">
-                            <el-input v-model="queryParams.variety" placeholder="搜工作单位关键字" clearable style="width: 160px" @keyup.enter="handleQuery" />
+                        <el-form-item label="单位" prop="workUnit">
+                            <el-input v-model="queryParams.variety" placeholder="搜单位关键字" clearable style="width: 160px" @keyup.enter="handleQuery" />
                         </el-form-item>
                         <el-form-item label="专业品种" prop="variety">
                             <el-input v-model="queryParams.variety" placeholder="搜专业品种" clearable style="width: 160px" @keyup.enter="handleQuery" />
@@ -36,7 +36,7 @@
                                     {{ selectDictLabel(sys_sex_type, row?.sex) }}
                                 </template>
                             </vxe-column>
-                            <vxe-column title="工作单位" field="workUnit" :formatter="colNoData" />
+                            <vxe-column title="单位" field="workUnit" :formatter="colNoData" />
                             <vxe-column title="职称/职务" field="post" :formatter="colNoData" />
                             <vxe-column title="专业品种" field="variety" :formatter="colNoData" />
                             <vxe-column title="岗位状态" width="90">