htc 1 týždeň pred
rodič
commit
1f4117708d

+ 4 - 1
src/hooks/useView.ts

@@ -6,7 +6,7 @@ import baseService from "@/service/baseService";
 import { getToken } from "@/utils/cache";
 import emits from "@/utils/emits";
 import { getThemeConfigCacheByKey } from "@/utils/theme";
-import { checkPermission, getDictLabel } from "@/utils/utils";
+import { checkPermission, getDictLabel, getDictByKey } from "@/utils/utils";
 import qs from "qs";
 import { onActivated, onMounted } from "vue";
 import { useRouter, useRoute } from "vue-router";
@@ -81,6 +81,9 @@ const useView = (props: IViewHooksOptions | IObject): IViewHooks => {
     },
     getDictLabel(dictType: string, dictValue: number) {
       return getDictLabel(store.state.dicts, dictType, dictValue);
+    },
+    getDictByKey(dictType: string) {
+      return getDictByKey(store.state.dicts, dictType);
     }
   };
 

+ 16 - 0
src/utils/utils.ts

@@ -175,6 +175,22 @@ export const getDictLabel = (
     return dictValue;
   }
 };
+/**
+ * 获取字典列表
+ * @param dictType  字典类型
+ */
+export const getDictByKey = (
+  list: IObject[],
+  dictType: string
+): any => {
+  const type = list.find((element: IObject) => element.dictType === dictType);
+  if (type) {
+    const val = type.dataList||[];
+    return val
+  } else {
+    return [];
+  }
+};
 
 /**
  * 获取svg图标(id)列表

+ 3 - 2
src/views/emergency/faultdevice-add-or-update.vue

@@ -25,8 +25,7 @@
       </el-form-item>
           <el-form-item label="状态" prop="status">
         <el-select v-model="dataForm.status" placeholder="状态">
-          <el-option label="待确认" :value="0"></el-option>
-          <el-option label="已确认" :value="1"></el-option>
+          <el-option :label="item.dictLabel" :value="item.dictValue" v-for="item in state.getDictByKey('failureDeviceStatus')"></el-option>
         </el-select>
       </el-form-item>
                   <el-form-item label="备注" prop="remark">
@@ -46,6 +45,8 @@ import { reactive, ref } from "vue";
 import baseService from "@/service/baseService";
 import { ElMessage } from "element-plus";
 const emit = defineEmits(["refreshDataList"]);
+import useView from "@/hooks/useView";
+const state = reactive({ ...useView({}) });
 
 const visible = ref(false);
 const dataFormRef = ref();

+ 2 - 2
src/views/emergency/faultdevice.vue

@@ -30,7 +30,7 @@
               <el-table-column prop="repairCompleteTime" label="维修完成时间" header-align="center" align="center"></el-table-column>
               <el-table-column prop="status" label="状态" header-align="center" align="center">
                 <template v-slot="scope">
-                  {{ scope.row.status===0?'待确认':scope.row.status===1?'已确认':'-' }}
+                  {{ state.getDictLabel("failureDeviceStatus", scope.row.status) }}
                 </template>
               </el-table-column>
               <el-table-column prop="creator" label="创建人" header-align="center" align="center"></el-table-column>
@@ -42,7 +42,7 @@
         <template v-slot="scope">
           <el-button v-if="state.hasPermission('emergency:faultdevice:update')" type="primary" link @click="addOrUpdateHandle(scope.row.id)">修改</el-button>
           <el-button v-if="state.hasPermission('emergency:faultdevice:delete')" type="primary" link @click="state.deleteHandle(scope.row.id)">删除</el-button>
-          <el-button v-if="state.hasPermission('emergency:schedule:review')" type="primary" link @click="reviewHandle(scope.row.id)">审阅</el-button>
+          <el-button v-if="state.hasPermission('emergency:faultdevice:review')" type="primary" link @click="reviewHandle(scope.row.id)">审阅</el-button>
         </template>
       </el-table-column>
     </el-table>

+ 17 - 22
src/views/emergency/leaveapplication-add-or-update.vue

@@ -2,41 +2,32 @@
   <el-dialog v-model="visible" :title="!dataForm.id ? '新增' : '修改'" :close-on-click-modal="false" :close-on-press-escape="false">
     <el-form :model="dataForm" :rules="rules" ref="dataFormRef" @keyup.enter="dataFormSubmitHandle()" label-width="120px">
       <el-form-item label="请假类型" prop="leaveType">
-        <el-radio-group v-model="dataForm.leaveType">
-          <el-radio value="1">病假</el-radio>
-          <el-radio value="2">事假</el-radio>
-          <el-radio value="3">调休</el-radio>
-        </el-radio-group>
+        <el-select v-model="dataForm.leaveType" placeholder="请选择请假类型">
+          <el-option :label="item.dictLabel" :value="item.dictValue" v-for="item in state.getDictByKey('askLeave')"></el-option>
+        </el-select>
       </el-form-item>
-        <!-- <el-input v-model="dataForm.leaveType" placeholder="1-病假 2-事假 3-调休"></el-input> -->
           <el-form-item label="开始时间" prop="startTime">
-        <!-- <el-input v-model="dataForm.startTime" placeholder="开始时间"></el-input> -->
          <el-date-picker
           v-model="dataForm.startTime"
-          type="date"
+          type="datetime"
           placeholder="选择开始时间"
-          value-format="YYYY-MM-DD"
+          value-format="YYYY-MM-DD HH:mm:ss"
           style="width: 100%;"
         ></el-date-picker>
       </el-form-item>
           <el-form-item label="结束时间" prop="endTime">
          <el-date-picker
           v-model="dataForm.endTime"
-          type="date"
+          type="datetime"
           placeholder="选择结束时间"
-          value-format="YYYY-MM-DD"
+          value-format="YYYY-MM-DD HH:mm:ss"
           style="width: 100%;"
         ></el-date-picker>
-        <!-- <el-input v-model="dataForm.endTime" placeholder="结束时间"></el-input> -->
       </el-form-item>
           <el-form-item label="审批状态" prop="status">
-        <!-- <el-input v-model="dataForm.status" placeholder="0-待审批 1-已批准 2-已拒绝 3-已取消"></el-input> -->
-             <el-radio-group v-model="dataForm.status">
-                <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-group>
+          <el-select v-model="dataForm.status" placeholder="请选择审批状态">
+            <el-option :label="item.dictLabel" :value="item.dictValue" v-for="item in state.getDictByKey('approvalStatus')"></el-option>
+          </el-select>
       </el-form-item>
           <el-form-item label="审批意见" prop="approvalComment">
         <el-input v-model="dataForm.approvalComment" placeholder="审批意见"></el-input>
@@ -53,10 +44,13 @@
 </template>
 
 <script lang="ts" setup>
+import { parseTime } from '@/utils/ruoyi'
 import { reactive, ref } from "vue";
 import baseService from "@/service/baseService";
 import { ElMessage } from "element-plus";
 const emit = defineEmits(["refreshDataList"]);
+import useView from "@/hooks/useView";
+const state = reactive({ ...useView({}) });
 
 const visible = ref(false);
 const dataFormRef = ref();
@@ -79,9 +73,6 @@ const rules = ref({
     ],
           approvalComment: [
       { required: true, message: '必填项不能为空', trigger: 'blur' }
-    ],
-                  remark: [
-      { required: true, message: '必填项不能为空', trigger: 'blur' }
     ]
   });
 
@@ -112,6 +103,10 @@ const dataFormSubmitHandle = () => {
     if (!valid) {
       return false;
     }
+    dataForm.startTime = dataForm.startTime ? parseTime(new Date(dataForm.startTime), '{yy}-{mm}-{dd} {hh}:{ii}:{ss}') : null;
+    dataForm.endTime = dataForm.endTime ? parseTime(new Date(dataForm.endTime), '{yy}-{mm}-{dd} {hh}:{ii}:{ss}') : null;
+    dataForm.leaveType = dataForm.leaveType ? Number(dataForm.leaveType) : null;
+    dataForm.status = dataForm.status ? Number(dataForm.status) : null;
     (!dataForm.id ? baseService.post : baseService.put)("/emergency/leaveapplication", dataForm).then((res) => {
       ElMessage.success({
         message: '成功',

+ 61 - 3
src/views/emergency/leaveapplication.vue

@@ -1,30 +1,52 @@
 <template>
   <div class="mod-demo__leaveapplication">
     <el-form :inline="true" :model="state.dataForm" @keyup.enter="state.getDataList()">
+      <el-form-item>
+        <el-input v-model="state.dataForm.creator" placeholder="姓名" clearable></el-input>
+      </el-form-item>
+      <el-form-item>
+        <el-button @click="state.getDataList()">查询</el-button>
+      </el-form-item>
       <el-form-item>
         <el-button v-if="state.hasPermission('emergency:leaveapplication:save')" type="primary" @click="addOrUpdateHandle()">新增</el-button>
       </el-form-item>
       <el-form-item>
         <el-button v-if="state.hasPermission('emergency:leaveapplication:delete')" type="danger" @click="state.deleteHandle()">删除</el-button>
       </el-form-item>
+      <!-- 审阅 -->
+       <el-form-item>
+        <el-button v-if="state.hasPermission('emergency:leaveapplication:review')" type="danger" @click="reviewHandle()">审阅</el-button>
+      </el-form-item>
+      <el-form-item>
+        <el-button v-if="state.hasPermission('emergency:leaveapplication:export')" type="info" @click="state.exportHandle()">导出</el-button>
+      </el-form-item>
     </el-form>
     <el-table v-loading="state.dataListLoading" :data="state.dataList" border @selection-change="state.dataListSelectionChangeHandle" style="width: 100%">
       <el-table-column type="selection" header-align="center" align="center" width="50"></el-table-column>
               <el-table-column prop="id" label="请假单ID" header-align="center" align="center"></el-table-column>
-              <el-table-column prop="leaveType" label="请假类型" header-align="center" align="center"></el-table-column>
+              <el-table-column prop="leaveType" label="请假类型" header-align="center" align="center">
+                <template v-slot="scope">
+                  {{ state.getDictLabel("askLeave", scope.row.leaveType) }}
+                </template>
+              </el-table-column>
               <el-table-column prop="startTime" label="开始时间" header-align="center" align="center"></el-table-column>
               <el-table-column prop="endTime" label="结束时间" header-align="center" align="center"></el-table-column>
-              <el-table-column prop="status" label="审批状态" header-align="center" align="center"></el-table-column>
+              <el-table-column prop="status" label="审批状态" header-align="center" align="center">
+                <template v-slot="scope">
+                  {{ state.getDictLabel("approvalStatus", scope.row.status) }}
+                </template>
+              </el-table-column>
               <el-table-column prop="approvalComment" label="审批意见" header-align="center" align="center"></el-table-column>
               <el-table-column prop="creator" label="创建人" header-align="center" align="center"></el-table-column>
               <el-table-column prop="createDate" label="创建时间" header-align="center" align="center"></el-table-column>
               <el-table-column prop="updater" label="更新人" header-align="center" align="center"></el-table-column>
               <el-table-column prop="updateDate" label="更新时间" header-align="center" align="center"></el-table-column>
               <el-table-column prop="remark" label="备注" header-align="center" align="center"></el-table-column>
-            <el-table-column label="操作" fixed="right" header-align="center" align="center" width="150">
+            <el-table-column label="操作" fixed="right" header-align="center" align="center" width="180">
         <template v-slot="scope">
           <el-button v-if="state.hasPermission('emergency:leaveapplication:update')" type="primary" link @click="addOrUpdateHandle(scope.row.id)">修改</el-button>
           <el-button v-if="state.hasPermission('emergency:leaveapplication:delete')" type="primary" link @click="state.deleteHandle(scope.row.id)">删除</el-button>
+          <el-button v-if="state.hasPermission('emergency:leaveapplication:review')" type="primary" link @click="reviewHandle(scope.row.id)">审阅</el-button>
         </template>
       </el-table-column>
     </el-table>
@@ -37,6 +59,8 @@
 <script lang="ts" setup>
 import useView from "@/hooks/useView";
 import { reactive, ref, toRefs } from "vue";
+import baseService from "@/service/baseService";
+import { ElMessage, ElMessageBox } from "element-plus";
 import AddOrUpdate from "./leaveapplication-add-or-update.vue";
 
 const view = reactive({
@@ -53,4 +77,38 @@ const addOrUpdateRef = ref();
 const addOrUpdateHandle = (id?: number) => {
   addOrUpdateRef.value.init(id);
 };
+
+// 审阅
+const reviewHandle = (id?: string) => {
+  if (!id && state.dataListSelections && state.dataListSelections.length <= 0) {
+    return ElMessage({
+      message: "请选择操作项",
+      type: "warning",
+      duration: 500
+    });
+  }
+  const reviewData = id 
+    ? { id: Number(id)} 
+    : (state.dataListSelections || []).map((item: IObject) => {return { id: item.id};});
+
+  ElMessageBox.confirm("确定进行[审阅]操作?", "提示", {
+    confirmButtonText: "确定",
+    cancelButtonText: "取消",
+    type: "warning"
+  })
+  .then(() => {
+      baseService.put("/emergency/leaveapplication/review", reviewData).then((res) => {
+        ElMessage.success({
+          message: "审阅成功",
+          duration: 500,
+          onClose: () => {
+            state.getDataList();
+          }
+        });
+      });
+    })
+    .catch(() => {
+      //
+    });
+};
 </script>