Quellcode durchsuchen

Merge branch 'lm' of http://git.yujin.shuziyunyao.com/yujin/digital-medicine-front into lm

lisy vor 5 Monaten
Ursprung
Commit
54c66151a9
2 geänderte Dateien mit 43 neuen und 18 gelöschten Zeilen
  1. 15 9
      src/views/authority/info/index.vue
  2. 28 9
      src/views/components/AreaCascader.vue

+ 15 - 9
src/views/authority/info/index.vue

@@ -5,23 +5,26 @@
                 <div class="f-s-20 c-333 f-w-7 mb-10">联盟专家</div>
                 <div class="d-flex">
                     <div class="flex1 ov-hd d-flex j-ed">
-                        <el-form :model="queryParams" ref="queryFormRef" :inline="true" label-width="auto">
+                        <el-form :model="queryParams" ref="queryFormRef" label-width="40" :inline="true">
+                            <el-form-item label="所在地区" label-width="70" prop="name">
+                                <AreaCascader v-model="queryParams.adcode" :zlevel="2" checkStrictly @change="handleQuery"></AreaCascader>
+                            </el-form-item>
                             <el-form-item label="姓名" prop="name">
-                                <el-input v-model="queryParams.name" placeholder="搜姓名" clearable style="width: 160px" @keyup.enter="handleQuery" />
+                                <el-input v-model="queryParams.name" placeholder="搜姓名" clearable style="width: 120px" @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-input v-model="queryParams.workUnit" placeholder="搜单位关键字" clearable style="width: 120px" @keyup.enter="handleQuery" />
                             </el-form-item>
-                            <el-form-item label="专家组" prop="queryPersonType">
+                            <el-form-item label="专家组" label-width="60" prop="queryPersonType">
                                 <el-select style="width: 160px" v-model="queryParams.queryPersonType" clearable placeholder="请选择专家组">
                                     <el-option v-for="item in lm_person_type" :key="item.value" :label="item.label" :value="item.value" @change="handleQuery" />
                                 </el-select>
                             </el-form-item>
-                            <el-form-item label="专业品种" prop="variety">
-                                <el-input v-model="queryParams.variety" placeholder="搜专业品种" clearable style="width: 160px" @keyup.enter="handleQuery" />
+                            <el-form-item label="专业品种" label-width="70" prop="variety">
+                                <el-input v-model="queryParams.variety" placeholder="搜专业品种" clearable style="width: 120px" @keyup.enter="handleQuery" />
                             </el-form-item>
-                            <el-form-item label="前端显示" prop="putawayFlag">
-                                <el-select style="width: 140px" v-model="queryParams.putawayFlag" clearable placeholder="请选择状态">
+                            <el-form-item label="前端显示" label-width="70" prop="putawayFlag">
+                                <el-select style="width: 120px" v-model="queryParams.putawayFlag" clearable placeholder="请选择状态">
                                     <el-option label="显示" value="1" />
                                     <el-option label="不显示" value="0" />
                                 </el-select>
@@ -70,6 +73,7 @@
                                 <el-switch v-model="row.putawayFlag" active-value="1" inactive-value="0" @change="changeRowPutaway($event, row)"></el-switch>
                             </template>
                         </vxe-column>
+                        <vxe-column title="所在地区" width="120" field="adcodeName" :formatter="colNoData" />
                         <vxe-column title="操作" width="210" align="center" fixed="right">
                             <template #default="{ row }">
                                 <el-button type="primary" @click="editRow(row)" text style="width: 40px">编辑</el-button>
@@ -90,6 +94,7 @@ import { colNoData } from '@/utils/noData';
 import { DateRange } from '@/views/models/index';
 import { searchTabs } from '@/views/models';
 import { expertList, expertPersonCount, expertPersonDelete, expertPersonOff, expertPersonOn } from '@/api/authority';
+import { AreaCascader } from '@/views/components';
 const router = useRouter();
 const { proxy } = getCurrentInstance() as ComponentInternalInstance;
 const { sys_sex_type, dm_educational_type, lm_person_type, dm_position_status } = toRefs<any>(proxy?.useDict('sys_sex_type', 'dm_educational_type', 'lm_person_type', 'dm_position_status'));
@@ -104,7 +109,8 @@ const data = reactive<any>({
     queryParams: {
         pageNum: 1,
         pageSize: 10,
-        status: ''
+        status: '',
+        adcode: '',
     },
     rules: {}
 });

+ 28 - 9
src/views/components/AreaCascader.vue

@@ -21,12 +21,14 @@ const cascadeRef = ref();
 const props = defineProps({
     modelValue: [String, Array],
     zlevel: propTypes.number.def(3),
-    multiple: propTypes.bool.def(false)
+    multiple: propTypes.bool.def(false),
+    checkStrictly: propTypes.bool.def(false)
 });
 const value = ref();
 const propsJson: CascaderProps = {
     lazy: true,
     multiple: props.multiple,
+    checkStrictly: props.checkStrictly,
     lazyLoad(node, resolve) {
         console.log(node);
         const { level, value } = node;
@@ -50,24 +52,42 @@ const propsJson: CascaderProps = {
         }
     }
 };
+// 传入code判断该code在那一级
+const getLevel = (code: string) => {
+    // 去掉code末尾后面的00,再根据长度判断是那一级
+    const trimmedCode = code.replace(/00+$/, '');
+    const length = trimmedCode.length;
+    if (length === 2) {
+        return 1; // 省级
+    } else if (length === 4) {
+        return 2; // 市级
+    } else if (length === 6) {
+        return 3; // 区县级
+    } else if (length === 9) {
+        return 4; // 镇级
+    }
+    return 0; // 未知级别
+};
 watch(
     () => props.modelValue,
-    (val) => {
+    (val: any) => {
         if (val) {
             if (!props.multiple) {
                 const c8 = val.slice(0, 9);
                 const c6 = val.slice(0, 6);
                 const c4 = val.slice(0, 4);
                 const c2 = val.slice(0, 2);
-                if (props.zlevel === 3) {
-                    value.value = [c2 + '0000', c4 + '00000000', c6 + '000000', val];
+                if (getLevel(val) === 1) {
+                    value.value = [c2 + '0000'];
                 }
-                if (props.zlevel === 4) {
-                    value.value = [c2 + '0000', c4 + '00000000', c6 + '000000', c8 + '000', val];
+                if (getLevel(val) === 2) {
+                    value.value = [c2 + '0000', c4 + '00000000'];
                 }
-                if (props.zlevel === 2) {
+                if (getLevel(val) === 3) {
                     value.value = [c2 + '0000', c4 + '00000000', c6 + '000000'];
-                    console.log(value.value);
+                }
+                if (getLevel(val) === 4) {
+                    value.value = [c2 + '0000', c4 + '00000000', c6 + '000000', c8 + '000'];
                 }
             } else {
                 if (Array.isArray(val)) {
@@ -97,7 +117,6 @@ const change = (event: any) => {
                 address.push(e.pathLabels.join(''));
             });
             emit('update:modelValue', vl);
-            console.log(address.toString());
             emit('change', { value, vl, name: address.toString() });
         } else {
             emit('update:modelValue', null);