yangfeng
2023-08-18 96fdf32bd5612b6c16dcbcc8352a9f54adcc8e7e
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">
@@ -44,11 +44,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>
@@ -66,11 +66,11 @@
                <li v-for="(item, i) in contactList" :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>
@@ -88,11 +88,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>
@@ -110,14 +110,18 @@
                <li v-for="(item, i) in businessInfoList" :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>
              <div class="business_scope">
                <div class="content-title">{{ "经营范围:" }}</div>
                <div class="content-data">{{ detailConfig.infomation.business_scope }}</div>
              </div>
            </div>
          </div>
          <!-- 地址信息 -->
@@ -132,14 +136,18 @@
                <li v-for="(item, i) in addressInfoList" :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>
              <div class="business_scope">
                <div class="content-title">{{ "地址信息" }}</div>
                <div class="content-data">{{ detailConfig.infomation.detail_address }}</div>
              </div>
            </div>
          </div>
          <!-- 备注信息 -->
@@ -154,14 +162,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>
@@ -177,28 +185,31 @@
                </li>
              </ul>
            </div>
          </div>
          </div> -->
        </div>
        <div v-if="activeName === 'contact'" class="second">
          <Contacts :isDetail="true" />
          <Contacts :isDetail="true" :add-config="addConfig" />
        </div>
        <div v-if="activeName === 'second'" class="second">
          <FollowupRecords :isDetail="true" />
          <FollowupRecords :isDetail="true" :add-config="addConfig" />
        </div>
        <div v-if="activeName === 'salesOpportunity'" class="second">
          <SalesOpportunity :isDetail="true" />
          <SalesOpportunity :isDetail="true" :add-config="addConfig" />
        </div>
        <div v-if="activeName === 'quotation'" class="second">
          <Quotation :isDetail="true" />
          <Quotation :isDetail="true" :add-config="addConfig" />
        </div>
        <div v-if="activeName === 'master'" class="second">
          <MasterOrder :isDetail="true" />
          <MasterOrder :isDetail="true" :add-config="addConfig" />
        </div>
        <div v-if="activeName === 'sub'" class="second">
          <SubOrder :isDetail="true" />
          <SubOrder :isDetail="true" :add-config="addConfig" />
        </div>
        <div v-if="activeName === 'detail'" class="second">
          <SalesDetails :isDetail="true" />
          <SalesDetails :isDetail="true" :add-config="addConfig" />
        </div>
        <div v-if="activeName === 'receipt'" class="second">
          <Receipt :isDetail="true" :add-config="addConfig" :source-type="1" />
        </div>
      </div>
    </el-drawer>
