瀏覽代碼

三防责任人对接新增修改接口

Hwf 4 月之前
父節點
當前提交
d035f7221e

+ 3 - 0
src/components/RegionSelect/index.vue

@@ -146,6 +146,9 @@ watch(() => props.data,() => {
     if (props.data[1]) {
       handleSelect2(props.data[1]);
     }
+    if (props.data[2]) {
+      handleSelect3(props.data[2]);
+    }
   }
 }, {
   immediate: true,

+ 23 - 15
src/views/threePreventionResponsiblePerson/editPersonInformation.vue

@@ -49,7 +49,7 @@
                   readonly
                   @click="showPicker = true"
               />
-              <RegionSelect v-model="showPicker" :data="form.area_code" @confirm="handleSelect" />
+              <RegionSelect v-model="showPicker" :data="form.area_list" @confirm="handleSelect" />
             </div>
             <div class="item">
               <div class="label-box">
@@ -104,11 +104,11 @@
               />
               <div v-show="responsibilityTypeText" class="common-input" @click="showPicker2 = true">
                 <div v-for="(item, index) in form.type_list" :key="index" class="text-box">
-                  <div class="text1">{{ item.parentName }}</div>
+                  <div class="text1">{{ item.type_parent }}</div>
                   <div class="text2">{{ getTypeLabel(item) }}</div>
                 </div>
               </div>
-              <responsibility-type v-model="showPicker2" @confirm="onConfirm2" />
+              <responsibility-type v-model="showPicker2" :data="form.type_list" @confirm="onConfirm2" />
             </div>
           </div>
         </div>
@@ -138,7 +138,8 @@ let pageStatus = ref('1');
 const form = ref({
   name: '',
   phone: '',
-  area_code: [],
+  area_code: '',
+  area_list: [],
   area_name: '',
   unit_name: '',
   position: '',
@@ -159,7 +160,7 @@ const rules = reactive({
 let showPicker = ref(false);
 const handleSelect = (data) => {
   form.value.area_name = data.length > 0 ? data[data.length - 1].label : '';
-  form.value.area_code = data;
+  form.value.area_code = data && data.length > 0 ? data[data.length - 1].id : '';
 }
 let showPicker2 = ref(false);
 let responsibilityTypeText = ref('');
@@ -179,6 +180,12 @@ const getTypeLabel = (item) => {
   if (!!item.dept_name) {
     str += `(${item.dept_name})`
   }
+  if (!!item.denger_point_name) {
+    str += `(${item.denger_point_name})`
+  }
+  if (!!item.other_type_2_name) {
+    str += `(${item.other_type_2_name})`
+  }
   if (!!item.other_type_label && item.other_type_label.length > 0) {
     str += '('
     item.other_type_label.forEach((item2, index2) => {
@@ -205,24 +212,25 @@ const onCancel = () => {
 const onSubmit = () => {
   if (submitting.value) return;
   submitting.value = true;
-  const method = form.value.id ? createPersonal : updatePersonal;
-  const data = deepClone(form.value);
-  data.area_code = form.area_code && form.area_code.length > 0 ? form.area_code[form.area_code.length - 1].id : '';
-  console.log(data.area_code);
-  // method(form.value).then(() => {
-  //   showSuccessToast('提交成功');
-  //   getInfo();
-  // }).finally(() => {
-  //   submitting.value = false;
-  // })
+  const method = !form.value.id ? createPersonal : updatePersonal;
+  method(form.value).then(() => {
+    showSuccessToast('提交成功');
+    getInfo();
+  }).finally(() => {
+    submitting.value = false;
+  })
 }
 
 const getInfo = () => {
   getPersonalSelfInfo().then((res) => {
     if (!!res.data && !!res.data.id) {
+      if (res.data.type_list && res.data.type_list.length > 0) {
+        responsibilityTypeText.value = '1'
+      }
       form.value = res.data;
       pageStatus.value = '1';
     } else {
+      responsibilityTypeText.value = ''
       pageStatus.value = '0';
     }
   })

+ 10 - 5
src/views/threePreventionResponsiblePerson/personInformation2.vue

@@ -77,7 +77,7 @@
               </div>
               <div class="common-input">
                 <div v-for="(item, index) in form.type_list" :key="index" class="text-box">
-                  <div class="text1">{{ item.parentName }}</div>
+                  <div class="text1">{{ item.type_parent }}</div>
                   <div class="text2">{{ getTypeLabel(item) }}</div>
                 </div>
               </div>
@@ -93,15 +93,11 @@
 </template>
 
 <script lang="ts" setup>
-import selectIcon from "@/assets/images/selectIcon.png";
-
 const emits = defineEmits(['confirm']);
 
 const props = defineProps({
   form: Object
 });
-let responsibilityType = ref([]);
-let areaText = ref('');
 const getTypeLabel = (item) => {
   let str = !!item.labelData ? item.labelData.toString() : '';
   if (!!item.dept_name) {
@@ -152,4 +148,13 @@ const handleEdit = () => {
     height: 16px;
   }
 }
+.text-box {
+  font-size: 16px;
+  .text2 {
+    font-size: 12px;
+    color: #A3A7AD;
+    letter-spacing: 0;
+    line-height: 26px;
+  }
+}
 </style>

+ 64 - 20
src/views/threePreventionResponsiblePerson/responsibilityType.vue

@@ -40,7 +40,7 @@
               <div
                   v-for="item2 in item.children2"
                   :key="item2.value"
-                  :class="selectData[item.id].other_type_id.includes(item2.id) ? 'tag tag-active' : 'tag'"
+                  :class="selectData[item.id].children2.includes(item2.id) ? 'tag tag-active' : 'tag'"
                   @click="handleClickTag(item.id, item2)"
               >
                 {{ item2.label }}
@@ -57,10 +57,10 @@
               <div
                   v-for="item2 in item.children2"
                   :key="item2.value"
-                  :class="selectData[item.id].other_type_id.includes(item2.id) ? 'tag tag-active' : 'tag'"
-                  @click="handleClickTag(item.ud, item2)"
+                  :class="selectData[item.id].children2.includes(item2.id) ? 'tag tag-active' : 'tag'"
+                  @click="handleClickTag(item.id, item2)"
               >
-                {{ item.label }}
+                {{ item2.label }}
               </div>
             </div>
           </div>
@@ -70,10 +70,10 @@
               <div
                   v-for="item2 in item.children2"
                   :key="item2.value"
-                  :class="selectData[item.id].other_type_id.includes(item2) ? 'tag tag-active' : 'tag'"
+                  :class="selectData[item.id].children2.includes(item2.id) ? 'tag tag-active' : 'tag'"
                   @click="handleClickTag(item.id, item2)"
               >
-                {{ item.label }}
+                {{ item2.label }}
               </div>
             </div>
           </div>
@@ -99,7 +99,8 @@
 import {getPersonalTypeTree} from "@/api/persons";
 
 const props = defineProps({
-  modelValue: Boolean
+  modelValue: Boolean,
+  data: Array
 });
 
 const emits = defineEmits(['update:modelValue','confirm']);
@@ -132,7 +133,7 @@ const selectData = ref({
   },
   '5': {
     dept_name: '',
-    other_type_id: [],
+    children2: [],
     other_type_label: [],
     children: [],
     labelData: []
@@ -143,7 +144,7 @@ const selectData = ref({
   },
   '7': {
     dept_name: '',
-    other_type_id: [],
+    children2: [],
     other_type_label: [],
     children: [],
     labelData: []
@@ -153,7 +154,7 @@ const selectData = ref({
     labelData: []
   },
   '9': {
-    other_type_id: [],
+    children2: [],
     other_type_label: [],
     children: [],
     labelData: []
@@ -183,17 +184,15 @@ const checkBoxChange = (data) => {
     }
   })
   selectData.value[data.id].labelData = labelData;
-  selectData.value[data.id].parentName = data.label;
-  selectData.value[data.id].type_parent_id = data.id;
 };
 
 const handleClickTag = (key, data) => {
-  let index = selectData.value[key].other_type_id.findIndex(item => item === data.id);
+  let index = selectData.value[key].children2.findIndex(item => item === data.id);
   if (index > -1) {
-    selectData.value[key].other_type_id.splice(index, 1);
+    selectData.value[key].children2.splice(index, 1);
     selectData.value[key].other_type_label.splice(index, 1);
   } else {
-    selectData.value[key].other_type_id.push(data.id);
+    selectData.value[key].children2.push(data.id);
     selectData.value[key].other_type_label.push(data.label);
   }
 }
@@ -204,10 +203,11 @@ const onCancel = () => {
 const onConfirm = () => {
   let data = [];
   for(let key in selectData.value) {
+  // || !!selectData.value[key].dept_name || !!selectData.value[key].denger_point_name || !!selectData.value[key].other_type_2_name || (!!selectData.value[key].children2 && selectData.value[key].children2.length > 0)
     if (selectData.value[key].children && selectData.value[key].children.length > 0) {
       let obj = {
-        type_parent_id: selectData.value[key].type_parent_id,
-        parentName: selectData.value[key].parentName,
+        type_parent_id: key,
+        type_parent: selectData.value[key].type_parent,
         children: selectData.value[key].children,
         labelData: selectData.value[key].labelData
       }
@@ -220,8 +220,8 @@ const onConfirm = () => {
       if (key === '11' && selectData.value[key].other_type_2_name) {
         obj.other_type_2_name = selectData.value[key].other_type_2_name;
       }
-      if (['5', '7', '9'].includes(key) && selectData.value[key].other_type_id && selectData.value[key].other_type_id.length > 0) {
-        obj.other_type_id = selectData.value[key].other_type_id;
+      if (['5', '7', '9'].includes(key) && selectData.value[key].children2 && selectData.value[key].children2.length > 0) {
+        obj.children2 = selectData.value[key].children2;
         obj.other_type_label = selectData.value[key].other_type_label;
       }
       data.push(obj)
@@ -230,7 +230,23 @@ const onConfirm = () => {
   onCancel();
   emits('confirm', data)
 };
-
+const checkedItem = (data, id, id2) => {
+  for(let i = 0; i < data.length; i++) {
+    if (data[i].id === id) {
+      let index = 0
+      for (let j = 0; j < data[i].children.length; j++) {
+        if (data[i].children[j].id == id2) {
+          index++
+          break;
+        }
+      }
+      if (index > 0) {
+        data[i].checked = true;
+      }
+      break;
+    }
+  }
+}
 onMounted(() => {
   getPersonalTypeTree().then((res) => {
     const data = res.rows;
@@ -238,7 +254,35 @@ onMounted(() => {
       item.open = false;
       item.checked = false;
       item.isIndeterminate = false;
+      selectData.value[item.id].type_parent = item.label;
     })
+    if (props.data && props.data.length > 0) {
+
+      props.data.forEach((item) => {
+        if (item.children.length > 0) {
+          item.children.forEach(item2 => {
+            checkedItem(data, item.type_parent_id, item2)
+          })
+        }
+        selectData.value[item.type_parent_id].children =  item.children;
+        selectData.value[item.type_parent_id].labelData =  item.labelData;
+        selectData.value[item.type_parent_id].type_parent = item.type_parent;
+        selectData.value[item.type_parent_id].type_parent_id = item.type_parent_id;
+        if (['4', '5', '7'].includes(item.type_parent_id)) {
+          selectData.value[item.type_parent_id].dept_name = item.dept_name;
+        }
+        if (item.type_parent_id === '10') {
+          selectData.value[item.type_parent_id].denger_point_name = item.denger_point_name;
+        }
+        if (item.type_parent_id === '11') {
+          selectData.value[item.type_parent_id].other_type_2_name = item.other_type_2_name;
+        }
+        if (['5', '7', '9'].includes(item.type_parent_id)) {
+          selectData.value[item.type_parent_id].children2 = item.children2 ? item.children2 : [];
+          selectData.value[item.type_parent_id].other_type_label = item.other_type_label;
+        }
+      })
+    };
     selectOptions.value = res.rows;
   });
 })