libushang 11 kuukautta sitten
vanhempi
commit
9d6d9d6cd0

+ 9 - 0
src/api/riskPrevention/planManage.ts

@@ -203,6 +203,7 @@ export const getDoc = (data) => {
     data: data
   });
 };
+
 export const importDocXls = (data) => {
   return request({
     url: '/api/emergency_plan/doc/import',
@@ -210,3 +211,11 @@ export const importDocXls = (data) => {
     data: data
   });
 };
+
+export const importUnitXls = (data) => {
+  return request({
+    url: '/api/emergency_plan/unit/import',
+    method: 'post',
+    data: data
+  });
+};

+ 2 - 2
src/views/riskPrevention/planManage/DocRecord.vue

@@ -4,7 +4,7 @@
         <el-button type="primary" @click="importDoc()"> 导入预案 </el-button>
     </div>
     
-    <el-card shadow="hover">
+    <el-card shadow="hover" v-show="doc_items.length > 0">
         <el-tabs v-model="activeName" type="border-card" class="demo-tabs" @tab-click="handleClick2">
             <!--
             <el-tab-pane label="总则" name="first">
@@ -117,7 +117,7 @@ const handleClick1 = (e: MouseEvent) => {
 
 const activeName = ref('first');
 const handleClick2 = (tab: TabsPaneContext, event: Event) => {
-  console.log(tab, event);
+  // console.log(tab, event);
 };
 
 const getData = () => {

+ 79 - 2
src/views/riskPrevention/planManage/UnitRecord.vue

@@ -1,4 +1,9 @@
 <template>
+  <div class="ya_bar">
+        <h3>单位职责</h3>
+        <el-button type="primary" @click="importDoc()"> 导入职责 </el-button>
+    </div>
+
   <el-card shadow="hover">
     <template #header>
       <el-row :gutter="10">
@@ -44,7 +49,7 @@
         </el-select>
       </el-form-item>
       <el-form-item label="职能说明" prop="content">
-        <el-input v-model="form.content" type="textarea" placeholder="请输入职能说明"></el-input>
+        <el-input v-model="form.content" type="textarea" placeholder="请输入职能说明" :rows="5"></el-input>
       </el-form-item>
       <el-form-item label="排序" prop="dept_order">
         <el-input v-model="form.dept_order" placeholder="请输入排序" />
@@ -57,6 +62,19 @@
       </div>
     </template>
   </el-dialog>
+
+  <el-dialog ref="importFormDialogRef" v-model="showImportDlg"  title="导入单位职责" width="500px" append-to-body>
+      <el-form ref="importFormRef" :model="importForm" :rules="importRules">
+          <FileUpload v-model="importForm.filename" :file-type="['xls', 'xlsx']" :limit="1" />
+      </el-form>
+      <template #footer>
+          <div class="dialog-footer">
+              <el-button type="primary" @click="submitImportForm">确 定</el-button>
+              <el-button @click="cancelImport">取 消</el-button>
+          </div>
+      </template>
+  </el-dialog>
+  
 </template>
 <script setup lang="ts">
 import {listDept} from '@/api/system/dept';
@@ -65,7 +83,8 @@ import {
   addUnit,
   updateUnit,
   getUnitDetail,
-  deleteUnit
+  deleteUnit,
+  importUnitXls
 } from '@/api/riskPrevention/planManage';
 import { to } from 'await-to-js';
 import { ref } from 'vue';
@@ -200,4 +219,62 @@ const handleDelete = async (row) => {
     proxy?.$modal.msgSuccess('删除成功');
   }
 };
+
+//////////////////
+const showImportDlg = ref(false);
+const formDialogRef = ref(null);
+const importFormRef = ref<ElFormInstance>();
+
+const importForm = ref({
+    filename: ''
+});
+
+const importRules = reactive({
+    filename: [{ required: true, message: '导入文件不能为空', trigger: 'blur' }]
+});
+
+const importDoc = () => {
+    resetImportForm();
+    showImportDlg.value = true;
+}
+
+const resetImportForm = () => {
+  importForm.value = {
+    filename:''
+  }
+  importFormRef.value?.resetFields();
+  importFormRef.value?.clearValidate();
+}
+
+/**提交按钮 */
+const submitImportForm = () => {
+  importFormRef.value?.validate(async (valid) => {
+    if (valid) {
+      try {
+          await importUnitXls({ ...importForm.value, plan_id: props.id })
+          proxy?.$modal.msgSuccess('导入成功');
+          showImportDlg.value = false;
+          getList();
+      } finally {
+      }
+    }
+  })
+}
+
+
+/** 取消按钮 */
+const cancelImport = () => {
+  resetImportForm();
+  showImportDlg.value = false;
+};
 </script>
+
+<style lang="scss" scoped>
+.ya_bar {
+  display:flex;
+  flex-direction: row; 
+  flex-wrap: nowrap;
+  justify-content:space-between;
+  align-items: center;
+}
+</style>

+ 16 - 4
src/views/riskPrevention/planManage/planList.vue

@@ -39,6 +39,9 @@
             <el-descriptions-item key="publishDate" label="发布日期:">{{ detailData.publishDate }}</el-descriptions-item>
             <el-descriptions-item key="organizingUnit" label="编制单位:">{{ detailData.organizingUnit }}</el-descriptions-item>
             <el-descriptions-item key="document" label="发文字号:">{{ detailData.document }}</el-descriptions-item>
+            <el-descriptions-item key="event_type" label="对应事件类型:">
+              <dict-tag :options="mm_event_type" :value="detailData.event_type"  style="display: inline-block" />
+            </el-descriptions-item>
           </el-descriptions>
         </el-card>
       </el-col>
@@ -47,7 +50,6 @@
         <DocRecord :id="planId" />
       </el-col>
       <el-col :lg="30" :xs="24">
-        <h3>单位职责</h3>
         <UnitRecord :id="planId" />
       </el-col>
       <el-col :lg="30" :xs="24">
@@ -86,6 +88,11 @@
         <el-form-item label="发文字号" prop="document">
           <el-input v-model="form.document" placeholder="请输入发文字号" />
         </el-form-item>
+        <el-form-item label="事件类型" prop="event_type">
+          <el-select v-model="form.event_type" placeholder="请输入对应事件类型" clearable>
+            <el-option v-for="item in mm_event_type" :key="item.value" :label="item.label" :value="item.value"></el-option>
+          </el-select>
+        </el-form-item>
         <el-form-item label="预案附件" prop="fileList">
           <file-upload v-model="form.fileList" :limit="1" :file-type="['pdf', 'doc', 'docx', 'xls', 'xlsx']" />
         </el-form-item>
@@ -120,7 +127,7 @@ const goBack = () => {
 /***培训记录编辑界面时间选择 */
 const route = useRoute();
 const { proxy } = getCurrentInstance() as ComponentInternalInstance;
-const { plan_type } = toRefs<any>(proxy?.useDict('plan_type'));
+const { mm_event_type, plan_type } = toRefs<any>(proxy?.useDict('plan_type', 'mm_event_type'));
 
 // 预案编辑
 let detailData = ref({
@@ -130,6 +137,7 @@ let detailData = ref({
   publishDate: '',
   organizingUnit: '',
   document: '',
+  event_type: '',
   fileList: []
 });
 let planId = ref();
@@ -143,12 +151,14 @@ let form = ref({
   document: '',
   organizingUnit: '',
   publishDate: '',
+  event_type: '',
   fileList: []
 });
 const rules = reactive({
   planName: [{ required: true, message: '预案名称不能为空', trigger: 'blur' }],
   planType: [{ required: true, message: '预案类型不能为空', trigger: 'blur' }],
   document: [{ required: true, message: '发文字号不能为空', trigger: 'blur' }],
+  event_type: [{ required: true, message: '对应事件类型不能为空', trigger: 'blur' }],
   organizingUnit: [{ required: true, message: '编制单位不能为空', trigger: 'blur' }],
   publishDate: [{ required: true, message: '发布日期不能为空', trigger: 'blur' }]
 });
@@ -166,7 +176,9 @@ const resetForm = () => {
     planType: '',
     document: '',
     organizingUnit: '',
-    publishDate: ''
+    publishDate: '',
+    event_type: '',
+    fileList: []
   };
   demoFormRef.value?.resetFields();
 };
@@ -174,7 +186,7 @@ const resetForm = () => {
 const handleDelete = async () => {
   const [err] = await to(proxy?.$modal.confirm('是否确认删除该条预案?') as any);
   if (!err) {
-    await deletePlan([detailData.value.planUid]);
+    await deletePlan([detailData.value.planId]);
     proxy?.$modal.msgSuccess('删除成功');
     router.go(-1);
   }