@@ -213,6 +224,7 @@
import MasterOrder from "@/views/sales/masterOrder"
import SubOrder from "@/views/sales/subOrder"
import SalesDetails from "@/views/sales/salesDetails"
import Receipt from "@/views/other/payment/receipt"
export default {
  name: "DetailClientManage",
  props: {
@@ -226,7 +238,7 @@
      }
    }
  },
  components: { FollowupRecords, Contacts, SalesOpportunity, Quotation, MasterOrder, SubOrder, SalesDetails },
  components: { FollowupRecords, Contacts, SalesOpportunity, Quotation, MasterOrder, SubOrder, SalesDetails, Receipt },
  computed: {},
  data() {
    return {
@@ -243,56 +255,63 @@
      isAddressExpand: true, // 地址信息
      addressInfoList: [],
      isRemarkExpand: true, // 备注信息
      isAnnexExpand: true // 附件信息
      isAnnexExpand: true, // 附件信息
      addConfig: {}
    }
  },
  created() {
    this.setData()
    this.setData(this.detailConfig.infomation)
    this.addConfig = {
      id_name: "client_name",
      keywordType: "客户名称",
      keyword: this.detailConfig.infomation.name,
      id: this.detailConfig.infomation.id,
      common_name: this.detailConfig.infomation.name,
      client_name: this.detailConfig.infomation.name,
      contact_name: this.detailConfig.infomation.contact_name,
      client_status_id: this.detailConfig.infomation.client_status_id,
      client_id: this.detailConfig.infomation.id,
      contact_id: this.detailConfig.infomation.contact_id
    }
  },
  mounted() {},
  methods: {
    setData() {
    setData(item) {
      this.basicInfoList = [
        {
          leftStr: "客户名称",
          leftValue: this.detailConfig.infomation.client_name,
          leftValue: item.client_name,
          rightStr: "客户编号",
          rightValue: this.detailConfig.infomation.number
          rightValue: item.number
        },
        {
          leftStr: "客户状态",
          leftValue: this.detailConfig.infomation.contact_name,
          leftValue: item.client_status,
          rightStr: "销售负责人",
          rightValue: this.detailConfig.infomation.contact_position
          rightValue: item.member.username
        },
        {
          leftStr: "客户类型",
          leftValue: this.detailConfig.infomation.contact_phone,
          leftValue: item.client_type.name,
          rightStr: "客户来源",
          rightValue: "新建"
          rightValue: item.client_origin.name
        },
        {
          leftStr: "重要级别",
          leftValue: this.detailConfig.infomation.sales_sources_id,
          leftValue: item.client_level,
          rightStr: "公海状态",
          rightValue: this.detailConfig.infomation.member_id
          rightValue: ""
        },
        {
          leftStr: "所属公海",
          leftValue: "",
          rightStr: "服务代表",
          rightValue: ""
        },
        {
          leftStr: "签到",
          leftValue: "",
          rightStr: "下次回访日期",
          rightValue: ""
          rightValue: item.next_visit_time
        },
        {
          leftStr: "创建时间",
          leftValue: "",
          rightStr: "最晚服务到期日",
          leftStr: "最晚服务到期日",
          leftValue: item.latest_service_time,
          rightStr: "创建时间",
          rightValue: ""
        },
        {
@@ -305,9 +324,9 @@
      this.contactList = [
        {
          leftStr: "联系人姓名",
          leftValue: "",
          leftValue: item.contact_name,
          rightStr: "联系人手机",
          rightValue: ""
          rightValue: item.contact_phone
        },
        {
          leftStr: "联系人职务",
@@ -339,48 +358,42 @@
      this.businessInfoList = [
        {
          leftStr: "所属行业",
          leftValue: "",
          leftValue: item.Industry.name,
          rightStr: "法定代表人",
          rightValue: ""
          rightValue: item.representative
        },
        {
          leftStr: "注册时间",
          leftValue: "",
          leftValue: item.registration_time,
          rightStr: "注册资金",
          rightValue: ""
          rightValue: item.RegisteredCapital.name
        },
        {
          leftStr: "公司性质",
          leftValue: "",
          leftValue: item.EnterpriseNature.name,
          rightStr: "客户规模",
          rightValue: ""
        },
        {
          leftStr: "经营范围",
          leftValue: "",
          rightStr: "",
          rightValue: ""
          rightValue: item.EnterpriseScale.name
        }
      ]
      this.addressInfoList = [
        {
          leftStr: "国家",
          leftValue: "",
          leftValue: "中国",
          rightStr: "省份",
          rightValue: ""
          rightValue: item.Province.name
        },
        {
          leftStr: "城市",
          leftValue: "",
          rightStr: "区域",
          rightValue: ""
        },
        {
          leftStr: "详细地址",
          leftValue: "",
          leftValue: item.City.name,
          rightStr: "",
          rightValue: ""
        }
        // {
        //   leftStr: "详细地址",
        //   leftValue: item.detail_address,
        //   rightStr: "",
        //   rightValue: ""
        // }
      ]
    },
    handleClose() {
@@ -408,6 +421,27 @@
      } else if (value === "annex") {
        this.isAnnexExpand = !this.isAnnexExpand
      }
    },
    // 时间显示
    dateFormat(fmt, date) {
      let ret = ""
      date = new Date(date)
      const opt = {
        "Y+": date.getFullYear().toString(), // 年
        "m+": (date.getMonth() + 1).toString(), // 月
        "d+": date.getDate().toString(), // 日
        "H+": date.getHours().toString(), // 时
        "M+": date.getMinutes().toString(), // 分
        "S+": date.getSeconds().toString() // 秒
        // 有其他格式化字符需求可以继续添加,必须转化成字符串
      }
      for (let k in opt) {
        ret = new RegExp("(" + k + ")").exec(fmt)
        if (ret) {
          fmt = fmt.replace(ret[1], ret[1].length == 1 ? opt[k] : opt[k].padStart(ret[1].length, "0"))
        }
      }
      return fmt
    }
  }
}
@@ -496,7 +530,7 @@
                align-items: center;
                height: 40px;
                .content-title {
                  width: 220px;
                  width: 320px;
                  text-align: right;
                  color: #555;
                }
@@ -506,10 +540,29 @@
                  color: #333;
                }
              }
              .remark {
              .remark,
              .all {
                width: 100%;
              }
            }
            .business_scope {
              display: flex;
              align-items: center;
              font-size: 14px;
              min-height: 40px;
              .content-title {
                width: 320px;
                text-align: right;
                color: #555;
              }
              .content-data {
                flex: 1;
                padding: 5px;
                text-align: left;
                margin-left: 25px;
                color: #333;
              }
            }
          }
        }
      }