| | |
| | | <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"> |
| | |
| | | <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> |
| | |
| | | <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> |
| | |
| | | <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> |
| | |
| | | <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> |
| | | <!-- 地址信息 --> |
| | |
| | | <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> |
| | | <!-- 备注信息 --> |
| | |
| | | <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> |
| | |
| | | </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> |
| | |
| | | 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: { |
| | |
| | | } |
| | | } |
| | | }, |
| | | components: { FollowupRecords, Contacts, SalesOpportunity, Quotation, MasterOrder, SubOrder, SalesDetails }, |
| | | components: { FollowupRecords, Contacts, SalesOpportunity, Quotation, MasterOrder, SubOrder, SalesDetails, Receipt }, |
| | | computed: {}, |
| | | data() { |
| | | return { |
| | |
| | | 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: "" |
| | | }, |
| | | { |
| | |
| | | this.contactList = [ |
| | | { |
| | | leftStr: "联系人姓名", |
| | | leftValue: "", |
| | | leftValue: item.contact_name, |
| | | rightStr: "联系人手机", |
| | | rightValue: "" |
| | | rightValue: item.contact_phone |
| | | }, |
| | | { |
| | | leftStr: "联系人职务", |
| | |
| | | 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() { |
| | |
| | | } 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 |
| | | } |
| | | } |
| | | } |
| | |
| | | align-items: center; |
| | | height: 40px; |
| | | .content-title { |
| | | width: 220px; |
| | | width: 320px; |
| | | text-align: right; |
| | | color: #555; |
| | | } |
| | |
| | | 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; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |