Browse Source

feat: 考核管理-增加考核模版

haifeng.zhang 1 month ago
parent
commit
dcb7b95ad8

+ 171 - 5
src/views/evaluate/children/change/manage.vue

@@ -15,6 +15,8 @@ import {
   postCopyAssessment
 } from "@/api/manage";
 import { assessmentStatus, getStateType } from "@/config/tag";
+import { Calendar } from "@element-plus/icons-vue";
+
 const manageObjectRef = ref();
 const manageObjectShow = ref(false);
 const addExamRef = ref();
@@ -79,8 +81,15 @@ const handleSizeChange = (val: number) => {
 // 复制考核
 const dialogVisibleCopy = ref(false);
 const copyTitle = ref("");
-const copyForm = reactive({ name: "" });
+const copyForm = reactive({
+  name: "",
+  cycle: "",
+  cycleValue: ""
+});
 const copyManage = (row: any) => {
+  if (row.cycle) {
+    handleRegionChange(row.cycle);
+  }
   Object.assign(copyForm, row);
   copyTitle.value = row.name;
   dialogVisibleCopy.value = true;
@@ -90,17 +99,95 @@ const handleClose = () => {
   dialogVisibleCopy.value = false;
 };
 const saveCopy = async () => {
+  if (timeType.value == "月度") {
+    copyForm.cycleValue = dayjs(new Date(copyForm.cycleValue)).format(
+      "YYYY-MM"
+    );
+  }
+  if (timeType.value == "年度") {
+    copyForm.cycleValue = dayjs(new Date(copyForm.cycleValue)).format("YYYY");
+  }
+  if (timeType.value == "日期") {
+    copyForm.cycleValue = dayjs(new Date(copyForm.cycleValue)).format(
+      "YYYY-MM-DD"
+    );
+  }
   const { code, msg } = await postCopyAssessment(copyForm);
   if (code === 200) {
     ElMessage.success("复制成功");
     dialogVisibleCopy.value = false;
     getAssessmentPageListApi();
-    // } else {
-    //   ElMessage.error(msg);
   }
 };
-const arrData = i => {
-  console.log(i);
+const timeType = ref<any>("月度");
+const quarterValue = ref(true);
+const format = ref<any>("YYYY-MM");
+const pickerType = ref<any>("month");
+const handleRegionChange = (value: any) => {
+  timeType.value = value;
+  switch (value) {
+    case "年度":
+      copyForm.cycleValue = "";
+      format.value = "YYYY";
+      pickerType.value = "year";
+      break;
+    case "月度":
+      copyForm.cycleValue = "";
+      format.value = "YYYY-MM";
+      pickerType.value = "month";
+      break;
+    case "日期":
+      copyForm.cycleValue = "";
+      format.value = "YYYY-MM-DD";
+      pickerType.value = "";
+      break;
+    case "季度":
+      copyForm.cycleValue = "";
+      quarterValue.value = true;
+      break;
+    case "半年":
+      copyForm.cycleValue = "";
+      quarterValue.value = false;
+      break;
+  }
+};
+const yearTime = ref<any>(dayjs(new Date()).format("YYYY"));
+const decreaseYear = () => {
+  yearTime.value = dayjs().year(yearTime.value).subtract(1, "year").year(); // 减一年
+};
+const increaseYear = () => {
+  yearTime.value = dayjs().year(yearTime.value).add(1, "year").year(); // 加一年
+};
+const monthOne = item => {
+  let start = "";
+  let end = "";
+  switch (item) {
+    case "第一季度":
+      start = `${yearTime.value}-01-01`;
+      end = `${yearTime.value}-03-31`;
+      break;
+    case "第二季度":
+      start = `${yearTime.value}-04-01`;
+      end = `${yearTime.value}-06-30`;
+      break;
+    case "第三季度":
+      start = `${yearTime.value}-07-01`;
+      end = `${yearTime.value}-09-30`;
+      break;
+    case "第四季度":
+      start = `${yearTime.value}-10-01`;
+      end = `${yearTime.value}-12-31`;
+      break;
+    case "上半年":
+      start = `${yearTime.value}-01-01`;
+      end = `${yearTime.value}-06-30`;
+      break;
+    case "下半年":
+      start = `${yearTime.value}-07-01`;
+      end = `${yearTime.value}-12-31`;
+      break;
+  }
+  copyForm.cycleValue = `${yearTime.value}年${item}`;
 };
 </script>
 
@@ -264,6 +351,85 @@ const arrData = i => {
         <el-form-item label="名称" prop="name">
           <el-input v-model="copyForm.name" placeholder="请输入" />
         </el-form-item>
+        <el-form-item label="考核周期">
+          <el-radio-group v-model="copyForm.cycle" @change="handleRegionChange">
+            <el-radio value="月度" size="large">月度</el-radio>
+            <el-radio value="季度" size="large">季度</el-radio>
+            <el-radio value="半年" size="large">半年</el-radio>
+            <el-radio value="年度" size="large">年度</el-radio>
+            <el-radio value="日期" size="large">日期</el-radio>
+          </el-radio-group>
+          <el-date-picker
+            v-if="
+              timeType === '月度' || timeType === '日期' || timeType === '年度'
+            "
+            v-model="copyForm.cycleValue"
+            :type="pickerType"
+            :format="format"
+            placeholder="请选择"
+          />
+          <el-dropdown
+            v-else-if="timeType === '季度' || timeType === '半年'"
+            trigger="click"
+          >
+            <span class="el-dropdown-link navbar-bg-hover select-none">
+              <el-input
+                v-model="copyForm.cycleValue"
+                style="width: 240px"
+                placeholder="请选择"
+                :prefix-icon="Calendar"
+              />
+            </span>
+            <template #dropdown>
+              <el-dropdown-menu class="setting" style="width: 300px">
+                <div class="flex justify-between align-center text-base mt-4">
+                  <div
+                    class="cursor-pointer ml-4 text-xs pt-2"
+                    @click="decreaseYear"
+                  >
+                    <el-icon>
+                      <DArrowLeft />
+                    </el-icon>
+                  </div>
+                  <div>{{ yearTime }}</div>
+                  <div
+                    class="cursor-pointer mr-4 text-xs pt-2"
+                    @click="increaseYear"
+                  >
+                    <el-icon>
+                      <DArrowRight />
+                    </el-icon>
+                  </div>
+                </div>
+                <div
+                  v-if="quarterValue"
+                  class="flex justify-center align-center mt-5 mb-5"
+                >
+                  <el-dropdown-item @click="monthOne('一季度')">
+                    一季度
+                  </el-dropdown-item>
+                  <el-dropdown-item @click="monthOne('二季度')">
+                    二季度
+                  </el-dropdown-item>
+                  <el-dropdown-item @click="monthOne('三季度')">
+                    三季度
+                  </el-dropdown-item>
+                  <el-dropdown-item @click="monthOne('四季度')">
+                    四季度
+                  </el-dropdown-item>
+                </div>
+                <div v-else class="flex justify-around align-center mt-5 mb-5">
+                  <el-dropdown-item @click="monthOne('上半年')">
+                    上半年
+                  </el-dropdown-item>
+                  <el-dropdown-item @click="monthOne('下半年')">
+                    下半年
+                  </el-dropdown-item>
+                </div>
+              </el-dropdown-menu>
+            </template>
+          </el-dropdown>
+        </el-form-item>
       </el-form>
       <template #footer>
         <div class="dialog-footer">

+ 55 - 9
src/views/evaluate/children/change/mould/manageObject.vue

@@ -184,12 +184,25 @@ const getAssessmentQuotaDetailsApi = async () => {
   }
 };
 // 考核模板
+const modulesList = ref([]);
 const getTemplateInfoListApi = async () => {
-  const { data, code } = await getTemplateInfoList(initParams.params);
+  const { data, code } = await getTemplateInfoList({
+    page: 1,
+    pageSize: 100
+  });
   if (code == 200) {
-    // initParams.tmpList = data.records;
+    modulesList.value = data.records || [];
   }
 };
+const modulesValue = ref("");
+const handleModulesSelect = val => {
+  addPersonParams.assessmentModelId = val;
+  modulesList.value.forEach(el => {
+    if (el.id === val) {
+      addPersonParams.assessmentModelName = el.tpName;
+    }
+  });
+};
 // 删除
 const delParams = reactive({
   assessmentId: "",
@@ -198,7 +211,9 @@ const delParams = reactive({
 // 被考核对象
 const addPersonParams = reactive({
   assessmentId: "",
-  objectAddVoList: []
+  objectAddVoList: [],
+  assessmentModelId: "",
+  assessmentModelName: ""
 });
 // 添加被考核人
 const value1 = ref();
@@ -711,9 +726,12 @@ const editClosedEvent = row => {
 const closePerson = () => {
   Object.assign(addPersonParams, {
     assessmentId: "",
-    objectAddVoList: []
+    objectAddVoList: [],
+    assessmentModelId: "",
+    assessmentModelName: ""
   });
   value1.value = [];
+  modulesValue.value = "";
   dialogVisibleAdd.value = false;
 };
 
@@ -1662,9 +1680,12 @@ const hideColEvent = field => {
           label-width="auto"
           :model="addPersonParams"
         >
-          <el-form-item label="" label-position="top">
+          <el-form-item
+            v-if="$props.message.assessmentType == 0"
+            label="人员"
+            label-position="top"
+          >
             <el-tree-select
-              v-if="$props.message.assessmentType == 0"
               ref="assessmentTypeRef"
               v-model="value1"
               :data="convertDepartmentDataRecursive_Person(treeDept)"
@@ -1674,8 +1695,13 @@ const hideColEvent = field => {
               style="width: 240px"
               @check-change="handleRreeSelect"
             />
+          </el-form-item>
+          <el-form-item
+            v-else-if="$props.message.assessmentType == 1"
+            label="科室"
+            label-position="top"
+          >
             <el-tree-select
-              v-if="$props.message.assessmentType == 1"
               ref="assessmentTypeRef"
               v-model="value1"
               :data="dpetTree"
@@ -1686,8 +1712,13 @@ const hideColEvent = field => {
               @check-change="handleRreeSelect"
               @check="handleNodeRreeSelect"
             />
+          </el-form-item>
+          <el-form-item
+            v-else-if="$props.message.assessmentType == 2"
+            label="医疗组"
+            label-position="top"
+          >
             <el-select
-              v-if="$props.message.assessmentType == 2"
               ref="selectRefs"
               v-model="value1"
               multiple
@@ -1700,8 +1731,13 @@ const hideColEvent = field => {
                 :value="it.groupCode"
               />
             </el-select>
+          </el-form-item>
+          <el-form-item
+            v-else-if="$props.message.assessmentType == 3"
+            label="人员"
+            label-position="top"
+          >
             <el-select
-              v-if="$props.message.assessmentType == 3"
               ref="selectRefs"
               v-model="value1"
               multiple
@@ -1715,6 +1751,16 @@ const hideColEvent = field => {
               />
             </el-select>
           </el-form-item>
+          <el-form-item label="考核模板" label-position="top">
+            <el-select v-model="modulesValue" @change="handleModulesSelect">
+              <el-option
+                v-for="itemTmp in modulesList"
+                :key="itemTmp.id"
+                :label="itemTmp.tpName"
+                :value="itemTmp.id"
+              />
+            </el-select>
+          </el-form-item>
         </el-form>
       </div>
       <template #footer>