|  |  | 
 |  |  | <template> | 
 |  |  |   <div class="master-order"> | 
 |  |  |     <SearchCommonView ref="searchCommonView" :query-class-options="queryClassOptions" :search-options="searchOptions" /> | 
 |  |  |     <div class="btn-pager"> | 
 |  |  |       <PublicFunctionBtnView | 
 |  |  |         :duplicate-check="true" | 
 |  |  |         :list-button="true" | 
 |  |  |         :map-button="true" | 
 |  |  |         :statistics="true" | 
 |  |  |         :operates-list="operatesList" | 
 |  |  |       /> | 
 |  |  |       <PagerView class="page" /> | 
 |  |  |     <div v-if="isDetail" class="detail-top"> | 
 |  |  |       <DetailListCommonBtn :query-class-options="queryClassOptions" /> | 
 |  |  |     </div> | 
 |  |  |     <TableCommonView ref="tableListRef" :table-list="tableList"> | 
 |  |  |       <template slot="tableButton"> | 
 |  |  |         <el-table-column label="操作" width="100"> | 
 |  |  |           <template slot-scope="scope"> | 
 |  |  |             <el-button @click="handleClick(scope.row)" type="text" size="small">编辑</el-button> | 
 |  |  |             <el-button type="text" size="small">跟进</el-button> | 
 |  |  |  | 
 |  |  |     <div v-else class="filter"> | 
 |  |  |       <div class="filter-card"> | 
 |  |  |         <CommonSearch | 
 |  |  |             :show-add="false" | 
 |  |  |             :amount-view="false" | 
 |  |  |             placeholder="请输入单据编号" | 
 |  |  |             @searchClick="onFilterSearch" | 
 |  |  |         > | 
 |  |  |           <template slot="leftButton"> | 
 |  |  |             <el-button size="small" type="primary"  @click="addBtnClick">新建</el-button> | 
 |  |  | <!--            <el-button size="small"  @click="delClick">删除</el-button>--> | 
 |  |  |           </template> | 
 |  |  |         </el-table-column> | 
 |  |  |       </template> | 
 |  |  |     </TableCommonView> | 
 |  |  |         </CommonSearch> | 
 |  |  |       </div> | 
 |  |  |     </div> | 
 |  |  |  | 
 |  |  |     <div class="body"> | 
 |  |  |       <div class="body-card"> | 
 |  |  |         <div class="list-view"> | 
 |  |  |           <TableCommonView | 
 |  |  |               ref="tableListRef" | 
 |  |  |               :show-summary="showSummary" | 
 |  |  |               :table-list="tableList" | 
 |  |  |               @selClientClick="selClientClick" | 
 |  |  |               @selCommonClick="selCommonClick" | 
 |  |  |               @getSelectArray="getSelectArray" | 
 |  |  |               @selTableCol="selTableCol" | 
 |  |  |           > | 
 |  |  |             <template slot="tableButton"> | 
 |  |  |               <el-table-column label="操作" width="90"> | 
 |  |  |                 <template slot-scope="scope"> | 
 |  |  |                   <el-button @click="handleClick(scope.row)" type="text" size="small">编辑</el-button> | 
 |  |  |                    <el-button @click="deleteItem(scope.row.id)" type="text" size="small">删除</el-button> | 
 |  |  |                 </template> | 
 |  |  |               </el-table-column> | 
 |  |  |             </template> | 
 |  |  |           </TableCommonView> | 
 |  |  |         </div> | 
 |  |  |         <div class="btn-pager"> | 
 |  |  |           <PagerView class="page" :pager-options="pagerOptions" v-on="pagerEvents" /> | 
 |  |  |         </div> | 
 |  |  |       </div> | 
 |  |  |     </div> | 
 |  |  |     <!-- 新建/编辑 --> | 
 |  |  |     <AddSalesLeadDialog v-if="editSalesLeadConfig.visible" :edit-sales-lead-config="editSalesLeadConfig" /> | 
 |  |  |     <AddMasterOrderDialog v-if="editConfig.visible" :edit-common-config="editConfig" /> | 
 |  |  |     <!-- 销售子单详情 --> | 
 |  |  |     <DetailMasterOrder v-if="masterOrderDeail.visible" :master-order-detail="masterOrderDeail" /> | 
 |  |  |     <!-- 客户详情 --> | 
 |  |  |     <DetailClientManage v-if="clientDeail.visible" :client-manage-detail="clientDeail" /> | 
 |  |  |   </div> | 
 |  |  | </template> | 
 |  |  |  | 
 |  |  | <script> | 
 |  |  | import SearchCommonView from "@/components/makepager/SearchCommonView" | 
 |  |  | 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 AddMasterOrderDialog from "@/views/sales/masterOrder/AddMasterOrderDialog" | 
 |  |  | import { getMasterOrderList, getDelMasterOrder } from "@/api/sales/masterOrder" | 
 |  |  | import pageMixin from "@/components/makepager/pager/mixin/pageMixin" | 
 |  |  | import DetailMasterOrder from "@/views/sales/masterOrder/DetailMasterOrder" | 
 |  |  |  | 
 |  |  | export default { | 
 |  |  |   name: "MasterOrder", | 
 |  |  |   props: {}, | 
 |  |  |   components: { | 
 |  |  |     SearchCommonView, | 
 |  |  |     PublicFunctionBtnView, | 
 |  |  |     PagerView, | 
 |  |  |     TableCommonView, | 
 |  |  |     AddSalesLeadDialog | 
 |  |  |   }, | 
 |  |  |   computed: { | 
 |  |  |     searchCommonHeight() { | 
 |  |  |       return this.$refs.searchCommonView.offsetHeight | 
 |  |  |   props: { | 
 |  |  |     isDetail: { | 
 |  |  |       type: Boolean, | 
 |  |  |       default: false | 
 |  |  |     }, | 
 |  |  |     addConfig: { | 
 |  |  |       type: Object, | 
 |  |  |       default: () => { | 
 |  |  |         return {} | 
 |  |  |       } | 
 |  |  |     } | 
 |  |  |   }, | 
 |  |  |   mixins: [pageMixin], | 
 |  |  |   components: { | 
 |  |  |     AddMasterOrderDialog, | 
 |  |  |     DetailMasterOrder, | 
 |  |  |     DetailClientManage: () => import("@/views/client/client/DetailClientManage") | 
 |  |  |   }, | 
 |  |  |   computed: {}, | 
 |  |  |   data() { | 
 |  |  |     return { | 
 |  |  |       tableList: {}, | 
 |  |  |       queryClassOptions: [ | 
 |  |  |         { value: "1", label: "全部" }, | 
 |  |  |         { value: "2", label: "广告宣传" }, | 
 |  |  |         { value: "3", label: "跟进中" }, | 
 |  |  |         { value: "4", label: "失败关闭" } | 
 |  |  |         { value: "2", label: "已批准" }, | 
 |  |  |         { value: "3", label: "审批中" }, | 
 |  |  |         { value: "4", label: "未提交" }, | 
 |  |  |         { value: "5", label: "已驳回" }, | 
 |  |  |         { value: "6", label: "已拒绝" } | 
 |  |  |       ], | 
 |  |  |       searchOptions: [], | 
 |  |  |       operatesList: [ | 
 |  |  | 
 |  |  |         { id: "5", name: "更改创建人" }, | 
 |  |  |         { id: "6", name: "树结构设置" }, | 
 |  |  |         { id: "7", name: "审批设置" }, | 
 |  |  |         { id: "8", name: "公海参数设置" } | 
 |  |  |         { id: "8", name: "恢复预设列宽" } | 
 |  |  |       ], | 
 |  |  |       editSalesLeadConfig: { | 
 |  |  |       editConfig: { | 
 |  |  |         visible: false, | 
 |  |  |         title: "新建", | 
 |  |  |         infomation: {} | 
 |  |  |       } | 
 |  |  |       }, | 
 |  |  |       showSummary: { | 
 |  |  |         show: true, | 
 |  |  |         sumProp: ["money"], | 
 |  |  |         mergeNumber: 5 | 
 |  |  |       }, | 
 |  |  |       masterOrderDeail: { | 
 |  |  |         visible: false, | 
 |  |  |         infomation: {} | 
 |  |  |       }, | 
 |  |  |       clientDeail: { | 
 |  |  |         visible: false, | 
 |  |  |         infomation: {} | 
 |  |  |       }, | 
 |  |  |       selValueList: [], | 
 |  |  |       search_map: {}, | 
 |  |  |       searchSel: { | 
 |  |  |         value: "number", | 
 |  |  |         label: "单据编号" | 
 |  |  |       }, | 
 |  |  |       tableColumn: [ | 
 |  |  |         { label: "单据编号", prop: "number", min: 100, isCommonClick: true, default: true }, // 单据编号 | 
 |  |  |         { label: "客户名称", prop: "client_name", min: 120, isClientClick: true }, // 客户名称 | 
 |  |  |         { label: "服务开始时间", prop: "start_time" }, // 服务开始时间 | 
 |  |  |         { label: "服务截止时间", prop: "end_time" }, // 服务截止时间 | 
 |  |  |         { label: "合同金额", prop: "money" }, // 合同金额 | 
 |  |  |         { label: "负责人", prop: "member_name" } // 负责人 | 
 |  |  |         // { label: "审批状态", prop: "approvalStatus" } // 审批状态 | 
 |  |  |       ], | 
 |  |  |       showCol:["单据编号", "客户名称", "服务开始时间", "服务截止时间", "合同金额", "负责人"] | 
 |  |  |     } | 
 |  |  |   }, | 
 |  |  |   created() { | 
 |  |  |     this.setTable() | 
 |  |  |     if (!this.isDetail) { | 
 |  |  |       this.search_map = {} | 
 |  |  |     } else { | 
 |  |  |       this.search_map = { | 
 |  |  |         [this.addConfig.id_name]: this.addConfig.client_name | 
 |  |  |       } | 
 |  |  |     } | 
 |  |  |     this.getData(this.search_map) | 
 |  |  |   }, | 
 |  |  |   methods: { | 
 |  |  |     setTable() { | 
 |  |  |       this.tableList = { | 
 |  |  |         tableInfomation: [ | 
 |  |  |           { | 
 |  |  |             customName: "123123", | 
 |  |  |             customType: "普通客户", | 
 |  |  |             salesHead: "系统管理员", | 
 |  |  |             modifyTime: "2023-0703 11:22:12", | 
 |  |  |             customerSize: "499以上", | 
 |  |  |             importantLevel: "A类客户", | 
 |  |  |             customNumber: "AC651", | 
 |  |  |             customStatus: "潜在客户", | 
 |  |  |             productName: "自动打印机", | 
 |  |  |             startDate: "2023-06-27", | 
 |  |  |             endDate: "2024-07-15" | 
 |  |  |           } | 
 |  |  |         ], | 
 |  |  |         tableColumn: [ | 
 |  |  |           { label: "客户名称", prop: "customName", min: 120 }, // 客户名称 | 
 |  |  |           { label: "客户类型", prop: "customType", min: 90 }, // 客户类型 | 
 |  |  |           { label: "销售负责人", prop: "salesHead" }, // 销售负责人 | 
 |  |  |           { label: "修改时间", prop: "modifyTime", min: 100 }, // 修改时间 | 
 |  |  |           { label: "客户规模", prop: "customerSize" }, // 客户规模 | 
 |  |  |           { label: "重要级别", prop: "importantLevel" }, // 重要级别 | 
 |  |  |           { label: "客户编号", prop: "customNumber" }, // 客户编号 | 
 |  |  |           { label: "客户状态", prop: "customStatus" }, // 客户状态 | 
 |  |  |           { label: "产品名称", prop: "productName" }, // 产品名称 | 
 |  |  |           { label: "服务开始日期", prop: "startDate" }, // 服务开始日期 | 
 |  |  |           { label: "服务到期日", prop: "endDate" } // 服务到期日 | 
 |  |  |         ] | 
 |  |  |         selectIndex:true, | 
 |  |  |         tableInfomation: [], | 
 |  |  |         allcol: [], | 
 |  |  |         showcol: this.showCol, | 
 |  |  |         tableColumn:this.setColumnVisible(this.showCol) | 
 |  |  |       } | 
 |  |  |       this.tableList.allcol = this.tableList.tableColumn.filter(ele=>!ele.default).map(ele=>ele.label); | 
 |  |  |       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 }) | 
 |  |  |       } | 
 |  |  |     }, | 
 |  |  |     setColumnVisible(showCol){ | 
 |  |  |       return  this.tableColumn.map(ele=>{ | 
 |  |  |         return { | 
 |  |  |           ...ele, | 
 |  |  |           isShowColumn:showCol.includes(ele.label) | 
 |  |  |         } | 
 |  |  |       }) | 
 |  |  |     }, | 
 |  |  |     selTableCol(val) { | 
 |  |  |       this.showcol = val; | 
 |  |  |       this.tableList.tableColumn = this.setColumnVisible(val); | 
 |  |  |     }, | 
 |  |  |     // 请求数据 | 
 |  |  |     async getData() { | 
 |  |  |       this.loading = true | 
 |  |  |       await getMasterOrderList({ | 
 |  |  |         search_map: this.search_map, | 
 |  |  |         page: this.pagerOptions.currPage, | 
 |  |  |         pageSize: this.pagerOptions.pageSize | 
 |  |  |       }) | 
 |  |  |         .then((res) => { | 
 |  |  |           console.log(res) | 
 |  |  |           if (res.code === 200) { | 
 |  |  |             if (res.data.list && res.data.list.length > 0) { | 
 |  |  |               const list = res.data.list.map((item) => { | 
 |  |  |                 return { | 
 |  |  |                   ...item, | 
 |  |  |                   client_name: item.client.name, | 
 |  |  |                   member_name: item.member.username | 
 |  |  |                 } | 
 |  |  |               }) | 
 |  |  |               this.tableList.tableInfomation = list || [] | 
 |  |  |               this.pagerOptions.totalCount = res.data.count | 
 |  |  |             } else { | 
 |  |  |               this.tableList.tableInfomation = [] | 
 |  |  |             } | 
 |  |  |           } else { | 
 |  |  |             this.tableList.tableInfomation = [] | 
 |  |  |           } | 
 |  |  |           this.loading = false | 
 |  |  |         }) | 
 |  |  |         .catch((err) => { | 
 |  |  |           console.log(err) | 
 |  |  |           this.tableList.tableInfomation = [] | 
 |  |  |           this.loading = false | 
 |  |  |         }) | 
 |  |  |     }, | 
 |  |  |     // 搜索 | 
 |  |  |     onFilterSearch(searchText){ | 
 |  |  |       if (searchText){ | 
 |  |  |         this.search_map = { | 
 |  |  |          number: searchText | 
 |  |  |         } | 
 |  |  |       }else{ | 
 |  |  |         this.search_map = {} | 
 |  |  |       } | 
 |  |  |       this.pagerOptions.currPage = 1 | 
 |  |  |       this.getData() | 
 |  |  |     }, | 
 |  |  |     // 新建 | 
 |  |  |     addBtnClick() { | 
 |  |  |       this.editSalesLeadConfig.visible = true | 
 |  |  |       this.editSalesLeadConfig.title = "新建" | 
 |  |  |       this.editSalesLeadConfig.infomation = { | 
 |  |  |         customName: "", | 
 |  |  |         saleLeadNumber: "LEA50", | 
 |  |  |         contactName: "", | 
 |  |  |         contactDuties: "", | 
 |  |  |         phoneNumber: "", | 
 |  |  |         businessStatus: "新建", | 
 |  |  |         businessSource: "1", | 
 |  |  |         owner: "", | 
 |  |  |         position: "", | 
 |  |  |         map: "", | 
 |  |  |         country: "1", | 
 |  |  |         province: "1", | 
 |  |  |         city: "1", | 
 |  |  |         region: "1", | 
 |  |  |         address: "" | 
 |  |  |       } | 
 |  |  |       this.editConfig.visible = true | 
 |  |  |       this.editConfig.title = "新建" | 
 |  |  |       this.editConfig.infomation = { ...this.addConfig } | 
 |  |  |     }, | 
 |  |  |     // 编辑 | 
 |  |  |     handleClick(row) { | 
 |  |  |       console.log(row) | 
 |  |  |       this.editSalesLeadConfig.visible = true | 
 |  |  |       this.editSalesLeadConfig.title = "编辑" | 
 |  |  |       this.editSalesLeadConfig.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: "" | 
 |  |  |       this.editConfig.visible = true | 
 |  |  |       this.editConfig.title = "编辑" | 
 |  |  |       this.editConfig.infomation = { ...row } | 
 |  |  |     }, | 
 |  |  |     // 批量删除 | 
 |  |  |     delClick() { | 
 |  |  |       if (this.selValueList && this.selValueList.length > 0) { | 
 |  |  |         this.$confirm("是否确认删除?", "警告", { | 
 |  |  |           confirmButtonText: "确定", | 
 |  |  |           cancelButtonText: "取消", | 
 |  |  |           type: "warning" | 
 |  |  |         }) | 
 |  |  |           .then(() => { | 
 |  |  |             getDelMasterOrder({ ids: this.selValueList }).then((response) => { | 
 |  |  |               if (response.code === 200) { | 
 |  |  |                 this.$message.success("删除成功") | 
 |  |  |                 this.getData() | 
 |  |  |               } else { | 
 |  |  |                 this.$message.warning("删除失败") | 
 |  |  |               } | 
 |  |  |             }) | 
 |  |  |           }) | 
 |  |  |           .catch(() => {}) | 
 |  |  |       } else { | 
 |  |  |         this.$message.warning("请至少选择一条记录") | 
 |  |  |       } | 
 |  |  |     }, | 
 |  |  |     /** | 
 |  |  |      * 单个删除 | 
 |  |  |      * @param id 销售总单id | 
 |  |  |      */ | 
 |  |  |     deleteItem(id) { | 
 |  |  |       this.$confirm("是否确认删除?", "警告", { | 
 |  |  |         confirmButtonText: "确定", | 
 |  |  |         cancelButtonText: "取消", | 
 |  |  |         type: "warning" | 
 |  |  |       }) | 
 |  |  |           .then(() => { | 
 |  |  |             getDelMasterOrder({ids: [id]}).then((response) => { | 
 |  |  |               if (response.code === 200) { | 
 |  |  |                 this.$message.success("删除成功") | 
 |  |  |                 this.getData() | 
 |  |  |               } else { | 
 |  |  |                 this.$message.warning("删除失败") | 
 |  |  |               } | 
 |  |  |             }) | 
 |  |  |           }) | 
 |  |  |           .catch((err) => { | 
 |  |  |             if (err !== 'cancel') { | 
 |  |  |               console.error(err) | 
 |  |  |               this.$message.warning("删除失败") | 
 |  |  |             } | 
 |  |  |           }) | 
 |  |  |     }, | 
 |  |  |     getSelectArray(val) { | 
 |  |  |       console.log(val) | 
 |  |  |       this.selValueList = [] | 
 |  |  |       const list = val.map((item) => { | 
 |  |  |         return item.id | 
 |  |  |       }) | 
 |  |  |       this.selValueList = list | 
 |  |  |     }, | 
 |  |  |     // 客户名称详情 | 
 |  |  |     selClientClick(row) { | 
 |  |  |       console.log(row) | 
 |  |  |       this.clientDeail.visible = true | 
 |  |  |       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) { | 
 |  |  |       console.log(row) | 
 |  |  |       this.masterOrderDeail.visible = true | 
 |  |  |       this.masterOrderDeail.infomation = { ...row } | 
 |  |  |     } | 
 |  |  |   } | 
 |  |  | } | 
 |  |  | 
 |  |  |  | 
 |  |  | <!-- Add "scoped" attribute to limit CSS to this component only --> | 
 |  |  | <style lang="scss" scoped> | 
 |  |  | .master-order { | 
 |  |  |   .btn-pager { | 
 |  |  | .master-order{ | 
 |  |  |   height: 100%; | 
 |  |  |   overflow: hidden; | 
 |  |  |   .filter{ | 
 |  |  |     height: 80px; | 
 |  |  |     display: flex; | 
 |  |  |     .page { | 
 |  |  |       margin-left: auto; | 
 |  |  |     align-items: center; | 
 |  |  |     padding: 12px 20px 0 20px; | 
 |  |  |     &-card{ | 
 |  |  |       height: 80px; | 
 |  |  |       display: flex; | 
 |  |  |       align-items: center; | 
 |  |  |       box-sizing: border-box; | 
 |  |  |       padding: 10px 20px; | 
 |  |  |       flex: 1; | 
 |  |  |       border-radius: 12px; | 
 |  |  |       background-color: #fff; | 
 |  |  |     } | 
 |  |  |   } | 
 |  |  |   .body{ | 
 |  |  |     box-sizing: border-box; | 
 |  |  |     padding: 10px 20px; | 
 |  |  |     border-radius: 12px; | 
 |  |  |     height: calc(100% - 92px); | 
 |  |  |     .body-card { | 
 |  |  |       background-color: #fff; | 
 |  |  |       border-radius: 12px; | 
 |  |  |       height: 100%; | 
 |  |  |       overflow: hidden; | 
 |  |  |     } | 
 |  |  |     .list-view { | 
 |  |  |       height: calc(100% - 60px); | 
 |  |  |       overflow: hidden; | 
 |  |  |     } | 
 |  |  |     .btn-pager { | 
 |  |  |       display: flex; | 
 |  |  |       margin-top: 10px; | 
 |  |  |       .page { | 
 |  |  |         margin-left: auto; | 
 |  |  |       } | 
 |  |  |     } | 
 |  |  |   } | 
 |  |  | } |