yangfeng
2023-08-15 6857572e3d303daaf3c28e639aad91c0bdf2fc42
bug修复及对应参数联调
22个文件已修改
712 ■■■■ 已修改文件
src/views/client/client/AddClientManageDialog.vue 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/client/client/DetailClientManage.vue 47 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/client/contacts/AddContactsDialog.vue 52 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/client/contacts/DetailContacts.vue 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/client/contacts/index.vue 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/client/followupRecords/index.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/client/salesLead/DetailSalesLead.vue 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/client/salesLead/index.vue 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/sales/masterOrder/AddMasterOrderDialog.vue 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/sales/masterOrder/DetailMasterOrder.vue 52 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/sales/masterOrder/index.vue 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/sales/quotation/AddQuotationDialog.vue 70 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/sales/quotation/DetailQuotation.vue 191 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/sales/quotation/index.vue 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/sales/salesDetails/index.vue 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/sales/salesOpportunity/DetailOpportunity.vue 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/sales/salesOpportunity/index.vue 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/sales/subOrder/AddSubOrderDialog.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/sales/subOrder/index.vue 39 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/service/clientServiceOrder/DetailClientServiceOrder.vue 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/service/serviceContract/DetailServiceContract.vue 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/service/serviceFollowup/DetailServiceFollowup.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/client/client/AddClientManageDialog.vue
@@ -27,7 +27,7 @@
                <el-form-item label="客户名称" prop="name">
                  <div class="custom-name">
                    <el-input v-model="editConfig.infomation.name"></el-input>
                    <div class="common-select-btn"><i class="el-icon-house" title="工商查询"></i></div>
                    <!-- <div class="common-select-btn"><i class="el-icon-house" title="工商查询"></i></div> -->
                    <div class="common-select-btn"><i class="el-icon-search" title="查重"></i></div>
                  </div>
                </el-form-item>
@@ -530,6 +530,14 @@
            message: "请输入正确的手机号",
            trigger: "blur"
          }
        ],
        contact_email: [
          { required: false, message: "", trigger: "blur" },
          {
            pattern: /^[a-zA-Z0-9_\\.]+@[a-zA-Z0-9-]+[\\.a-zA-Z]+$/,
            message: "请输入正确的邮箱格式",
            trigger: "blur"
          }
        ]
      },
      memberOptions: [],
src/views/client/client/DetailClientManage.vue
@@ -28,7 +28,7 @@
            <el-tab-pane label="销售总单" name="master"></el-tab-pane>
            <el-tab-pane label="销售子单" name="sub"></el-tab-pane>
            <el-tab-pane label="销售明细单" name="detail"></el-tab-pane>
            <el-tab-pane label="收款单" name="plan"></el-tab-pane>
            <el-tab-pane label="收款单" name="receipt"></el-tab-pane>
          </el-tabs>
        </div>
        <div v-if="activeName === 'first'" class="detail">
@@ -47,7 +47,7 @@
                    <div class="content-data">{{ item.leftValue ? item.leftValue : "--" }}</div>
                  </div>
                  <div v-if="item.rightStr" class="right">
                    <div class="content-title">{{ item.rightStr }}</div>
                    <div class="content-title">{{ item.rightStr + ":" }}</div>
                    <div class="content-data">{{ item.rightValue ? item.rightValue : "--" }}</div>
                  </div>
                </li>
@@ -69,7 +69,7 @@
                    <div class="content-data">{{ item.leftValue ? item.leftValue : "--" }}</div>
                  </div>
                  <div v-if="item.rightStr" class="right">
                    <div class="content-title">{{ item.rightStr }}</div>
                    <div class="content-title">{{ item.rightStr + ":" }}</div>
                    <div class="content-data">{{ item.rightValue ? item.rightValue : "--" }}</div>
                  </div>
                </li>
@@ -91,7 +91,7 @@
                    <div class="content-data">{{ item.leftValue ? item.leftValue : "--" }}</div>
                  </div>
                  <div v-if="item.rightStr" class="right">
                    <div class="content-title">{{ item.rightStr }}</div>
                    <div class="content-title">{{ item.rightStr + ":" }}</div>
                    <div class="content-data">{{ item.rightValue ? item.rightValue : "--" }}</div>
                  </div>
                </li>
@@ -113,7 +113,7 @@
                    <div class="content-data">{{ item.leftValue ? item.leftValue : "--" }}</div>
                  </div>
                  <div v-if="item.rightStr" class="right">
                    <div class="content-title">{{ item.rightStr }}</div>
                    <div class="content-title">{{ item.rightStr + ":" }}</div>
                    <div class="content-data">{{ item.rightValue ? item.rightValue : "--" }}</div>
                  </div>
                </li>
@@ -135,7 +135,7 @@
                    <div class="content-data">{{ item.leftValue ? item.leftValue : "--" }}</div>
                  </div>
                  <div v-if="item.rightStr" class="right">
                    <div class="content-title">{{ item.rightStr }}</div>
                    <div class="content-title">{{ item.rightStr + ":" }}</div>
                    <div class="content-data">{{ item.rightValue ? item.rightValue : "--" }}</div>
                  </div>
                </li>
@@ -161,7 +161,7 @@
            </div>
          </div>
          <!-- 附件信息 -->
          <div class="basic-info">
          <!-- <div class="basic-info">
            <div class="basic-info-label" @click="expandClick('annex')">
              <i v-if="isAnnexExpand" class="el-icon-arrow-down"></i>
              <i v-else class="el-icon-arrow-up"></i>
@@ -177,32 +177,28 @@
                </li>
              </ul>
            </div>
          </div>
          </div> -->
        </div>
        <div v-if="activeName === 'contact'" class="second">
          <Contacts :isDetail="true" />
          <Contacts :isDetail="true" :add-config="addContactsConfig" />
        </div>
        <div v-if="activeName === 'second'" class="second">
          <FollowupRecords
            :isDetail="true"
            :follow-record="detailConfig.infomation.follow_record"
            :add-config="addConfig"
          />
          <FollowupRecords :isDetail="true" :add-config="addConfig" />
        </div>
        <div v-if="activeName === 'salesOpportunity'" class="second">
          <SalesOpportunity :isDetail="true" />
          <SalesOpportunity :isDetail="true" :add-config="addContactsConfig" />
        </div>
        <div v-if="activeName === 'quotation'" class="second">
          <Quotation :isDetail="true" />
          <Quotation :isDetail="true" :add-config="addContactsConfig" />
        </div>
        <div v-if="activeName === 'master'" class="second">
          <MasterOrder :isDetail="true" />
          <MasterOrder :isDetail="true" :add-config="addContactsConfig" />
        </div>
        <div v-if="activeName === 'sub'" class="second">
          <SubOrder :isDetail="true" />
          <SubOrder :isDetail="true" :add-config="addContactsConfig" />
        </div>
        <div v-if="activeName === 'detail'" class="second">
          <SalesDetails :isDetail="true" />
          <SalesDetails :isDetail="true" :add-config="addContactsConfig" />
        </div>
      </div>
    </el-drawer>
@@ -248,7 +244,10 @@
      addressInfoList: [],
      isRemarkExpand: true, // 备注信息
      isAnnexExpand: true, // 附件信息
      addConfig: {}
      addConfig: {},
      addContactsConfig: {
        client_name: this.clientManageDetail.infomation.name
      }
    }
  },
  created() {
@@ -277,7 +276,7 @@
          leftStr: "客户状态",
          leftValue: item.client_status,
          rightStr: "销售负责人",
          rightValue: item.member_id
          rightValue: item.member.username
        },
        {
          leftStr: "客户类型",
@@ -379,15 +378,15 @@
      this.addressInfoList = [
        {
          leftStr: "国家",
          leftValue: item.Country.name,
          leftValue: "中国",
          rightStr: "省份",
          rightValue: item.Province.name
        },
        {
          leftStr: "城市",
          leftValue: item.City.name,
          rightStr: "区域",
          rightValue: item.Region.name
          rightStr: "",
          rightValue: ""
        },
        {
          leftStr: "详细地址",
src/views/client/contacts/AddContactsDialog.vue
@@ -114,7 +114,7 @@
                      <el-option v-for="item in countryOptions" :key="item.id" :label="item.name" :value="item.id">
                      </el-option>
                    </el-select>
                    <div class="common-select-btn"><i class="el-icon-setting"></i></div>
                    <!-- <div class="common-select-btn"><i class="el-icon-setting"></i></div> -->
                  </div>
                </el-form-item>
              </el-col>
@@ -126,11 +126,12 @@
                      placeholder="请选择"
                      class="common-select-sel"
                      size="mini"
                      @change="selProvinceChange"
                    >
                      <el-option v-for="item in provinceOptions" :key="item.id" :label="item.name" :value="item.id">
                      </el-option>
                    </el-select>
                    <div class="common-select-btn"><i class="el-icon-setting"></i></div>
                    <!-- <div class="common-select-btn"><i class="el-icon-setting"></i></div> -->
                  </div>
                </el-form-item>
              </el-col>
@@ -142,15 +143,16 @@
                      placeholder="请选择"
                      class="common-select-sel"
                      size="mini"
                      :disabled="cityOptions.length <= 0 ? true : false"
                    >
                      <el-option v-for="item in cityOptions" :key="item.id" :label="item.name" :value="item.id">
                      </el-option>
                    </el-select>
                    <div class="common-select-btn"><i class="el-icon-setting"></i></div>
                    <!-- <div class="common-select-btn"><i class="el-icon-setting"></i></div> -->
                  </div>
                </el-form-item>
              </el-col>
              <el-col :span="12">
              <!-- <el-col :span="12">
                <el-form-item label="区域" prop="region_id">
                  <div class="common-select">
                    <el-select
@@ -165,7 +167,7 @@
                    <div class="common-select-btn"><i class="el-icon-setting"></i></div>
                  </div>
                </el-form-item>
              </el-col>
              </el-col> -->
              <!-- <el-col :span="12">
                <el-form-item label="邮编" prop="postalCode">
                  <el-input v-model="editConfig.infomation.postalCode"></el-input>
@@ -242,6 +244,7 @@
import { getAddContact, getUpdateContact } from "@/api/client/contacts"
import { getAllData } from "@/api/client/client"
import SelectClientDialog from "@/views/other/commonDialog/SelectClientDialog"
import { getCityList } from "@/api/common/address"
export default {
  name: "AddContactsDialog",
  props: {
@@ -278,6 +281,14 @@
            message: "请输入正确的手机号",
            trigger: "blur"
          }
        ],
        email: [
          { required: false, message: "", trigger: "blur" },
          {
            pattern: /^[a-zA-Z0-9_\\.]+@[a-zA-Z0-9-]+[\\.a-zA-Z]+$/,
            message: "请输入正确的邮箱格式",
            trigger: "blur"
          }
        ]
      },
      businessSourceOptions: [
@@ -291,7 +302,7 @@
        { value: "8", label: "公司电话" }
      ],
      memberOptions: [],
      countryOptions: [], // 国家
      countryOptions: [{ id: 1, name: "中国" }], // 国家
      provinceOptions: [], // 省份
      cityOptions: [], // 城市
      regionOptions: [], // 区域
@@ -306,18 +317,26 @@
  },
  created() {
    this.$store.dispatch("geClient")
    if (this.editConfig.title !== "新建" && this.editConfig.infomation.province_id !== 0) {
      this.getCityList(this.editConfig.infomation.province_id, "edit")
    }
    this.getCommonData()
  },
  methods: {
    getCommonData() {
      this.editConfig.infomation.country_id = 1
      this.editConfig.infomation.province_id =
        this.editConfig.infomation.province_id === 0 ? "" : this.editConfig.infomation.province_id
      this.editConfig.infomation.city_id =
        this.editConfig.infomation.city_id === 0 ? "" : this.editConfig.infomation.city_id
      getAllData()
        .then((res) => {
          console.log(res)
          this.memberOptions = res.data.member
          this.countryOptions = res.data.country
          // this.countryOptions = res.data.country
          this.provinceOptions = res.data.province
          this.cityOptions = res.data.city
          this.regionOptions = res.data.region
          // this.cityOptions = res.data.city
          // this.regionOptions = res.data.region
        })
        .catch((err) => {
          console.log(err)
@@ -434,6 +453,21 @@
        this.unflodCollapseStr = "收起"
        this.isUnflod = true
      }
    },
    // 选择省份
    selProvinceChange(val) {
      this.getCityList(val, "sel")
    },
    async getCityList(val, value) {
      await getCityList({ province_id: val }).then((res) => {
        console.log(res)
        if (res.data.code === 200) {
          this.cityOptions = res.data.data.list
          if (value === "sel") {
            this.editConfig.infomation.city_id = ""
          }
        }
      })
    }
  }
}
src/views/client/contacts/DetailContacts.vue
@@ -42,7 +42,7 @@
                    <div class="content-data">{{ item.leftValue ? item.leftValue : "--" }}</div>
                  </div>
                  <div v-if="item.rightStr" class="right">
                    <div class="content-title">{{ item.rightStr }}</div>
                    <div class="content-title">{{ item.rightStr + ":" }}</div>
                    <div class="content-data">{{ item.rightValue ? item.rightValue : "--" }}</div>
                  </div>
                </li>
@@ -64,7 +64,7 @@
                    <div class="content-data">{{ item.leftValue ? item.leftValue : "--" }}</div>
                  </div>
                  <div v-if="item.rightStr" class="right">
                    <div class="content-title">{{ item.rightStr }}</div>
                    <div class="content-title">{{ item.rightStr + ":" }}</div>
                    <div class="content-data">{{ item.rightValue ? item.rightValue : "--" }}</div>
                  </div>
                </li>
@@ -90,7 +90,7 @@
            </div>
          </div>
          <!-- 附件信息 -->
          <div class="basic-info">
          <!-- <div class="basic-info">
            <div class="basic-info-label" @click="expandClick('annex')">
              <i v-if="isAnnexExpand" class="el-icon-arrow-down"></i>
              <i v-else class="el-icon-arrow-up"></i>
@@ -106,7 +106,7 @@
                </li>
              </ul>
            </div>
          </div>
          </div> -->
        </div>
        <div v-if="activeName === 'second'" class="second">
          <FollowupRecords :isDetail="true" :add-config="addConfig" />
@@ -186,7 +186,7 @@
          leftStr: "职务",
          leftValue: item.position,
          rightStr: "销售负责人",
          rightValue: item.member_id
          rightValue: item.member.username
        },
        {
          leftStr: "首要联系人",
@@ -216,19 +216,13 @@
      this.addressInfoList = [
        {
          leftStr: "国家",
          leftValue: item.Country.name,
          leftValue: "中国",
          rightStr: "省份",
          rightValue: item.Province.name
        },
        {
          leftStr: "城市",
          leftValue: item.City.name,
          rightStr: "区域",
          rightValue: item.Region.name
        },
        {
          leftStr: "邮编",
          leftValue: "",
          rightStr: "",
          rightValue: ""
        }
src/views/client/contacts/index.vue
@@ -57,6 +57,12 @@
    isDetail: {
      type: Boolean,
      default: false
    },
    addConfig: {
      type: Object,
      default: () => {
        return {}
      }
    }
  },
  mixins: [pageMixin],
@@ -113,7 +119,12 @@
  },
  created() {
    this.setTable()
    this.getData()
    if (!this.isDetail) {
      this.search_map = {}
    } else {
      this.search_map = { ...this.addConfig }
    }
    this.getData(this.search_map)
  },
  methods: {
    setTable() {
@@ -125,7 +136,7 @@
          { label: "联系人编号", prop: "number", min: 100 }, // 联系人编号
          { label: "职务", prop: "position", min: 120 }, // 职务
          { label: "手机", prop: "phone", min: 100 }, // 手机号码
          { label: "销售负责人", prop: "member_id", min: 120 }, // 销售负责人
          { label: "销售负责人", prop: "member_name", min: 120 }, // 销售负责人
          { label: "首要联系人", prop: "is_first", min: 90 } // 首要联系人
        ]
      }
@@ -153,7 +164,8 @@
                  ...item,
                  client_name: item.Client.name,
                  is_first: item.is_first ? "是" : "否",
                  client_id: item.Client.id
                  client_id: item.Client.id,
                  member_name: item.member.username
                }
              })
              this.tableList.tableInfomation = list || []
@@ -188,7 +200,7 @@
    addBtnClick() {
      this.editConfig.visible = true
      this.editConfig.title = "新建"
      this.editConfig.infomation = {}
      this.editConfig.infomation = { ...this.addConfig }
    },
    // 编辑
    handleClick(row) {
src/views/client/followupRecords/index.vue
@@ -57,10 +57,6 @@
      type: Boolean,
      default: false
    },
    followRecord: {
      type: Array,
      default: () => []
    },
    addConfig: {
      type: Object,
      default: () => {
src/views/client/salesLead/DetailSalesLead.vue
@@ -34,7 +34,7 @@
                    <div class="content-data">{{ item.leftValue ? item.leftValue : "--" }}</div>
                  </div>
                  <div v-if="item.rightStr && item.rightStr.length > 0" class="right">
                    <div class="content-title">{{ item.rightStr }}</div>
                    <div class="content-title">{{ item.rightStr + ":" }}</div>
                    <div class="content-data">{{ item.rightValue ? item.rightValue : "--" }}</div>
                  </div>
                </li>
@@ -56,7 +56,7 @@
                    <div class="content-data">{{ item.leftValue ? item.leftValue : "--" }}</div>
                  </div>
                  <div v-if="item.rightStr && item.rightStr.length > 0" class="right">
                    <div class="content-title">{{ item.rightStr }}</div>
                    <div class="content-title">{{ item.rightStr + ":" }}</div>
                    <div class="content-data">{{ item.rightValue ? item.rightValue : "--" }}</div>
                  </div>
                </li>
@@ -97,7 +97,7 @@
                <li>
                  <div class="left remark">
                    <div class="content-title">{{ "备注:" }}</div>
                    <div class="content-data">{{ detailConfig.desc }}</div>
                    <div class="content-data">{{ detailConfig.infomation.desc }}</div>
                  </div>
                </li>
              </ul>
@@ -181,9 +181,9 @@
        },
        {
          leftStr: "商机来源",
          leftValue: this.detailConfig.infomation.sales_sources_id,
          leftValue: this.detailConfig.infomation.sales_resources,
          rightStr: "负责人",
          rightValue: this.detailConfig.infomation.member_id
          rightValue: this.detailConfig.infomation.member_name
        },
        {
          leftStr: "分配日期",
src/views/client/salesLead/index.vue
@@ -136,10 +136,10 @@
          { label: "销售线索编号", prop: "number", min: 130 }, // 销售线索编号
          { label: "联系人姓名", prop: "contact_name", min: 130 }, // 联系人姓名
          { label: "手机号码", prop: "contact_phone", min: 130 }, // 手机号码
          { label: "商机来源", prop: "sales_sources_id", min: 130 }, // 商机来源
          { label: "商机来源", prop: "sales_resources", min: 130 }, // 商机来源
          { label: "省份", prop: "province", min: 130 }, // 省份
          { label: "城市", prop: "city", min: 130 }, // 城市
          { label: "负责人", prop: "member_id", min: 130 } // 负责人
          { label: "负责人", prop: "member_name", min: 130 } // 负责人
        ]
      }
      this.searchOptions = []
@@ -161,7 +161,9 @@
            return {
              ...item,
              province: item.Province.name,
              city: item.City.name
              city: item.City.name,
              sales_resources: item.sales_sources.name,
              member_name: item.member.username
            }
          })
          this.tableList.tableInfomation = list || []
src/views/sales/masterOrder/AddMasterOrderDialog.vue
@@ -60,13 +60,23 @@
              </el-col>
              <el-col :span="12">
                <el-form-item label="服务开始时间" prop="start_time">
                  <el-date-picker v-model="editConfig.infomation.start_time" type="date" placeholder="选择日期">
                  <el-date-picker
                    v-model="editConfig.infomation.start_time"
                    value-format="yyyy-MM-dd HH:mm:ss"
                    type="datetime"
                    placeholder="选择日期"
                  >
                  </el-date-picker>
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item label="服务截止时间" prop="end_time">
                  <el-date-picker v-model="editConfig.infomation.end_time" type="date" placeholder="选择日期">
                  <el-date-picker
                    v-model="editConfig.infomation.end_time"
                    value-format="yyyy-MM-dd HH:mm:ss"
                    type="datetime"
                    placeholder="选择日期"
                  >
                  </el-date-picker>
                </el-form-item>
              </el-col>
src/views/sales/masterOrder/DetailMasterOrder.vue
@@ -37,18 +37,18 @@
                <li v-for="(item, i) in basicInfoList" :key="i">
                  <div class="left">
                    <div class="content-title">{{ item.leftStr + ":" }}</div>
                    <div class="content-data">{{ item.leftValue }}</div>
                    <div class="content-data">{{ item.leftValue ? item.leftValue : "--" }}</div>
                  </div>
                  <div class="right">
                    <div class="content-title">{{ item.rightStr }}</div>
                    <div class="content-data">{{ item.rightValue }}</div>
                    <div class="content-title">{{ item.rightStr + ":" }}</div>
                    <div class="content-data">{{ item.rightValue ? item.rightValue : "--" }}</div>
                  </div>
                </li>
              </ul>
            </div>
          </div>
          <!-- 附件信息 -->
          <div class="basic-info">
          <!-- <div class="basic-info">
            <div class="basic-info-label" @click="expandClick('annex')">
              <i v-if="isAnnexExpand" class="el-icon-arrow-down"></i>
              <i v-else class="el-icon-arrow-up"></i>
