libushang před 4 měsíci
rodič
revize
36abbef5ba

+ 9 - 0
src/api/emergencyCommandMap/JointDuty.ts

@@ -101,6 +101,15 @@ export function getUnits(params) {
   });
 }
 
+//  获取用户列表
+export function getUserList(params) {
+  return request({
+    url: '/system/user/list',
+    method: 'get',
+    params: params
+  });
+}
+
 // 任务删除
 export function deleteTask(data) {
   return request({

+ 1 - 1
src/views/mobileControl/TaskRegistration.vue

@@ -73,7 +73,7 @@
   }
 
   const handleRequest = async() => {
-    router.push({ name: 'WorkRequest', query: { id: infoDetail.value.id}});
+    router.push({ name: 'WorkRequest', query: { id: taskId.value}});
   }
 
   onMounted(() => {

+ 63 - 30
src/views/mobileControl/WorkRequest.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="common-form-container">
-    <van-form label-width="90" label-align="top" colon @submit="onSubmit">
+    <van-form label-width="120" label-align="top" colon @submit="onSubmit">
       <div class="form-item">
         <div class="form-header">
           <div class="form-header-left">
@@ -16,8 +16,8 @@
                 :right-icon="selectIcon"
                 readonly
                 label="领导单位"
-                placeholder="请输入领导单位"
-                :rules="rules.dept"
+                placeholder="请选择领导单位"
+                :rules="rules.leader_unit"
                 @click="showPicker = true"
             />
             <van-field
@@ -26,12 +26,12 @@
                 :right-icon="selectIcon"
                 readonly
                 label="领导姓名"
-                placeholder="请输入领导姓名"
-                :rules="rules.name"
+                placeholder="请选择领导姓名"
+                :rules="rules.leader_name"
                 @click="showPicker2 = true"
             />
             <van-field
-                v-model="form.info"
+                v-model="form.content"
                 class="common-field common-textarea"
                 rows="8"
                 type="textarea"
@@ -39,7 +39,7 @@
                 maxlength="300"
                 placeholder="请描述请示信息"
                 show-word-limit
-                :rules="rules.info"
+                :rules="rules.content"
             />
           </div>
         </div>
@@ -53,7 +53,7 @@
     <van-popup v-model:show="showPicker" destroy-on-close round position="bottom">
       <van-picker
           :model-value="pickerValue"
-          :columns="options"
+          :columns="unit_options"
           @cancel="showPicker = false"
           @confirm="onConfirm"
       />
@@ -62,7 +62,7 @@
     <van-popup v-model:show="showPicker2" destroy-on-close round position="bottom">
       <van-picker
           :model-value="pickerValue2"
-          :columns="options2"
+          :columns="leader_options"
           @cancel="showPicker2 = false"
           @confirm="onConfirm2"
       />
@@ -76,47 +76,46 @@ import {reactive, ref} from "vue";
 import {showSuccessToast} from "vant";
 import selectIcon from  "@/assets/images/selectIcon.png";
 import {Numeric} from "vant/es/utils";
+import { getUnits, getUserList, addLeaderRequest } from '@/api/emergencyCommandMap/JointDuty';
 
 const route = useRoute();
 const router = useRouter();
-let id = ref('');
+const id = ref('');
 // 表单数据
 const form = ref({
-  dept: '',
-  name: '',
-  info: ''
+  leader_unit: '',
+  leader_name: '',
+  content: '',
+  // 以下默认即可
+  processing_status: '',
+  feeback_type: "1",
 });
-const pickerValue = ref<Numeric[]>([]);
+const pickerValue = ref(<Numeric[]>([]));
 const pickerValue2 = ref<Numeric[]>([]);
 let uploaderErrors = ref('');
 // 表单校验规则
 const rules = reactive({
-  dept: [{  required: true, message: "请选择领导单位"  }],
-  name: [{  required: true, message: "请选择领导姓名"  }],
-  info: [{  required: true, message: "请输入请示信息"  }],
+  leader_unit: [{  required: true, message: "请选择领导单位"  }],
+  leader_name: [{  required: true, message: "请选择领导姓名"  }],
+  content: [{  required: true, message: "请输入请示信息"  }],
 });
 let showPicker = ref(false);
 let showPicker2 = ref(false);
 
-const options = [
-  { text: '处理中', value: '处理中' },
-  { text: '已完成', value: '已完成' },
-];
-const options2 = [
-  { text: '处理中2', value: '处理中' },
-  { text: '已完成2', value: '已完成' },
-];
+const unit_options = ref([/*{ text: 'dept_name', value: 'dept_id' }*/]);
+const leader_options = ref([/*{ text: 'nick_name', value: 'user_id' }*/]);
 // 选择
 const onConfirm = ({ selectedValues, selectedOptions }) => {
   showPicker.value = false;
-  pickerValue.value = selectedValues;
-  form.value.dept = selectedOptions[0].value;
+  pickerValue.value = [selectedOptions[0].text];
+  form.value.leader_unit = selectedOptions[0].text;
+  fetchUsers(selectedValues[0]);
 };
 // 选择
 const onConfirm2 = ({ selectedValues, selectedOptions }) => {
   showPicker2.value = false;
-  pickerValue2.value = selectedValues;
-  form.value.name = selectedOptions[0].value;
+  pickerValue2.value = [selectedOptions[0].text];
+  form.value.leader_name = selectedOptions[0].text;
 };
 // 是否在提交
 let submitting = ref(false);
@@ -130,15 +129,49 @@ const onCancel = () => {
 const onSubmit = () => {
   if (submitting.value) return;
   submitting.value = true;
+  addLeaderRequest({
+    task_id: id.value,
+    ...form.value
+  }).then((res) => {
+      showSuccessToast(res.msg);
+      onCancel();
+  });
+  /*
   setTimeout(() => {
     submitting.value = false;
     showSuccessToast('提交成功');
     onCancel();
   }, 1500);
+  */
+}
+
+const fetchUnits = async () => {
+  getUnits({}).then((res)=>{
+    const units = new Map();
+    res.data.forEach((unit) => {
+      if (!units.has(unit.unit_name)) {
+        units.set(unit.unit_name, {
+          value: unit.unit_id,
+          text: unit.unit_name
+        });
+      }
+    });
+    unit_options.value = Array.from(units.values());
+  })
+};
+
+const fetchUsers = async(deptId) => {
+  getUserList({ deptId }).then((res)=>{
+    leader_options.value = res.rows.map((user) => ({
+        value: user.userId,
+        text: user.nickName
+      }));
+  });
 }
 
 onMounted(() => {
-  id.value = route.query.id;
+  id.value = route.query.id as string;
+  fetchUnits();
 })
 </script>
 

+ 1 - 0
src/views/worker/eventManagement/requestDialog.vue

@@ -1,3 +1,4 @@
+<!-- 本弹出框废弃 -->
 <template>
     <van-popup v-model:show="visible">
         <van-form @submit="on_submit">

+ 6 - 1
src/views/worker/eventManagement/taskList.vue

@@ -82,6 +82,7 @@
         </div>
       </van-list>
 
+      <!-- 本弹出框废弃 -->
       <RequestDialog
         v-model="requestDialogState.show"
         :data="requestDialogState.form"
@@ -196,7 +197,7 @@
       });
   };
 
-  // 请求请示对话框
+  // 请求请示对话框(废弃,跳转到新页面)
   const requestDialogState = reactive({
     show: false,
     form: {
@@ -221,12 +222,16 @@
   const handleRequest = (index) => {
     current_item.value = task_list.value[index];
     console.log('handleRequest:', current_item.value);
+    /*
     requestDialogState.form.task_id = current_item.value.task_id;
     requestDialogState.form.processing_status = current_item.value.processing_status;
     requestDialogState.form.leader_unit = "";
     requestDialogState.form.leader_name = "";
     requestDialogState.form.content = "";
     requestDialogState.show = true;
+    */
+    // 跳转到新页面
+    router.push({ name: 'WorkRequest', query: { id: current_item.value.task_id}});
   };
 
   // 任务反馈对话框(废弃,跳转到新页面)