libushang 6 mēneši atpakaļ
vecāks
revīzija
513a8e184f

+ 0 - 16
src/types/components.d.ts

@@ -29,13 +29,9 @@ declare module 'vue' {
     ElButton: typeof import('element-plus/es')['ElButton']
     ElCard: typeof import('element-plus/es')['ElCard']
     ElCheckbox: typeof import('element-plus/es')['ElCheckbox']
-    ElCheckboxGroup: typeof import('element-plus/es')['ElCheckboxGroup']
     ElCol: typeof import('element-plus/es')['ElCol']
-    ElCollapse: typeof import('element-plus/es')['ElCollapse']
-    ElCollapseItem: typeof import('element-plus/es')['ElCollapseItem']
     ElColorPicker: typeof import('element-plus/es')['ElColorPicker']
     ElConfigProvider: typeof import('element-plus/es')['ElConfigProvider']
-    ElContainer: typeof import('element-plus/es')['ElContainer']
     ElDatePicker: typeof import('element-plus/es')['ElDatePicker']
     ElDescriptions: typeof import('element-plus/es')['ElDescriptions']
     ElDescriptionsItem: typeof import('element-plus/es')['ElDescriptionsItem']
@@ -48,31 +44,23 @@ declare module 'vue' {
     ElEmpty: typeof import('element-plus/es')['ElEmpty']
     ElForm: typeof import('element-plus/es')['ElForm']
     ElFormItem: typeof import('element-plus/es')['ElFormItem']
-    ElHeader: typeof import('element-plus/es')['ElHeader']
     ElIcon: typeof import('element-plus/es')['ElIcon']
     ElImage: typeof import('element-plus/es')['ElImage']
     ElInput: typeof import('element-plus/es')['ElInput']
     ElInputNumber: typeof import('element-plus/es')['ElInputNumber']
     ElLink: typeof import('element-plus/es')['ElLink']
-    ElMain: typeof import('element-plus/es')['ElMain']
     ElMenu: typeof import('element-plus/es')['ElMenu']
     ElMenuItem: typeof import('element-plus/es')['ElMenuItem']
     ElOption: typeof import('element-plus/es')['ElOption']
     ElPagination: typeof import('element-plus/es')['ElPagination']
     ElPopover: typeof import('element-plus/es')['ElPopover']
     ElRadio: typeof import('element-plus/es')['ElRadio']
-    ElRadioButton: typeof import('element-plus/es')['ElRadioButton']
     ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup']
     ElRow: typeof import('element-plus/es')['ElRow']
     ElScrollbar: typeof import('element-plus/es')['ElScrollbar']
     ElSegmented: typeof import('element-plus/es')['ElSegmented']
     ElSelect: typeof import('element-plus/es')['ElSelect']
-    ElSkeleton: typeof import('element-plus/es')['ElSkeleton']
-    ElSkeletonItem: typeof import('element-plus/es')['ElSkeletonItem']
     ElSlider: typeof import('element-plus/es')['ElSlider']
-    ElSpace: typeof import('element-plus/es')['ElSpace']
-    ElStep: typeof import('element-plus/es')['ElStep']
-    ElSteps: typeof import('element-plus/es')['ElSteps']
     ElSubMenu: typeof import('element-plus/es')['ElSubMenu']
     ElSwitch: typeof import('element-plus/es')['ElSwitch']
     ElTable: typeof import('element-plus/es')['ElTable']
@@ -85,7 +73,6 @@ declare module 'vue' {
     ElTimelineItem: typeof import('element-plus/es')['ElTimelineItem']
     ElTooltip: typeof import('element-plus/es')['ElTooltip']
     ElTree: typeof import('element-plus/es')['ElTree']
-    ElTreeSelect: typeof import('element-plus/es')['ElTreeSelect']
     ElUpload: typeof import('element-plus/es')['ElUpload']
     ExcelEditor: typeof import('./../components/ExcelEditor/index.vue')['default']
     FileUpload: typeof import('./../components/FileUpload/index.vue')['default']
@@ -97,9 +84,6 @@ declare module 'vue' {
     HikvisionPlayer: typeof import('./../components/HKVideo/hikvision-player.vue')['default']
     HKVideo: typeof import('./../components/HKVideo/index.vue')['default']
     IconSelect: typeof import('./../components/IconSelect/index.vue')['default']
-    IEpCaretBottom: typeof import('~icons/ep/caret-bottom')['default']
-    IEpCaretTop: typeof import('~icons/ep/caret-top')['default']
-    IEpUploadFilled: typeof import('~icons/ep/upload-filled')['default']
     IFrame: typeof import('./../components/iFrame/index.vue')['default']
     ImagePreview: typeof import('./../components/ImagePreview/index.vue')['default']
     ImageUpload: typeof import('./../components/ImageUpload/index.vue')['default']

+ 74 - 17
src/views/informationissue/informationApplication.vue

@@ -8,6 +8,17 @@
         <el-form ref="formRef" :model="formData" :rules="rules" label-width="120px">
           <h4 class="common-dialog-title">信息内容</h4>
           <div class="box1">
+
+            <el-form-item label="信息类型:" prop="info_type">
+              <el-radio-group v-model="formData.info_type">
+                <el-radio value="0">预警信息</el-radio>
+                <el-radio value="1">灾害事件</el-radio>
+                <el-radio value="2">灾情信息</el-radio>
+                <el-radio value="3">灾害资讯</el-radio>
+                <el-radio value="4">应急救援总结报告</el-radio>
+              </el-radio-group>
+            </el-form-item>
+
             <el-form-item label="标题:" prop="title">
               <el-input v-model="formData.title" placeholder="请输入标题" style="width: 468px !important" />
             </el-form-item>
@@ -16,7 +27,7 @@
               <el-input v-model="formData.publish_group" placeholder="请输入发布单位" style="width: 468px !important" />
             </el-form-item>
 
-            <el-form-item label="信息模板:" prop="templateType">
+            <el-form-item label="信息模板:" prop="template_type">
               <el-radio-group v-model="formData.template_type">
                 <el-radio value="0">预设模板</el-radio>
                 <el-radio value="1">自定义模板</el-radio>
@@ -75,27 +86,29 @@
             </el-form-item>
             <el-form-item label="审核人:" prop="auditor">
               <el-autocomplete
-                v-model="formData.examine_by"
+                v-model="formData.examine_user"
                 :fetch-suggestions="querySearch"
                 placeholder="请输入审核人姓名"
                 style="width: 368px !important"
                 @select="handleSelect"
               >
+                <template #default="{ item }">
+                  <div class="item_row">
+                    <div class="item_row_user_name">账号:<span v-html="highlightKeyword(item)"></span></div>
+                    <div class="item_row_nick_name">姓名:{{ item.nickName }}</div>
+                    <div class="item_row_dept_name">单位:{{ item.deptName || "(空)" }}</div>
+                  </div>
+                </template>
+
                 <template #suffix>
                   <i class="el-icon-search"></i>
                 </template>
-                <template #prepend>
-                  <el-button icon="el-icon-search" @click="openUserSelect"></el-button>
-                </template>
               </el-autocomplete>
             </el-form-item>
           </div>
         </el-form>
         <div class="common-dialog-footer">
-          <!--
-          <el-button @click="$emit('close')">返回</el-button>
-          -->
-          <el-button :loading="buttonLoading" type="primary" @click="submitForm">提交</el-button>
+          <el-button :loading="buttonLoading" type="primary" @click="submitForm" :disabled="buttonDisabled">提交</el-button>
         </div>
       </div>
     </div>
@@ -117,9 +130,11 @@ import debounce from 'lodash/debounce';
 
 const formRef = ref(null);
 const buttonLoading = ref(false);
+const buttonDisabled = ref(false);
 
 const formData = ref({
   title: '',
+  info_type: '',
   publish_group: '',
   template_type: '0',
   template_id: '',
@@ -129,6 +144,7 @@ const formData = ref({
   publish_time: '', // 存储定时发布的时间
   response_type: '',
   examine_by: '',
+  examine_user: '', // 显示
   attachs: [],
   examine_attachs: [],
   user_count: 0,
@@ -159,7 +175,8 @@ const querySearch = debounce((queryString, cb) => {
   if (queryString) {
     getUser({ userName: queryString })
       .then((res) => {
-        users.value = res.rows.map((user) => ({ value: user.username, username: user.username }));
+        users.value = res.rows.map((user) => ({ value: user.userName, userName: user.userName, nickName: user.nickName, deptName: user.deptName }));
+        console.log('users: ', users.value)
         cb(users.value);
       })
       .catch((error) => {
@@ -169,10 +186,20 @@ const querySearch = debounce((queryString, cb) => {
   } else {
     cb([]);
   }
-}, 6000);
+}, 3000);
+
+function highlightKeyword(item) {
+  const keyword = formData.value.examine_user;
+  if (!keyword) {
+    return item.userName;
+  }
+  const regex = new RegExp(keyword, 'gi');
+  let val = item.userName.replace(regex, match => `<span class="highlight">${match}</span>`);
+  return val;
+}
 
 const handleSelect = (item) => {
-  formData.value.examine_by = item.username;
+  formData.value.examine_by = item.userName;
 };
 
 const rules = {
@@ -223,10 +250,11 @@ const submitForm = () => {
         proxy?.$modal.msgError('请选择发布名单');
         return;
       }
-      formData.value.users = selectContactSelectData.value.map((u) => ({ user_id: u.userId, nick_name: u.label }));
+      formData.value.users = selectContactSelectData.value.map((u) => ({ user_id: u.id, nick_name: u.label }));
       try {
         buttonLoading.value = true;
         await addInformation(formData.value);
+        buttonDisabled.value = true;
         proxy?.$modal.msgSuccess('信息发布申请已提交');
       } finally {
         buttonLoading.value = false;
@@ -250,6 +278,7 @@ let contactSelectState = reactive({
 });
 const selectContactSelectData = ref([]);
 const handleContactSelectData = (data) => {
+  console.log('handleContactSelectData:', data);
   selectContactSelectData.value = data;
   formData.value.user_count = data.length;
 };
@@ -258,7 +287,7 @@ const toggleReleaseList = () => {
 };
 const fetchTreeData = async () => {
   try {
-    const response = await getPhoneList();
+    const response = await getPhoneList({});
     if (response && response.data) {
       treeData.value = response.data;
     }
@@ -271,16 +300,18 @@ const openUserSelect = async() => {
 
 };
 
+
 onMounted(() => {
   fetchTreeData();
   formData.value.publish_time = formattedCurrentTime.value;
   getTemplateList({}).then((res) => {
     res.data.forEach((item, index) => {
-      presetTemplates.value.push({ value: item.name, label: item.name, content: item.content });
+      presetTemplates.value.push({ value: item.id, label: item.name, content: item.content });
     });
     getUser({}).then((res) => {
-      // console.log('res:', res);
-      users.value = res.rows.map((user) => ({ value: user.username, username: user.username }));
+      // console.log('getUser res:', res);
+      users.value = res.rows.map((user) => ({ value: user.userName, userName: user.userName, nickName: user.nickName, deptName: user.deptName }));
+      console.log('users.value:', users.value);
     });
   });
 });
@@ -296,4 +327,30 @@ onMounted(() => {
   font-weight: bold; /* 加粗 */
   font-size: 1.2em; /* 放大字体大小 */
 }
+.el-icon-search {
+    height:20px;
+    width:20px;
+    background: url("@/assets/images/search.png") no-repeat;
+    background-size:20px;
+}
+
+::v-deep  .highlight {
+    color: #fd0f0f;
+}
+
+.item_row {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  .item_row_user_name {
+    margin-left:0px;
+  }
+  .item_row_nick_name {
+    margin-left:10px;
+  }
+  .item_row_dept_name {
+    margin-left:10px;
+
+  }
+}
 </style>

+ 5 - 3
src/views/informationissue/informationList.vue

@@ -6,7 +6,9 @@
           <el-form ref="queryFormRef" :model="queryParams" label-width="auto">
             <el-row :gutter="20">
               <el-col :span="8">
-                <el-segmented v-model="queryParams.dispose_status" :options="disposeStatusOptions" size="large" block @change="handleDisposeStatus" />
+                <div style="margin-bottom:10px;">
+                  <el-segmented v-model="queryParams.dispose_status" :options="disposeStatusOptions" size="large" block @change="handleDisposeStatus" />
+                </div>
               </el-col>
             </el-row>
             <el-row :gutter="24">
@@ -45,7 +47,7 @@
           </template>
         </el-table-column>
         <el-table-column label="发布单位" align="center" prop="publish_group" />
-        <el-table-column label="信息内容" align="center" prop="content" />
+        <el-table-column label="信息内容" align="left" prop="content"  width="400"/>
         <el-table-column label="发布时间" align="center" prop="publish_time" />
         <el-table-column label="发布渠道" align="center" prop="publish_channel" />
         <el-table-column label="发布申请人" align="center" prop="nick_name" />
@@ -131,7 +133,7 @@ const data = reactive({
     dispose_status: '0'
   }
 });
-const { queryParams, form } = toRefs(data);
+const { queryParams } = toRefs(data);
 const total = ref(0);
 
 const publishStatusOptions = reactive([