|  | @@ -12,7 +12,8 @@ import {
 | 
	
		
			
				|  |  |    updateAssessmentQuotaDetails,
 | 
	
		
			
				|  |  |    alterFinishValue,
 | 
	
		
			
				|  |  |    automaticCollection,
 | 
	
		
			
				|  |  | -  setTableHeader
 | 
	
		
			
				|  |  | +  setTableHeader,
 | 
	
		
			
				|  |  | +  getAssessmentDetails
 | 
	
		
			
				|  |  |  } from "@/api/assessment";
 | 
	
		
			
				|  |  |  import { getTemplateInfoList } from "@/api/templateInfo";
 | 
	
		
			
				|  |  |  import { useRouter } from "vue-router";
 | 
	
	
		
			
				|  | @@ -116,7 +117,7 @@ const convertDepartmentDataRecursive = data => {
 | 
	
		
			
				|  |  |    });
 | 
	
		
			
				|  |  |  };
 | 
	
		
			
				|  |  |  const dpetTree = ref([]);
 | 
	
		
			
				|  |  | -onMounted(() => {
 | 
	
		
			
				|  |  | +onMounted(async () => {
 | 
	
		
			
				|  |  |    Object.assign(messageData.value, $props.message);
 | 
	
		
			
				|  |  |    console.log("传递的值", $props.message);
 | 
	
		
			
				|  |  |    switch (messageData.value.assessmentType) {
 | 
	
	
		
			
				|  | @@ -137,9 +138,9 @@ onMounted(() => {
 | 
	
		
			
				|  |  |    initParams.objParams.assessmentId = $props.message.id;
 | 
	
		
			
				|  |  |    initParams.indexParams.assessmentId = $props.message.id;
 | 
	
		
			
				|  |  |    state.tableType = $props.message.assessmentType;
 | 
	
		
			
				|  |  | -  getAssessmentQuotaDetailsApi();
 | 
	
		
			
				|  |  | -  getTemplateInfoListApi();
 | 
	
		
			
				|  |  | -  getAssessmentObjectDetailsApi();
 | 
	
		
			
				|  |  | +  await getAssessmentQuotaDetailsApi();
 | 
	
		
			
				|  |  | +  await getTemplateInfoListApi();
 | 
	
		
			
				|  |  | +  await getAssessmentObjectDetailsApi();
 | 
	
		
			
				|  |  |  });
 | 
	
		
			
				|  |  |  const treeDeptList = ref([]);
 | 
	
		
			
				|  |  |  const assessmentTypeApi = async value => {
 | 
	
	
		
			
				|  | @@ -179,6 +180,7 @@ const getAssessmentQuotaDetailsApi = async () => {
 | 
	
		
			
				|  |  |      initParams.Indexlist = res.data.records;
 | 
	
		
			
				|  |  |      initParams.total1 = res.data.totalRow;
 | 
	
		
			
				|  |  |      alterFinishValueApi();
 | 
	
		
			
				|  |  | +    getAssessmentDetailsApi(); // 获取考核指标详情表头信息
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  };
 | 
	
		
			
				|  |  |  // 考核模板
 | 
	
	
		
			
				|  | @@ -453,9 +455,10 @@ const updateAssessmentQuotaDetailsApi = async row => {
 | 
	
		
			
				|  |  |      assessmentId: null
 | 
	
		
			
				|  |  |    });
 | 
	
		
			
				|  |  |    if (code === 200) {
 | 
	
		
			
				|  |  | -    getAssessmentQuotaDetailsApi();
 | 
	
		
			
				|  |  |      ElMessage.success("修改成功");
 | 
	
		
			
				|  |  | +    getAssessmentQuotaDetailsApi();
 | 
	
		
			
				|  |  |    } else {
 | 
	
		
			
				|  |  | +    getAssessmentQuotaDetailsApi();
 | 
	
		
			
				|  |  |      // 这里code不等于200调用了保存信息无法探寻到
 | 
	
		
			
				|  |  |      // ElMessage.error(msg);
 | 
	
		
			
				|  |  |    }
 | 
	
	
		
			
				|  | @@ -465,12 +468,21 @@ const editConfig = ref({
 | 
	
		
			
				|  |  |    trigger: "click",
 | 
	
		
			
				|  |  |    mode: "cell",
 | 
	
		
			
				|  |  |    showStatus: true,
 | 
	
		
			
				|  |  | -  beforeEditMethod({ row }) {
 | 
	
		
			
				|  |  | -    console.log("编辑123212132", row);
 | 
	
		
			
				|  |  | -    if (row.valueInput == 4 || row.valueInput == "4") {
 | 
	
		
			
				|  |  | -      return false;
 | 
	
		
			
				|  |  | -    } else {
 | 
	
		
			
				|  |  | +  beforeEditMethod({ row, column }) {
 | 
	
		
			
				|  |  | +    console.log("编辑123212132", column.title);
 | 
	
		
			
				|  |  | +    // 完成值 挑战值 门槛值 增幅 降幅 上期完成值 上上期完成值 得分
 | 
	
		
			
				|  |  | +    if (
 | 
	
		
			
				|  |  | +      column.title == "目标值" ||
 | 
	
		
			
				|  |  | +      column.title == "挑战值" ||
 | 
	
		
			
				|  |  | +      column.title == "门槛值"
 | 
	
		
			
				|  |  | +    ) {
 | 
	
		
			
				|  |  |        return true;
 | 
	
		
			
				|  |  | +    } else {
 | 
	
		
			
				|  |  | +      if (row.valueInput == 4 || row.valueInput == "4") {
 | 
	
		
			
				|  |  | +        return false;
 | 
	
		
			
				|  |  | +      } else {
 | 
	
		
			
				|  |  | +        return true;
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  });
 | 
	
	
		
			
				|  | @@ -484,6 +496,11 @@ const editVxe = reactive({
 | 
	
		
			
				|  |  |    assessmentModelId: null,
 | 
	
		
			
				|  |  |    id: null,
 | 
	
		
			
				|  |  |    dimId: null,
 | 
	
		
			
				|  |  | +  addValue: null,
 | 
	
		
			
				|  |  | +  decValue: null,
 | 
	
		
			
				|  |  | +  challengeValue: null,
 | 
	
		
			
				|  |  | +  upperValue: null,
 | 
	
		
			
				|  |  | +  agupperValue: null,
 | 
	
		
			
				|  |  |    assessmentId: null
 | 
	
		
			
				|  |  |  });
 | 
	
		
			
				|  |  |  // 编辑前面
 | 
	
	
		
			
				|  | @@ -499,6 +516,11 @@ const hangdleOpenClick = row => {
 | 
	
		
			
				|  |  |      score: null,
 | 
	
		
			
				|  |  |      assessmentObjectId: null,
 | 
	
		
			
				|  |  |      assessmentModelId: null,
 | 
	
		
			
				|  |  | +    addValue: null,
 | 
	
		
			
				|  |  | +    decValue: null,
 | 
	
		
			
				|  |  | +    challengeValue: null,
 | 
	
		
			
				|  |  | +    upperValue: null,
 | 
	
		
			
				|  |  | +    agupperValue: null,
 | 
	
		
			
				|  |  |      id: null,
 | 
	
		
			
				|  |  |      dimId: null,
 | 
	
		
			
				|  |  |      assessmentId: null
 | 
	
	
		
			
				|  | @@ -510,6 +532,7 @@ const editClosedEvent = row => {
 | 
	
		
			
				|  |  |    // { row, column, newValue, oldValue }
 | 
	
		
			
				|  |  |    const $table = tableVxeRef.value;
 | 
	
		
			
				|  |  |    if ($table) {
 | 
	
		
			
				|  |  | +    console.log(1433223, row.row);
 | 
	
		
			
				|  |  |      editVxe.relationId = row.row?.relationId;
 | 
	
		
			
				|  |  |      editVxe.assessmentModelId = row.row?.assessmentModelId;
 | 
	
		
			
				|  |  |      editVxe.assessmentObjectId = row.row?.assessmentObjectId;
 | 
	
	
		
			
				|  | @@ -523,8 +546,15 @@ const editClosedEvent = row => {
 | 
	
		
			
				|  |  |          // 判断是否id相同
 | 
	
		
			
				|  |  |          if (editVxe.score != row.row?.score) {
 | 
	
		
			
				|  |  |            // if (row.row?.id != editVxe.id) {
 | 
	
		
			
				|  |  | -          editVxe.score = row.row?.score;
 | 
	
		
			
				|  |  | +          editVxe.score = convertToNumberIfPercentage(row.row?.score);
 | 
	
		
			
				|  |  |            editVxe.finalValue = null;
 | 
	
		
			
				|  |  | +          editVxe.challengeValue = null;
 | 
	
		
			
				|  |  | +          editVxe.startValue = null;
 | 
	
		
			
				|  |  | +          editVxe.addValue = null;
 | 
	
		
			
				|  |  | +          editVxe.decValue = null;
 | 
	
		
			
				|  |  | +          editVxe.upperValue = null;
 | 
	
		
			
				|  |  | +          editVxe.targetValue = null;
 | 
	
		
			
				|  |  | +          editVxe.agupperValue = null;
 | 
	
		
			
				|  |  |            updateAssessmentQuotaDetailsApi(editVxe);
 | 
	
		
			
				|  |  |            // }
 | 
	
		
			
				|  |  |          }
 | 
	
	
		
			
				|  | @@ -534,13 +564,142 @@ const editClosedEvent = row => {
 | 
	
		
			
				|  |  |        if (row.row?.finalValue) {
 | 
	
		
			
				|  |  |          // if (row.row?.id != editVxe.id) {
 | 
	
		
			
				|  |  |          if (editVxe.finalValue != row.row?.finalValue) {
 | 
	
		
			
				|  |  | -          editVxe.finalValue = row.row?.finalValue;
 | 
	
		
			
				|  |  | +          editVxe.finalValue = convertToNumberIfPercentage(row.row?.finalValue);
 | 
	
		
			
				|  |  | +          editVxe.score = null;
 | 
	
		
			
				|  |  | +          editVxe.challengeValue = null;
 | 
	
		
			
				|  |  | +          editVxe.startValue = null;
 | 
	
		
			
				|  |  | +          editVxe.addValue = null;
 | 
	
		
			
				|  |  | +          editVxe.decValue = null;
 | 
	
		
			
				|  |  | +          editVxe.upperValue = null;
 | 
	
		
			
				|  |  | +          editVxe.targetValue = null;
 | 
	
		
			
				|  |  | +          editVxe.agupperValue = null;
 | 
	
		
			
				|  |  | +          updateAssessmentQuotaDetailsApi(editVxe);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        // }
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    if (row.column.title == "挑战值") {
 | 
	
		
			
				|  |  | +      if (row.row?.challengeValue) {
 | 
	
		
			
				|  |  | +        // if (row.row?.id != editVxe.id) {
 | 
	
		
			
				|  |  | +        if (editVxe.challengeValue != row.row?.challengeValue) {
 | 
	
		
			
				|  |  | +          editVxe.challengeValue = convertToNumberIfPercentage(
 | 
	
		
			
				|  |  | +            row.row?.challengeValue
 | 
	
		
			
				|  |  | +          );
 | 
	
		
			
				|  |  | +          editVxe.score = null;
 | 
	
		
			
				|  |  | +          editVxe.finalValue = null;
 | 
	
		
			
				|  |  | +          editVxe.startValue = null;
 | 
	
		
			
				|  |  | +          editVxe.addValue = null;
 | 
	
		
			
				|  |  | +          editVxe.decValue = null;
 | 
	
		
			
				|  |  | +          editVxe.upperValue = null;
 | 
	
		
			
				|  |  | +          editVxe.targetValue = null;
 | 
	
		
			
				|  |  | +          editVxe.agupperValue = null;
 | 
	
		
			
				|  |  | +          updateAssessmentQuotaDetailsApi(editVxe);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        // }
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    if (row.column.title == "门槛值") {
 | 
	
		
			
				|  |  | +      if (row.row?.startValue) {
 | 
	
		
			
				|  |  | +        // if (row.row?.id != editVxe.id) {
 | 
	
		
			
				|  |  | +        if (editVxe.startValue != row.row?.startValue) {
 | 
	
		
			
				|  |  | +          editVxe.startValue = convertToNumberIfPercentage(row.row?.startValue);
 | 
	
		
			
				|  |  |            editVxe.score = null;
 | 
	
		
			
				|  |  | +          editVxe.finalValue = null;
 | 
	
		
			
				|  |  | +          editVxe.challengeValue = null;
 | 
	
		
			
				|  |  | +          editVxe.addValue = null;
 | 
	
		
			
				|  |  | +          editVxe.decValue = null;
 | 
	
		
			
				|  |  | +          editVxe.upperValue = null;
 | 
	
		
			
				|  |  | +          editVxe.targetValue = null;
 | 
	
		
			
				|  |  | +          editVxe.agupperValue = null;
 | 
	
		
			
				|  |  |            updateAssessmentQuotaDetailsApi(editVxe);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          // }
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | +    if (row.column.title == "增幅") {
 | 
	
		
			
				|  |  | +      if (row.row?.addValue) {
 | 
	
		
			
				|  |  | +        if (editVxe.addValue != row.row?.addValue) {
 | 
	
		
			
				|  |  | +          editVxe.addValue = convertToNumberIfPercentage(row.row?.addValue);
 | 
	
		
			
				|  |  | +          editVxe.startValue = null;
 | 
	
		
			
				|  |  | +          editVxe.score = null;
 | 
	
		
			
				|  |  | +          editVxe.finalValue = null;
 | 
	
		
			
				|  |  | +          editVxe.challengeValue = null;
 | 
	
		
			
				|  |  | +          editVxe.decValue = null;
 | 
	
		
			
				|  |  | +          editVxe.upperValue = null;
 | 
	
		
			
				|  |  | +          editVxe.targetValue = null;
 | 
	
		
			
				|  |  | +          editVxe.agupperValue = null;
 | 
	
		
			
				|  |  | +          updateAssessmentQuotaDetailsApi(editVxe);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    if (row.column.title == "降幅") {
 | 
	
		
			
				|  |  | +      if (row.row?.decValue) {
 | 
	
		
			
				|  |  | +        if (editVxe.decValue != row.row?.decValue) {
 | 
	
		
			
				|  |  | +          editVxe.decValue = convertToNumberIfPercentage(row.row?.decValue);
 | 
	
		
			
				|  |  | +          editVxe.startValue = null;
 | 
	
		
			
				|  |  | +          editVxe.score = null;
 | 
	
		
			
				|  |  | +          editVxe.finalValue = null;
 | 
	
		
			
				|  |  | +          editVxe.challengeValue = null;
 | 
	
		
			
				|  |  | +          editVxe.addValue = null;
 | 
	
		
			
				|  |  | +          editVxe.upperValue = null;
 | 
	
		
			
				|  |  | +          editVxe.agupperValue = null;
 | 
	
		
			
				|  |  | +          editVxe.targetValue = null;
 | 
	
		
			
				|  |  | +          updateAssessmentQuotaDetailsApi(editVxe);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    if (row.column.title == "上期完成值") {
 | 
	
		
			
				|  |  | +      if (row.row?.upperValue) {
 | 
	
		
			
				|  |  | +        if (editVxe.upperValue != row.row?.upperValue) {
 | 
	
		
			
				|  |  | +          editVxe.upperValue = convertToNumberIfPercentage(row.row?.upperValue);
 | 
	
		
			
				|  |  | +          editVxe.startValue = null;
 | 
	
		
			
				|  |  | +          editVxe.score = null;
 | 
	
		
			
				|  |  | +          editVxe.finalValue = null;
 | 
	
		
			
				|  |  | +          editVxe.challengeValue = null;
 | 
	
		
			
				|  |  | +          editVxe.addValue = null;
 | 
	
		
			
				|  |  | +          editVxe.decValue = null;
 | 
	
		
			
				|  |  | +          editVxe.agupperValue = null;
 | 
	
		
			
				|  |  | +          editVxe.targetValue = null;
 | 
	
		
			
				|  |  | +          updateAssessmentQuotaDetailsApi(editVxe);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    if (row.column.title == "上上期完成值") {
 | 
	
		
			
				|  |  | +      if (row.row?.agupperValue) {
 | 
	
		
			
				|  |  | +        if (editVxe.agupperValue != row.row?.agupperValue) {
 | 
	
		
			
				|  |  | +          editVxe.agupperValue = convertToNumberIfPercentage(
 | 
	
		
			
				|  |  | +            row.row?.agupperValue
 | 
	
		
			
				|  |  | +          );
 | 
	
		
			
				|  |  | +          editVxe.startValue = null;
 | 
	
		
			
				|  |  | +          editVxe.score = null;
 | 
	
		
			
				|  |  | +          editVxe.finalValue = null;
 | 
	
		
			
				|  |  | +          editVxe.challengeValue = null;
 | 
	
		
			
				|  |  | +          editVxe.addValue = null;
 | 
	
		
			
				|  |  | +          editVxe.decValue = null;
 | 
	
		
			
				|  |  | +          editVxe.upperValue = null;
 | 
	
		
			
				|  |  | +          editVxe.targetValue = null;
 | 
	
		
			
				|  |  | +          updateAssessmentQuotaDetailsApi(editVxe);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    if (row.column.title == "目标值") {
 | 
	
		
			
				|  |  | +      if (row.row?.targetValue) {
 | 
	
		
			
				|  |  | +        if (editVxe.targetValue != row.row?.targetValue) {
 | 
	
		
			
				|  |  | +          editVxe.targetValue = convertToNumberIfPercentage(
 | 
	
		
			
				|  |  | +            row.row?.targetValue
 | 
	
		
			
				|  |  | +          );
 | 
	
		
			
				|  |  | +          editVxe.startValue = null;
 | 
	
		
			
				|  |  | +          editVxe.agupperValue = null;
 | 
	
		
			
				|  |  | +          editVxe.score = null;
 | 
	
		
			
				|  |  | +          editVxe.finalValue = null;
 | 
	
		
			
				|  |  | +          editVxe.challengeValue = null;
 | 
	
		
			
				|  |  | +          editVxe.addValue = null;
 | 
	
		
			
				|  |  | +          editVxe.decValue = null;
 | 
	
		
			
				|  |  | +          editVxe.upperValue = null;
 | 
	
		
			
				|  |  | +          updateAssessmentQuotaDetailsApi(editVxe);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  };
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -610,6 +769,15 @@ const assessmentHeader = reactive({
 | 
	
		
			
				|  |  |    showUpperValue: 0,
 | 
	
		
			
				|  |  |    showAgupperValue: 0
 | 
	
		
			
				|  |  |  });
 | 
	
		
			
				|  |  | +const showAssessmentHeader = reactive({
 | 
	
		
			
				|  |  | +  showTargetValue: 1,
 | 
	
		
			
				|  |  | +  showChallengeValue: 0,
 | 
	
		
			
				|  |  | +  showStartValue: 0,
 | 
	
		
			
				|  |  | +  showAddValue: 0,
 | 
	
		
			
				|  |  | +  showDecValue: 0,
 | 
	
		
			
				|  |  | +  showUpperValue: 0,
 | 
	
		
			
				|  |  | +  showAgupperValue: 0
 | 
	
		
			
				|  |  | +});
 | 
	
		
			
				|  |  |  // 开关状态
 | 
	
		
			
				|  |  |  // 目标值
 | 
	
		
			
				|  |  |  const showTargetValueSwitch = computed({
 | 
	
	
		
			
				|  | @@ -672,11 +840,216 @@ const setTableHeaderApi = async () => {
 | 
	
		
			
				|  |  |    const { code, msg } = await setTableHeader(assessmentHeader);
 | 
	
		
			
				|  |  |    if (code === 200) {
 | 
	
		
			
				|  |  |      getAssessmentQuotaDetailsApi();
 | 
	
		
			
				|  |  | +    let aa = JSON.parse(JSON.stringify(assessmentHeader));
 | 
	
		
			
				|  |  | +    Object.assign(showAssessmentHeader, aa);
 | 
	
		
			
				|  |  |      ElMessage.success("表头设置成功");
 | 
	
		
			
				|  |  |    } else {
 | 
	
		
			
				|  |  |      ElMessage.error(msg);
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  };
 | 
	
		
			
				|  |  | +watch(assessmentHeader, (newVal, oldVal) => {
 | 
	
		
			
				|  |  | +  console.log(newVal, oldVal);
 | 
	
		
			
				|  |  | +});
 | 
	
		
			
				|  |  | +const getAssessmentDetailsApi = async () => {
 | 
	
		
			
				|  |  | +  const { code, data } = await getAssessmentDetails({
 | 
	
		
			
				|  |  | +    id: messageData.value.id
 | 
	
		
			
				|  |  | +  });
 | 
	
		
			
				|  |  | +  if (code == 200) {
 | 
	
		
			
				|  |  | +    assessmentHeader.showTargetValue = data.showTargetValue;
 | 
	
		
			
				|  |  | +    assessmentHeader.showChallengeValue = data.showChallengeValue;
 | 
	
		
			
				|  |  | +    assessmentHeader.showStartValue = data.showStartValue;
 | 
	
		
			
				|  |  | +    assessmentHeader.showAddValue = data.showAddValue;
 | 
	
		
			
				|  |  | +    assessmentHeader.showDecValue = data.showDecValue;
 | 
	
		
			
				|  |  | +    assessmentHeader.showUpperValue = data.showUpperValue;
 | 
	
		
			
				|  |  | +    assessmentHeader.showAgupperValue = data.showAgupperValue;
 | 
	
		
			
				|  |  | +    let aa = JSON.parse(JSON.stringify(assessmentHeader));
 | 
	
		
			
				|  |  | +    Object.assign(showAssessmentHeader, aa);
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +// 判断是否为百分数
 | 
	
		
			
				|  |  | +function convertToNumberIfPercentage(value) {
 | 
	
		
			
				|  |  | +  // 判断是否为字符串,并且是否包含百分号
 | 
	
		
			
				|  |  | +  if (typeof value === "string" && value.trim().endsWith("%")) {
 | 
	
		
			
				|  |  | +    // 去掉百分号并将剩余的部分转换为数字
 | 
	
		
			
				|  |  | +    const numberValue = parseFloat(value.slice(0, -1));
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    // 如果转换后的值是有效的数字,返回数字形式
 | 
	
		
			
				|  |  | +    if (!isNaN(numberValue)) {
 | 
	
		
			
				|  |  | +      return numberValue / 100; // 转换为小数
 | 
	
		
			
				|  |  | +    } else {
 | 
	
		
			
				|  |  | +      return value; // 如果无法转换为有效数字,返回原值
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +  // 如果不是百分数,直接返回原值
 | 
	
		
			
				|  |  | +  return value;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +// 数据校验
 | 
	
		
			
				|  |  | +const validRules = ref({
 | 
	
		
			
				|  |  | +  finalValue: [
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +      validator: ({ cellValue }) => {
 | 
	
		
			
				|  |  | +        const numberPattern = /^[0-9]+(\.[0-9]+)?$/; // 匹配数字或小数
 | 
	
		
			
				|  |  | +        const decimalPattern = /^\d+(\.\d+)?$/; // 匹配小数
 | 
	
		
			
				|  |  | +        const percentagePattern = /^([0-9]{1,2}|100)(\.[0-9]{1,2})?%$/; // 匹配百分数
 | 
	
		
			
				|  |  | +        if (
 | 
	
		
			
				|  |  | +          numberPattern.test(cellValue) ||
 | 
	
		
			
				|  |  | +          decimalPattern.test(cellValue) ||
 | 
	
		
			
				|  |  | +          percentagePattern.test(cellValue)
 | 
	
		
			
				|  |  | +        ) {
 | 
	
		
			
				|  |  | +          return; // 校验通过
 | 
	
		
			
				|  |  | +        } else {
 | 
	
		
			
				|  |  | +          cellValue = "";
 | 
	
		
			
				|  |  | +          return new Error("格式错误,请输入一个有效的数字、小数或百分数"); // 校验不通过
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  ],
 | 
	
		
			
				|  |  | +  targetValue: [
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +      validator: ({ cellValue }) => {
 | 
	
		
			
				|  |  | +        const numberPattern = /^[0-9]+(\.[0-9]+)?$/; // 匹配数字或小数
 | 
	
		
			
				|  |  | +        const decimalPattern = /^\d+(\.\d+)?$/; // 匹配小数
 | 
	
		
			
				|  |  | +        const percentagePattern = /^([0-9]{1,2}|100)(\.[0-9]{1,2})?%$/; // 匹配百分数
 | 
	
		
			
				|  |  | +        if (
 | 
	
		
			
				|  |  | +          numberPattern.test(cellValue) ||
 | 
	
		
			
				|  |  | +          decimalPattern.test(cellValue) ||
 | 
	
		
			
				|  |  | +          percentagePattern.test(cellValue)
 | 
	
		
			
				|  |  | +        ) {
 | 
	
		
			
				|  |  | +          return; // 校验通过
 | 
	
		
			
				|  |  | +        } else {
 | 
	
		
			
				|  |  | +          cellValue = "";
 | 
	
		
			
				|  |  | +          return new Error("格式错误,请输入一个有效的数字、小数或百分数"); // 校验不通过
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  ],
 | 
	
		
			
				|  |  | +  challengeValue: [
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +      validator: ({ cellValue }) => {
 | 
	
		
			
				|  |  | +        const numberPattern = /^[0-9]+(\.[0-9]+)?$/; // 匹配数字或小数
 | 
	
		
			
				|  |  | +        const decimalPattern = /^\d+(\.\d+)?$/; // 匹配小数
 | 
	
		
			
				|  |  | +        const percentagePattern = /^([0-9]{1,2}|100)(\.[0-9]{1,2})?%$/; // 匹配百分数
 | 
	
		
			
				|  |  | +        if (
 | 
	
		
			
				|  |  | +          numberPattern.test(cellValue) ||
 | 
	
		
			
				|  |  | +          decimalPattern.test(cellValue) ||
 | 
	
		
			
				|  |  | +          percentagePattern.test(cellValue)
 | 
	
		
			
				|  |  | +        ) {
 | 
	
		
			
				|  |  | +          return; // 校验通过
 | 
	
		
			
				|  |  | +        } else {
 | 
	
		
			
				|  |  | +          return new Error("格式错误,请输入一个有效的数字、小数或百分数"); // 校验不通过
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  ],
 | 
	
		
			
				|  |  | +  startValue: [
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +      validator: ({ cellValue }) => {
 | 
	
		
			
				|  |  | +        const numberPattern = /^[0-9]+(\.[0-9]+)?$/; // 匹配数字或小数
 | 
	
		
			
				|  |  | +        const decimalPattern = /^\d+(\.\d+)?$/; // 匹配小数
 | 
	
		
			
				|  |  | +        const percentagePattern = /^([0-9]{1,2}|100)(\.[0-9]{1,2})?%$/; // 匹配百分数
 | 
	
		
			
				|  |  | +        if (
 | 
	
		
			
				|  |  | +          numberPattern.test(cellValue) ||
 | 
	
		
			
				|  |  | +          decimalPattern.test(cellValue) ||
 | 
	
		
			
				|  |  | +          percentagePattern.test(cellValue)
 | 
	
		
			
				|  |  | +        ) {
 | 
	
		
			
				|  |  | +          return; // 校验通过
 | 
	
		
			
				|  |  | +        } else {
 | 
	
		
			
				|  |  | +          return new Error("格式错误,请输入一个有效的数字、小数或百分数"); // 校验不通过
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  ],
 | 
	
		
			
				|  |  | +  addValue: [
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +      validator: ({ cellValue }) => {
 | 
	
		
			
				|  |  | +        const numberPattern = /^[0-9]+(\.[0-9]+)?$/; // 匹配数字或小数
 | 
	
		
			
				|  |  | +        const decimalPattern = /^\d+(\.\d+)?$/; // 匹配小数
 | 
	
		
			
				|  |  | +        const percentagePattern = /^([0-9]{1,2}|100)(\.[0-9]{1,2})?%$/; // 匹配百分数
 | 
	
		
			
				|  |  | +        if (
 | 
	
		
			
				|  |  | +          numberPattern.test(cellValue) ||
 | 
	
		
			
				|  |  | +          decimalPattern.test(cellValue) ||
 | 
	
		
			
				|  |  | +          percentagePattern.test(cellValue)
 | 
	
		
			
				|  |  | +        ) {
 | 
	
		
			
				|  |  | +          return; // 校验通过
 | 
	
		
			
				|  |  | +        } else {
 | 
	
		
			
				|  |  | +          return new Error("格式错误,请输入一个有效的数字、小数或百分数"); // 校验不通过
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  ],
 | 
	
		
			
				|  |  | +  decValue: [
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +      validator: ({ cellValue }) => {
 | 
	
		
			
				|  |  | +        const numberPattern = /^[0-9]+(\.[0-9]+)?$/; // 匹配数字或小数
 | 
	
		
			
				|  |  | +        const decimalPattern = /^\d+(\.\d+)?$/; // 匹配小数
 | 
	
		
			
				|  |  | +        const percentagePattern = /^([0-9]{1,2}|100)(\.[0-9]{1,2})?%$/; // 匹配百分数
 | 
	
		
			
				|  |  | +        if (
 | 
	
		
			
				|  |  | +          numberPattern.test(cellValue) ||
 | 
	
		
			
				|  |  | +          decimalPattern.test(cellValue) ||
 | 
	
		
			
				|  |  | +          percentagePattern.test(cellValue)
 | 
	
		
			
				|  |  | +        ) {
 | 
	
		
			
				|  |  | +          return; // 校验通过
 | 
	
		
			
				|  |  | +        } else {
 | 
	
		
			
				|  |  | +          return new Error("格式错误,请输入一个有效的数字、小数或百分数"); // 校验不通过
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  ],
 | 
	
		
			
				|  |  | +  upperValue: [
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +      validator: ({ cellValue }) => {
 | 
	
		
			
				|  |  | +        const numberPattern = /^[0-9]+(\.[0-9]+)?$/; // 匹配数字或小数
 | 
	
		
			
				|  |  | +        const decimalPattern = /^\d+(\.\d+)?$/; // 匹配小数
 | 
	
		
			
				|  |  | +        const percentagePattern = /^([0-9]{1,2}|100)(\.[0-9]{1,2})?%$/; // 匹配百分数
 | 
	
		
			
				|  |  | +        if (
 | 
	
		
			
				|  |  | +          numberPattern.test(cellValue) ||
 | 
	
		
			
				|  |  | +          decimalPattern.test(cellValue) ||
 | 
	
		
			
				|  |  | +          percentagePattern.test(cellValue)
 | 
	
		
			
				|  |  | +        ) {
 | 
	
		
			
				|  |  | +          return; // 校验通过
 | 
	
		
			
				|  |  | +        } else {
 | 
	
		
			
				|  |  | +          return new Error("格式错误,请输入一个有效的数字、小数或百分数"); // 校验不通过
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  ],
 | 
	
		
			
				|  |  | +  agupperValue: [
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +      validator: ({ cellValue }) => {
 | 
	
		
			
				|  |  | +        const numberPattern = /^[0-9]+(\.[0-9]+)?$/; // 匹配数字或小数
 | 
	
		
			
				|  |  | +        const decimalPattern = /^\d+(\.\d+)?$/; // 匹配小数
 | 
	
		
			
				|  |  | +        const percentagePattern = /^([0-9]{1,2}|100)(\.[0-9]{1,2})?%$/; // 匹配百分数
 | 
	
		
			
				|  |  | +        if (
 | 
	
		
			
				|  |  | +          numberPattern.test(cellValue) ||
 | 
	
		
			
				|  |  | +          decimalPattern.test(cellValue) ||
 | 
	
		
			
				|  |  | +          percentagePattern.test(cellValue)
 | 
	
		
			
				|  |  | +        ) {
 | 
	
		
			
				|  |  | +          return; // 校验通过
 | 
	
		
			
				|  |  | +        } else {
 | 
	
		
			
				|  |  | +          return new Error("格式错误,请输入一个有效的数字、小数或百分数"); // 校验不通过
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  ],
 | 
	
		
			
				|  |  | +  score: [
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +      validator: ({ cellValue }) => {
 | 
	
		
			
				|  |  | +        const numberPattern = /^[0-9]+(\.[0-9]+)?$/; // 匹配数字或小数
 | 
	
		
			
				|  |  | +        const decimalPattern = /^\d+(\.\d+)?$/; // 匹配小数
 | 
	
		
			
				|  |  | +        const percentagePattern = /^([0-9]{1,2}|100)(\.[0-9]{1,2})?%$/; // 匹配百分数
 | 
	
		
			
				|  |  | +        if (
 | 
	
		
			
				|  |  | +          numberPattern.test(cellValue) ||
 | 
	
		
			
				|  |  | +          decimalPattern.test(cellValue) ||
 | 
	
		
			
				|  |  | +          percentagePattern.test(cellValue)
 | 
	
		
			
				|  |  | +        ) {
 | 
	
		
			
				|  |  | +          return;
 | 
	
		
			
				|  |  | +        } else {
 | 
	
		
			
				|  |  | +          return new Error("格式错误,请输入一个有效的数字、小数或百分数"); // 校验不通过
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  ]
 | 
	
		
			
				|  |  | +});
 | 
	
		
			
				|  |  |  </script>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  <template>
 | 
	
	
		
			
				|  | @@ -823,7 +1196,22 @@ const setTableHeaderApi = async () => {
 | 
	
		
			
				|  |  |        <el-tab-pane label="考核指标" name="second">
 | 
	
		
			
				|  |  |          <div class="w-full flex items-center justify-between">
 | 
	
		
			
				|  |  |            <div class="w-1/2 flex items-center justify-between">
 | 
	
		
			
				|  |  | -            <el-text class="w-1/5">考核模板</el-text>
 | 
	
		
			
				|  |  | +            <!-- <el-text class="w-1/5">考核模板</el-text> -->
 | 
	
		
			
				|  |  | +            <el-select
 | 
	
		
			
				|  |  | +              v-model="initParams.indexParams.modelName"
 | 
	
		
			
				|  |  | +              placeholder="请选择考核模板"
 | 
	
		
			
				|  |  | +              filterable
 | 
	
		
			
				|  |  | +              clearable
 | 
	
		
			
				|  |  | +              style="width: 400px"
 | 
	
		
			
				|  |  | +              @change="getAssessmentQuotaDetailsApi"
 | 
	
		
			
				|  |  | +            >
 | 
	
		
			
				|  |  | +              <el-option
 | 
	
		
			
				|  |  | +                v-for="itemTmp in initParams.tmpList"
 | 
	
		
			
				|  |  | +                :key="itemTmp.id"
 | 
	
		
			
				|  |  | +                :label="itemTmp.assessmentModelName"
 | 
	
		
			
				|  |  | +                :value="itemTmp.assessmentModelName"
 | 
	
		
			
				|  |  | +              />
 | 
	
		
			
				|  |  | +            </el-select>
 | 
	
		
			
				|  |  |              <el-input
 | 
	
		
			
				|  |  |                v-model="initParams.indexParams.userName"
 | 
	
		
			
				|  |  |                class="ml-1"
 | 
	
	
		
			
				|  | @@ -860,6 +1248,7 @@ const setTableHeaderApi = async () => {
 | 
	
		
			
				|  |  |            show-overflow
 | 
	
		
			
				|  |  |            keep-source
 | 
	
		
			
				|  |  |            :edit-config="editConfig"
 | 
	
		
			
				|  |  | +          :edit-rules="validRules"
 | 
	
		
			
				|  |  |            :data="initParams.Indexlist"
 | 
	
		
			
				|  |  |            @edit-closed="editClosedEvent"
 | 
	
		
			
				|  |  |            @selection-change="changeSelection"
 | 
	
	
		
			
				|  | @@ -925,37 +1314,116 @@ const setTableHeaderApi = async () => {
 | 
	
		
			
				|  |  |            <vxe-column field="name" fixed title="指标名称" width="180" />
 | 
	
		
			
				|  |  |            <vxe-column field="scoreRule" fixed title="评价标准" width="180" />
 | 
	
		
			
				|  |  |            <vxe-column field="source" fixed title="数据来源" width="180" />
 | 
	
		
			
				|  |  | -          <vxe-column field="targetValue" fixed title="目标值" width="180" />
 | 
	
		
			
				|  |  | -          <!-- <vxe-column
 | 
	
		
			
				|  |  | +          <vxe-column
 | 
	
		
			
				|  |  | +            v-if="showAssessmentHeader.showTargetValue"
 | 
	
		
			
				|  |  | +            field="targetValue"
 | 
	
		
			
				|  |  | +            fixed
 | 
	
		
			
				|  |  | +            title="目标值"
 | 
	
		
			
				|  |  | +            :edit-render="{
 | 
	
		
			
				|  |  | +              name: 'input'
 | 
	
		
			
				|  |  | +            }"
 | 
	
		
			
				|  |  | +            width="180"
 | 
	
		
			
				|  |  | +          />
 | 
	
		
			
				|  |  | +          <vxe-column
 | 
	
		
			
				|  |  |              field="finalValue"
 | 
	
		
			
				|  |  |              fixed
 | 
	
		
			
				|  |  |              title="完成值"
 | 
	
		
			
				|  |  | -            :edit-render="{ name: 'input' }"
 | 
	
		
			
				|  |  | +            :edit-render="{
 | 
	
		
			
				|  |  | +              name: 'input'
 | 
	
		
			
				|  |  | +            }"
 | 
	
		
			
				|  |  |              width="180"
 | 
	
		
			
				|  |  |            >
 | 
	
		
			
				|  |  |              <template #default="{ row }">
 | 
	
		
			
				|  |  |                <div @click="hangdleOpenClick(row)">
 | 
	
		
			
				|  |  | -                {{ row.finalValue }}
 | 
	
		
			
				|  |  | +                {{ convertToNumberIfPercentage(row.finalValue) }}
 | 
	
		
			
				|  |  |                </div>
 | 
	
		
			
				|  |  |              </template>
 | 
	
		
			
				|  |  |            </vxe-column>
 | 
	
		
			
				|  |  |            <vxe-column
 | 
	
		
			
				|  |  | -            field="score"
 | 
	
		
			
				|  |  | +            v-if="showAssessmentHeader.showChallengeValue"
 | 
	
		
			
				|  |  | +            field="challengeValue"
 | 
	
		
			
				|  |  |              fixed
 | 
	
		
			
				|  |  | -            title="得分"
 | 
	
		
			
				|  |  | -            :edit-render="{ name: 'input' }"
 | 
	
		
			
				|  |  | +            title="挑战值"
 | 
	
		
			
				|  |  | +            :edit-render="{
 | 
	
		
			
				|  |  | +              name: 'input'
 | 
	
		
			
				|  |  | +            }"
 | 
	
		
			
				|  |  |              width="180"
 | 
	
		
			
				|  |  |            >
 | 
	
		
			
				|  |  |              <template #default="{ row }">
 | 
	
		
			
				|  |  |                <div @click="hangdleOpenClick(row)">
 | 
	
		
			
				|  |  | -                {{ row.score }}
 | 
	
		
			
				|  |  | +                {{ row.challengeValue }}
 | 
	
		
			
				|  |  |                </div>
 | 
	
		
			
				|  |  |              </template>
 | 
	
		
			
				|  |  | -          </vxe-column> -->
 | 
	
		
			
				|  |  | +          </vxe-column>
 | 
	
		
			
				|  |  |            <vxe-column
 | 
	
		
			
				|  |  | -            field="finalValue"
 | 
	
		
			
				|  |  | +            v-if="showAssessmentHeader.showStartValue"
 | 
	
		
			
				|  |  | +            field="startValue"
 | 
	
		
			
				|  |  |              fixed
 | 
	
		
			
				|  |  | -            title="完成值"
 | 
	
		
			
				|  |  | +            title="门槛值"
 | 
	
		
			
				|  |  | +            :edit-render="{
 | 
	
		
			
				|  |  | +              name: 'input'
 | 
	
		
			
				|  |  | +            }"
 | 
	
		
			
				|  |  | +            width="180"
 | 
	
		
			
				|  |  | +          >
 | 
	
		
			
				|  |  | +            <template #default="{ row }">
 | 
	
		
			
				|  |  | +              <div @click="hangdleOpenClick(row)">
 | 
	
		
			
				|  |  | +                {{ row.startValue }}
 | 
	
		
			
				|  |  | +              </div>
 | 
	
		
			
				|  |  | +            </template>
 | 
	
		
			
				|  |  | +          </vxe-column>
 | 
	
		
			
				|  |  | +          <vxe-column
 | 
	
		
			
				|  |  | +            v-if="showAssessmentHeader.showAddValue"
 | 
	
		
			
				|  |  | +            field="addValue"
 | 
	
		
			
				|  |  | +            fixed
 | 
	
		
			
				|  |  | +            title="增幅"
 | 
	
		
			
				|  |  | +            :edit-render="{
 | 
	
		
			
				|  |  | +              name: 'input'
 | 
	
		
			
				|  |  | +            }"
 | 
	
		
			
				|  |  | +            width="180"
 | 
	
		
			
				|  |  | +          >
 | 
	
		
			
				|  |  | +            <template #default="{ row }">
 | 
	
		
			
				|  |  | +              <div @click="hangdleOpenClick(row)">
 | 
	
		
			
				|  |  | +                {{ row.addValue }}
 | 
	
		
			
				|  |  | +              </div>
 | 
	
		
			
				|  |  | +            </template>
 | 
	
		
			
				|  |  | +          </vxe-column>
 | 
	
		
			
				|  |  | +          <vxe-column
 | 
	
		
			
				|  |  | +            v-if="showAssessmentHeader.showDecValue"
 | 
	
		
			
				|  |  | +            field="decValue"
 | 
	
		
			
				|  |  | +            fixed
 | 
	
		
			
				|  |  | +            title="降幅"
 | 
	
		
			
				|  |  | +            :edit-render="{
 | 
	
		
			
				|  |  | +              name: 'input'
 | 
	
		
			
				|  |  | +            }"
 | 
	
		
			
				|  |  | +            width="180"
 | 
	
		
			
				|  |  | +          >
 | 
	
		
			
				|  |  | +            <template #default="{ row }">
 | 
	
		
			
				|  |  | +              <div @click="hangdleOpenClick(row)">
 | 
	
		
			
				|  |  | +                {{ row.decValue }}
 | 
	
		
			
				|  |  | +              </div>
 | 
	
		
			
				|  |  | +            </template>
 | 
	
		
			
				|  |  | +          </vxe-column>
 | 
	
		
			
				|  |  | +          <vxe-column
 | 
	
		
			
				|  |  | +            v-if="showAssessmentHeader.showUpperValue"
 | 
	
		
			
				|  |  | +            field="upperValue"
 | 
	
		
			
				|  |  | +            fixed
 | 
	
		
			
				|  |  | +            title="上期完成值"
 | 
	
		
			
				|  |  | +            :edit-render="{
 | 
	
		
			
				|  |  | +              name: 'input'
 | 
	
		
			
				|  |  | +            }"
 | 
	
		
			
				|  |  | +            width="180"
 | 
	
		
			
				|  |  | +          >
 | 
	
		
			
				|  |  | +            <template #default="{ row }">
 | 
	
		
			
				|  |  | +              <div @click="hangdleOpenClick(row)">
 | 
	
		
			
				|  |  | +                {{ row.upperValue }}
 | 
	
		
			
				|  |  | +              </div>
 | 
	
		
			
				|  |  | +            </template>
 | 
	
		
			
				|  |  | +          </vxe-column>
 | 
	
		
			
				|  |  | +          <vxe-column
 | 
	
		
			
				|  |  | +            v-if="showAssessmentHeader.showAgupperValue"
 | 
	
		
			
				|  |  | +            field="agupperValue"
 | 
	
		
			
				|  |  | +            fixed
 | 
	
		
			
				|  |  | +            title="上上期完成值"
 | 
	
		
			
				|  |  |              :edit-render="{
 | 
	
		
			
				|  |  |                name: 'input'
 | 
	
		
			
				|  |  |              }"
 | 
	
	
		
			
				|  | @@ -963,7 +1431,7 @@ const setTableHeaderApi = async () => {
 | 
	
		
			
				|  |  |            >
 | 
	
		
			
				|  |  |              <template #default="{ row }">
 | 
	
		
			
				|  |  |                <div @click="hangdleOpenClick(row)">
 | 
	
		
			
				|  |  | -                {{ row.finalValue }}
 | 
	
		
			
				|  |  | +                {{ row.agupperValue }}
 | 
	
		
			
				|  |  |                </div>
 | 
	
		
			
				|  |  |              </template>
 | 
	
		
			
				|  |  |            </vxe-column>
 | 
	
	
		
			
				|  | @@ -988,7 +1456,7 @@ const setTableHeaderApi = async () => {
 | 
	
		
			
				|  |  |                {{ dayjs(row.updateTime).format("YYYY-MM-DD HH:mm:ss") }}
 | 
	
		
			
				|  |  |              </template>
 | 
	
		
			
				|  |  |            </vxe-column>
 | 
	
		
			
				|  |  | -          <vxe-column field="" title="操作1" fixed="right" width="180">
 | 
	
		
			
				|  |  | +          <vxe-column field="" title="操作" fixed="right" width="180">
 | 
	
		
			
				|  |  |              <template #header>
 | 
	
		
			
				|  |  |                操作
 | 
	
		
			
				|  |  |                <!-- 在表头操作后面添加图标 -->
 |