@@ -64,7 +64,7 @@
                </li>
              </ul>
            </div>
          </div>
          </div> -->
        </div>
        <div v-if="activeName === 'sub'" class="second">
          <SubOrder :isDetail="true" />
@@ -101,21 +101,21 @@
    }
  },
  created() {
    this.setData()
    this.setData(this.detailConfig.infomation)
  },
  mounted() {},
  methods: {
    setData() {
    setData(item) {
      this.basicInfoList = [
        {
          leftStr: "客户名称",
          leftValue: "",
          leftValue: item.client_name,
          rightStr: "单据编号",
          rightValue: ""
          rightValue: item.number
        },
        {
          leftStr: "负责人",
          leftValue: "",
          leftValue: item.member_name,
          rightStr: "创建人",
          rightValue: ""
        },
@@ -128,26 +128,26 @@
        {
          leftStr: "更新时间",
          leftValue: "",
          rightStr: "审批状态",
          rightValue: ""
        },
        {
          leftStr: "最新审批时间",
          leftValue: "",
          rightStr: "上一步审批人",
          rightValue: ""
        },
        {
          leftStr: "当前审批人",
          leftValue: "",
          rightStr: "服务开始时间",
          rightValue: ""
          rightValue: item.start_time
        },
        // {
        //   leftStr: "审批状态",
        //   leftValue: "",
        //   rightStr: "最新审批时间",
        //   rightValue: ""
        // },
        // {
        //   leftStr: "上一步审批人",
        //   leftValue: "",
        //   rightStr: "当前审批人",
        //   rightValue: ""
        // },
        {
          leftStr: "服务截止时间",
          leftValue: "",
          rightStr: "",
          rightValue: ""
          leftValue: item.end_time,
          rightStr: "合同金额",
          rightValue: item.money
        }
      ]
    },
src/views/sales/masterOrder/index.vue
@@ -11,6 +11,7 @@
        :search-options="searchOptions"
        @searchClick="searchClick"
        @resetClick="resetClick"
        :search-sel="searchSel"
      />
      <div class="btn-pager">
        <PublicFunctionBtnView :operates-list="operatesList" @batchDelete="delClick" />
@@ -56,6 +57,12 @@
    isDetail: {
      type: Boolean,
      default: false
    },
    addConfig: {
      type: Object,
      default: () => {
        return {}
      }
    }
  },
  mixins: [pageMixin],
@@ -106,12 +113,21 @@
        infomation: {}
      },
      selValueList: [],
      search_map: {}
      search_map: {},
      searchSel: {
        value: "number",
        label: "单据编号"
      }
    }
  },
  created() {
    this.setTable()
    this.getData()
    if (!this.isDetail) {
      this.search_map = {}
    } else {
      this.search_map = { ...this.addConfig }
    }
    this.getData(this.search_map)
  },
  methods: {
    setTable() {
@@ -123,14 +139,15 @@
          { label: "服务开始时间", prop: "start_time", isTime: true }, // 服务开始时间
          { label: "服务截止时间", prop: "end_time", isTime: true }, // 服务截止时间
          { label: "合同金额", prop: "money" }, // 合同金额
          { label: "负责人", prop: "member_id" } // 负责人
          { label: "负责人", prop: "member_name" } // 负责人
          // { label: "审批状态", prop: "approvalStatus" } // 审批状态
        ]
      }
      this.searchOptions = []
      for (let i = 0; i < this.tableList.tableColumn.length; i++) {
        const label = this.tableList.tableColumn[i].label
        this.searchOptions.push({ value: (i + 1).toString(), label: label })
        const value = this.tableList.tableColumn[i].prop
        this.searchOptions.push({ value: value, label: label })
      }
    },
    // 请求数据
@@ -148,7 +165,8 @@
              const list = res.data.list.map((item) => {
                return {
                  ...item,
                  client_name: item.client.name
                  client_name: item.client.name,
                  member_name: item.member.username
                }
              })
              this.tableList.tableInfomation = list || []
@@ -183,7 +201,7 @@
    addBtnClick() {
      this.editConfig.visible = true
      this.editConfig.title = "新建"
      this.editConfig.infomation = {}
      this.editConfig.infomation = { ...this.addConfig }
    },
    // 编辑
    handleClick(row) {
@@ -227,7 +245,13 @@
    selClientClick(row) {
      console.log(row)
      this.clientDeail.visible = true
      this.clientDeail.infomation = { ...row }
      this.clientDeail.infomation = {
        ...row.client,
        client_name: row.client.name,
        client_level: row.client.client_level.name,
        client_status: row.client.client_status.name,
        contact_name: row.name
      }
    },
    // 机会名称详情
    selCommonClick(row) {
src/views/sales/quotation/AddQuotationDialog.vue
@@ -68,7 +68,7 @@
                      </el-option>
                    </el-select>
                    <!-- @click="editDropdownBox" -->
                    <div class="common-select-btn"><i class="el-icon-setting"></i></div>
                    <!-- <div class="common-select-btn"><i class="el-icon-setting"></i></div> -->
                  </div>
                </el-form-item>
              </el-col>
@@ -119,11 +119,24 @@
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item label="销售机会" prop="sale_chance_id">
                <el-form-item label="销售机会" prop="sale_chance_name">
                  <div class="custom-name">
                    <el-input v-model="editConfig.infomation.sale_chance_id"></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>
                    <el-autocomplete
                      v-model="editConfig.infomation.sale_chance_name"
                      :fetch-suggestions="
                        (queryString, callback) => {
                          querySearchAsync(queryString, callback, 'chance')
                        }
                      "
                      value-key="name"
                      @select="handleSelectClient('chance', $event)"
                    ></el-autocomplete>
                    <div class="common-select-btn" @click="selClientClick('chance')">
                      <i class="el-icon-circle-plus-outline"></i>
                    </div>
                    <div class="common-select-btn" @click="clearupClient('chance')">
                      <i class="el-icon-edit-outline"></i>
                    </div>
                  </div>
                </el-form-item>
              </el-col>
@@ -243,6 +256,12 @@
        :edit-common-config="editSelectContactConfig"
        @selClient="selClient"
      />
      <!-- 选择销售机会 -->
      <SelectChanceDialog
        v-if="editSelectChanceConfig.editVisible"
        :edit-common-config="editSelectChanceConfig"
        @selClient="selClient"
      />
    </el-dialog>
  </div>
</template>
@@ -253,6 +272,7 @@
import { getAddQuotation, getUpdateQuotation } from "@/api/sales/quotation"
import SelectClientDialog from "@/views/other/commonDialog/SelectClientDialog"
import SelectContactDialog from "@/views/other/commonDialog/SelectContactDialog"
import SelectChanceDialog from "@/views/other/commonDialog/SelectChanceDialog"
export default {
  name: "QuotationDialog",
  props: {
@@ -267,7 +287,7 @@
      }
    }
  },
  components: { SelectClientDialog, SelectContactDialog },
  components: { SelectClientDialog, SelectContactDialog, SelectChanceDialog },
  computed: {
    searchCommonHeight() {
      return this.$refs.searchCommonView.offsetHeight
@@ -277,6 +297,9 @@
    },
    contactNamelist() {
      return this.$store.state.getClientName.contactNamelist
    },
    saleChancelist() {
      return this.$store.state.getClientName.saleChancelist
    }
  },
  data() {
@@ -310,13 +333,20 @@
        title: "",
        infomation: {}
      },
      editSelectChanceConfig: {
        editVisible: false,
        title: "",
        infomation: {}
      },
      clientId: this.editCommonConfig.infomation.client_id,
      contactId: this.editCommonConfig.infomation.contact_id
      contactId: this.editCommonConfig.infomation.contact_id,
      saleChanceId: this.editCommonConfig.infomation.sale_chance_id
    }
  },
  created() {
    this.$store.dispatch("geClient")
    this.$store.dispatch("geContact")
    this.$store.dispatch("geChance")
    this.setTableForm()
    this.getCommonData()
  },
