yangfeng
2023-07-07 e34c2e67208bd63e320a4504ce8cf40a83ba7cbb
销售模块剩余部分新建页面
1 文件已重命名
23个文件已修改
4个文件已添加
2228 ■■■■ 已修改文件
src/components/layout/components/appsidebar/index.vue 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/makepager/CommonFormTableView.vue 196 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/makepager/TableCommonView.vue 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/router/index.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/router/sales/index.js 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/custom/contacts/AddContactsDialog.vue 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/custom/customManage/AddCustomManageDialog.vue 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/custom/customManage/index.vue 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/custom/followupRecords/AddFollowupRecordsDialog.vue 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/custom/salesLead/index.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/sales/contractManage/AddContractManageDialog.vue 301 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/sales/contractManage/index.vue 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/sales/generatePlan/AddGeneratePlanDialog.vue 279 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/sales/generatePlan/index.vue 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/sales/masterOrder/AddMasterOrderDialog.vue 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/sales/quotation/AddQuotationDialog.vue 73 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/sales/refundForm/AddRefundFormDialog.vue 408 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/sales/refundForm/index.vue 60 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/sales/salesDetails/AddSalesDetailsDialog.vue 65 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/sales/salesOpportunity/AddSalesOpportunityDialog.vue 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/sales/salesReturn/AddSalesReturnDialog.vue 357 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/sales/salesReturn/index.vue 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/sales/subOrder/AddSubOrderDialog.vue 66 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/service/orderManage/AddOrderManageDialog.vue 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/service/serviceContract/AddServiceContractDialog.vue 74 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/service/serviceFeeManage/AddServiceFeeManageDialog.vue 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/service/serviceFeeManage/index.vue 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/service/serviceFollowup/AddServiceFollowupDialog.vue 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/layout/components/appsidebar/index.vue
@@ -4,6 +4,7 @@
    <div class="box">
      <el-menu
        router
        unique-opened
        :default-active="$route.path"
        class="el-menu-vertical-demo"
        @select="handleOpen"
@@ -12,7 +13,7 @@
        text-color="#fff"
        active-text-color="#ffd04b"
      >
        <el-submenu index="">
        <el-submenu index="1">
          <template slot="title">
            <i class="el-icon-location"></i>
            <span>客户管理</span>
@@ -35,7 +36,7 @@
          <el-menu-item index="/sales/salesReturn">销售退货单</el-menu-item>
          <el-menu-item index="/sales/refundForm">销售退款单</el-menu-item>
          <el-menu-item index="/sales/contractManage">合同管理</el-menu-item>
          <el-menu-item index="/sales/productPlan">生产计划</el-menu-item>
          <el-menu-item index="/sales/generatePlan">生成计划</el-menu-item>
        </el-submenu>
        <el-submenu index="3">
          <template slot="title">
src/components/makepager/CommonFormTableView.vue
@@ -1,65 +1,50 @@
<template>
  <div class="page-view">
    <el-form ref="form" :model="productTableList" :show-message="false" label-position="right">
      <el-table :data="productTableList.tableData" style="width: 100%">
        <el-table-column prop="id" label="#" width="30"></el-table-column>
        <el-table-column prop="productName" label="产品名称">
          <template slot-scope="scope">
            <el-form-item
              label=" "
              :prop="'tableData.' + scope.$index + '.productName'"
              :rules="[{ required: true, message: '输入不能为空' }]"
            >
              <el-input v-model.trim="scope.row.productName" maxlength="50" size="mini" style="width: 70px"></el-input>
            </el-form-item>
      <el-table
        :data="productTableList.tableData"
        :show-summary="showSummary.show"
        :summary-method="getSummaries"
        :span-method="arraySpanMethod"
        style="width: 100%"
      >
        <el-table-column
          v-for="(item, i) in productTableList.tableColumn"
          :key="i"
          :prop="item.prop"
          :label="item.label"
          :width="item.width"
          :min-width="item.min"
          align="right"
        >
          <!-- 表头样式 -->
          <template slot="header">
            <span v-if="item.isRequird" style="color: #f56c6c">*</span>
            <span>{{ item.label }}</span>
          </template>
        </el-table-column>
        <el-table-column prop="productNumber" label="产品编号"></el-table-column>
        <el-table-column prop="startDate" label="服务开始日" width="140">
          <!-- column样式 -->
          <template slot-scope="scope">
            <el-form-item
              v-if="item.input"
              label=" "
              :prop="'tableData.' + scope.$index + '.startDate'"
              :rules="[{ required: true, message: '输入不能为空' }]"
              :prop="'tableData.' + scope.$index + '.' + item.prop"
              :rules="[{ required: item.isRequird ? true : false, message: '输入不能为空' }]"
            >
              <el-date-picker
                v-model="scope.row.startDate"
                size="mini"
                type="date"
                placeholder="选择日期"
                style="width: 90px"
              >
              <el-input v-model.trim="scope.row[item.prop]" maxlength="50" size="mini"></el-input>
            </el-form-item>
            <el-form-item
              v-else-if="item.date"
              label=" "
              :prop="'tableData.' + scope.$index + '.' + item.prop"
              :rules="[{ required: item.isRequird ? true : false, message: '输入不能为空' }]"
            >
              <!-- <el-input v-model.trim="scope.row[item.prop]" maxlength="50" size="mini"></el-input> -->
              <el-date-picker v-model="scope.row[item.prop]" type="date" size="mini" style="width: 110px">
              </el-date-picker>
            </el-form-item>
            <span v-else>{{ scope.row[item.prop] }}</span>
          </template>
        </el-table-column>
        <el-table-column prop="endDate" label="服务到期日" width="140">
          <template slot-scope="scope">
            <el-form-item
              label=" "
              :prop="'tableData.' + scope.$index + '.endDate'"
              :rules="[{ required: true, message: '输入不能为空' }]"
            >
              <el-date-picker
                v-model="scope.row.endDate"
                size="mini"
                type="date"
                placeholder="选择日期"
                style="width: 90px"
              >
              </el-date-picker>
            </el-form-item>
          </template>
        </el-table-column>
        <el-table-column prop="number" label="数量"></el-table-column>
        <el-table-column prop="" label="含税单价"> </el-table-column>
        <el-table-column prop="" label="不含税单价"> </el-table-column>
        <el-table-column prop="" label="折扣率(%)"></el-table-column>
        <el-table-column prop="" label="折扣额"> </el-table-column>
        <el-table-column prop="" label="税(销售)"> </el-table-column>
        <el-table-column prop="" label="实际含税单价"></el-table-column>
        <el-table-column prop="" label="价税合计"> </el-table-column>
        <el-table-column prop="" label="描述"> </el-table-column>
      </el-table>
    </el-form>
    <div style="margin: 10px">
@@ -67,6 +52,18 @@
      <el-button size="small" type="primary">导入明细</el-button>
      <el-button size="small" type="primary">清空</el-button>
      <el-button size="small" type="primary">重算</el-button>
    </div>
    <div v-if="showSummary.total || showSummary.refundable" style="height: 42px; line-height: 42px">
      <el-row :gutter="10">
        <el-col v-if="showSummary.total" :span="2" :offset="22">
          <span style="font-weight: bold">合计</span>
          <span style="margin-left: 10px">0.00</span>
        </el-col>
        <el-col v-if="showSummary.refundable" :span="2" :offset="22">
          <span style="font-weight: bold">应退款</span>
          <span style="margin-left: 10px">0.00</span>
        </el-col>
      </el-row>
    </div>
  </div>
</template>
@@ -84,6 +81,18 @@
            // table表单
            { label: "", prop: "", min: 200, tooltip: true }
          ]
        }
      }
    },
    showSummary: {
      type: Object,
      default: () => {
        return {
          show: false,
          total: false,
          refundable: false,
          sumProp: [],
          mergeNumber: 1
        }
      }
    }
@@ -105,6 +114,76 @@
    },
    handleSelectionChange(val) {
      this.$emit("getSelectArray", val)
    },
    // 行合并
    arraySpanMethod() {
      if (this.showSummary.show) {
        this.$nextTick(() => {
          if (this.$refs.table) {
            var current = this.$refs.table.querySelector(".el-table__footer-wrapper").querySelector(".el-table__footer")
            var cell = current.rows[0].cells
            for (let i = 0; i < this.showSummary.mergeNumber; i++) {
              cell[i].style.display = "none"
            }
            cell[this.showSummary.mergeNumber].classList.remove("is-left")
            cell[this.showSummary.mergeNumber].colSpan = this.showSummary.mergeNumber.toString()
          }
        })
      }
    },
    // 合计
    getSummaries(param) {
      if (this.showSummary.show) {
        const { columns, data } = param
        const sums = []
        columns.forEach((column, index) => {
          if (index === this.showSummary.mergeNumber) {
            sums[index] = "小计"
          }
          const values = data.map((item) => Number(item[column.property]))
          // if (column.property === this.showSummary.sumProp) {
          if (this.showSummary.sumProp.includes(column.property)) {
            sums[index] = values.reduce((prev, curr) => {
              const value = Number(curr)
              if (!isNaN(value)) {
                return this.number_format(prev + curr, 2, ".", ",")
              } else {
                return this.number_format(prev, 2, ".", ",")
              }
            }, 0)
            sums[index]
          }
        })
        return sums
      }
    },
    // 数字换行为金额显示格式
    number_format(number, decimals, dec_point, thousands_sep) {
      decimals = 2 //这里默认设置保留两位小数,也可以注释这句采用传入的参数
      /*
       * 参数说明:
       * number:要格式化的数字
       * decimals:保留几位小数
       * dec_point:小数点符号
       * thousands_sep:千分位符号
       * */
      number = (number + "").replace(/[^0-9+-Ee.]/g, "")
      var n = !isFinite(+number) ? 0 : +number,
        prec = !isFinite(+decimals) ? 0 : Math.abs(decimals),
        sep = typeof thousands_sep === "undefined" ? "," : thousands_sep,
        dec = typeof dec_point === "undefined" ? "." : dec_point
      var s = n.toString().split(".")
      var re = /(-?\d+)(\d{3})/
      while (re.test(s[0])) {
        s[0] = s[0].replace(re, "$1" + sep + "$2")
      }
      if ((s[1] || "").length < prec) {
        s[1] = s[1] || ""
        s[1] += new Array(prec - s[1].length + 1).join("0")
      } else {
        s[1] = s[1].substring(0, prec) //小数点位数超出长度时截取前面的位数
      }
      return s.join(dec)
    }
  }
}
@@ -117,4 +196,21 @@
    margin-bottom: 0;
  }
}
::v-deep {
  .el-form-item__label {
    display: none;
  }
  .el-table__footer-wrapper tbody td.el-table__cell {
    background-color: #fff;
    text-align: right;
    font-weight: bold;
  }
  .el-input--suffix .el-input__inner {
    padding-right: 0px;
  }
  .el-table .cell,
  .el-table th.el-table__cell > .cell {
    padding: 0 5px;
  }
}
</style>
src/components/makepager/TableCommonView.vue
@@ -21,10 +21,12 @@
        :label="item.label"
        :width="item.width"
        :min-width="item.min"
        show-overflow-tooltip="true"
        sortable
      >
        <template slot-scope="scope">
          <span v-if="item.price">{{ "¥" + number_format(scope.row[item.prop], 2, ".", ",") }}</span>
          <span v-else-if="item.status" :class="scope.row.status">{{ scope.row[item.prop] }}</span>
          <span v-else>{{ scope.row[item.prop] }}</span>
        </template>
      </el-table-column>
