增薪资方案增加清除的操作+清除操作的逻辑处理点击一次清除上次点击的内容,并且重新组合数据渲染对应样式
1个文件已修改
134 ■■■■■ 已修改文件
src/views/employeeSalary/salaryPlan/components/addDialog.vue 134 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/employeeSalary/salaryPlan/components/addDialog.vue
@@ -65,9 +65,22 @@
          >
          </el-input> -->
          <div class="formula-input" v-html="form.salaryFormulaHtml"></div>
          <el-button class="formula-btn" type="text" @click="checkFormula()"
            >检查公式</el-button
          >
          <div class="formula-btn-right">
            <el-button
              class="formula-btn-t"
              type="text"
              :disabled="form.salaryFormulaHtml.length > 0 ? false : true"
              @click="deleteFormula()"
              >清除</el-button
            >
            <el-button
              class="formula-btn"
              :disabled="form.salaryFormulaHtml.length > 0 ? false : true"
              type="text"
              @click="checkFormula()"
              >检查公式</el-button
            >
          </div>
        </el-form-item>
        <div class="formula-error">
          <span v-if="form.error == 1" class="color_blue">
@@ -213,7 +226,7 @@
        salaryFormulaHtml: "",
        error: "",
        purchaseTypeList: [1],
        cycle: '1',
        cycle: "1",
      },
      activeName: 1,
      formulaName: [
@@ -351,34 +364,43 @@
          salaryFormulaHtml: "",
          error: "",
          purchaseTypeList: [1],
          cycle: '1',
          cycle: "1",
        };
        this.$nextTick(() => {
          this.$refs["form"].resetFields();
          if (this.editRow.id) {
            this.form = JSON.parse(JSON.stringify(this.editRow));
            let salaryFormula=this.form.salaryFormula?this.form.salaryFormula:''
            this.form.salaryFormulaHtml=''
            this.form.salaryFormula=''
            this.form.purchaseTypeList =[1]
            let arr=salaryFormula?salaryFormula.split(','):[]
            let formulaNameArr=this.formulaName.concat(this.formulaNameTwo).concat(this.formulaSymbol)
            if(arr.length>0){
              for(let i in arr){
                for(let j in formulaNameArr){
                  let reg2 =
                    /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/;
                  if (reg2.test(arr[i])) {
                    this.formulaClick({ name: "常量数字", type: 3, width: 2, },arr[i]);
                  }else if(formulaNameArr[j].name==arr[i]){
                    this.formulaClick(formulaNameArr[j])
                  }
                }
              }
            }
            let salaryFormula = this.form.salaryFormula
              ? this.form.salaryFormula
              : "";
            this.form.salaryFormulaHtml = "";
            this.form.salaryFormula = "";
            this.form.purchaseTypeList = [1];
            let arr = salaryFormula ? salaryFormula.split(",") : [];
            this.getSalaryFormulaHtml(arr);
          }
        });
      }
    },
    getSalaryFormulaHtml(arr) {
      let formulaNameArr = this.formulaName
        .concat(this.formulaNameTwo)
        .concat(this.formulaSymbol);
      if (arr.length > 0) {
        for (let i in arr) {
          for (let j in formulaNameArr) {
            let reg2 =
              /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/;
            if (reg2.test(arr[i])) {
              this.formulaClick(
                { name: "常量数字", type: 3, width: 2 },
                arr[i]
              );
            } else if (formulaNameArr[j].name == arr[i]) {
              this.formulaClick(formulaNameArr[j]);
            }
          }
        }
      }
    },
    // 点击生产数据和考勤及补贴数据 赋值计费公式定义
@@ -400,13 +422,24 @@
      this.form.salaryFormulaHtml = this.form.salaryFormulaHtml + string;
      this.$forceUpdate();
    },
    deleteFormula() {
      let salaryFormula = this.form.salaryFormula
              ? this.form.salaryFormula
              : "";
      let arr = salaryFormula.split(",");
      arr = arr.splice(0, arr.length - 1);
      arr = arr.splice(0, arr.length - 1);
      this.form.salaryFormulaHtml = "";
      this.form.salaryFormula = "";
      this.getSalaryFormulaHtml(arr);
    },
    checkFormula() {
      if (this.form.salaryFormula) {
        let string = true;
        let isString = '+-*/';
        let isString = "+-*/";
        let arr = this.form.salaryFormula.split(",");
        arr=arr.splice(0,arr.length-1)
        for (let i=0;i<arr.length;i++) {
        arr = arr.splice(0, arr.length - 1);
        for (let i = 0; i < arr.length; i++) {
          if (arr[i] != "") {
            // 除数不能为0, 符号那边需要有值
            if (isString.indexOf(arr[i]) != -1 || arr[i] == "(") {
@@ -431,7 +464,7 @@
              }
            } else if (arr[i] == ")") {
              if (i < arr.length - 1) {
                if (isString.indexOf(arr[i+1]) == -1) {
                if (isString.indexOf(arr[i + 1]) == -1) {
                  string = false;
                  break;
                }
@@ -454,9 +487,9 @@
        }
        if (!string) {
          this.$set(this.form,'error',2)
          this.$set(this.form, "error", 2);
        } else {
          this.$set(this.form,'error',1)
          this.$set(this.form, "error", 1);
        }
      }
    },
@@ -464,7 +497,7 @@
      if (type == 1) {
        this.form.purchaseTypeList = form.purchaseTypeList;
      } else if (type == 2) {
        this.form.cycle = form.cycle+'';
        this.form.cycle = form.cycle + "";
      } else if (type == 3) {
        this.formulaClick(
          {
@@ -531,29 +564,29 @@
    submitForm(formName) {
      this.$refs[formName].validate((valid) => {
        if (valid) {
          this.checkFormula()
          if(this.form.error==2){
          this.checkFormula();
          if (this.form.error == 2) {
            this.$message.error("请检查计费公式定义!");
            return true;
          }
          let form = JSON.parse(JSON.stringify(this.form));
          let arr = form.salaryFormula.split(",");
           arr=arr.splice(0,arr.length-1)
           form.salaryFormula=arr.join(",")
          arr = arr.splice(0, arr.length - 1);
          form.salaryFormula = arr.join(",");
          if (form.purchaseTypeList.length == 0) {
            this.$message.error("请点击野纤数量配置生丝标准!");
            return true;
          }
          let workTypes=[]
          if(form.workTypes&&form.workTypes.length>0){
            for(let i in form.workTypes){
          let workTypes = [];
          if (form.workTypes && form.workTypes.length > 0) {
            for (let i in form.workTypes) {
              workTypes.push({
                workName:form.workTypes[i].label,
                id:form.workTypes[i].value
              })
                workName: form.workTypes[i].label,
                id: form.workTypes[i].value,
              });
            }
          }
          form.workTypes=workTypes
          form.workTypes = workTypes;
          saveSalaryPlan(form).then((res) => {
            if (res.code == 200) {
              this.$message({
@@ -631,7 +664,7 @@
    }
  }
  .formula-input {
    width: calc(100% - 100px);
    width: calc(100% - 90px);
    height: 100px;
    padding: 10px 10px;
    overflow-y: auto;
@@ -639,12 +672,19 @@
    border: 1px solid #e4e7ed;
    cursor: not-allowed;
    float: left;
    margin-right: 20px;
  }
  .formula-btn {
  .formula-btn-right {
    width: 60px;
    float: left;
    margin-top: 80px;
    position: relative;
    .formula-btn-t {
      margin-left: 10px;
    }
    .formula-btn {
      margin-top: 40px;
    }
  }
  .formula-error {
    width: calc(100% - 110px);
    line-height: 28px;