@@ -326,10 +356,18 @@
        .then((res) => {
          this.memberOptions = res.data.member
          this.quotationStatusOptions = res.data.quotationStatus
          this.dataProcess()
        })
        .catch((err) => {
          console.log(err)
        })
    },
    dataProcess() {
      this.saleChancelist.map((item) => {
        if (this.saleChanceId === item.id) {
          this.editConfig.infomation.sale_chance_name = item.name
        }
      })
    },
    // 保存
    saveClick(formName) {
@@ -381,14 +419,14 @@
      let data = this.editConfig.infomation
      let params = {
        id: this.editConfig.title === "新建" ? 0 : data.id,
        client_id: parseInt(this.clientId) || 0,
        client_id: this.clientId || 0,
        conditions: data.conditions || "",
        contact_id: parseInt(this.contactId) || 0,
        contact_id: this.contactId || 0,
        file: data.file || "",
        member_id: data.member_id || 0,
        number: data.number || "",
        quotation_status_id: data.quotation_status_id || 0,
        sale_chance_id: data.sale_chance_id || 0,
        sale_chance_id: this.saleChanceId || 0,
        validity_date: data.validity_date || ""
      }
      return params
@@ -403,6 +441,8 @@
        restaurants = this.clientList
      } else if (value === "contact") {
        restaurants = this.contactNamelist
      } else if (value === "chance") {
        restaurants = this.saleChancelist
      }
      var results = queryString ? restaurants.filter(this.createStateFilter(queryString)) : restaurants
      cb(results)
@@ -416,6 +456,8 @@
      console.log(value)
      if (value === "client") {
        this.clientId = item.id
      } else if (value === "chance") {
        this.saleChanceId = item.id
      } else {
        this.contactId = item.id
      }
@@ -425,6 +467,8 @@
        this.editSelectClientConfig.editVisible = true
      } else if (value === "contact") {
        this.editSelectContactConfig.editVisible = true
      } else if (value === "chance") {
        this.editSelectChanceConfig.editVisible = true
      }
    },
    selClient(row, value) {
@@ -432,6 +476,9 @@
      if (value === "contact") {
        this.editConfig.infomation.contact_name = row.name
        this.contactId = row.id
      } else if (value === "chance") {
        this.editConfig.infomation.sale_chance_name = row.name
        this.saleChanceId = row.id
      } else {
        this.editConfig.infomation.client_name = row.name
        this.clientId = row.id
@@ -442,6 +489,9 @@
      if (value === "client") {
        this.editConfig.infomation.client_name = ""
        this.clientId = 0
      } else if (value === "chance") {
        this.editConfig.infomation.sale_chance_name = ""
        this.saleChanceId = 0
      } else {
        this.editConfig.infomation.contact_name = ""
        this.contactId = 0
src/views/sales/quotation/DetailQuotation.vue
@@ -29,14 +29,14 @@
        </div>
        <div v-if="activeName === 'first'" class="detail">
          <!-- 标签 -->
          <div class="basic-info">
          <!-- <div class="basic-info">
            <div class="basic-info-label" @click="expandClick('label')">
              <i v-if="isLabelExpand" class="el-icon-arrow-down"></i>
              <i v-else class="el-icon-arrow-up"></i>
              <span style="margin-left: 10px">标签</span>
            </div>
            <div v-show="isLabelExpand" class="basic-info-content"></div>
          </div>
          </div> -->
          <!-- 基本信息 -->
          <div class="basic-info">
            <div class="basic-info-label" @click="expandClick('basic')">
@@ -49,11 +49,11 @@
                <li v-for="(item, i) in basicInfoList" :key="i">
                  <div class="left">
                    <div class="content-title">{{ item.leftStr + ":" }}</div>
                    <div class="content-data">{{ item.leftValue }}</div>
                    <div class="content-data">{{ item.leftValue ? item.leftValue : "--" }}</div>
                  </div>
                  <div class="right">
                    <div class="content-title">{{ item.rightStr }}</div>
                    <div class="content-data">{{ item.rightValue }}</div>
                    <div class="content-title">{{ item.rightStr + ":" }}</div>
                    <div class="content-data">{{ item.rightValue ? item.rightValue : "--" }}</div>
                  </div>
                </li>
              </ul>
@@ -70,15 +70,16 @@
              <div class="termsConditions">
                <div class="content-title">{{ "条件与条款" + ":" }}</div>
                <div class="content-termsConditions">
                  <ul>
                  {{ "\n" + detailConfig.infomation.conditions }}
                  <!-- <ul>
                    <li v-for="(item, index) in Status.termsConditions" :key="index">{{ item }}</li>
                  </ul>
                  </ul> -->
                </div>
              </div>
            </div>
          </div>
          <!-- 附件信息 -->
          <div class="basic-info">
          <!-- <div class="basic-info">
            <div class="basic-info-label" @click="expandClick('annex')">
              <i v-if="isAnnexExpand" class="el-icon-arrow-down"></i>
              <i v-else class="el-icon-arrow-up"></i>
@@ -94,7 +95,7 @@
                </li>
              </ul>
            </div>
          </div>
          </div> -->
          <!-- 产品管理 -->
          <div class="basic-info">
            <div class="basic-info-label" @click="expandClick('product')">
@@ -177,170 +178,36 @@
    }
  },
  created() {
    this.setData()
    this.setData(this.detailConfig.infomation)
    this.setTableForm()
  },
  mounted() {},
  methods: {
    setData() {
    setData(item) {
      this.basicInfoList = [
        {
          leftStr: "客户名称",
          leftValue: "",
          rightStr: "销售机会编号",
          rightValue: ""
          leftValue: item.client_name,
          rightStr: "报价编号",
          rightValue: item.number
        },
        {
          leftStr: "机会名称",
          leftValue: "",
          leftStr: "报价单状态",
          leftValue: item.quotation_status_id,
          rightStr: "联系人姓名",
          rightValue: ""
          rightValue: item.contact_name
        },
        {
          leftStr: "商机来源",
          leftValue: "",
          rightStr: "商机类型",
          rightValue: ""
        },
        {
          leftStr: "销售阶段",
          leftValue: "",
          leftStr: "有效期至",
          leftValue: item.validity_date,
          rightStr: "销售负责人",
          rightValue: ""
          rightValue: item.member_id
        },
        {
          leftStr: "老客户营销",
          leftValue: "",
          rightStr: "签到",
          rightValue: ""
        },
        {
          leftStr: "审批状态",
          leftValue: "",
          rightStr: "竞争对手",
          rightValue: ""
        },
        {
          leftStr: "创建人",
          leftValue: "",
          leftStr: "销售机会",
          leftValue: item.sale_chance.name,
          rightStr: "创建时间",
          rightValue: ""
        }
      ]
      this.forecastList = [
        {
          leftStr: "可能性(%)",
          leftValue: "",
          rightStr: "币种",
          rightValue: ""
        },
        {
          leftStr: "预算绝对值",
          leftValue: "",
          rightStr: "预计成交日期",
          rightValue: ""
        },
        {
          leftStr: "预计合同金额",
          leftValue: "",
          rightStr: "当前状态",
          rightValue: ""
        }
      ]
      this.dynamicInfoList = [
        {
          leftStr: "未联系天数",
          leftValue: "",
          rightStr: "最新联系日期",
          rightValue: ""
        },
        {
          leftStr: "未推荐天数",
          leftValue: "",
          rightStr: "最新推进时间",
          rightValue: ""
        },
        {
          leftStr: "最新联系人",
          leftValue: "",
          rightStr: "最新更新时间",
          rightValue: ""
        }
      ]
      this.businessInfoList = [
        {
          leftStr: "客户需求或痛点(why)",
          leftValue: ""
        },
        {
          leftStr: "是否已经立项(plan)",
          leftValue: ""
        },
        {
          leftStr: "资金预算是多少(plan)",
          leftValue: ""
        },
        {
          leftStr: "关键决策人是谁(who)",
          leftValue: ""
        },
        {
          leftStr: "关键决策因素有哪些(what)",
          leftValue: ""
        },
        {
          leftStr: "决策流程是怎样的(what)",
          leftValue: ""
        },
        {
          leftStr: "竞争对手提供的方案(what)",
          leftValue: ""
        }
      ]
      this.swotInfoList = [
        {
          leftStr: "优势(S)",
          leftValue: "",
          rightStr: "劣势(W)",
          rightValue: ""
        },
        {
          leftStr: "机会(O)",
          leftValue: "",
          rightStr: "威胁(T)",
          rightValue: ""
        }
      ]
      this.addressInfoList = [
        {
          leftStr: "国家",
          leftValue: "",
          rightStr: "省份",
          rightValue: ""
        },
        {
          leftStr: "城市",
          leftValue: "",
          rightStr: "区域",
          rightValue: ""
        },
        {
          leftStr: "详细地址",
          leftValue: "",
          rightStr: "",
          rightValue: ""
        }
      ]
      this.historyList = [
        {
          date: "2023-08-04 13:22:36",
          stage: "成功结案",
          modify: "系统管理员"
        },
        {
          date: "2023-08-04 13:22:36",
          stage: "成功结案",
          modify: "系统管理员"
        }
      ]
    },
@@ -559,6 +426,7 @@
              align-items: center;
              font-size: 14px;
              font-family: PingFangSC;
              min-height: 40px;
              // padding: 5px 0;
              .content-title {
                width: 320px;
@@ -566,13 +434,14 @@
                color: #555;
              }
              .content-termsConditions {
                margin-left: 25px;
                margin: 0px 25px 15px;
                font-size: 13px;
                color: #333;
                li {
                  margin: 5px 0;
                  border-bottom: 0px solid #f9f9fb;
                }
                white-space: pre-wrap;
                // li {
                //   margin: 5px 0;
                //   border-bottom: 0px solid #f9f9fb;
                // }
              }
            }
          }
src/views/sales/quotation/index.vue
@@ -12,6 +12,7 @@
        :search-options="searchOptions"
        @searchClick="searchClick"
        @resetClick="resetClick"
        :search-sel="searchSel"
      />
      <div class="btn-pager">
        <PublicFunctionBtnView :submit-approval="true" :operates-list="operatesList" @batchDelete="delClick" />
@@ -59,6 +60,12 @@
    isDetail: {
      type: Boolean,
      default: false
    },
    addConfig: {
      type: Object,
      default: () => {
        return {}
      }
    }
  },
  mixins: [pageMixin],
