报价单 销售机会的必填和非必填从自动获取编码接口的header获取,对应的需要修改拦截器里方法
8个文件已修改
118 ■■■■■ 已修改文件
src/api/common/standard.js 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/common/untils/request.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/makepager/CommonFormTableView.vue 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/makepager/mixin/codeMixin.js 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/router/index.js 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/sales/quotation/AddQuotationDialog.vue 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/sales/quotation/index.vue 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/sales/salesDetails/AddSalesDetailsDialog.vue 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/common/standard.js
@@ -1,18 +1,6 @@
import axios from "axios"
import request from "@/common/untils/request.js"
//编码规范列表
// export function getCodeStandardList  (data)  {
//   return request({
//     url: "/api/code/getCodeList",
//     method: "post",
//     data,
//   });
// }
export function getCodeStandardList(data) {
  // return  axios.get(`/api/code/getCodeList`, {
  //   params: data
  // })
  return request({
    url: "/api/code/getCodeList",
    method: "get",
@@ -24,6 +12,7 @@
  return request({
    url: "/api/code/getAutoCode",
    method: "post",
    IsHeader:true,
    data
  })
}
src/common/untils/request.js
@@ -64,7 +64,11 @@
  (res) => {
    /* //对响应数据做些事 */
    if (res.data.code === 200) {
      if(res.config.IsHeader){
        return res;
      }else{
      return res.data ? res.data : {}
      }
    } else if (res.data.code === 700001 || res.data.code === 700005) {
      console.log("客户名称重复")
      return res
src/components/makepager/CommonFormTableView.vue
@@ -128,7 +128,17 @@
                  "
                ></el-input-number>
              </el-form-item>
              <span v-else>{{ scope.row[item.prop] }}</span>
              <span v-else>
                <template v-if="pageName=='quotation'&&item.prop=='profit'">
                  {{ (scope.row.price&&scope.row.cost)?Number(scope.row.price)-Number(scope.row.cost)+'':'' }}
                </template>
                <template v-if="pageName=='quotation'&&item.prop=='margin'">
                  {{ (scope.row.price&&scope.row.cost)?((Number(scope.row.price)-Number(scope.row.cost))*100/Number(scope.row.cost)).toFixed(2)+'%':'' }}
                </template>
                <template v-else>
                  {{ scope.row[item.prop] }}
                </template>
              </span>
            </template>
            <el-form-item
              v-else-if="item.inputNumber && selectBox"
@@ -151,6 +161,15 @@
              ></el-input-number>
            </el-form-item>
            <span v-else style="text-align: right">{{ scope.row[item.prop] }}</span>
          </template>
        </el-table-column>
        <el-table-column  label="操作" width="40" align="center">
          <template slot-scope="scope">
            <el-button
              type="text"
              size="small"
              @click="deleteClick(scope)"
              >删除</el-button>
          </template>
        </el-table-column>
        <slot name="tableButton" />
@@ -199,6 +218,11 @@
    selectBox: {
      type: Boolean,
      default: false
    },
    // 那个页面 用来判断计算方式
    pageName:{
      type:String,
      default:''
    },
    productTableList: {
      type: Object,
@@ -302,9 +326,13 @@
          sums[index] = "小计:"
          return
        }
        const title = ["#", "产品名称"]
        const title = ["#", "产品名称",'产品编号','单位','销售单价','成本单价']
        // 去除某些不需要计算的数据
        if (title.includes(column.label)) {
          sums[index] = ""
          return
        }
        if(this.pageName=='quotation'&&column.label=='毛利'){
          sums[index] = ""
          return
        }
@@ -378,6 +406,13 @@
    empty() {
      this.isRecalculate = false
      this.$emit("emptyProductClick")
    },
    // 删除
    deleteClick(scope){
      this.tableList.tableData.splice(scope.$index,1)
      this.$forceUpdate();
      this.$message.success('删除除成功!')
      this.$emit("deleteClick",scope)
    },
    // 重算
    recalculate() {
@@ -474,6 +509,7 @@
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style lang="scss" scoped>
.page-view {
  .el-form-item {
    margin-bottom: 0;
    .custom-name {
src/components/makepager/mixin/codeMixin.js
@@ -18,6 +18,10 @@
      objCode: { name: "", page: 0, pageSize: 0, type: "跟进记录编码", codeStandID: "" },
      codeRule: {},
      codeLength: 0,
      // header头的参数
      autoCodeHeadersObj:{
        xsjh:'',
      }
    }
  },
@@ -91,8 +95,9 @@
    async getAutoCodeValue() {
      if(Object.keys(this.codeRule).length>0){
        const res = await getAutoCode(this.codeRule);
        if (res.code == 200) {
          this.$set(this.editConfig.infomation, 'number', res.data?res.data:'')
        this.autoCodeHeadersObj=res.headers
        if (res.data.code == 200) {
          this.$set(this.editConfig.infomation, 'number', res.data.data?res.data.data:'')
        }else{
          this.$set(this.editConfig.infomation, 'number', this.codeRule.AutoRule.PrefixValue?this.codeRule.AutoRule.PrefixValue:'')
        }
src/router/index.js
@@ -140,9 +140,9 @@
    const result = await hasPermission(to.path);
    console.log(result,"result")
    next();
    if (!isSkip) {
      next('/noData')
    }
    // if (!isSkip) {
    //   next('/noData')
    // }
  } catch (error) {
    console.error('Error in navigation guard:', error);
    next(); 
src/views/sales/quotation/AddQuotationDialog.vue
@@ -165,7 +165,8 @@
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item label="销售机会" prop="sale_chance_name">
                <el-form-item label="销售机会" prop="sale_chance_name"
                :rules="[{ required: autoCodeHeadersObj.xsjh=='yes'?true:false, validator: this.checkChance, trigger: 'change' }]">
                  <div class="custom-name">
                    <el-autocomplete
                      v-model="editConfig.infomation.sale_chance_name"
@@ -248,6 +249,7 @@
          <div class="product-view">
            <CommonFormTableView
              :show-summary="showSummary"
              pageName="quotation"
              :product-table-list="productTableList"
              @inputContent="inputContent"
              @addProductClick="addProductClick"
@@ -371,7 +373,7 @@
        number: [{ required: true, validator: this.validateCheckCode, trigger: ["blur", "change"] }],
        quotationName: [{ required: true, message: "请输入", trigger: "blur" }],
        quotation_status_id: [{ required: true, message: "请选择", trigger: "change" }],
        sale_chance_name: [{ required: true, validator: this.checkChance, trigger: "change" }],
        // sale_chance_name: [{ required: true, validator: this.checkChance, trigger: "change" }],
        member_id: [{ required: true, validator: this.validateMemberId, trigger: "change" }]
      },
      memberOptions: [],
@@ -383,7 +385,7 @@
        show: true,
        total: true,
        sumProp: ["Amount", "total"],
        mergeNumber: 2
        mergeNumber: 7
      },
      editSelectClientConfig: {
        editVisible: false,
@@ -422,7 +424,7 @@
      if (val) {
        this.formInfo()
      }
    }
    },
  },
  methods: {
    formInfo() {
@@ -627,11 +629,14 @@
        tableData: this.tableData,
        tableColumn: [
          { label: "#", prop: "productId", width: 40 },
          { label: "产品名称", prop: "name", productName: true, isRequird: true },
          { label: "产品名称", prop: "name", productName: true, isRequird: true,min:110, },
          { label: "产品编号", prop: "number" },
          { label: "数量", prop: "amount", inputNumber: true, isRequird: true },
          { label: "单位", prop: "unit" },
          { label: "销售单价", prop: "price", inputFloat: true },
          { label: "销售单价", prop: "price", inputFloat: true, isRequird: true },
          { label: "成本单价", prop: "cost",inputFloat: true  },
          { label: "毛利", prop: "profit" },
          { label: "毛利率", prop: "margin",min:90},
          { label: "数量", prop: "amount", inputNumber: true, isRequird: true },
          { label: "价税合计", prop: "total", inputFloat: true }
        ]
      }
@@ -690,7 +695,11 @@
      if (this.editConfig.infomation.sale_chance_name && this.editConfig.infomation.sale_chance_name.length > 0) {
        callback()
      } else {
        if(this.autoCodeHeadersObj.xsjh=='yes'){
        callback(new Error("请选择销售机会"))
        }else{
          callback()
        }
      }
    },
    // 销售负责人自定义校验规则
src/views/sales/quotation/index.vue
@@ -326,12 +326,11 @@
    },
    // 编辑
    handleClick(row) {
      console.log(row)
      this.editConfig.visible = true
      this.editConfig.title = "编辑"
      console.log("dddddddd")
      console.log(row)
      this.editConfig.infomation = { ...row, currency: "人民币" }
      let params = JSON.parse(JSON.stringify(row));
      this.editConfig.infomation = { ...params, currency: "人民币" }
      console.log(this.editConfig.infomation.products,'===products')
      this.editConfig.visible = true
    },
    // 批量删除
    delClick() {
src/views/sales/salesDetails/AddSalesDetailsDialog.vue
@@ -90,9 +90,10 @@
                  </div>
                </el-form-item>
              </el-col>
             111: {{ autoCodeHeadersObj.Ywjh }}
              <el-col :span="12">
                <el-form-item label="销售机会" prop="sale_chance_name">
                <el-form-item label="销售机会" prop="sale_chance_name"
                :rules="[{ required: autoCodeHeadersObj.Ywjh=='yes'?true:false, message: '请选择销售机会', trigger: 'change' }]">
                  <div class="custom-name">
                    <el-autocomplete
                      style="width: 100%"
@@ -161,7 +162,8 @@
                </el-form-item>
              </el-col> -->
              <el-col :span="12">
                <el-form-item label="销售报价单" prop="quotation_number">
                <el-form-item label="销售报价单" prop="quotation_number"
                :rules="[{ required: autoCodeHeadersObj.Bjd=='yes'?true:false, message: '请选择销售报价单', trigger: 'change' }]">
                  <div class="custom-name">
                    <el-autocomplete
                      v-model="editConfig.infomation.quotation_number"
@@ -539,8 +541,8 @@
        number: [{ required: true, validator: this.validateCheckCode, trigger: ["blur", "change"] }],
        signTime: [{ required: true, message: "请选择签约日期", trigger: "change" }],
        memberId: [{ required: true, validator: this.validateMemberId, trigger: "change" }],
        sale_chance_name: [{ required: true, message: "请选择销售机会", trigger: "change" }],
        quotation_number: [{ required: true, message: "请选择销售报价单", trigger: "change" }],
        // sale_chance_name: [{ required: true, message: "请选择销售机会", trigger: "change" }],
        // quotation_number: [{ required: true, message: "请选择销售报价单", trigger: "change" }],
        deliveryDate: [{ required: true, message: "请选择交付日期", trigger: "change" }]
        // approvalOpinion: [{ required: true, message: "请输入", trigger: "blur" }]
      },
@@ -946,7 +948,7 @@
          { label: "产品编号", prop: "number" },
          { label: "数量", prop: "amount", inputNumber: true, isRequird: true },
          { label: "单位", prop: "unit" },
          { label: "销售单价", prop: "price" },
          { label: "销售单价", prop: "price", isRequird: true },
          { label: "价税合计", prop: "total" }
        ]
      }