@@ -93,7 +95,6 @@
    getSummaries(param) {
      if (this.showSummary.show) {
        const { columns, data } = param
        console.log(param)
        const sums = []
        columns.forEach((column, index) => {
          if (index === this.showSummary.mergeNumber) {
@@ -116,7 +117,7 @@
        return sums
      }
    },
    //定义number_format方法
    // 数字换行为金额显示格式
    number_format(number, decimals, dec_point, thousands_sep) {
      decimals = 2 //这里默认设置保留两位小数,也可以注释这句采用传入的参数
      /*
@@ -154,6 +155,12 @@
  margin-top: 20px;
  margin-right: 10px;
  margin-bottom: 40px;
  .blue {
    padding: 10px;
    color: #fff;
    background-color: blue;
    border-radius: 4px;
  }
}
::v-deep {
  .el-table__footer-wrapper tbody td.el-table__cell {
src/router/index.js
@@ -55,7 +55,7 @@
      insIndex: true
    },
    redirect: {
      name: "custom"
      name: "salesLead"
    },
    children: routes
  },
src/router/sales/index.js
@@ -8,7 +8,7 @@
const salesReturn = (resolve) => require(["@/views/sales/salesReturn/index"], resolve) // 销售退货单
const refundForm = (resolve) => require(["@/views/sales/refundForm/index"], resolve) // 销售退款单
const contractManage = (resolve) => require(["@/views/sales/contractManage/index"], resolve) // 合同管理
const productPlan = (resolve) => require(["@/views/sales/productPlan/index"], resolve) // 生产计划
const generatePlan = (resolve) => require(["@/views/sales/generatePlan/index"], resolve) // 生成计划
const appconfig = [
  {
@@ -76,11 +76,11 @@
    }
  },
  {
    path: "/sales/productPlan",
    name: "productPlan",
    component: productPlan,
    path: "/sales/generatePlan",
    name: "generatePlan",
    component: generatePlan,
    meta: {
      title: "生产计划"
      title: "生成计划"
    }
  }
]
src/views/custom/contacts/AddContactsDialog.vue
@@ -149,8 +149,21 @@
            <el-row>
              <el-col :span="12">
                <el-form-item label="附件" prop="">
                  <template slot="label">
                    <div style="display: flex; float: right">
                      <div style="font-size: 16px">
                        <i class="el-icon-warning-outline" title="最多上传20个附件,最大限制5MB"></i>
                      </div>
                      <span style="margin-left: 5px">附件</span>
                    </div>
                  </template>
                  <div class="annex-view">
                    <div @click="addAnnexClick">添加</div>
                    <div @click="addAnnexClick">
                      <div style="display: flex; float: right">
                        <div style="font-size: 16px"><i class="el-icon-paperclip"></i></div>
                        <span>添加</span>
                      </div>
                    </div>
                    <div class="setFormat" @click="setFormatClick">设置允许上传的文件格式</div>
                  </div>
                </el-form-item>
src/views/custom/customManage/AddCustomManageDialog.vue
@@ -272,8 +272,21 @@
            <el-row>
              <el-col :span="12">
                <el-form-item label="附件" prop="">
                  <template slot="label">
                    <div style="display: flex; float: right">
                      <div style="font-size: 16px">
                        <i class="el-icon-warning-outline" title="最多上传20个附件,最大限制5MB"></i>
                      </div>
                      <span style="margin-left: 5px">附件</span>
                    </div>
                  </template>
                  <div class="annex-view">
                    <div @click="addAnnexClick">添加</div>
                    <div @click="addAnnexClick">
                      <div style="display: flex; float: right">
                        <div style="font-size: 16px"><i class="el-icon-paperclip"></i></div>
                        <span>添加</span>
                      </div>
                    </div>
                    <div class="setFormat" @click="setFormatClick">设置允许上传的文件格式</div>
                  </div>
                </el-form-item>
src/views/custom/customManage/index.vue
@@ -31,7 +31,7 @@
    </div>
    <TableCommonView ref="tableListRef" :table-list="tableList">
      <template slot="tableButton">
        <el-table-column label="操作" width="120" fixed="right">
        <el-table-column label="操作" width="150" fixed="right">
          <template slot-scope="scope">
            <el-button type="text" size="small">变更公海</el-button>
            <el-button @click="handleClick(scope.row)" type="text" size="small">编辑</el-button>
@@ -118,15 +118,15 @@
          }
        ],
        tableColumn: [
          { label: "客户名称", prop: "customName", min: 190 }, // 客户名称
          { label: "销售负责人", prop: "saleLeadOwner", min: 120 }, // 销售负责人
          { label: "重要级别", prop: "importantLevel", min: 120 }, // 重要级别
          { label: "客户名称", prop: "customName", min: 100 }, // 客户名称
          { label: "销售负责人", prop: "saleLeadOwner" }, // 销售负责人
          { label: "重要级别", prop: "importantLevel" }, // 重要级别
          { label: "下次回访日期", prop: "notContactDay", min: 90 }, // 未联系人天数
          { label: "手机号码", prop: "nextFollowDate", min: 150 }, // 下次回访日期
          { label: "详细地址", prop: "detailAddress", min: 290 }, // 详细地址
          { label: "客户状态", prop: "customStatus", min: 100 }, // 客户状态
          { label: "联系人姓名", prop: "contactName", min: 100 }, // 联系人姓名
          { label: "手机", prop: "phoneNumber", min: 100 } // 手机号码
          { label: "手机号码", prop: "nextFollowDate" }, // 下次回访日期
          { label: "详细地址", prop: "detailAddress", min: 200 }, // 详细地址
          { label: "客户状态", prop: "customStatus" }, // 客户状态
          { label: "联系人姓名", prop: "contactName" }, // 联系人姓名
          { label: "手机", prop: "phoneNumber" } // 手机号码
        ]
      }
      this.searchOptions = []
src/views/custom/followupRecords/AddFollowupRecordsDialog.vue
@@ -142,8 +142,21 @@
            <el-row>
              <el-col :span="12">
                <el-form-item label="附件" prop="">
                  <template slot="label">
                    <div style="display: flex; float: right">
                      <div style="font-size: 16px">
                        <i class="el-icon-warning-outline" title="最多上传20个附件,最大限制5MB"></i>
                      </div>
                      <span style="margin-left: 5px">附件</span>
                    </div>
                  </template>
                  <div class="annex-view">
                    <div @click="addAnnexClick">添加</div>
                    <div @click="addAnnexClick">
                      <div style="display: flex; float: right">
                        <div style="font-size: 16px"><i class="el-icon-paperclip"></i></div>
                        <span>添加</span>
                      </div>
                    </div>
                    <div class="setFormat" @click="setFormatClick">设置允许上传的文件格式</div>
                  </div>
                </el-form-item>
src/views/custom/salesLead/index.vue
@@ -38,11 +38,7 @@
    TableCommonView,
    AddSalesLeadDialog
  },
  computed: {
    searchCommonHeight() {
      return this.$refs.searchCommonView.offsetHeight
    }
  },
  computed: {},
  data() {
    return {
      tableList: {},
src/views/sales/contractManage/AddContractManageDialog.vue
New file
@@ -0,0 +1,301 @@
<template>
  <div class="add-contract-manage">
    <el-dialog
      :title="editCommonConfig.title + '合同管理'"
      :visible.sync="editConfig.visible"
      :width="dialogWidth"
      :before-close="handleClose"
    >
      <el-form
        ref="form"
        :model="editConfig.infomation"
        :rules="rules"
        label-position="right"
        label-width="308px"
        size="mini"
      >
        <!-- 信息 -->
        <div class="basic-info">
          <!-- 基本信息 -->
          <div class="basic-info-title">基本信息</div>
          <div class="basic-info-view">
            <el-row>
              <el-col :span="12">
                <el-form-item label="客户名称" prop="customName">
                  <div class="custom-name">
                    <el-input v-model="editConfig.infomation.customName"></el-input>
                    <div class="common-select-btn"><i class="el-icon-circle-plus-outline" title="选择"></i></div>
                    <div class="common-select-btn"><i class="el-icon-edit" title="编辑"></i></div>
                  </div>
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item label="单据编号" prop="documentNumber">
                  <el-input v-model="editConfig.infomation.documentNumber"></el-input>
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item label="负责人" prop="owner">
                  <el-select v-model="editConfig.infomation.owner" placeholder="请选择" size="mini" style="width: 63%">
                    <el-option v-for="item in ownerOptions" :key="item.value" :label="item.label" :value="item.value">
                    </el-option>
                  </el-select>
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item label="合同状态" prop="contractStatus">
                  <CommonSelectView
                    :common-value="editConfig.infomation.contractStatus"
                    :common-options="contractStatusOptions"
                  />
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item label="销售报价单" prop="salesQuotation">
                  <div class="custom-name">
                    <el-input v-model="editConfig.infomation.salesQuotation"></el-input>
                    <div class="common-select-btn"><i class="el-icon-circle-plus-outline" title="选择"></i></div>
                    <div class="common-select-btn"><i class="el-icon-edit" title="编辑"></i></div>
                  </div>
                </el-form-item>
              </el-col>
            </el-row>
          </div>
          <!-- 附件信息 -->
          <div v-if="isUnflod" class="basic-info-title">附件信息</div>
          <div class="basic-info-view">
            <el-row>
              <el-col :span="12">
                <el-form-item label="附件" prop="">
                  <template slot="label">
                    <div style="display: flex; float: right">
                      <div style="font-size: 16px">
                        <i class="el-icon-warning-outline" title="最多上传20个附件,最大限制5MB"></i>
                      </div>
                      <span style="margin-left: 5px">合同扫描件</span>
                    </div>
                  </template>
                  <div class="annex-view">
                    <div @click="addAnnexClick">
                      <div style="display: flex; float: right">
                        <div style="font-size: 16px"><i class="el-icon-paperclip"></i></div>
                        <span>添加</span>
                      </div>
                    </div>
                    <div class="setFormat" @click="setFormatClick">设置允许上传的文件格式</div>
                  </div>
                </el-form-item>
              </el-col>
            </el-row>
          </div>
          <!-- 展开收起 -->
          <div v-if="editConfig.title === '新建'" class="unflod-collapse" @click="unflodCollapseClick">
            <div>{{ unflodCollapseStr }}</div>
            <div v-if="isUnflod"><i class="el-icon-arrow-up"></i></div>
            <div v-else><i class="el-icon-arrow-down"></i></div>
          </div>
          <!-- 选择审批流程 -->
          <div class="basic-info-title">选择审批流程</div>
          <div class="basic-info-view">
            <el-row>
              <el-col :span="20">
                <el-form-item label="审批流程" prop="approvalWorkflow">
                  <el-select
                    v-model="editConfig.infomation.approvalWorkflow"
                    placeholder="请选择"
                    size="mini"
                    style="width: 100%"
                  >
                    <el-option
                      v-for="item in approvalWorkflowOptions"
                      :key="item.value"
                      :label="item.label"
                      :value="item.value"
                    >
                    </el-option>
                  </el-select>
                </el-form-item>
              </el-col>
              <el-col :span="20">
                <el-form-item label="审批步骤" prop="approvalSteps">
                  <el-input v-model="editConfig.infomation.approvalSteps"></el-input>
                </el-form-item>
              </el-col>
              <el-col :span="20">
                <el-form-item label="审批人" prop="approvalPerson">
                  <el-input v-model="editConfig.infomation.approvalPerson"></el-input>
                </el-form-item>
              </el-col>
              <el-col :span="20">
                <el-form-item label="审批意见" prop="approvalOpinion">
                  <el-input v-model="editConfig.infomation.approvalOpinion" type="textarea" :rows="2"></el-input>
                </el-form-item>
              </el-col>
            </el-row>
          </div>
        </div>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button type="primary" size="small" @click="editConfig.visible = false">保并提交审批</el-button>
        <el-button type="primary" size="small" @click="editConfig.visible = false">保存</el-button>
        <el-button size="small" @click="editConfig.visible = false">取消</el-button>
      </div>
    </el-dialog>
  </div>
</template>
<script>
import CommonSelectView from "@/components/makepager/CommonSelectView"
export default {
  name: "AddContractManageDialog",
  props: {
    editCommonConfig: {
      type: Object,
      default: () => {
        return {
          visible: false,
          title: "新建",
          infomation: {
            customName: "",
            documentNumber: "TKD20230521-12",
            owner: "",
            contractStatus: "",
            salesQuotation: "",
            approvalWorkflow: "",
            approvalSteps: "",
            approvalPerson: "",
            approvalOpinion: ""
          }
        }
      }
    }
  },
  components: { CommonSelectView },
  computed: {},
  data() {
    return {
      dialogWidth: "80%",
      editConfig: this.editCommonConfig,
      rules: {
        documentNumber: [{ required: true, message: "请输入", trigger: "blur" }],
        owner: [{ required: true, message: "请选择", trigger: "change" }]
      },
      ownerOptions: [
        // 负责人
        { value: "1", label: "BOSS" },
        { value: "2", label: "Mia" },
        { value: "3", label: "财务" },
        { value: "4", label: "市场" },
        { value: "5", label: "系统管理员" },
        { value: "6", label: "销售" },
        { value: "7", label: "销售总监" }
      ],
      contractStatusOptions: [
        { value: "1", label: "待审批" },
        { value: "2", label: "审批中" },
        { value: "3", label: "已审批" },
        { value: "4", label: "已归档" }
      ], // 合同状态
      approvalWorkflowOptions: [], // 审批流程
      unflodCollapseStr: "收起",
      isUnflod: true
    }
  },
  created() {},
  methods: {
    handleClose() {
      this.editConfig.visible = false
    },
    // 添加附件
    addAnnexClick() {},
    // 设置允许上传文件格式
    setFormatClick() {},
    // 展开收起
    unflodCollapseClick() {
      if (this.unflodCollapseStr === "收起") {
        this.unflodCollapseStr = "展开更多栏目"
        this.isUnflod = false
      } else {
        this.unflodCollapseStr = "收起"
        this.isUnflod = true
      }
    }
  }
}
</script>
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style lang="scss" scoped>
.add-contract-manage {
  .basic-info {
    .basic-info-title {
      background-color: #f4f8fe;
      padding-left: 10px;
      font-size: 15px;
      font-weight: bold;
      color: #666;
      height: 42px;
      line-height: 42px;
    }
    .basic-info-view {
      margin-top: 10px;
      padding-right: 40px;
      .custom-name {
        display: flex;
        .common-select-btn {
          margin-left: 5px;
          font-size: 18px;
        }
      }
    }
    .address-view {
      margin-top: 10px;
      padding-right: 40px;
    }
    .annex-view {
      display: flex;
      color: #6166d3;
      .setFormat {
        margin-left: 10px;
      }
    }
  }
  .unflod-collapse {
    display: flex;
    height: 30px;
    justify-content: center;
    align-items: center;
    color: #6166d3;
  }
  .dialog-footer {
    background-color: #f5f5f5;
    height: 55px;
    line-height: 55px;
  }
}
::v-deep {
  .el-dialog__header {
    padding: 12.5px 10px;
    border-bottom: 1px solid #e5e5e5;
    .el-dialog__title {
      font-size: 15px;
      color: #323232;
      font-weight: bold;
    }
  }
  .el-dialog__body {
    padding: 0px;
  }
  .el-dialog__footer {
    padding: 0px;
    text-align: center;
    box-sizing: border-box;
    border-top: 1px solid #dadee5;
  }
  .product-view {
    .el-form-item__label {
      padding: 0;
    }
  }
}
</style>
src/views/sales/contractManage/index.vue
@@ -25,7 +25,7 @@
      </template>
    </TableCommonView>
    <!-- 新建/编辑 -->
    <AddSalesLeadDialog v-if="editConfig.visible" :edit-sales-lead-config="editConfig" />
    <AddContractManageDialog v-if="editConfig.visible" :edit-common-config="editConfig" />
  </div>
</template>
@@ -34,17 +34,17 @@
import PublicFunctionBtnView from "@/components/makepager/PublicFunctionBtnView"
import PagerView from "@/components/makepager/PagerView"
import TableCommonView from "@/components/makepager/TableCommonView"
import AddSalesLeadDialog from "@/views/custom/salesLead/AddSalesLeadDialog"
import AddContractManageDialog from "@/views/sales/contractManage/AddContractManageDialog"
export default {
  name: "ContractManage ",
  name: "ContractManage",
  props: {},
  components: {
    SearchCommonView,
    PublicFunctionBtnView,
    PagerView,
    TableCommonView,
    AddSalesLeadDialog
    AddContractManageDialog
  },
  computed: {
    searchCommonHeight() {
@@ -59,8 +59,8 @@
        { value: "2", label: "已批准" },
        { value: "3", label: "审批中" },
        { value: "4", label: "未提交" },
        { value: "3", label: "已驳回" },
        { value: "4", label: "已拒绝" }
        { value: "5", label: "已驳回" },
        { value: "6", label: "已拒绝" }
      ],
      searchOptions: [],
      operatesList: [
@@ -115,20 +115,14 @@
      this.editConfig.title = "新建"
      this.editConfig.infomation = {
        customName: "",
        saleLeadNumber: "LEA50",
        contactName: "",
        contactDuties: "",
        phoneNumber: "",
        businessStatus: "新建",
        businessSource: "1",
        documentNumber: "ZDYBD01-3",
        owner: "",
        position: "",
        map: "",
        country: "1",
        province: "1",
        city: "1",
        region: "1",
        address: ""
        contractStatus: "",
        salesQuotation: "",
        approvalWorkflow: "",
        approvalSteps: "",
        approvalPerson: "",
        approvalOpinion: ""
      }
    },
    // 编辑
@@ -137,21 +131,15 @@
      this.editConfig.visible = true
      this.editConfig.title = "编辑"
      this.editConfig.infomation = {
        customName: row.customName,
        saleLeadNumber: row.saleLeadNumber,
        contactName: row.contactName,
        contactDuties: row.contactDuties,
        phoneNumber: row.phoneNumber,
        businessStatus: "新建",
        businessSource: row.businessSource,
        owner: row.owner,
        position: "",
        map: "",
        country: "1",
        province: "1",
        city: "1",
        region: "1",
        address: ""
        customName: "",
        documentNumber: "TKD20230521-12",
        owner: "",
        contractStatus: "",
        salesQuotation: "",
        approvalWorkflow: "",
        approvalSteps: "",
        approvalPerson: "",
        approvalOpinion: ""
      }
    }
  }
src/views/sales/generatePlan/AddGeneratePlanDialog.vue
New file
@@ -0,0 +1,279 @@
<template>
  <div class="add-generate-plan">
    <el-dialog
      :title="editCommonConfig.title + '生成计划'"
      :visible.sync="editConfig.visible"
      :width="dialogWidth"
      :before-close="handleClose"
    >
      <el-form
        ref="form"
        :model="editConfig.infomation"
        :rules="rules"
        label-position="right"
        label-width="308px"
        size="mini"
      >
        <!-- 信息 -->
        <div class="basic-info">
          <!-- 基本信息 -->
          <div class="basic-info-title">基本信息</div>
          <div class="basic-info-view">
            <el-row>
              <el-col v-if="isUnflod" :span="12">
                <el-form-item label="客户名称" prop="customName">
                  <div class="custom-name">
                    <el-input v-model="editConfig.infomation.customName"></el-input>
                    <div class="common-select-btn"><i class="el-icon-circle-plus-outline" title="选择"></i></div>
                    <div class="common-select-btn"><i class="el-icon-edit" title="编辑"></i></div>
                  </div>
                </el-form-item>
              </el-col>
              <el-col v-if="isUnflod" :span="12">
                <el-form-item label="单据编号" prop="documentNumber">
                  <el-input v-model="editConfig.infomation.documentNumber"></el-input>
                </el-form-item>
              </el-col>
              <el-col v-if="isUnflod" :span="12">
                <el-form-item label="负责人" prop="owner">
                  <el-select v-model="editConfig.infomation.owner" placeholder="请选择" size="mini" style="width: 63%">
                    <el-option v-for="item in ownerOptions" :key="item.value" :label="item.label" :value="item.value">
                    </el-option>
                  </el-select>
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item label="销售子单" prop="subOrder">
                  <div class="custom-name">
                    <el-input v-model="editConfig.infomation.subOrder"></el-input>
                    <div class="common-select-btn"><i class="el-icon-circle-plus-outline" title="选择"></i></div>
                    <div class="common-select-btn"><i class="el-icon-edit" title="编辑"></i></div>
                  </div>
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item label="销售明细单" prop="salesDetails">
                  <div class="custom-name">
                    <el-input v-model="editConfig.infomation.salesDetails"></el-input>
                    <div class="common-select-btn"><i class="el-icon-circle-plus-outline" title="选择"></i></div>
                    <div class="common-select-btn"><i class="el-icon-edit" title="编辑"></i></div>
                  </div>
                </el-form-item>
              </el-col>
            </el-row>
          </div>
          <!-- 计划相关 -->
          <div v-if="isUnflod" class="basic-info-title">计划相关</div>
          <div class="address-view">
            <el-row>
              <el-col :span="12">
                <el-form-item label="计划开始时间" prop="planStartTime">
                  <el-date-picker v-model="editConfig.infomation.planStartTime" type="datetime" default-time="12:00:00">
                  </el-date-picker>
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item label="计划截止时间" prop="planDeadline">
                  <el-date-picker v-model="editConfig.infomation.planDeadline" type="datetime" default-time="12:00:00">
                  </el-date-picker>
                </el-form-item>
              </el-col>
              <el-col :span="24">
                <el-form-item label="计划内容" prop="refundReason">
                  <el-input
                    type="textarea"
                    :autosize="{ minRows: 2 }"
                    v-model="editConfig.infomation.refundReason"
                  ></el-input>
                </el-form-item>
              </el-col>
            </el-row>
          </div>
          <!-- 附件信息 -->
          <div v-if="isUnflod" class="basic-info-title">附件信息</div>
          <div v-if="isUnflod" class="basic-info-view">
            <el-row>
              <el-col :span="12">
                <el-form-item label="附件" prop="">
                  <template slot="label">
                    <div style="display: flex; float: right">
                      <div style="font-size: 16px">
                        <i class="el-icon-warning-outline" title="最多上传20个附件,最大限制5MB"></i>
                      </div>
                      <span style="margin-left: 5px">附件</span>
                    </div>
                  </template>
                  <div class="annex-view">
                    <div @click="addAnnexClick">
                      <div style="display: flex; float: right">
                        <div style="font-size: 16px"><i class="el-icon-paperclip"></i></div>
                        <span>添加</span>
                      </div>
                    </div>
                    <div class="setFormat" @click="setFormatClick">设置允许上传的文件格式</div>
                  </div>
                </el-form-item>
              </el-col>
            </el-row>
          </div>
          <!-- 展开收起 -->
          <div v-if="editConfig.title === '新建'" class="unflod-collapse" @click="unflodCollapseClick">
            <div>{{ unflodCollapseStr }}</div>
            <div v-if="isUnflod"><i class="el-icon-arrow-up"></i></div>
            <div v-else><i class="el-icon-arrow-down"></i></div>
          </div>
        </div>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button type="primary" size="small" @click="editConfig.visible = false">保存</el-button>
        <el-button size="small" @click="editConfig.visible = false">取消</el-button>
      </div>
    </el-dialog>
  </div>
</template>
<script>
export default {
  name: "AddGeneratePlanDialog",
  props: {
    editCommonConfig: {
      type: Object,
      default: () => {
        return {
          visible: false,
          title: "新建",
          infomation: {
            customName: "",
            documentNumber: "",
            owner: "",
            subOrder: "",
            salesDetails: "",
            planStartTime: "",
            planDeadline: ""
          }
        }
      }
    }
  },
  components: {},
  computed: {},
  data() {
    return {
      dialogWidth: "80%",
      editConfig: this.editCommonConfig,
      rules: {
        documentNumber: [{ required: true, message: "请输入", trigger: "blur" }],
        owner: [{ required: true, message: "请选择", trigger: "change" }]
      },
      ownerOptions: [
        // 负责人
        { value: "1", label: "BOSS" },
        { value: "2", label: "Mia" },
        { value: "3", label: "财务" },
        { value: "4", label: "市场" },
        { value: "5", label: "系统管理员" },
        { value: "6", label: "销售" },
        { value: "7", label: "销售总监" }
      ],
      unflodCollapseStr: "收起",
      isUnflod: true
    }
  },
  created() {},
  methods: {
    handleClose() {
      this.editConfig.visible = false
    },
    // 添加附件
    addAnnexClick() {},
    // 设置允许上传文件格式
    setFormatClick() {},
    // 展开收起
    unflodCollapseClick() {
      if (this.unflodCollapseStr === "收起") {
        this.unflodCollapseStr = "展开更多栏目"
        this.isUnflod = false
      } else {
        this.unflodCollapseStr = "收起"
        this.isUnflod = true
      }
    }
  }
}
</script>
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style lang="scss" scoped>
.add-generate-plan {
  .basic-info {
    .basic-info-title {
      background-color: #f4f8fe;
      padding-left: 10px;
      font-size: 15px;
      font-weight: bold;
      color: #666;
      height: 42px;
      line-height: 42px;
    }
    .basic-info-view {
      margin-top: 10px;
      padding-right: 40px;
      .custom-name {
        display: flex;
        .common-select-btn {
          margin-left: 5px;
          font-size: 18px;
        }
      }
    }
    .address-view {
      margin-top: 10px;
      padding-right: 40px;
    }
    .annex-view {
      display: flex;
      color: #6166d3;
      .setFormat {
        margin-left: 10px;
      }
    }
  }
  .unflod-collapse {
    display: flex;
    height: 30px;
    justify-content: center;
    align-items: center;
    color: #6166d3;
  }
  .dialog-footer {
    background-color: #f5f5f5;
    height: 55px;
    line-height: 55px;
  }
}
::v-deep {
  .el-dialog__header {
    padding: 12.5px 10px;
    border-bottom: 1px solid #e5e5e5;
    .el-dialog__title {
      font-size: 15px;
      color: #323232;
      font-weight: bold;
    }
  }
  .el-dialog__body {
    padding: 0px;
  }
  .el-dialog__footer {
    padding: 0px;
    text-align: center;
    box-sizing: border-box;
    border-top: 1px solid #dadee5;
  }
  .product-view {
    .el-form-item__label {
      padding: 0;
    }
  }
}
</style>
src/views/sales/generatePlan/index.vue
File was renamed from src/views/sales/productPlan/index.vue
@@ -1,5 +1,5 @@
<template>
  <div class="product-plan">
  <div class="generate-plan">
    <SearchCommonView ref="searchCommonView" :query-class-options="queryClassOptions" :search-options="searchOptions" />
    <div class="btn-pager">
      <PublicFunctionBtnView :operates-list="operatesList" />
@@ -15,7 +15,7 @@
      </template>
    </TableCommonView>
    <!-- 新建/编辑-->
    <AddSalesLeadDialog v-if="editConfig.visible" :edit-sales-lead-config="editConfig" />
    <AddGeneratePlanDialog v-if="editConfig.visible" :edit-common-config="editConfig" />
  </div>
</template>
@@ -24,17 +24,17 @@
import PublicFunctionBtnView from "@/components/makepager/PublicFunctionBtnView"
import PagerView from "@/components/makepager/PagerView"
import TableCommonView from "@/components/makepager/TableCommonView"
import AddSalesLeadDialog from "@/views/custom/salesLead/AddSalesLeadDialog"
import AddGeneratePlanDialog from "@/views/sales/generatePlan/AddGeneratePlanDialog"
export default {
  name: "ProductPlan ",
  name: "GeneratePlan",
  props: {},
  components: {
    SearchCommonView,
    PublicFunctionBtnView,
    PagerView,
    TableCommonView,
    AddSalesLeadDialog
    AddGeneratePlanDialog
  },
  computed: {
    searchCommonHeight() {
@@ -49,8 +49,8 @@
        { value: "2", label: "已批准" },
        { value: "3", label: "审批中" },
        { value: "4", label: "未提交" },
        { value: "3", label: "已驳回" },
        { value: "4", label: "已拒绝" }
        { value: "5", label: "已驳回" },
        { value: "6", label: "已拒绝" }
      ],
      searchOptions: [],
      operatesList: [
@@ -105,20 +105,16 @@
      this.editConfig.title = "新建"
      this.editConfig.infomation = {
        customName: "",
        saleLeadNumber: "LEA50",
        contactName: "",
        contactDuties: "",
        phoneNumber: "",
        businessStatus: "新建",
        businessSource: "1",
        documentNumber: "ZDYBD04-12",
        owner: "",
        position: "",
        map: "",
        country: "1",
        province: "1",
        city: "1",
        region: "1",
        address: ""
        subOrder: "",
        salesDetails: "",
        planStartTime: "",
        planDeadline: "",
        approvalWorkflow: "",
        approvalSteps: "",
        approvalPerson: "",
        approvalOpinion: ""
      }
    },
    // 编辑
@@ -127,21 +123,17 @@
      this.editConfig.visible = true
      this.editConfig.title = "编辑"
      this.editConfig.infomation = {
        customName: row.customName,
        saleLeadNumber: row.saleLeadNumber,
        contactName: row.contactName,
        contactDuties: row.contactDuties,
        phoneNumber: row.phoneNumber,
        businessStatus: "新建",
        businessSource: row.businessSource,
        owner: row.owner,
        position: "",
        map: "",
        country: "1",
        province: "1",
        city: "1",
        region: "1",
        address: ""
        customName: "",
        documentNumber: "",
        owner: "",
        subOrder: "",
        salesDetails: "",
        planStartTime: "",
        planDeadline: "",
        approvalWorkflow: "",
        approvalSteps: "",
        approvalPerson: "",
        approvalOpinion: ""
      }
    }
  }
@@ -150,7 +142,7 @@
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style lang="scss" scoped>
.product-plan {
.generate-plan {
  .btn-pager {
    display: flex;
    .page {
src/views/sales/masterOrder/AddMasterOrderDialog.vue
@@ -67,8 +67,21 @@
            <el-row>
              <el-col :span="12">
                <el-form-item label="附件" prop="">
                  <template slot="label">
                    <div style="display: flex; float: right">
                      <div style="font-size: 16px">
                        <i class="el-icon-warning-outline" title="最多上传20个附件,最大限制5MB"></i>
                      </div>
                      <span style="margin-left: 5px">附件</span>
                    </div>
                  </template>
                  <div class="annex-view">
                    <div @click="addAnnexClick">添加</div>
                    <div @click="addAnnexClick">
                      <div style="display: flex; float: right">
                        <div style="font-size: 16px"><i class="el-icon-paperclip"></i></div>
                        <span>添加</span>
                      </div>
                    </div>
                    <div class="setFormat" @click="setFormatClick">设置允许上传的文件格式</div>
                  </div>
                </el-form-item>
src/views/sales/quotation/AddQuotationDialog.vue
@@ -108,8 +108,21 @@
            <el-row>
              <el-col :span="12">
                <el-form-item label="附件" prop="">
                  <template slot="label">
                    <div style="display: flex; float: right">
                      <div style="font-size: 16px">
                        <i class="el-icon-warning-outline" title="最多上传20个附件,最大限制5MB"></i>
                      </div>
                      <span style="margin-left: 5px">附件</span>
                    </div>
                  </template>
                  <div class="annex-view">
                    <div @click="addAnnexClick">添加</div>
                    <div @click="addAnnexClick">
                      <div style="display: flex; float: right">
                        <div style="font-size: 16px"><i class="el-icon-paperclip"></i></div>
                        <span>添加</span>
                      </div>
                    </div>
                    <div class="setFormat" @click="setFormatClick">设置允许上传的文件格式</div>
                  </div>
                </el-form-item>
@@ -128,7 +141,7 @@
            </div>
          </div>
          <div class="product-view">
            <CommonFormTableView :product-table-list="productTableList" />
            <CommonFormTableView :show-summary="showSummary" :product-table-list="productTableList" />
          </div>
          <!-- 选择审批流程 -->
          <div class="basic-info-title">选择审批流程</div>
@@ -244,22 +257,18 @@
        { value: "3", label: "欧元(€)" }
      ], // 币种
      approvalWorkflowOptions: [], // 审批流程
      productTableList: {
        tableData: [
          {
            id: "1",
            productNumber: "123",
            productName: "",
            startDate: "",
            endDate: "2016-05-02",
            number: "",
            address: ""
          }
        ]
      productTableList: {},
      showSummary: {
        show: true,
        total: true,
        sumProp: ["other1", "other2", "other3", "other4"],
        mergeNumber: 3
      }
    }
  },
  created() {},
  created() {
    this.setTableForm()
  },
  methods: {
    handleClose() {
      this.editConfig.visible = false
@@ -267,7 +276,39 @@
    // 添加附件
    addAnnexClick() {},
    // 设置允许上传文件格式
    setFormatClick() {}
    setFormatClick() {},
    setTableForm() {
      this.productTableList = {
        tableData: [
          {
            id: "1",
            productName: "上海有限公司",
            other0: "ZDYBD03-1",
            other1: "12",
            other2: "5.00",
            other4: "3.00",
            other3: "2.00"
          }
        ],
        tableColumn: [
          { label: "#", prop: "id", width: 40 },
          { label: "含税单价", prop: "other9", input: true },
          { label: "产品名称", prop: "productName", input: true, isRequird: true },
          { label: "产品编号", prop: "other0" },
          { label: "数量", prop: "other1", input: true, isRequird: true },
          { label: "折扣率(%)", prop: "other6", input: true },
          { label: "不含税单价", prop: "other7", input: true },
          { label: "折扣额", prop: "other2" },
          { label: "税(销售)", prop: "other7", input: true },
          { label: "实际含税单价", prop: "other3" },
          { label: "不含税金额", prop: "other4" },
          { label: "价税合计", prop: "other3", input: true },
          { label: "描述", prop: "other8" },
          { label: "源单类型", prop: "other5" },
          { label: "源单", prop: "other6" }
        ]
      }
    }
  }
}
</script>
src/views/sales/refundForm/AddRefundFormDialog.vue
New file
@@ -0,0 +1,408 @@
<template>
  <div class="add-refund-form">
    <el-dialog
      :title="editCommonConfig.title + '销售退款单'"
      :visible.sync="editConfig.visible"
      :width="dialogWidth"
      :before-close="handleClose"
    >
      <el-form
        ref="form"
        :model="editConfig.infomation"
        :rules="rules"
        label-position="right"
        label-width="308px"
        size="mini"
        style="height: 60vh; overflow-x: hidden"
      >
        <!-- 信息 -->
        <div class="basic-info">
          <!-- 基本信息 -->
          <div class="basic-info-title">基本信息</div>
          <div class="basic-info-view">
            <el-row>
              <el-col :span="12">
                <el-form-item label="客户名称" prop="customName">
                  <div class="custom-name">
                    <el-input v-model="editConfig.infomation.customName"></el-input>
                    <div class="common-select-btn"><i class="el-icon-circle-plus-outline" title="选择"></i></div>
                    <div class="common-select-btn"><i class="el-icon-edit" title="编辑"></i></div>
                  </div>
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item label="退款单编号" prop="refundOrderNo">
                  <el-input v-model="editConfig.infomation.refundOrderNo"></el-input>
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item label="选择源单" prop="selSourceOrder">
                  <el-select v-model="editConfig.infomation.selSourceOrder" size="mini" style="width: 63%">
                    <el-option
                      v-for="item in selSourceOrderOptions"
                      :key="item.value"
                      :label="item.label"
                      :value="item.value"
                    >
                    </el-option>
                  </el-select>
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item label="销售负责人" prop="salesHead">
                  <el-select
                    v-model="editConfig.infomation.salesHead"
                    placeholder="请选择"
                    size="mini"
                    style="width: 63%"
                  >
                    <el-option
                      v-for="item in salesHeadOptions"
                      :key="item.value"
                      :label="item.label"
                      :value="item.value"
                    >
                    </el-option>
                  </el-select>
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item label="退款日期" prop="refundDate">
                  <el-date-picker v-model="editConfig.infomation.refundDate" type="date" placeholder="选择日期">
                  </el-date-picker>
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item label="付款方式" prop="paymentMethod">
                  <CommonSelectView
                    :common-value="editConfig.infomation.paymentMethod"
                    :common-options="paymentMethodOptions"
                  />
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item label="账户" prop="account">
                  <CommonSelectView :common-value="editConfig.infomation.account" :common-options="accountOptions" />
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item label="是否开票" prop="whetherInvoicing">
                  <CommonSelectView
                    :common-value="editConfig.infomation.whetherInvoicing"
                    :common-options="whetherInvoicingOptions"
                  />
                </el-form-item>
              </el-col>
            </el-row>
          </div>
          <!-- 备注信息 -->
          <div class="basic-info-title">备注信息</div>
          <div class="address-view">
            <el-row>
              <el-col :span="24">
                <el-form-item label="退款原因" prop="refundReason">
                  <el-input
                    type="textarea"
                    :autosize="{ minRows: 2 }"
                    v-model="editConfig.infomation.refundReason"
                  ></el-input>
                </el-form-item>
              </el-col>
            </el-row>
          </div>
          <!-- 附件信息 -->
          <div class="basic-info-title">附件信息</div>
          <div class="basic-info-view">
            <el-row>
              <el-col :span="12">
                <el-form-item label="附件" prop="">
                  <template slot="label">
                    <div style="display: flex; float: right">
                      <div style="font-size: 16px">
                        <i class="el-icon-warning-outline" title="最多上传20个附件,最大限制5MB"></i>
                      </div>
                      <span style="margin-left: 5px">附件</span>
                    </div>
                  </template>
                  <div class="annex-view">
                    <div @click="addAnnexClick">
                      <div style="display: flex; float: right">
                        <div style="font-size: 16px"><i class="el-icon-paperclip"></i></div>
                        <span>添加</span>
                      </div>
                    </div>
                    <div class="setFormat" @click="setFormatClick">设置允许上传的文件格式</div>
                  </div>
                </el-form-item>
              </el-col>
            </el-row>
          </div>
          <!-- 产品管理 -->
          <div class="basic-info-title" style="display: flex">
            产品管理
            <div style="margin-left: 400px">
              币种
              <el-select v-model="editConfig.infomation.currency" placeholder="请选择" size="mini" style="width: 63%">
                <el-option v-for="item in currencyOptions" :key="item.value" :label="item.label" :value="item.value">
                </el-option>
              </el-select>
            </div>
          </div>
          <div class="product-view">
            <CommonFormTableView :show-summary="showSummary" :product-table-list="productTableList" />
          </div>
          <!-- 选择审批流程 -->
          <div v-if="editConfig.title === '新建'" class="basic-info-title">选择审批流程</div>
          <div v-if="editConfig.title === '新建'" class="basic-info-view">
            <el-row>
              <el-col :span="20">
                <el-form-item label="审批流程" prop="approvalWorkflow">
                  <el-select
                    v-model="editConfig.infomation.approvalWorkflow"
                    placeholder="请选择"
                    size="mini"
                    style="width: 100%"
                  >
                    <el-option
                      v-for="item in approvalWorkflowOptions"
                      :key="item.value"
                      :label="item.label"
                      :value="item.value"
                    >
                    </el-option>
                  </el-select>
                </el-form-item>
              </el-col>
              <el-col :span="20">
                <el-form-item label="审批步骤" prop="approvalSteps">
                  <el-input v-model="editConfig.infomation.approvalSteps"></el-input>
                </el-form-item>
              </el-col>
              <el-col :span="20">
                <el-form-item label="审批人" prop="approvalPerson">
                  <el-input v-model="editConfig.infomation.approvalPerson"></el-input>
                </el-form-item>
              </el-col>
              <el-col :span="20">
                <el-form-item label="审批意见" prop="approvalOpinion">
                  <el-input v-model="editConfig.infomation.approvalOpinion" type="textarea" :rows="2"></el-input>
                </el-form-item>
              </el-col>
            </el-row>
          </div>
        </div>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button type="primary" size="small" @click="editConfig.visible = false">保并提交审批</el-button>
        <el-button type="primary" size="small" @click="editConfig.visible = false">保存</el-button>
        <el-button size="small" @click="editConfig.visible = false">取消</el-button>
      </div>
    </el-dialog>
  </div>
</template>
<script>
import CommonSelectView from "@/components/makepager/CommonSelectView"
import CommonFormTableView from "@/components/makepager/CommonFormTableView"
export default {
  name: "AddRefundFormDialog",
  props: {
    editCommonConfig: {
      type: Object,
      default: () => {
        return {
          visible: false,
          title: "新建",
          infomation: {
            customName: "",
            refundOrderNo: "TKD20230521-12",
            selSourceOrder: "",
            salesHead: "",
            refundDate: "",
            paymentMethod: "",
            account: "",
            whetherInvoicing: "",
            refundReason: "",
            approvalWorkflow: "",
            approvalSteps: "",
            approvalPerson: "",
            approvalOpinion: ""
          }
        }
      }
    }
  },
  components: { CommonSelectView, CommonFormTableView },
  computed: {},
  data() {
    return {
      dialogWidth: "80%",
      editConfig: this.editCommonConfig,
      rules: {
        customName: [{ required: true, message: "请输入", trigger: "blur" }],
        refundOrderNo: [{ required: true, message: "请输入", trigger: "blur" }],
        refundDate: [{ required: true, message: "请选择", trigger: "change" }],
        salesHead: [{ required: true, message: "请选择", trigger: "change" }],
        account: [{ required: true, message: "请选择", trigger: "change" }]
      },
      salesHeadOptions: [
        // 销售负责人
        { value: "1", label: "BOSS" },
        { value: "2", label: "Mia" },
        { value: "3", label: "财务" },
        { value: "4", label: "市场" },
        { value: "5", label: "系统管理员" },
        { value: "6", label: "销售" },
        { value: "7", label: "销售总监" }
      ],
      selSourceOrderOptions: [{ value: "1", label: "销售退货单" }], // 选择源单
      paymentMethodOptions: [
        { value: "1", label: "现金" },
        { value: "2", label: "支票" },
        { value: "3", label: "电汇" },
        { value: "4", label: "邮政汇款" },
        { value: "5", label: "网上银行" },
        { value: "6", label: "其他" }
      ], // 付款方式
      accountOptions: [{ value: "1", label: "人民币账户" }], // 账户
      whetherInvoicingOptions: [
        { value: "1", label: "未开" },
        { value: "2", label: "已开" }
      ], // 是否开票
      currencyOptions: [
        { value: "1", label: "人民币(¥)" },
        { value: "2", label: "英镑(£)" },
        { value: "3", label: "欧元(€)" }
      ], // 币种
      approvalWorkflowOptions: [], // 审批流程
      productTableList: {},
      showSummary: {
        show: true,
        total: true,
        sumProp: ["other1", "other2", "other3", "other4"],
        mergeNumber: 5
      }
    }
  },
  created() {
    this.setTableForm()
  },
  methods: {
    setTableForm() {
      this.productTableList = {
        tableData: [
          {
            id: "1",
            productName: "上海有限公司",
            other0: "ZDYBD03-1",
            other1: "12",
            other2: "5.00",
            other4: "3.00",
            other3: "2.00"
          }
        ],
        tableColumn: [
          { label: "#", prop: "id", width: 40 },
          { label: "产品名称", prop: "productName", input: true, isRequird: true },
          { label: "产品编号", prop: "other0" },
          { label: "源单类型", prop: "other5" },
          { label: "源单", prop: "other6" },
          { label: "数量", prop: "other1", input: true, isRequird: true },
          { label: "含税单价", prop: "other9", input: true },
          { label: "不含税单价", prop: "other7", input: true },
          { label: "折扣率(%)", prop: "other6", input: true },
          { label: "折扣额", prop: "other2" },
          { label: "税(销售)", prop: "other7", input: true },
          { label: "实际含税单价", prop: "other3" },
          { label: "不含税金额", prop: "other4" },
          { label: "价税合计", prop: "other3", input: true },
          { label: "描述", prop: "other8" }
        ]
      }
    },
    handleClose() {
      this.editConfig.visible = false
    },
    // 添加附件
    addAnnexClick() {},
    // 设置允许上传文件格式
    setFormatClick() {}
  }
}
</script>
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style lang="scss" scoped>
.add-refund-form {
  .basic-info {
    .basic-info-title {
      background-color: #f4f8fe;
      padding-left: 10px;
      font-size: 15px;
      font-weight: bold;
      color: #666;
      height: 42px;
      line-height: 42px;
    }
    .basic-info-view {
      margin-top: 10px;
      padding-right: 40px;
      .custom-name {
        display: flex;
        .common-select-btn {
          margin-left: 5px;
          font-size: 18px;
        }
      }
    }
    .address-view {
      margin-top: 10px;
      padding-right: 40px;
    }
    .annex-view {
      display: flex;
      color: #6166d3;
      .setFormat {
        margin-left: 10px;
      }
    }
  }
  .unflod-collapse {
    display: flex;
    height: 30px;
    justify-content: center;
    align-items: center;
    color: #6166d3;
  }
  .dialog-footer {
    background-color: #f5f5f5;
    height: 55px;
    line-height: 55px;
  }
}
::v-deep {
  .el-dialog__header {
    padding: 12.5px 10px;
    border-bottom: 1px solid #e5e5e5;
    .el-dialog__title {
      font-size: 15px;
      color: #323232;
      font-weight: bold;
    }
  }
  .el-dialog__body {
    padding: 0px;
  }
  .el-dialog__footer {
    padding: 0px;
    text-align: center;
    box-sizing: border-box;
    border-top: 1px solid #dadee5;
  }
  .product-view {
    .el-form-item__label {
      padding: 0;
    }
  }
}
</style>
src/views/sales/refundForm/index.vue
@@ -15,7 +15,7 @@
      </template>
    </TableCommonView>
    <!-- 新建/编辑 -->
    <AddSalesLeadDialog v-if="editConfig.visible" :edit-sales-lead-config="editConfig" />
    <AddRefundFormDialog v-if="editConfig.visible" :edit-common-config="editConfig" />
  </div>
</template>
@@ -24,7 +24,7 @@
import PublicFunctionBtnView from "@/components/makepager/PublicFunctionBtnView"
import PagerView from "@/components/makepager/PagerView"
import TableCommonView from "@/components/makepager/TableCommonView"
import AddSalesLeadDialog from "@/views/custom/salesLead/AddSalesLeadDialog"
import AddRefundFormDialog from "@/views/sales/refundForm/AddRefundFormDialog"
export default {
  name: "RefundForm",
@@ -34,7 +34,7 @@
    PublicFunctionBtnView,
    PagerView,
    TableCommonView,
    AddSalesLeadDialog
    AddRefundFormDialog
  },
  computed: {
    searchCommonHeight() {
@@ -111,20 +111,18 @@
      this.editConfig.title = "新建"
      this.editConfig.infomation = {
        customName: "",
        saleLeadNumber: "LEA50",
        contactName: "",
        contactDuties: "",
        phoneNumber: "",
        businessStatus: "新建",
        businessSource: "1",
        owner: "",
        position: "",
        map: "",
        country: "1",
        province: "1",
        city: "1",
        region: "1",
        address: ""
        refundOrderNo: "TKD20230521-12",
        selSourceOrder: "1",
        salesHead: "5",
        refundDate: "",
        paymentMethod: "1",
        account: "1",
        whetherInvoicing: "1",
        refundReason: "",
        approvalWorkflow: "",
        approvalSteps: "",
        approvalPerson: "",
        approvalOpinion: ""
      }
    },
    // 编辑
@@ -133,21 +131,19 @@
      this.editConfig.visible = true
      this.editConfig.title = "编辑"
      this.editConfig.infomation = {
        customName: row.customName,
        saleLeadNumber: row.saleLeadNumber,
        contactName: row.contactName,
        contactDuties: row.contactDuties,
        phoneNumber: row.phoneNumber,
        businessStatus: "新建",
        businessSource: row.businessSource,
        owner: row.owner,
        position: "",
        map: "",
        country: "1",
        province: "1",
        city: "1",
        region: "1",
        address: ""
        customName: "",
        refundOrderNo: "TKD20230521-12",
        selSourceOrder: "",
        salesHead: "",
        refundDate: "",
        paymentMethod: "",
        account: "",
        whetherInvoicing: "",
        refundReason: "",
        approvalWorkflow: "",
        approvalSteps: "",
        approvalPerson: "",
        approvalOpinion: ""
      }
    }
  }
src/views/sales/salesDetails/AddSalesDetailsDialog.vue
@@ -154,8 +154,21 @@
            <el-row>
              <el-col :span="12">
                <el-form-item label="附件" prop="">
                  <template slot="label">
                    <div style="display: flex; float: right">
                      <div style="font-size: 16px">
                        <i class="el-icon-warning-outline" title="最多上传20个附件,最大限制5MB"></i>
                      </div>
                      <span style="margin-left: 5px">附件</span>
                    </div>
                  </template>
                  <div class="annex-view">
                    <div @click="addAnnexClick">添加</div>
                    <div @click="addAnnexClick">
                      <div style="display: flex; float: right">
                        <div style="font-size: 16px"><i class="el-icon-paperclip"></i></div>
                        <span>添加</span>
                      </div>
                    </div>
                    <div class="setFormat" @click="setFormatClick">设置允许上传的文件格式</div>
                  </div>
                </el-form-item>
@@ -174,7 +187,7 @@
            </div>
          </div>
          <div class="product-view">
            <CommonFormTableView :product-table-list="productTableList" />
            <CommonFormTableView :show-summary="showSummary" :product-table-list="productTableList" />
          </div>
          <!-- 选择审批流程 -->
          <div v-if="editConfig.title === '新建'" class="basic-info-title">选择审批流程</div>
@@ -299,23 +312,45 @@
        { value: "3", label: "欧元(€)" }
      ], // 币种
      approvalWorkflowOptions: [], // 审批流程
      productTableList: {
        tableData: [
          {
            id: "1",
            productNumber: "123",
            productName: "",
            startDate: "",
            endDate: "2016-05-02",
            number: "",
            address: ""
          }
        ]
      productTableList: {},
      showSummary: {
        show: true,
        total: true,
        sumProp: ["other1", "other7"],
        mergeNumber: 2
      }
    }
  },
  created() {},
  created() {
    this.setTableForm()
  },
  methods: {
    setTableForm() {
      this.productTableList = {
        tableData: [
          {
            id: "1",
            productName: "上海有限公司",
            other0: "ZDYBD03-1",
            other1: "12",
            other2: "",
            other6: "3.00",
            other7: "2.00"
          }
        ],
        tableColumn: [
          { label: "#", prop: "id", width: 40 },
          { label: "产品名称", prop: "productName", input: true, isRequird: true },
          { label: "产品编号", prop: "other0" },
          { label: "数量", prop: "other1", input: true, isRequird: true },
          { label: "含税单价", prop: "other6", input: true },
          { label: "价税合计", prop: "other7", input: true },
          { label: "描述", prop: "other8" },
          { label: "源单类型", prop: "other2" },
          { label: "源单", prop: "other3" }
        ]
      }
    },
    handleClose() {
      this.editConfig.visible = false
    },
src/views/sales/salesOpportunity/AddSalesOpportunityDialog.vue
@@ -338,8 +338,21 @@
            <el-row>
              <el-col :span="12">
                <el-form-item label="附件" prop="">
                  <template slot="label">
                    <div style="display: flex; float: right">
                      <div style="font-size: 16px">
                        <i class="el-icon-warning-outline" title="最多上传20个附件,最大限制5MB"></i>
                      </div>
                      <span style="margin-left: 5px">附件</span>
                    </div>
                  </template>
                  <div class="annex-view">
                    <div @click="addAnnexClick">添加</div>
                    <div @click="addAnnexClick">
                      <div style="display: flex; float: right">
                        <div style="font-size: 16px"><i class="el-icon-paperclip"></i></div>
                        <span>添加</span>
                      </div>
                    </div>
                    <div class="setFormat" @click="setFormatClick">设置允许上传的文件格式</div>
                  </div>
                </el-form-item>
src/views/sales/salesReturn/AddSalesReturnDialog.vue
New file
@@ -0,0 +1,357 @@
<template>
  <div class="add-sales-return">
    <el-dialog
      :title="editCommonConfig.title + '销售退货单'"
      :visible.sync="editConfig.visible"
      :width="dialogWidth"
      :before-close="handleClose"
    >
      <el-form
        ref="form"
        :model="editConfig.infomation"
        :rules="rules"
        label-position="right"
        label-width="308px"
        size="mini"
        style="height: 60vh; overflow-x: hidden"
      >
        <!-- 信息 -->
        <div class="basic-info">
          <!-- 基本信息 -->
          <div class="basic-info-title">基本信息</div>
          <div class="basic-info-view">
            <el-row>
              <el-col :span="12">
                <el-form-item label="客户名称" prop="customName">
                  <div class="custom-name">
                    <el-input v-model="editConfig.infomation.customName"></el-input>
                    <div class="common-select-btn"><i class="el-icon-circle-plus-outline" title="选择"></i></div>
                    <div class="common-select-btn"><i class="el-icon-edit" title="编辑"></i></div>
                  </div>
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item label="销售退货单编号" prop="salesReturnOrderNo">
                  <el-input v-model="editConfig.infomation.salesReturnOrderNo"></el-input>
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item label="选择源单" prop="selSourceOrder">
                  <el-select v-model="editConfig.infomation.selSourceOrder" size="mini" style="width: 63%">
                    <el-option
                      v-for="item in selSourceOrderOptions"
                      :key="item.value"
                      :label="item.label"
                      :value="item.value"
                    >
                    </el-option>
                  </el-select>
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item label="退入仓库" prop="returnWarehouse">
                  <el-select v-model="editConfig.infomation.returnWarehouse" size="mini" style="width: 63%">
                    <el-option
                      v-for="item in returnWarehouseOptions"
                      :key="item.value"
                      :label="item.label"
                      :value="item.value"
                    >
                    </el-option>
                  </el-select>
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item label="销售负责人" prop="salesHead">
                  <el-select
                    v-model="editConfig.infomation.salesHead"
                    placeholder="请选择"
                    size="mini"
                    style="width: 63%"
                  >
                    <el-option
                      v-for="item in salesHeadOptions"
                      :key="item.value"
                      :label="item.label"
                      :value="item.value"
                    >
                    </el-option>
                  </el-select>
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item label="退货日期" prop="returnDate">
                  <el-date-picker v-model="editConfig.infomation.returnDate" type="date" placeholder="选择日期">
                  </el-date-picker>
                </el-form-item>
              </el-col>
            </el-row>
          </div>
          <!-- 动态信息 -->
          <div class="basic-info-title">动态信息</div>
          <div class="basic-info-view">
            <el-row>
              <el-col :span="12">
                <el-form-item label="状态" prop="state">
                  <CommonSelectView :common-value="editConfig.infomation.state" :common-options="stateOptions" />
                </el-form-item>
              </el-col>
            </el-row>
          </div>
          <!-- 备注信息 -->
          <div class="basic-info-title">备注信息</div>
          <div class="address-view">
            <el-row>
              <el-col :span="24">
                <el-form-item label="退货原因" prop="returnReason">
                  <el-input
                    type="textarea"
                    :autosize="{ minRows: 2 }"
                    v-model="editConfig.infomation.returnReason"
                  ></el-input>
                </el-form-item>
              </el-col>
            </el-row>
          </div>
          <!-- 附件信息 -->
          <div class="basic-info-title">附件信息</div>
          <div class="basic-info-view">
            <el-row>
              <el-col :span="12">
                <el-form-item label="附件" prop="">
                  <template slot="label">
                    <div style="display: flex; float: right">
                      <div style="font-size: 16px">
                        <i class="el-icon-warning-outline" title="最多上传20个附件,最大限制5MB"></i>
                      </div>
                      <span style="margin-left: 5px">附件</span>
                    </div>
                  </template>
                  <div class="annex-view">
                    <div @click="addAnnexClick">
                      <div style="display: flex; float: right">
                        <div style="font-size: 16px"><i class="el-icon-paperclip"></i></div>
                        <span>添加</span>
                      </div>
                    </div>
                    <div class="setFormat" @click="setFormatClick">设置允许上传的文件格式</div>
                  </div>
                </el-form-item>
              </el-col>
            </el-row>
          </div>
          <!-- 产品管理 -->
          <div class="basic-info-title" style="display: flex">
            产品管理
            <div style="margin-left: 400px">
              币种
              <el-select v-model="editConfig.infomation.currency" placeholder="请选择" size="mini" style="width: 63%">
                <el-option v-for="item in currencyOptions" :key="item.value" :label="item.label" :value="item.value">
                </el-option>
              </el-select>
            </div>
          </div>
          <div class="product-view">
            <CommonFormTableView :show-summary="showSummary" :product-table-list="productTableList" />
          </div>
        </div>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button type="primary" size="small" @click="editConfig.visible = false">保存</el-button>
        <el-button size="small" @click="editConfig.visible = false">取消</el-button>
      </div>
    </el-dialog>
  </div>
</template>
<script>
import CommonSelectView from "@/components/makepager/CommonSelectView"
import CommonFormTableView from "@/components/makepager/CommonFormTableView"
export default {
  name: "AddSalesReturnDialog",
  props: {
    editCommonConfig: {
      type: Object,
      default: () => {
        return {
          visible: false,
          title: "新建",
          infomation: {
            customName: "",
            salesReturnOrderNo: "THD20230521-11",
            selSourceOrder: "1",
            returnWarehouse: "1",
            salesHead: "5",
            returnDate: "",
            state: "",
            returnReason: ""
          }
        }
      }
    }
  },
  components: { CommonSelectView, CommonFormTableView },
  computed: {},
  data() {
    return {
      dialogWidth: "80%",
      editConfig: this.editCommonConfig,
      rules: {
        salesReturnOrderNo: [{ required: true, message: "请输入", trigger: "blur" }],
        returnWarehouse: [{ required: true, message: "请选择", trigger: "change" }],
        salesHead: [{ required: true, message: "请选择负责人", trigger: "change" }]
      },
      salesHeadOptions: [
        // 销售负责人
        { value: "1", label: "BOSS" },
        { value: "2", label: "Mia" },
        { value: "3", label: "财务" },
        { value: "4", label: "市场" },
        { value: "5", label: "系统管理员" },
        { value: "6", label: "销售" },
        { value: "7", label: "销售总监" }
      ],
      selSourceOrderOptions: [{ value: "1", label: "销售明细单" }], // 选择源单
      returnWarehouseOptions: [
        { value: "1", label: "总仓" },
        { value: "2", label: "赠品仓" },
        { value: "3", label: "其他仓" }
      ], // 退入仓库
      stateOptions: [], // 状态
      currencyOptions: [
        { value: "1", label: "人民币(¥)" },
        { value: "2", label: "英镑(£)" },
        { value: "3", label: "欧元(€)" }
      ], // 币种
      productTableList: {},
      showSummary: {
        show: true,
        total: false,
        refundable: true,
        sumProp: ["other1", "other2", "other3", "other4"],
        mergeNumber: 4
      }
    }
  },
  created() {
    this.setTableForm()
  },
  methods: {
    setTableForm() {
      this.productTableList = {
        tableData: [
          {
            id: "1",
            productName: "上海有限公司",
            other0: "ZDYBD03-1",
            other1: "12",
            other2: "5.00",
            other4: "3.00",
            other3: "2.00"
          }
        ],
        tableColumn: [
          { label: "#", prop: "id", width: 40 },
          { label: "产品名称", prop: "productName", input: true, isRequird: true },
          { label: "产品编号", prop: "other0" },
          { label: "源单类型", prop: "other5" },
          { label: "源单", prop: "other6" },
          { label: "数量", prop: "other1", input: true, isRequird: true },
          { label: "含税单价", prop: "other9", input: true },
          { label: "不含税单价", prop: "other7", input: true },
          { label: "折扣率(%)", prop: "other6", input: true },
          { label: "折扣额", prop: "other2" },
          { label: "税(销售)", prop: "other7", input: true },
          { label: "实际含税单价", prop: "other3" },
          { label: "不含税金额", prop: "other4" },
          { label: "价税合计", prop: "other3", input: true },
          { label: "描述", prop: "other8" }
        ]
      }
    },
    handleClose() {
      this.editConfig.visible = false
    },
    // 添加附件
    addAnnexClick() {},
    // 设置允许上传文件格式
    setFormatClick() {}
  }
}
</script>
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style lang="scss" scoped>
.add-sales-return {
  .basic-info {
    .basic-info-title {
      background-color: #f4f8fe;
      padding-left: 10px;
      font-size: 15px;
      font-weight: bold;
      color: #666;
      height: 42px;
      line-height: 42px;
    }
    .basic-info-view {
      margin-top: 10px;
      padding-right: 40px;
      .custom-name {
        display: flex;
        .common-select-btn {
          margin-left: 5px;
          font-size: 18px;
        }
      }
    }
    .address-view {
      margin-top: 10px;
      padding-right: 40px;
    }
    .annex-view {
      display: flex;
      color: #6166d3;
      .setFormat {
        margin-left: 10px;
      }
    }
  }
  .unflod-collapse {
    display: flex;
    height: 30px;
    justify-content: center;
    align-items: center;
    color: #6166d3;
  }
  .dialog-footer {
    background-color: #f5f5f5;
    height: 55px;
    line-height: 55px;
  }
}
::v-deep {
  .el-dialog__header {
    padding: 12.5px 10px;
    border-bottom: 1px solid #e5e5e5;
    .el-dialog__title {
      font-size: 15px;
      color: #323232;
      font-weight: bold;
    }
  }
  .el-dialog__body {
    padding: 0px;
  }
  .el-dialog__footer {
    padding: 0px;
    text-align: center;
    box-sizing: border-box;
    border-top: 1px solid #dadee5;
  }
  .product-view {
    .el-form-item__label {
      padding: 0;
    }
  }
}
</style>
src/views/sales/salesReturn/index.vue
@@ -15,7 +15,7 @@
      </template>
    </TableCommonView>
    <!-- 新建/编辑 -->
    <AddSalesLeadDialog v-if="editConfig.visible" :edit-sales-lead-config="editConfig" />
    <AddSalesReturnDialog v-if="editConfig.visible" :edit-common-config="editConfig" />
  </div>
</template>
@@ -24,7 +24,7 @@
import PublicFunctionBtnView from "@/components/makepager/PublicFunctionBtnView"
import PagerView from "@/components/makepager/PagerView"
import TableCommonView from "@/components/makepager/TableCommonView"
import AddSalesLeadDialog from "@/views/custom/salesLead/AddSalesLeadDialog"
import AddSalesReturnDialog from "@/views/sales/salesReturn/AddSalesReturnDialog"
export default {
  name: "SalesReturn",
@@ -34,7 +34,7 @@
    PublicFunctionBtnView,
    PagerView,
    TableCommonView,
    AddSalesLeadDialog
    AddSalesReturnDialog
  },
  computed: {
    searchCommonHeight() {
@@ -49,7 +49,7 @@
        { value: "2", label: "中止" },
        { value: "3", label: "结束" },
        { value: "4", label: "已入库" },
        { value: "4", label: "未入库" }
        { value: "5", label: "未入库" }
      ],
      searchOptions: [],
      operatesList: [
@@ -112,20 +112,13 @@
      this.editConfig.title = "新建"
      this.editConfig.infomation = {
        customName: "",
        saleLeadNumber: "LEA50",
        contactName: "",
        contactDuties: "",
        phoneNumber: "",
        businessStatus: "新建",
        businessSource: "1",
        owner: "",
        position: "",
        map: "",
        country: "1",
        province: "1",
        city: "1",
        region: "1",
        address: ""
        salesReturnOrderNo: "THD20230521-11",
        selSourceOrder: "1",
        returnWarehouse: "1",
        salesHead: "5",
        returnDate: "",
        state: "",
        returnReason: ""
      }
    },
    // 编辑
@@ -134,21 +127,14 @@
      this.editConfig.visible = true
      this.editConfig.title = "编辑"
      this.editConfig.infomation = {
        customName: row.customName,
        saleLeadNumber: row.saleLeadNumber,
        contactName: row.contactName,
        contactDuties: row.contactDuties,
        phoneNumber: row.phoneNumber,
        businessStatus: "新建",
        businessSource: row.businessSource,
        owner: row.owner,
        position: "",
        map: "",
        country: "1",
        province: "1",
        city: "1",
        region: "1",
        address: ""
        customName: "",
        salesReturnOrderNo: "THD20230521-11",
        selSourceOrder: "",
        returnWarehouse: "",
        salesHead: "",
        returnDate: "",
        state: "",
        returnReason: ""
      }
    }
  }
src/views/sales/subOrder/AddSubOrderDialog.vue
@@ -59,8 +59,21 @@
            <el-row>
              <el-col :span="12">
                <el-form-item label="附件" prop="">
                  <template slot="label">
                    <div style="display: flex; float: right">
                      <div style="font-size: 16px">
                        <i class="el-icon-warning-outline" title="最多上传20个附件,最大限制5MB"></i>
                      </div>
                      <span style="margin-left: 5px">附件</span>
                    </div>
                  </template>
                  <div class="annex-view">
                    <div @click="addAnnexClick">添加</div>
                    <div @click="addAnnexClick">
                      <div style="display: flex; float: right">
                        <div style="font-size: 16px"><i class="el-icon-paperclip"></i></div>
                        <span>添加</span>
                      </div>
                    </div>
                    <div class="setFormat" @click="setFormatClick">设置允许上传的文件格式</div>
                  </div>
                </el-form-item>
@@ -187,6 +200,7 @@
        { value: "7", label: "销售总监" }
      ],
      discount: "2",
      currencyOptions: [],
      discountOptions: [
        { value: "1", label: "百分比降价" },
        { value: "2", label: "直接降价" }
@@ -196,23 +210,47 @@
        { value: "1", label: "增加" },
        { value: "2", label: "减少" }
      ], // 调整
      productTableList: {
        tableData: [
          {
            id: "1",
            productNumber: "123",
            productName: "",
            startDate: "",
            endDate: "2016-05-02",
            number: "",
            address: ""
          }
        ]
      productTableList: {},
      showSummary: {
        show: true,
        total: false,
        sumProp: ["other1", "other7"],
        mergeNumber: 7
      }
    }
  },
  created() {},
  created() {
    this.setTableForm()
  },
  methods: {
    setTableForm() {
      this.productTableList = {
        tableData: [
          {
            id: "1",
            productName: "上海有限公司",
            other0: "ZDYBD03-1",
            other1: "12",
            other2: "",
            other6: "3.00",
            other7: "2.00"
          }
        ],
        tableColumn: [
          { label: "#", prop: "id", width: 40 },
          { label: "产品名称", prop: "productName", input: true, isRequird: true },
          { label: "产品编号", prop: "other0" },
          { label: "计量单位", prop: "other2" },
          { label: "规格编号", prop: "other3" },
          { label: "源单类型", prop: "other4" },
          { label: "合同信息", prop: "other5" },
          { label: "数量", prop: "other1", input: true, isRequird: true },
          { label: "含税单价", prop: "other6", input: true },
          { label: "价税合计", prop: "other7", input: true },
          { label: "描述", prop: "other8" }
        ]
      }
    },
    handleClose() {
      this.editConfig.visible = false
    },
src/views/service/orderManage/AddOrderManageDialog.vue
@@ -102,8 +102,21 @@
            <el-row>
              <el-col :span="12">
                <el-form-item label="附件" prop="">
                  <template slot="label">
                    <div style="display: flex; float: right">
                      <div style="font-size: 16px">
                        <i class="el-icon-warning-outline" title="最多上传20个附件,最大限制5MB"></i>
                      </div>
                      <span style="margin-left: 5px">附件</span>
                    </div>
                  </template>
                  <div class="annex-view">
                    <div @click="addAnnexClick">添加</div>
                    <div @click="addAnnexClick">
                      <div style="display: flex; float: right">
                        <div style="font-size: 16px"><i class="el-icon-paperclip"></i></div>
                        <span>添加</span>
                      </div>
                    </div>
                    <div class="setFormat" @click="setFormatClick">设置允许上传的文件格式</div>
                  </div>
                </el-form-item>
src/views/service/serviceContract/AddServiceContractDialog.vue
@@ -164,8 +164,21 @@
            <el-row>
              <el-col :span="12">
                <el-form-item label="附件" prop="">
                  <template slot="label">
                    <div style="display: flex; float: right">
                      <div style="font-size: 16px">
                        <i class="el-icon-warning-outline" title="最多上传20个附件,最大限制5MB"></i>
                      </div>
                      <span style="margin-left: 5px">附件</span>
                    </div>
                  </template>
                  <div class="annex-view">
                    <div @click="addAnnexClick">添加</div>
                    <div @click="addAnnexClick">
                      <div style="display: flex; float: right">
                        <div style="font-size: 16px"><i class="el-icon-paperclip"></i></div>
                        <span>添加</span>
                      </div>
                    </div>
                    <div class="setFormat" @click="setFormatClick">设置允许上传的文件格式</div>
                  </div>
                </el-form-item>
@@ -184,7 +197,7 @@
            </div>
          </div>
          <div class="product-view">
            <CommonFormTableView :product-table-list="productTableList" />
            <CommonFormTableView :show-summary="showSummary" :product-table-list="productTableList" />
          </div>
          <!-- 选择审批流程 -->
          <div class="basic-info-title">选择审批流程</div>
@@ -288,8 +301,7 @@
      rules: {
        serviceContractNumber: [{ required: true, message: "请输入服务合同编号", trigger: "blur" }],
        signDate: [{ required: true, message: "请选择", trigger: "change" }],
        owner: [{ required: true, message: "请选择负责人", trigger: "change" }],
        approvalOpinion: [{ required: true, message: "请输入审批意见", trigger: "blur" }]
        owner: [{ required: true, message: "请选择负责人", trigger: "change" }]
      },
      ownerOptions: [
        // 负责人
@@ -309,23 +321,51 @@
        { value: "3", label: "欧元(€)" }
      ], // 币种
      approvalWorkflowOptions: [], // 审批流程
      productTableList: {
        tableData: [
          {
            id: "1",
            productNumber: "123",
            productName: "",
            startDate: "",
            endDate: "2016-05-02",
            number: "",
            address: ""
          }
        ]
      productTableList: {},
      showSummary: {
        show: true,
        total: true,
        sumProp: ["other1", "other2", "other3", "other4"],
        mergeNumber: 3
      }
    }
  },
  created() {},
  created() {
    this.setTableForm()
  },
  methods: {
    setTableForm() {
      this.productTableList = {
        tableData: [
          {
            id: "1",
            productName: "上海有限公司",
            other0: "ZDYBD03-1",
            other1: "12",
            other2: "5.00",
            other4: "3.00",
            other3: "2.00"
          }
        ],
        tableColumn: [
          { label: "#", prop: "id", width: 40 },
          { label: "产品名称", prop: "productName", input: true, isRequird: true },
          { label: "产品编号", prop: "other0" },
          { label: "服务开始日", prop: "other5", date: true, isRequird: true, min: 100 },
          { label: "服务到期日", prop: "other6", date: true, isRequird: true, min: 100 },
          { label: "数量", prop: "other1", input: true, isRequird: true },
          { label: "含税单价", prop: "other9", input: true },
          { label: "不含税单价", prop: "other7", input: true },
          { label: "折扣率(%)", prop: "other6", input: true },
          { label: "折扣额", prop: "other2" },
          { label: "税(销售)", prop: "other7", input: true },
          { label: "实际含税单价", prop: "other3" },
          { label: "不含税金额", prop: "other4" },
          { label: "价税合计", prop: "other3", input: true },
          { label: "描述", prop: "other8" }
        ]
      }
    },
    handleClose() {
      this.editConfig.visible = false
    },
src/views/service/serviceFeeManage/AddServiceFeeManageDialog.vue
@@ -245,8 +245,21 @@
            <el-row>
              <el-col :span="12">
                <el-form-item label="附件" prop="">
                  <template slot="label">
                    <div style="display: flex; float: right">
                      <div style="font-size: 16px">
                        <i class="el-icon-warning-outline" title="最多上传20个附件,最大限制5MB"></i>
                      </div>
                      <span style="margin-left: 5px">附件</span>
                    </div>
                  </template>
                  <div class="annex-view">
                    <div @click="addAnnexClick">添加</div>
                    <div @click="addAnnexClick">
                      <div style="display: flex; float: right">
                        <div style="font-size: 16px"><i class="el-icon-paperclip"></i></div>
                        <span>添加</span>
                      </div>
                    </div>
                    <div class="setFormat" @click="setFormatClick">设置允许上传的文件格式</div>
                  </div>
                </el-form-item>
src/views/service/serviceFeeManage/index.vue
@@ -96,12 +96,13 @@
            customStatus: "潜在客户",
            productName: "自动打印机",
            startDate: "2023-06-27",
            endDate: "2024-07-15"
            endDate: "2024-07-15",
            status: "blue"
          }
        ],
        tableColumn: [
          { label: "客户名称", prop: "customName", min: 120 }, // 客户名称
          { label: "客户类型", prop: "customType", min: 90 }, // 客户类型
          { label: "客户类型", prop: "customType", min: 90, status: true }, // 客户类型
          { label: "销售负责人", prop: "salesHead" }, // 销售负责人
          { label: "修改时间", prop: "modifyTime", min: 100 }, // 修改时间
          { label: "客户规模", prop: "customerSize" }, // 客户规模
src/views/service/serviceFollowup/AddServiceFollowupDialog.vue
@@ -131,8 +131,21 @@
            <el-row>
              <el-col :span="12">
                <el-form-item label="附件" prop="">
                  <template slot="label">
                    <div style="display: flex; float: right">
                      <div style="font-size: 16px">
                        <i class="el-icon-warning-outline" title="最多上传20个附件,最大限制5MB"></i>
                      </div>
                      <span style="margin-left: 5px">附件</span>
                    </div>
                  </template>
                  <div class="annex-view">
                    <div @click="addAnnexClick">添加</div>
                    <div @click="addAnnexClick">
                      <div style="display: flex; float: right">
                        <div style="font-size: 16px"><i class="el-icon-paperclip"></i></div>
                        <span>添加</span>
                      </div>
                    </div>
                    <div class="setFormat" @click="setFormatClick">设置允许上传的文件格式</div>
                  </div>
                </el-form-item>