@@ -68,11 +75,7 @@
    DetailContacts: () => import("@/views/client/contacts/DetailContacts"),
    DetailClientManage: () => import("@/views/client/client/DetailClientManage")
  },
  computed: {
    searchCommonHeight() {
      return this.$refs.searchCommonView.offsetHeight
    }
  },
  computed: {},
  data() {
    return {
      tableList: {},
@@ -111,12 +114,21 @@
        infomation: {}
      },
      selValueList: [],
      search_map: {}
      search_map: {},
      searchSel: {
        value: "number",
        label: "报价单号"
      }
    }
  },
  created() {
    this.setTable()
    this.getData()
    if (!this.isDetail) {
      this.search_map = {}
    } else {
      this.search_map = { ...this.addConfig }
    }
    this.getData(this.search_map)
  },
  methods: {
    setTable() {
@@ -126,19 +138,20 @@
          { label: "报价单号", prop: "number", min: 90, isCommonClick: true }, // 报价单号
          { label: "客户名称", prop: "client_name", min: 120, isClientClick: true }, // 客户名称
          { label: "联系人姓名", prop: "contact_name", min: 90, isContactClick: true }, // 联系人姓名
          { label: "销售负责人", prop: "member_id" }, // 销售负责人
          { label: "销售负责人", prop: "member_name" }, // 销售负责人
          { label: "有效期", prop: "validity_date", min: 100 }, // 修改时间
          { label: "小计", prop: "subTotal" }, // 小计
          { label: "合计", prop: "total" }, // 合计
          { label: "产品名称", prop: "productName" }, // 产品名称
          { label: "数量", prop: "number" }, // 数量
          { label: "数量", prop: "number1" }, // 数量
          { label: "价税合计", prop: "priceTax" } // 价税合计
        ]
      }
      this.searchOptions = []
      for (let i = 0; i < this.tableList.tableColumn.length; i++) {
        const label = this.tableList.tableColumn[i].label
        this.searchOptions.push({ value: (i + 1).toString(), label: label })
        const value = this.tableList.tableColumn[i].prop
        this.searchOptions.push({ value: value, label: label })
      }
    },
    // 请求数据
@@ -158,6 +171,7 @@
                  ...item,
                  client_name: item.client.name,
                  contact_name: item.contact.name
                  // member_name: item.member.username
                }
              })
              this.tableList.tableInfomation = list || []
@@ -192,7 +206,7 @@
    addBtnClick() {
      this.editConfig.visible = true
      this.editConfig.title = "新建"
      this.editConfig.infomation = {}
      this.editConfig.infomation = { ...this.addConfig }
    },
    // 编辑
    handleClick(row) {
src/views/sales/salesDetails/index.vue
@@ -56,6 +56,12 @@
    isDetail: {
      type: Boolean,
      default: false
    },
    addConfig: {
      type: Object,
      default: () => {
        return {}
      }
    }
  },
  mixins: [pageMixin],
@@ -123,7 +129,12 @@
  },
  created() {
    this.setTable()
    this.getData()
    if (!this.isDetail) {
      this.search_map = {}
    } else {
      this.search_map = { ...this.addConfig }
    }
    this.getData(this.search_map)
  },
  methods: {
    setTable() {
@@ -203,7 +214,7 @@
    addBtnClick() {
      this.editConfig.visible = true
      this.editConfig.title = "新建"
      this.editConfig.infomation = {}
      this.editConfig.infomation = { ...this.addConfig }
    },
    // 编辑
    handleClick(row) {
src/views/sales/salesOpportunity/DetailOpportunity.vue
@@ -67,11 +67,11 @@
                <li v-for="(item, i) in basicInfoList" :key="i">
                  <div class="left">
                    <div class="content-title">{{ item.leftStr + ":" }}</div>
                    <div class="content-data">{{ item.leftValue }}</div>
                    <div class="content-data">{{ item.leftValue ? item.leftValue : "--" }}</div>
                  </div>
                  <div class="right">
                    <div class="content-title">{{ item.rightStr }}</div>
                    <div class="content-data">{{ item.rightValue }}</div>
                  <div v-if="item.rightStr" class="right">
                    <div class="content-title">{{ item.rightStr + ":" }}</div>
                    <div class="content-data">{{ item.rightValue ? item.rightValue : "--" }}</div>
                  </div>
                </li>
              </ul>
@@ -89,11 +89,11 @@
                <li v-for="(item, i) in forecastList" :key="i">
                  <div class="left">
                    <div class="content-title">{{ item.leftStr + ":" }}</div>
                    <div class="content-data">{{ item.leftValue }}</div>
                    <div class="content-data">{{ item.leftValue ? item.leftValue : "--" }}</div>
                  </div>
                  <div class="right">
                    <div class="content-title">{{ item.rightStr }}</div>
                    <div class="content-data">{{ item.rightValue }}</div>
                  <div v-if="item.rightStr" class="right">
                    <div class="content-title">{{ item.rightStr + ":" }}</div>
                    <div class="content-data">{{ item.rightValue ? item.rightValue : "--" }}</div>
                  </div>
                </li>
              </ul>
@@ -111,11 +111,11 @@
                <li v-for="(item, i) in dynamicInfoList" :key="i">
                  <div class="left">
                    <div class="content-title">{{ item.leftStr + ":" }}</div>
                    <div class="content-data">{{ item.leftValue }}</div>
                    <div class="content-data">{{ item.leftValue ? item.leftValue : "--" }}</div>
                  </div>
                  <div class="right">
                    <div class="content-title">{{ item.rightStr }}</div>
                    <div class="content-data">{{ item.rightValue }}</div>
                  <div v-if="item.rightStr" class="right">
                    <div class="content-title">{{ item.rightStr + ":" }}</div>
                    <div class="content-data">{{ item.rightValue ? item.rightValue : "--" }}</div>
                  </div>
                </li>
              </ul>
@@ -153,8 +153,8 @@
                    <div class="content-title">{{ item.leftStr + ":" }}</div>
                    <div class="content-data">{{ item.leftValue }}</div>
                  </div>
                  <div class="right">
                    <div class="content-title">{{ item.rightStr }}</div>
                  <div v-if="item.rightStr" class="right">
                    <div class="content-title">{{ item.rightStr + ":" }}</div>
                    <div class="content-data">{{ item.rightValue }}</div>
                  </div>
                </li>
@@ -175,8 +175,8 @@
                    <div class="content-title">{{ item.leftStr + ":" }}</div>
                    <div class="content-data">{{ item.leftValue ? item.leftValue : "--" }}</div>
                  </div>
                  <div class="right">
                    <div class="content-title">{{ item.rightStr }}</div>
                  <div v-if="item.rightStr" class="right">
                    <div class="content-title">{{ item.rightStr + ":" }}</div>
                    <div class="content-data">{{ item.rightValue ? item.rightValue : "--" }}</div>
                  </div>
                </li>
@@ -195,14 +195,14 @@
                <li>
                  <div class="left remark">
                    <div class="content-title">{{ "备注:" }}</div>
                    <div class="content-data">{{ "备注内容" }}</div>
                    <div class="content-data">{{ detailConfig.infomation.remark }}</div>
                  </div>
                </li>
              </ul>
            </div>
          </div>
          <!-- 附件信息 -->
          <div class="basic-info">
          <!-- <div class="basic-info">
            <div class="basic-info-label" @click="expandClick('annex')">
              <i v-if="isAnnexExpand" class="el-icon-arrow-down"></i>
              <i v-else class="el-icon-arrow-up"></i>
@@ -218,7 +218,7 @@
                </li>
              </ul>
            </div>
          </div>
          </div> -->
          <!-- 销售机会阶段推进历史 -->
          <!-- <div class="basic-info">
            <div class="basic-info-label" @click="expandClick('history')">
src/views/sales/salesOpportunity/index.vue
@@ -64,6 +64,12 @@
    isDetail: {
      type: Boolean,
      default: false
    },
    addConfig: {
      type: Object,
      default: () => {
        return {}
      }
    }
  },
  mixins: [pageMixin],
@@ -73,11 +79,7 @@
    DetailContacts: () => import("@/views/client/contacts/DetailContacts"),
    DetailClientManage: () => import("@/views/client/client/DetailClientManage")
  },
  computed: {
    searchCommonHeight() {
      return this.$refs.searchCommonView.offsetHeight
    }
  },
  computed: {},
  data() {
    return {
      tableList: {},
@@ -130,7 +132,12 @@
  },
  created() {
    this.setTable()
    this.getData()
    if (!this.isDetail) {
      this.search_map = {}
    } else {
      this.search_map = { ...this.addConfig }
    }
    this.getData(this.search_map)
  },
  methods: {
    setTable() {
@@ -208,7 +215,7 @@
    addBtnClick() {
      this.editConfig.visible = true
      this.editConfig.title = "新建"
      this.editConfig.infomation = { city_id: 0 }
      this.editConfig.infomation = { city_id: 0, ...this.addConfig }
    },
    // 编辑
    handleClick(row) {
src/views/sales/subOrder/AddSubOrderDialog.vue
@@ -87,7 +87,7 @@
            </el-row>
          </div>
          <!-- 附件信息 -->
          <div class="basic-info-title">附件信息</div>
          <!-- <div class="basic-info-title">附件信息</div>
          <div class="basic-info-view">
            <el-row>
              <el-col :span="12">
@@ -112,7 +112,7 @@
                </el-form-item>
              </el-col>
            </el-row>
          </div>
          </div> -->
          <!-- 产品管理 -->
          <div class="basic-info-title" style="display: flex">
            产品管理
src/views/sales/subOrder/index.vue
@@ -11,6 +11,7 @@
        :search-options="searchOptions"
        @searchClick="searchClick"
        @resetClick="resetClick"
        :search-sel="searchSel"
      />
      <div class="btn-pager">
        <PublicFunctionBtnView :operates-list="operatesList" @batchDelete="delClick" />
@@ -59,6 +60,12 @@
    isDetail: {
      type: Boolean,
      default: false
    },
    addConfig: {
      type: Object,
      default: () => {
        return {}
      }
    }
  },
  mixins: [pageMixin],
@@ -102,8 +109,8 @@
      },
      showSummary: {
        show: true,
        sumProp: ["number"],
        mergeNumber: 7
        sumProp: ["number1"],
        mergeNumber: 6
      },
      subOrderDeail: {
        visible: false,
@@ -118,12 +125,21 @@
        infomation: {}
      },
      selValueList: [],
      search_map: {}
      search_map: {},
      searchSel: {
        value: "number",
        label: "单据编号"
      }
    }
  },
  created() {
    this.setTable()
    this.getData()
    if (!this.isDetail) {
      this.search_map = {}
    } else {
      this.search_map = { ...this.addConfig }
    }
    this.getData(this.search_map)
  },
  methods: {
    setTable() {
@@ -132,9 +148,9 @@
        tableColumn: [
          { label: "单据编号", prop: "number", min: 120, isCommonClick: true }, // 单据编号
          { label: "客户名称", prop: "client_name", min: 120, isClientClick: true }, // 客户名称
          { label: "销售总单", prop: "masterOrderId", min: 90, isMasterClick: true }, // 销售总单
          { label: "负责人", prop: "memberId" }, // 负责人
          { label: "审批状态", prop: "approvalStatus" }, // 审批状态
          { label: "销售总单", prop: "master_order_number", min: 90, isMasterClick: true }, // 销售总单
          { label: "负责人", prop: "member_name" }, // 负责人
          // { label: "审批状态", prop: "approvalStatus" }, // 审批状态
          { label: "产品名称", prop: "productName" }, // 产品名称
          { label: "数量", prop: "number1", min: 100 } // 数量
        ]
@@ -142,7 +158,8 @@
      this.searchOptions = []
      for (let i = 0; i < this.tableList.tableColumn.length; i++) {
        const label = this.tableList.tableColumn[i].label
        this.searchOptions.push({ value: (i + 1).toString(), label: label })
        const value = this.tableList.tableColumn[i].prop
        this.searchOptions.push({ value: value, label: label })
      }
    },
    // 请求数据
@@ -160,7 +177,9 @@
              const list = res.data.list.map((item) => {
                return {
                  ...item,
                  client_name: item.client.name
                  client_name: item.client.name,
                  master_order_number: item.masterOrder.number,
                  member_name: item.member.username
                }
              })
              this.tableList.tableInfomation = list || []
@@ -195,7 +214,7 @@
    addBtnClick() {
      this.editConfig.visible = true
      this.editConfig.title = "新建"
      this.editConfig.infomation = {}
      this.editConfig.infomation = { ...this.addConfig }
    },
    // 编辑
    handleClick(row) {
src/views/service/clientServiceOrder/DetailClientServiceOrder.vue
@@ -41,7 +41,7 @@
                    <div class="content-data">{{ item.leftValue ? item.leftValue : "--" }}</div>
                  </div>
                  <div v-if="item.rightStr" class="right">
                    <div class="content-title">{{ item.rightStr }}</div>
                    <div class="content-title">{{ item.rightStr + ":" }}</div>
                    <div class="content-data">{{ item.rightValue ? item.rightValue : "--" }}</div>
                  </div>
                </li>
@@ -63,7 +63,7 @@
                    <div class="content-data">{{ item.leftValue ? item.leftValue : "--" }}</div>
                  </div>
                  <div v-if="item.rightStr" class="right">
                    <div class="content-title">{{ item.rightStr }}</div>
                    <div class="content-title">{{ item.rightStr + ":" }}</div>
                    <div class="content-data">{{ item.rightValue ? item.rightValue : "--" }}</div>
                  </div>
                </li>
@@ -85,7 +85,7 @@
                    <div class="content-data">{{ item.leftValue ? item.leftValue : "--" }}</div>
                  </div>
                  <div v-if="item.rightStr" class="right">
                    <div class="content-title">{{ item.rightStr }}</div>
                    <div class="content-title">{{ item.rightStr + ":" }}</div>
                    <div class="content-data">{{ item.rightValue ? item.rightValue : "--" }}</div>
                  </div>
                </li>
@@ -183,7 +183,7 @@
            </div>
          </div>
          <!-- 附件信息 -->
          <div class="basic-info">
          <!-- <div class="basic-info">
            <div class="basic-info-label" @click="expandClick('annex')">
              <i v-if="isAnnexExpand" class="el-icon-arrow-down"></i>
              <i v-else class="el-icon-arrow-up"></i>
@@ -199,7 +199,7 @@
                </li>
              </ul>
            </div>
          </div>
          </div> -->
          <!-- 签字确认 -->
          <div class="basic-info">
            <div class="basic-info-label" @click="expandClick('signConfim')">
src/views/service/serviceContract/DetailServiceContract.vue
@@ -43,7 +43,7 @@
                    <div class="content-data">{{ item.leftValue ? item.leftValue : "--" }}</div>
                  </div>
                  <div v-if="item.rightStr" class="right">
                    <div class="content-title">{{ item.rightStr }}</div>
                    <div class="content-title">{{ item.rightStr + ":" }}</div>
                    <div class="content-data">{{ item.rightValue ? item.rightValue : "--" }}</div>
                  </div>
                </li>
@@ -65,7 +65,7 @@
                    <div class="content-data">{{ item.leftValue ? item.leftValue : "--" }}</div>
                  </div>
                  <div v-if="item.rightStr" class="right">
                    <div class="content-title">{{ item.rightStr }}</div>
                    <div class="content-title">{{ item.rightStr + ":" }}</div>
                    <div class="content-data">{{ item.rightValue ? item.rightValue : "--" }}</div>
                  </div>
                </li>
@@ -110,7 +110,7 @@
            </div>
          </div>
          <!-- 附件信息 -->
          <div class="basic-info">
          <!-- <div class="basic-info">
            <div class="basic-info-label" @click="expandClick('annex')">
              <i v-if="isAnnexExpand" class="el-icon-arrow-down"></i>
              <i v-else class="el-icon-arrow-up"></i>
@@ -126,7 +126,7 @@
                </li>
              </ul>
            </div>
          </div>
          </div> -->
          <!-- 产品管理 -->
          <div class="basic-info">
            <div class="basic-info-label" @click="expandClick('product')">
@@ -495,6 +495,7 @@
              align-items: center;
              font-size: 14px;
              font-family: PingFangSC;
              min-height: 40px;
              // padding: 5px 0;
              .content-title {
                width: 320px;
src/views/service/serviceFollowup/DetailServiceFollowup.vue
@@ -40,7 +40,7 @@
                    <div class="content-data">{{ item.leftValue ? item.leftValue : "--" }}</div>
                  </div>
                  <div v-if="item.rightStr" class="right">
                    <div class="content-title">{{ item.rightStr }}</div>
                    <div class="content-title">{{ item.rightStr + ":" }}</div>
                    <div class="content-data">{{ item.rightValue ? item.rightValue : "--" }}</div>
                  </div>
                </li>
@@ -66,7 +66,7 @@
            </div>
          </div>
          <!-- 附件信息 -->
          <div class="basic-info">
          <!-- <div class="basic-info">
            <div class="basic-info-label" @click="expandClick('annex')">
              <i v-if="isAnnexExpand" class="el-icon-arrow-down"></i>
              <i v-else class="el-icon-arrow-up"></i>
@@ -82,7 +82,7 @@
                </li>
              </ul>
            </div>
          </div>
          </div> -->
        </div>
        <div v-if="activeName === 'annex'" class="second">
          <!-- <SubOrder :isDetail="true" /> -->