|
|
<template> <div class="mod-config"> <!-- 查询条件 --> <el-form :inline="true" label-position="top" :model="searchData" @keyup.enter.native="getDataList"> <el-form-item :label="'客户代码'"> <el-input v-model="searchData.customerNo" clearable style="width: 120px"></el-input> </el-form-item> <el-form-item :label="'客户名称'"> <el-input v-model="searchData.customerDesc" clearable style="width: 120px"></el-input> </el-form-item> <el-form-item :label="'客户状态'"> <el-select v-model="searchData.customerStatus" style="width: 120px"> <el-option label="全部" value=""></el-option> <el-option label="启用" value="Y"></el-option> <el-option label="停用" value="N"></el-option> </el-select> </el-form-item> <el-form-item :label="' '"> <el-button @click="getDataList">查询</el-button> <el-button type="primary" @click="addModal">新增</el-button> <el-button type="primary" @click="delModal">删除</el-button> <download-excel :fields="fields()" :data="exportData" type="xls" :name="exportName" :header="exportHeader" :footer="exportFooter" :fetch="createExportData" :before-generate="startDownload" :before-finish="finishDownload" worksheet="导出信息" class="el-button el-button--primary el-button--medium"> {{ "导出" }} </download-excel> </el-form-item> </el-form>
<!-- 客户列表 --> <el-table :height="height - 15" :data="dataList" border ref="customerTable" :row-style="rowStyle" @row-click="customerClickRow" @selection-change="selectionCustomer" @current-change="changeCurrentRow" style="width: 100%;"> <el-table-column type="selection" header-align="center" align="center" width="50"> </el-table-column> <el-table-column v-for="(item,index) in columnList" :key="index" :sortable="item.columnSortable" :prop="item.columnProp" :header-align="item.headerAlign" :show-overflow-tooltip="item.showOverflowTooltip" :align="item.align" :fixed="item.fixed === ''?false:item.fixed" :min-width="item.columnWidth" :label="item.columnLabel"> <template slot-scope="scope"> <span v-if="!item.columnHidden">{{ scope.row[item.columnProp] }}</span> <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span> </template> </el-table-column> <el-table-column fixed="right" header-align="center" align="center" width="100" label="操作"> <template slot-scope="scope"> <el-link style="cursor: pointer" @click="updateModal(scope.row)">编辑</el-link> <el-link style="cursor: pointer" @click="detailModal(scope.row)">详情</el-link> </template> </el-table-column> </el-table>
<!-- 分页插件 --> <el-pagination @size-change="sizeChangeHandle" @current-change="currentChangeHandle" :current-page="pageIndex" :page-sizes="[20, 50, 100, 200, 500]" :page-size="pageSize" :total="totalPage" layout="total, sizes, prev, pager, next, jumper"> </el-pagination>
<!-- 客户模态框 --> <el-dialog :title="modalData.title" :close-on-click-modal="false" v-drag :visible.sync="modalFlag" width="500px"> <el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;margin-top: -5px;"> <el-form-item label="客户代码" prop="customerNo" :rules="rules.customerNo"> <el-input v-model="modalData.customerNo" :disabled="modalDisableFlag" style="width: 222px"></el-input> </el-form-item> <el-form-item label="客户名称" prop="customerDesc" :rules="rules.customerDesc"> <el-input v-model="modalData.customerDesc" :readonly="detailModalFlag" style="width: 222px"></el-input> </el-form-item> </el-form> <el-form :inline="true" label-position="top" :model="modalData" style="margin-left: 7px;margin-top: -5px;"> <el-form-item label="年营业额"> <el-input class="inlineNumber numInput" v-model="modalData.turnoverOfYear" :readonly="detailModalFlag" type="number" style="width: 222px"></el-input> </el-form-item> <el-form-item label="年预估投入"> <el-input class="inlineNumber numInput" v-model="modalData.potentialRevenueOfYear" :readonly="detailModalFlag" type="number" style="width: 222px"></el-input> </el-form-item> </el-form> <el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;margin-top: -5px;"> <el-form-item label="行业"> <dict-data-select v-if="modalFlag" v-model="modalData.customerIndustry" :disabled="detailModalFlag" style="width: 222px" dict-type="plm_customer_information_customer_industry"></dict-data-select> </el-form-item> <el-form-item label="币种" prop="customerCurrency" :rules="rules.customerCurrency"> <dict-data-select v-if="modalFlag" v-model="modalData.customerCurrency" :disabled="detailModalFlag" style="width: 222px" dict-type="plm_customer_information_customer_customer_currency"></dict-data-select> </el-form-item> </el-form> <!-- <el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;margin-top: -5px;">--> <!-- <el-form-item label="联系人" prop="contactName" :rules="rules.contactName">--> <!-- <el-input v-model="modalData.contactName" :readonly="detailModalFlag" style="width: 222px"></el-input>--> <!-- </el-form-item>--> <!-- <el-form-item label="联系电话" prop="contactPhoneNumber1" :rules="rules.contactPhoneNumber1">--> <!-- <el-input v-model="modalData.contactPhoneNumber1" :readonly="detailModalFlag" style="width: 222px"></el-input>--> <!-- </el-form-item>--> <!-- </el-form>--> <!-- <el-form :inline="true" label-position="top" :model="modalData" style="margin-left: 7px;margin-top: -5px;">--> <!-- <el-form-item label="公司名称">--> <!-- <el-input v-model="modalData.companyName" :readonly="detailModalFlag" style="width: 457px"></el-input>--> <!-- </el-form-item>--> <!-- </el-form>--> <!-- <el-form :inline="true" label-position="top" :model="modalData" style="margin-left: 7px;margin-top: -5px;">--> <!-- <el-form-item label="岗位描述">--> <!-- <el-input v-model="modalData.jobDescription" :readonly="detailModalFlag" style="width: 457px"></el-input>--> <!-- </el-form-item>--> <!-- </el-form>--> <!-- <el-form :inline="true" label-position="top" :model="modalData" style="margin-left: 7px;margin-top: -5px;">--> <!-- <el-form-item label="联系地址">--> <!-- <el-input v-model="modalData.addressName" :readonly="detailModalFlag" style="width: 457px"></el-input>--> <!-- </el-form-item>--> <!-- </el-form>--> <!-- <el-form :inline="true" label-position="top" :model="modalData" style="margin-left: 7px;margin-top: -5px;">--> <!-- <el-form-item label="备注信息">--> <!-- <el-input v-model="modalData.remark" :readonly="detailModalFlag" style="width: 457px"></el-input>--> <!-- </el-form-item>--> <!-- </el-form>--> <el-form :inline="true" label-position="top" :model="modalData" style="margin-left: 7px;margin-top: -5px;"> <el-form-item> <span style="cursor: pointer" slot="label" @click="getBaseList(120)"><a herf="#">客户组1</a></span> <el-input v-model="modalData.customerGroupId1" @blur="customerGroupBlur(120)" style="width: 124px"></el-input> <el-input v-model="modalData.customerGroupName1" disabled style="width: 330px"></el-input> </el-form-item> <el-form-item> <span style="cursor: pointer" slot="label" @click="getBaseList(121)"><a herf="#">客户组2</a></span> <el-input v-model="modalData.customerGroupId2" @blur="customerGroupBlur2(121)" style="width: 124px"></el-input> <el-input v-model="modalData.customerGroupName2" disabled style="width: 330px"></el-input> </el-form-item> </el-form> <el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;margin-top: -5px;"> <el-form-item label="重要程度" prop="importantCustomer" :rules="rules.importantCustomer"> <dict-data-select v-if="modalFlag" v-model="modalData.importantCustomer" :disabled="detailModalFlag" style="width: 145px" dict-type="plm_customer_information_important_customer"> </dict-data-select> </el-form-item> <el-form-item label="客户状态" prop="customerStatus" :rules="rules.customerStatus"> <el-select v-model="modalData.customerStatus" :disabled="detailModalFlag" style="width: 140px"> <el-option label="启用" value="Y"></el-option> <el-option label="停用" value="N"></el-option> </el-select> </el-form-item> <el-form-item label="客户类型" prop="customerStatus" :rules="rules.customerType"> <el-select v-model="modalData.customerType" :disabled="detailModalFlag" style="width: 145px"> <el-option label="潜在客户" value="潜在客户"></el-option> <el-option label="正式客户" value="正式客户"></el-option> </el-select> </el-form-item> </el-form> <el-form :inline="true" label-position="top" :model="modalData" style="margin-left: 7px;margin-top: -5px;"> <el-form-item label="客户描述"> <el-input type="textarea" v-model="modalData.customerDescription" readonly :rows="2" resize='none' show-word-limit :readonly="detailModalFlag" style="width: 457px;height: 20px"> </el-input> </el-form-item> </el-form> <el-form :inline="true" label-position="top" :model="modalData" style="margin-left: 7px;margin-top: -2px;">--> <el-form-item label="客户地址"> <el-input v-model="modalData.addressName" :readonly="detailModalFlag" style="width: 457px"></el-input> </el-form-item> </el-form> <el-footer style="height:40px;margin-top: 20px;text-align:center"> <el-button v-if="modalData.flag !== '3'" type="primary" @click="saveData()">保存</el-button> <el-button type="primary" @click="modalFlag = false">关闭</el-button> </el-footer> </el-dialog>
<!-- 客户联系人模态框 --> <el-dialog :title="contactModalData.title" :close-on-click-modal="false" v-drag :visible.sync="contactModalFlag" width="500px"> <el-form :inline="true" label-position="top" :model="contactModalData" :rules="contactRules" style="margin-left: 7px;margin-top: -5px;"> <el-form-item label="联系人" prop="contactName" :rules="contactRules.contactName"> <el-input v-model="contactModalData.contactName" style="width: 222px"></el-input> </el-form-item> <el-form-item label="座机"> <el-input v-model="contactModalData.contactLandlineNumber" :readonly="contactDetailModalFlag" style="width: 222px"></el-input> </el-form-item> </el-form> <el-form :inline="true" label-position="top" :model="contactModalData" :rules="contactRules" style="margin-left: 7px;margin-top: -5px;"> <el-form-item label="联系电话(1)" prop="contactPhoneNumber1" :rules="contactRules.contactPhoneNumber1"> <el-input v-model="contactModalData.contactPhoneNumber1" :readonly="contactDetailModalFlag" style="width: 222px"></el-input> </el-form-item> <el-form-item label="联系电话(2)"> <el-input v-model="contactModalData.contactPhoneNumber2" :readonly="contactDetailModalFlag" style="width: 222px"></el-input> </el-form-item> </el-form> <el-form :inline="true" label-position="top" :model="contactModalData" :rules="contactRules" style="margin-left: 7px;margin-top: -5px;"> <el-form-item label="联系电话(3)"> <el-input v-model="contactModalData.contactPhoneNumber3" :readonly="contactDetailModalFlag" style="width: 222px"></el-input> </el-form-item> <el-form-item label="公司职务"> <el-input v-model="contactModalData.position" :readonly="contactDetailModalFlag" style="width: 222px"></el-input> </el-form-item> </el-form> <el-form :inline="true" label-position="top" :model="contactModalData" :rules="contactRules" style="margin-left: 7px;margin-top: -5px;"> <el-form-item label="部门"> <el-input v-model="contactModalData.departmentName" :readonly="contactDetailModalFlag" style="width: 144px"></el-input> </el-form-item> <el-form-item label="默认联系人" prop="primaryContact" :rules="contactRules.primaryContact"> <el-select v-model="contactModalData.primaryContact" :disabled="contactDetailModalFlag" style="width: 143px"> <el-option label="是" value="Y"></el-option> <el-option label="否" value="N"></el-option> </el-select> </el-form-item> <el-form-item label="状态" prop="contactStatus" :rules="contactRules.contactStatus"> <el-select v-model="contactModalData.contactStatus" :disabled="contactDetailModalFlag" style="width: 144px"> <el-option label="启用" value="启用"></el-option> <el-option label="停用" value="停用"></el-option> </el-select> </el-form-item> </el-form> <el-form :inline="true" label-position="top" :model="contactModalData" style="margin-left: 7px;margin-top: -5px;"> <el-form-item label="邮箱"> <el-input v-model="contactModalData.mailbox" :readonly="contactDetailModalFlag" style="width: 457px"></el-input> </el-form-item> </el-form> <el-form :inline="true" label-position="top" :model="contactModalData" style="margin-left: 7px;margin-top: -5px;"> <el-form-item label="备注信息"> <el-input type="textarea" v-model="contactModalData.remark" readonly :rows="2" resize='none' show-word-limit :readonly="contactDetailModalFlag" style="width: 457px;height: 20px"> </el-input> </el-form-item> </el-form> <!-- <el-form :inline="true" label-position="top" :model="contactModalData" style="margin-left: 7px;margin-top: -5px;">--> <!-- <el-form-item label="备注信息">--> <!-- <el-input v-model="contactModalData.remark" :readonly="contactDetailModalFlag" style="width: 457px"></el-input>--> <!-- </el-form-item>--> <!-- </el-form>--> <el-footer style="height:40px;margin-top: 34px;text-align:center"> <el-button v-if="contactModalData.flag !== '3'" type="primary" @click="saveContactData()">保存</el-button> <el-button type="primary" @click="contactModalFlag = false">关闭</el-button> </el-footer> </el-dialog>
<!-- 客户联系地址模态框 --> <el-dialog :title="addressModalData.title" :close-on-click-modal="false" v-drag :visible.sync="addressModalFlag" width="500px"> <el-form label-position="top" :model="addressModalData" :rules="addressRules"> <el-row :gutter="10"> <el-col :span="8"> <el-form-item label="地址类型" prop="addressType" :rules="addressRules.addressType"> <dict-data-select v-if="addressModalFlag" v-model="addressModalData.addressType" :disabled="addressDetailModalFlag" dict-type="plm_customer_address_address_type"></dict-data-select> </el-form-item> </el-col> <el-col :span="16"> <el-form-item label="公司名称"> <el-input v-model="addressModalData.companyName" :readonly="addressDetailModalFlag"></el-input> </el-form-item> </el-col> <el-col :span="24"> <el-form-item label="地址" prop="addressName" :rules="addressRules.addressName"> <el-input v-model="addressModalData.addressName"></el-input> </el-form-item> </el-col> <el-col :span="8"> <el-form-item label="状态" prop="addressStatus" :rules="addressRules.addressStatus"> <el-select v-model="addressModalData.addressStatus" style="width: 100%" :disabled="addressDetailModalFlag"> <el-option label="启用" value="启用"></el-option> <el-option label="停用" value="停用"></el-option> </el-select> </el-form-item> </el-col> <el-col :span="8"> <el-form-item label=" " > <el-checkbox v-model="addressModalData.defaultAddress" false-label="N" true-label="Y" :disabled="addressDetailModalFlag">默认地址</el-checkbox> </el-form-item> </el-col> <el-col :span="24"> <el-form-item label="备注信息"> <el-input type="textarea" v-model="addressModalData.remark" :rows="3" :readonly="addressDetailModalFlag" resize='none' show-word-limit></el-input> </el-form-item> </el-col> </el-row> </el-form> <el-footer style="height:42px;margin-top: 53px;text-align:center"> <el-button v-if="addressModalData.flag !== '3'" type="primary" @click="saveAddressData()">保存</el-button> <el-button type="primary" @click="addressModalFlag = false">关闭</el-button> </el-footer> </el-dialog>
<!-- 客户项目信息模态框 --> <el-dialog :title="projectInformationModalData.title" :close-on-click-modal="false" v-drag :visible.sync="projectInformationModalFlag" width="40%"> <el-form ref="saveForm" :model="projectInformationModalData" label-position="top" label-width="100px" :rules="projectInformationModalData"> <el-row :gutter="25"> <el-col :span="6"> <el-form-item label="项目号"> <el-input readonly v-model="projectInformationModalData.projectId" disabled></el-input> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="项目名称" prop="projectName"> <el-input readonly v-model="projectInformationModalData.projectName"></el-input> </el-form-item> </el-col> <el-col :span="6"> <el-form-item prop="projectTypeDb" label="项目类型"> <dict-data-select disabled dict-type="project_info_type_db" v-if="projectInformationModalFlag" v-model="projectInformationModalData.projectTypeDb"></dict-data-select> </el-form-item> </el-col> <el-col :span="6"> <el-form-item prop="projectSource" :rules="projectInformationModalData.projectSourceDesc" label="项目来源"> <dict-data-select disabled dict-type="project_info_source" v-if="projectInformationModalFlag" v-model="projectInformationModalData.projectSource"></dict-data-select> </el-form-item> </el-col> <el-col :span="6"> <el-form-item prop="priority" label="优先级"> <dict-data-select disabled dict-type="project_info_priority" v-if="projectInformationModalFlag" v-model="projectInformationModalData.priority"></dict-data-select> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="要求日期:" prop="needDate"> <el-date-picker style="width: 100%" readonly v-model="projectInformationModalData.needDate" type="date" value-format="yyyy-MM-dd" placeholder="选择日期"> </el-date-picker> </el-form-item> </el-col> <el-col :span="6"> <el-form-item prop="projectManagerName" :rules="projectInformationModalData.projectManagerName" label="项目经理"> <el-input v-model="projectInformationModalData.projectManagerName" readonly></el-input> </el-form-item> </el-col> <el-col :span="6"> <el-form-item prop="projectOwnerName" :rules="projectInformationModalData.projectOwnerName" label="项目负责人"> <el-input v-model="projectInformationModalData.projectOwnerName" readonly></el-input> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="直接客户"> <el-input v-model="projectInformationModalData.customerId" readonly></el-input> </el-form-item> </el-col> <el-col :span="12"> <el-form-item prop="customerName" label="直接客户名称:"> <el-input v-model="projectInformationModalData.customerName" readonly ></el-input> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="终端客户:"> <el-input v-model="projectInformationModalData.finalCustomerId" readonly></el-input> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="终端客户名称:"> <el-input v-model="projectInformationModalData.finalCustomerName" readonly ></el-input> </el-form-item> </el-col> </el-row> <el-form-item label="项目描述" style="height: 70px"> <el-input type="textarea" readonly resize="none" :autosize="{minRows: 2, maxRows: 2}" v-model="projectInformationModalData.projectDesc"></el-input> </el-form-item> <el-form-item label="客户应用/要求" style="height: 70px"> <el-input type="textarea" readonly resize="none" :autosize="{minRows: 2, maxRows: 2}" v-model="projectInformationModalData.customerRemark"></el-input> </el-form-item> <el-form-item label="其他要求" style="height: 70px"> <el-input type="textarea" readonly resize="none" :autosize="{minRows: 2, maxRows: 2}" v-model="projectInformationModalData.remark"></el-input> </el-form-item> <el-form-item prop="userRoleName" :rules="projectInformationRules.userRoleName" label="项目权限"> <el-input readonly v-model="projectInformationModalData.userRoleName"></el-input> </el-form-item> </el-form> <el-footer style="height:40px;margin-top: 10px;text-align:center"> <el-button v-if="projectInformationModalData.flag !== '3'" type="primary" @click="saveProjectInformationData()"> 保存 </el-button> <el-button type="primary" @click="projectInformationModalFlag = false">关闭</el-button> </el-footer> </el-dialog>
<!-- 页签 --> <el-tabs v-model="activeTable" style="margin-top: 0px; width: 100%; height: 100%;" type="border-card" @tab-click="tabClick" class="customer-tab"> <!-- 联系人页签 --> <el-tab-pane label="联系人" name="customer_contact"> <el-form label-position="top" style="margin-top: 5px; margin-left: 0px;"> <el-form :inline="true" label-position="top" style="margin-top: 5px"> <el-button type="primary" @click="contactSaveModal()">新增</el-button> <el-button type="primary" @click="contactDeleteModal()">删除</el-button> </el-form> </el-form> <el-table :data="contactList" :height="secondHeight" border ref="contactTable" @row-click="contactClickRow" @selection-change="selectionContact" style="width: 100%; "> <el-table-column type="selection" header-align="center" align="center" width="50"> </el-table-column> <el-table-column v-for="(item,index) in customerContactArray" :key="index" :sortable="item.columnSortable" :prop="item.columnProp" :header-align="item.headerAlign" :show-overflow-tooltip="item.showOverflowTooltip" :align="item.align" :fixed="item.fixed === '' ? false : item.fixed" :min-width="item.columnWidth" :label="item.columnLabel"> <template slot-scope="scope"> <span v-if="!item.columnHidden">{{ scope.row[item.columnProp] }}</span> <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span> </template> </el-table-column> <el-table-column fixed="right" header-align="center" align="center" width="100" label="操作"> <template slot-scope="scope"> <el-link style="cursor: pointer" @click="updateContactModal(scope.row)">编辑</el-link> <el-link style="cursor: pointer" @click="detailContactModal(scope.row)">详情</el-link> </template> </el-table-column> </el-table> </el-tab-pane> <!-- 联系地址页签 --> <el-tab-pane label="联系地址" name="customer_address"> <el-form :inline="true" label-position="top" style="margin-top: 5px"> <el-button type="primary" @click="addressSaveModal()">新增</el-button> <el-button type="primary" @click="addressDeleteModal()">删除</el-button> </el-form> <el-table :data="addressList" :height="secondHeight" border ref="addressTable" @row-click="addressClickRow" @selection-change="selectionAddress" style="width: 100%;"> <el-table-column type="selection" header-align="center" align="center" width="50"> </el-table-column> <el-table-column v-for="(item,index) in customerAddressArray" :key="index" :sortable="item.columnSortable" :prop="item.columnProp" :header-align="item.headerAlign" :show-overflow-tooltip="item.showOverflowTooltip" :align="item.align" :fixed="item.fixed === '' ? false : item.fixed" :min-width="item.columnWidth" :label="item.columnLabel"> <template slot-scope="scope"> <span v-if="!item.columnHidden">{{ scope.row[item.columnProp] }}</span> <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span> </template> </el-table-column> <el-table-column fixed="right" header-align="center" align="center" width="100" label="操作"> <template slot-scope="scope"> <el-link style="cursor: pointer" @click="updateAddressModal(scope.row)">编辑</el-link> <el-link style="cursor: pointer" @click="detailAddressModal(scope.row)">详情</el-link> </template> </el-table-column> </el-table> </el-tab-pane> <!-- 项目信息页签 --> <el-tab-pane label="项目信息" name="project_information"> <el-form :inline="true" label-position="top" style="margin-top: 5px"> <el-button type="primary" @click="projectInformationSaveModal()">新增</el-button> </el-form> <el-table :data="projectInformationList" :height="secondHeight" border ref="projectInformationTable" @row-click="projectInformationClickRow" @selection-change="selectionProjectInformation" style="width: 100%;"> <el-table-column type="selection" header-align="center" align="center" width="50"> </el-table-column> <el-table-column header-align="center" align="left" prop="projectId" width="160" label="项目号"> <template slot-scope="{row,$index}"> <el-link style="cursor: pointer" @click="clickProjectId(row.projectId)">{{ row.projectId }}</el-link> </template> </el-table-column> <el-table-column v-for="(item,index) in projectInformationArray" :key="index" :sortable="item.columnSortable" :prop="item.columnProp" :header-align="item.headerAlign" :show-overflow-tooltip="item.showOverflowTooltip" :align="item.align" :fixed="item.fixed === '' ? false : item.fixed" :min-width="item.columnWidth" :label="item.columnLabel"> <template slot-scope="scope"> <span v-if="!item.columnHidden">{{ scope.row[item.columnProp] }}</span> <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span> </template> </el-table-column> <el-table-column fixed="right" header-align="center" align="center" width="100" label="操作"> <template slot-scope="scope"> <el-link style="cursor: pointer" @click="updateProjectInformationModal(scope.row)">编辑</el-link> <el-link style="cursor: pointer" @click="detailProjectInformationModal(scope.row)">详情</el-link> </template> </el-table-column> </el-table> </el-tab-pane> </el-tabs>
<!-- 项目经理选择模态框 --> <el-dialog width="620px" title="项目经理" :close-on-click-modal="false" :visible.sync="managerFlag"> <el-transfer ref="managerTransfer" v-model="projectManagerList" :props="{key: 'operatorId',label: 'operatorName'}" :data="operatorList" :titles="['未选择', '已选择']"> </el-transfer> <span slot="footer" class="dialog-footer"> <div style="margin-top: 5px"> <el-button type="primary" @click="saveManagerList()">确定</el-button> <el-button type="primary" @click="managerFlag=false">取消</el-button> </div> </span> </el-dialog>
<!-- 项目负责人选择模态框 --> <el-dialog width="620px" title="项目负责人" :close-on-click-modal="false" :visible.sync="ownerFlag"> <el-transfer ref="ownerTransfer" v-model="projectOwnerList" :props="{key: 'operatorId',label: 'operatorName'}" :data="operatorList" :titles="['未选择', '已选择']"> </el-transfer> <span slot="footer" class="dialog-footer"> <div style="margin-top: 5px"> <el-button type="primary" @click="saveOwnerList()">确定</el-button> <el-button type="primary" @click="ownerFlag=false">取消</el-button> </div> </span> </el-dialog>
<!-- 项目权限选择模态框 --> <el-dialog width="530px" title="权限" :close-on-click-modal="false" :visible.sync="userRoleFlag"> <el-table :data="userRoleList" border :height="300" v-loading="false" style="width: 100%;"> <el-table-column prop="username" header-align="center" align="center" min-width="35" label="账号"> </el-table-column> <el-table-column prop="userDisplay" header-align="center" align="center" min-width="35" label="姓名"> </el-table-column> <el-table-column prop="" header-align="center" align="center" min-width="30" label=""> <template slot-scope="scope"> <!-- 如果数据为Y,显示勾选框,否则不勾选 --> <el-checkbox v-model="scope.row.checkAll" @change="changeAll(scope.row)"></el-checkbox> </template> </el-table-column> <el-table-column prop="" header-align="center" align="center" min-width="30" label="查询"> <template slot-scope="scope"> <!-- 如果数据为Y,显示勾选框,否则不勾选 --> <el-checkbox v-model="scope.row.searchCheck" @change="changeCheck(scope.row,1)"></el-checkbox> </template> </el-table-column> <el-table-column prop="" header-align="center" align="center" min-width="30" label="修改"> <template slot-scope="scope"> <!-- 如果数据为Y,显示勾选框,否则不勾选 --> <el-checkbox v-model="scope.row.updateCheck" @change="changeCheck(scope.row,2)"></el-checkbox> </template> </el-table-column> <el-table-column prop="" header-align="center" align="center" min-width="30" label="下载"> <template slot-scope="scope"> <!-- 如果数据为Y,显示勾选框,否则不勾选 --> <el-checkbox v-model="scope.row.downCheck" @change="changeCheck(scope.row,3)"></el-checkbox> </template> </el-table-column> <el-table-column prop="" header-align="center" align="center" min-width="30" label="删除"> <template slot-scope="scope"> <!-- 如果数据为Y,显示勾选框,否则不勾选 --> <el-checkbox v-model="scope.row.deleteCheck" @change="changeCheck(scope.row,4)"></el-checkbox> </template> </el-table-column> </el-table> <span slot="footer" class="dialog-footer"> <div style="margin-top: 5px"> <el-button type="primary" @click="saveUserList()">确定</el-button> <el-button type="primary" @click="userRoleFlag = false">取消</el-button> </div> </span> </el-dialog>
<add-or-update v-if="addOrUpdateVisible" v-model="addOrUpdate" ref="addOrUpdate" @refreshDataList="getDataList" v-drag></add-or-update>
<Chooselist ref="baseList" @getBaseData="getBaseData"></Chooselist> </div></template>
<script>import { customerInformationSearch, // 客户信息列表查询
customerInformationSave, // 客户信息新增
customerInformationEdit, // 客户信息编辑
customerInformationDelete, // 客户信息删除
checkCustomerGroup, // 客户组ID输入校验
} from '@/api/customer/customerInformation.js'import { customerContactSearch, // 客户联系人列表查询
customerContactSave, // 客户联系人新增
customerContactEdit, // 客户联系人编辑
customerContactDelete, // 客户联系人删除
} from '@/api/customer/customerContact.js'import { customerAddressSearch, // 客户联系地址列表查询
customerAddressSave, // 客户联系地址新增
customerAddressEdit, // 客户联系地址编辑
customerAddressDelete, // 客户联系地址删除
} from '@/api/customer/customerAddress.js'import { projectInformationSearch, // 客户项目信息列表查询
projectInformationSave, // 客户项目信息新增
projectInformationEdit, // 客户项目信息编辑
projectInformationDelete, // 客户项目信息删除
} from '@/api/customer/projectInformation.js'import { searchOperatorWithSite, searchProjectTeamStr, searchUserRoll, saveProjectInfo} from "@/api/project/project.js"import Chooselist from '@/views/modules/common/Chooselist'import {verifyData} from "@/api/chooselist/chooselist.js"import DictDataSelect from '../sys/dict-data-select.vue'import saveOrUpdate from '../project/projectInfo/com_projectInfo-add-or-update.vue'import partUploadFile from '../part/part_upload_file.vue'import AddOrUpdate from "../project/projectInfo/com_projectInfo-add-or-update.vue";
export default { components: { AddOrUpdate, DictDataSelect, Chooselist, saveOrUpdate }, watch: { searchData: { deep: true, handler: function (newV, oldV) { this.searchData.customerNo = this.searchData.customerNo.toUpperCase() } }, modalData: { deep: true, handler: function (newV, oldV) { this.modalData.customerNo = this.modalData.customerNo.toUpperCase() this.modalData.customerGroupId1 = this.modalData.customerGroupId1.toUpperCase() this.modalData.customerGroupId2 = this.modalData.customerGroupId2.toUpperCase() if (this.modalData.customerGroupId1 == null || this.modalData.customerGroupId1 === '') { this.modalData.customerGroupName1 = '' } if (this.modalData.customerGroupId2 == null || this.modalData.customerGroupId2 === '') { this.modalData.customerGroupName2 = '' } } } }, data() { return { // 新增 项目
addOrUpdateVisible: false, // addOrUpdate
addOrUpdate: '0', components: { DictDataSelect, Chooselist }, // 导出
exportData: [], exportName: '客户信息' + this.dayjs().format('YYYYMMDDHHmmss'), exportHeader: ['客户信息'], exportFooter: [], resultList: [], // ======== 行高 ========
height: 200, secondHeight: 200, // ======== 分页 ========
pageIndex: 1, pageSize: 20, totalPage: 0, // 条件查询
searchData: { site: this.$store.state.user.site, customerNo: '', customerDesc: '', customerStatus: '', active: 'Y', page: 1, limit: 10 }, // 初始页签
activeTable: 'customer_contact', // ======== 数据对象 ========
modalData: { flag: '', title: '', site: this.$store.state.user.site, customerNo: '', customerDesc: '', customerDescription: '', customerIndustry: '', customerCurrency: '', turnoverOfYear: '', potentialRevenueOfYear: '', importantCustomer: '', customerType: '', customerStatus: '', companyName: '', jobDescription: '', remark: '', contactName: '', contactPhoneNumber1: '', createDate: '', createBy: '', updateDate: '', updateBy: '', primaryContact: '', contactStatus: '', addressName: '', customerAddress: '', customerGroupId1: '', customerGroupId2: '', customerGroupName1: '', customerGroupName2: '', type: '' }, contactModalData: { flag: '', title: '', site: this.$store.state.user.site, customerNo: '', customerDesc: '', contactId: '', contactName: '', contactLandlineNumber: '', contactPhoneNumber1: '', contactPhoneNumber2: '', contactPhoneNumber3: '', position: '', departmentName: '', mailbox: '', primaryContact: '', contactStatus: '', remark: '', createDate: '', createBy: '', updateDate: '', updateBy: '' }, addressModalData: { flag: '', title: '', site: this.$store.state.user.site, customerNo: '', customerDesc: '', addressId: '', addressName: '', companyName: '', defaultAddress: '', addressStatus: '', addressType: '', remark: '', createDate: '', createBy: '', updateDate: '', updateBy: '' }, projectInformationModalData: { flag: '', title: '', site: this.$store.state.user.site, customerNo: '', customerDesc: '', addressId: '', addressName: '', companyName: '', defaultAddress: '', addressStatus: '', addressType: '', remark: '', createDate: '', createBy: '', updateDate: '', updateBy: '', projectManagerList: [] }, // ======== 数据列表 ========
dataList: [], contactList: [], addressList: [], projectInformationList: [], // ======== 列表表头 ========
columnList: [ { userId: this.$store.state.user.name, functionId: 101001, serialNumber: '101001Table1CustomerDesc', tableId: '101001Table1', tableName: '客户信息表', columnProp: 'customerDesc', headerAlign: 'center', align: 'left', columnLabel: '客户名称', columnHidden: false, columnImage: false, columnSortable: false, sortLv: 0, status: true, fixed: '', columnWidth: 160 }, { userId: this.$store.state.user.name, functionId: 101001, serialNumber: '101001Table1CustomerGroupName1', tableId: '101001Table1', tableName: '客户信息表', columnProp: 'customerGroupName1', headerAlign: 'center', align: 'left', columnLabel: '客户组1', columnHidden: false, columnImage: false, columnSortable: false, sortLv: 0, status: true, fixed: '', columnWidth: 160 }, { userId: this.$store.state.user.name, functionId: 101001, serialNumber: '101001Table1CustomerGroupName2', tableId: '101001Table1', tableName: '客户信息表', columnProp: 'customerGroupName2', headerAlign: 'center', align: 'left', columnLabel: '客户组2', columnHidden: false, columnImage: false, columnSortable: false, sortLv: 0, status: true, fixed: '', columnWidth: 160 }, { userId: this.$store.state.user.name, functionId: 101001, serialNumber: '101001Table1CustomerCurrency', tableId: '101001Table1', tableName: '客户信息表', columnProp: 'customerCurrency', headerAlign: 'center', align: 'center', columnLabel: '客户币种', columnHidden: false, columnImage: false, columnSortable: false, sortLv: 0, status: true, fixed: '', columnWidth: 100 }, { userId: this.$store.state.user.name, functionId: 101001, serialNumber: '101001Table1TurnoverOfYear', tableId: '101001Table1', tableName: '客户信息表', columnProp: 'turnoverOfYear', headerAlign: 'center', align: 'right', columnLabel: '年营业额', columnHidden: false, columnImage: false, columnSortable: false, sortLv: 0, status: true, fixed: '', columnWidth: 100 }, { userId: this.$store.state.user.name, functionId: 101001, serialNumber: '101001Table1PotentialRevenueOfYear', tableId: '101001Table1', tableName: '客户信息表', columnProp: 'potentialRevenueOfYear', headerAlign: 'center', align: 'right', columnLabel: '年潜在投入', columnHidden: false, columnImage: false, columnSortable: false, sortLv: 0, status: true, fixed: '', columnWidth: 100 }, { userId: this.$store.state.user.name, functionId: 101001, serialNumber: '101001Table1ImportantCustomer', tableId: '101001Table1', tableName: '客户信息表', columnProp: 'importantCustomer', headerAlign: 'center', align: 'center', columnLabel: '重要程度', columnHidden: false, columnImage: false, columnSortable: false, sortLv: 0, status: true, fixed: '', columnWidth: 100 }, { userId: this.$store.state.user.name, functionId: 101001, serialNumber: '101001Table1CustomerStatus', tableId: '101001Table1', tableName: '客户信息表', columnProp: 'customerStatusDesc', headerAlign: 'center', align: 'center', columnLabel: '客户状态', columnHidden: false, columnImage: false, columnSortable: false, sortLv: 0, status: true, fixed: '', columnWidth: 100 }, { userId: this.$store.state.user.name, functionId: 101001, serialNumber: '101001Table1CustomerType', tableId: '101001Table1', tableName: '客户信息表', columnProp: 'customerType', headerAlign: 'center', align: 'center', columnLabel: '客户类型', columnHidden: false, columnImage: false, columnSortable: false, sortLv: 0, status: true, fixed: '', columnWidth: 100 }, { userId: this.$store.state.user.name, functionId: 101001, serialNumber: '101001Table1CreateDate', tableId: '101001Table1', tableName: '客户信息表', columnProp: 'createDate', headerAlign: 'center', align: 'center', columnLabel: '创建时间', columnHidden: false, columnImage: false, columnSortable: false, sortLv: 0, status: true, fixed: '', columnWidth: 170 }, { userId: this.$store.state.user.name, functionId: 101001, serialNumber: '101001Table1CreateBy', tableId: '101001Table1', tableName: '客户信息表', columnProp: 'createBy', headerAlign: 'center', align: 'center', columnLabel: '创建人', columnHidden: false, columnImage: false, columnSortable: false, sortLv: 0, status: true, fixed: '', columnWidth: 100 }, { userId: this.$store.state.user.name, functionId: 101001, serialNumber: '101001Table1UpdateDate', tableId: '101001Table1', tableName: '客户信息表', columnProp: 'updateDate', headerAlign: 'center', align: 'center', columnLabel: '更新时间', columnHidden: false, columnImage: false, columnSortable: false, sortLv: 0, status: true, fixed: '', columnWidth: 170 }, { userId: this.$store.state.user.name, functionId: 101001, serialNumber: '101001Table1UpdateBy', tableId: '101001Table1', tableName: '客户信息表', columnProp: 'updateBy', headerAlign: 'center', align: 'center', columnLabel: '更新人', columnHidden: false, columnImage: false, columnSortable: false, sortLv: 0, status: true, fixed: '', columnWidth: 100 } ], customerContactArray: [ { userId: this.$store.state.user.name, functionId: 101001, serialNumber: '101001Table2ContactName', tableId: '101001Table2', tableName: '客户联系人表', columnProp: 'contactName', headerAlign: 'center', align: 'left', columnLabel: '联系人', columnHidden: false, columnImage: false, columnSortable: false, sortLv: 0, status: true, fixed: '', columnWidth: 120 }, { userId: this.$store.state.user.name, functionId: 101001, serialNumber: '101001Table2ContactPhoneNumber1', tableId: '101001Table2', tableName: '客户联系人表', columnProp: 'contactPhoneNumber1', headerAlign: 'center', align: 'left', columnLabel: '联系电话', columnHidden: false, columnImage: false, columnSortable: false, sortLv: 0, status: true, fixed: '', columnWidth: 160 }, { userId: this.$store.state.user.name, functionId: 101001, serialNumber: '101001Table2ContactLandlineNumber', tableId: '101001Table2', tableName: '客户联系人表', columnProp: 'contactLandlineNumber', headerAlign: 'center', align: 'left', columnLabel: '座机', columnHidden: false, columnImage: false, columnSortable: false, sortLv: 0, status: true, fixed: '', columnWidth: 160 }, { userId: this.$store.state.user.name, functionId: 101001, serialNumber: '101001Table2Position', tableId: '101001Table2', tableName: '客户联系人表', columnProp: 'position', headerAlign: 'center', align: 'left', columnLabel: '公司职务', columnHidden: false, columnImage: false, columnSortable: false, sortLv: 0, status: true, fixed: '', columnWidth: 100 }, { userId: this.$store.state.user.name, functionId: 101001, serialNumber: '101001Table2DepartmentName', tableId: '101001Table2', tableName: '客户联系人表', columnProp: 'departmentName', headerAlign: 'center', align: 'left', columnLabel: '部门', columnHidden: false, columnImage: false, columnSortable: false, sortLv: 0, status: true, fixed: '', columnWidth: 100 }, { userId: this.$store.state.user.name, functionId: 101001, serialNumber: '101001Table2Mailbox', tableId: '101001Table2', tableName: '客户联系人表', columnProp: 'mailbox', headerAlign: 'center', align: 'left', columnLabel: '邮箱', columnHidden: false, columnImage: false, columnSortable: false, sortLv: 0, status: true, fixed: '', columnWidth: 160 }, { userId: this.$store.state.user.name, functionId: 101001, serialNumber: '101001Table2PrimaryContact', tableId: '101001Table2', tableName: '客户联系人表', columnProp: 'primaryContact', headerAlign: 'center', align: 'center', columnLabel: '默认联系人', columnHidden: false, columnImage: false, columnSortable: false, sortLv: 0, status: true, fixed: '', columnWidth: 100 }, { userId: this.$store.state.user.name, functionId: 101001, serialNumber: '101001Table2ContactStatus', tableId: '101001Table2', tableName: '客户联系人表', columnProp: 'contactStatus', headerAlign: 'center', align: 'center', columnLabel: '状态', columnHidden: false, columnImage: false, columnSortable: false, sortLv: 0, status: true, fixed: '', columnWidth: 100 }, { userId: this.$store.state.user.name, functionId: 101001, serialNumber: '101001Table2CreateDate', tableId: '101001Table2', tableName: '客户联系人表', columnProp: 'createDate', headerAlign: 'center', align: 'center', columnLabel: '创建时间', columnHidden: false, columnImage: false, columnSortable: false, sortLv: 0, status: true, fixed: '', columnWidth: 170 }, { userId: this.$store.state.user.name, functionId: 101001, serialNumber: '101001Table2CreateBy', tableId: '101001Table2', tableName: '客户联系人表', columnProp: 'createBy', headerAlign: 'center', align: 'center', columnLabel: '创建人', columnHidden: false, columnImage: false, columnSortable: false, sortLv: 0, status: true, fixed: '', columnWidth: 100 }, { userId: this.$store.state.user.name, functionId: 101001, serialNumber: '101001Table2UpdateDate', tableId: '101001Table2', tableName: '客户联系人表', columnProp: 'updateDate', headerAlign: 'center', align: 'center', columnLabel: '更新时间', columnHidden: false, columnImage: false, columnSortable: false, sortLv: 0, status: true, fixed: '', columnWidth: 170 }, { userId: this.$store.state.user.name, functionId: 101001, serialNumber: '101001Table2UpdateBy', tableId: '101001Table2', tableName: '客户联系人表', columnProp: 'updateBy', headerAlign: 'center', align: 'center', columnLabel: '更新人', columnHidden: false, columnImage: false, columnSortable: false, sortLv: 0, status: true, fixed: '', columnWidth: 100 } ], customerAddressArray: [ { userId: this.$store.state.user.name, functionId: 101001, serialNumber: '101001Table3AddressType', tableId: '101001Table3', tableName: '客户联系地址表', columnProp: 'addressTypeName', headerAlign: 'center', align: 'center', columnLabel: '地址类型', columnHidden: false, columnImage: false, columnSortable: false, sortLv: 0, status: true, fixed: '', columnWidth: 100 }, { userId: this.$store.state.user.name, functionId: 101001, serialNumber: '101001Table3CompanyName', tableId: '101001Table3', tableName: '客户联系地址表', columnProp: 'companyName', headerAlign: 'center', align: 'left', columnLabel: '公司名称', columnHidden: false, columnImage: false, columnSortable: false, sortLv: 0, status: true, fixed: '', columnWidth: 160 }, { userId: this.$store.state.user.name, functionId: 101001, serialNumber: '101001Table3AddressName', tableId: '101001Table3', tableName: '客户联系地址表', columnProp: 'addressName', headerAlign: 'center', align: 'left', columnLabel: '地址', columnHidden: false, columnImage: false, columnSortable: false, sortLv: 0, status: true, fixed: '', columnWidth: 160 }, { userId: this.$store.state.user.name, functionId: 101001, serialNumber: '101001Table3DefaultAddress', tableId: '101001Table3', tableName: '客户联系地址表', columnProp: 'defaultAddress', headerAlign: 'center', align: 'center', columnLabel: '默认地址', columnHidden: false, columnImage: false, columnSortable: false, sortLv: 0, status: true, fixed: '', columnWidth: 100 }, { userId: this.$store.state.user.name, functionId: 101001, serialNumber: '101001Table3AddressStatus', tableId: '101001Table3', tableName: '客户联系地址表', columnProp: 'addressStatus', headerAlign: 'center', align: 'center', columnLabel: '状态', columnHidden: false, columnImage: false, columnSortable: false, sortLv: 0, status: true, fixed: '', columnWidth: 100 }, { userId: this.$store.state.user.name, functionId: 101001, serialNumber: '101001Table3CreateDate', tableId: '101001Table3', tableName: '客户联系地址表', columnProp: 'createDate', headerAlign: 'center', align: 'center', columnLabel: '创建时间', columnHidden: false, columnImage: false, columnSortable: false, sortLv: 0, status: true, fixed: '', columnWidth: 170 }, { userId: this.$store.state.user.name, functionId: 101001, serialNumber: '101001Table3CreateBy', tableId: '101001Table3', tableName: '客户联系地址表', columnProp: 'createBy', headerAlign: 'center', align: 'center', columnLabel: '创建人', columnHidden: false, columnImage: false, columnSortable: false, sortLv: 0, status: true, fixed: '', columnWidth: 100 }, { userId: this.$store.state.user.name, functionId: 101001, serialNumber: '101001Table3UpdateDate', tableId: '101001Table3', tableName: '客户联系地址表', columnProp: 'updateDate', headerAlign: 'center', align: 'center', columnLabel: '更新时间', columnHidden: false, columnImage: false, columnSortable: false, sortLv: 0, status: true, fixed: '', columnWidth: 170 }, { userId: this.$store.state.user.name, functionId: 101001, serialNumber: '101001Table3UpdateBy', tableId: '101001Table3', tableName: '客户联系地址表', columnProp: 'updateBy', headerAlign: 'center', align: 'center', columnLabel: '更新人', columnHidden: false, columnImage: false, columnSortable: false, sortLv: 0, status: true, fixed: '', columnWidth: 100 } ], projectInformationArray: [ { userId: this.$store.state.user.name, functionId: 101001, serialNumber: '101001Table4ProjectName', tableId: '101001Table4', tableName: '客户项目信息表', columnProp: 'projectName', headerAlign: 'center', align: 'left', columnLabel: '项目名称', columnHidden: false, columnImage: false, columnSortable: false, sortLv: 0, status: true, fixed: '', columnWidth: 160 }, { userId: this.$store.state.user.name, functionId: 101001, serialNumber: '101001Table4ProjectType', tableId: '101001Table4', tableName: '客户项目信息表', columnProp: 'projectType', headerAlign: 'center', align: 'center', columnLabel: '项目类型', columnHidden: false, columnImage: false, columnSortable: false, sortLv: 0, status: true, fixed: '', columnWidth: 100 }, { userId: this.$store.state.user.name, functionId: 101001, serialNumber: '101001Table4ProjectDesc', tableId: '101001Table4', tableName: '客户项目信息表', columnProp: 'projectDesc', headerAlign: 'center', align: 'left', columnLabel: '项目描述', columnHidden: false, columnImage: false, columnSortable: false, sortLv: 0, status: true, fixed: '', columnWidth: 160 }, { userId: this.$store.state.user.name, functionId: 101001, serialNumber: '101001Table4Status', tableId: '101001Table4', tableName: '客户项目信息表', columnProp: 'status', headerAlign: 'center', align: 'center', columnLabel: '项目状态', columnHidden: false, columnImage: false, columnSortable: false, sortLv: 0, status: true, fixed: '', columnWidth: 100 }, { userId: this.$store.state.user.name, functionId: 101001, serialNumber: '101001Table4ProjectOwnerName', tableId: '101001Table4', tableName: '客户项目信息表', columnProp: 'projectOwnerName', headerAlign: 'center', align: 'left', columnLabel: '项目负责人', columnHidden: false, columnImage: false, columnSortable: false, sortLv: 0, status: true, fixed: '', columnWidth: 130 }, { userId: this.$store.state.user.name, functionId: 101001, serialNumber: '101001Table4CreateDate', tableId: '101001Table4', tableName: '客户项目信息表', columnProp: 'createDate', headerAlign: 'center', align: 'center', columnLabel: '创建时间', columnHidden: false, columnImage: false, columnSortable: false, sortLv: 0, status: true, fixed: '', columnWidth: 170 }, { userId: this.$store.state.user.name, functionId: 101001, serialNumber: '101001Table4CreateBy', tableId: '101001Table4', tableName: '客户项目信息表', columnProp: 'createBy', headerAlign: 'center', align: 'center', columnLabel: '创建人', columnHidden: false, columnImage: false, columnSortable: false, sortLv: 0, status: true, fixed: '', columnWidth: 100 }, { userId: this.$store.state.user.name, functionId: 101001, serialNumber: '101001Table4UpdateDate', tableId: '101001Table4', tableName: '客户项目信息表', columnProp: 'updateDate', headerAlign: 'center', align: 'center', columnLabel: '更新时间', columnHidden: false, columnImage: false, columnSortable: false, sortLv: 0, status: true, fixed: '', columnWidth: 170 }, { userId: this.$store.state.user.name, functionId: 101001, serialNumber: '101001Table4UpdateBy', tableId: '101001Table4', tableName: '客户项目信息表', columnProp: 'updateBy', headerAlign: 'center', align: 'center', columnLabel: '更新人', columnHidden: false, columnImage: false, columnSortable: false, sortLv: 0, status: true, fixed: '', columnWidth: 100 } ], // ======== 必填规则 ========
rules: { customerNo: [ { required: true, message: ' ', trigger: ['blur', 'change'] } ], customerDesc: [ { required: true, message: ' ', trigger: ['blur', 'change'] } ], customerCurrency: [ { required: true, message: ' ', trigger: ['blur', 'change'] } ], contactName: [ { required: true, message: ' ', trigger: ['blur', 'change'] } ], contactPhoneNumber1: [ { required: true, message: ' ', trigger: ['blur', 'change'] } ], importantCustomer: [ { required: true, message: ' ', trigger: ['blur', 'change'] } ], customerStatus: [ { required: true, message: ' ', trigger: ['blur', 'change'] } ], customerType: [ { required: true, message: ' ', trigger: ['blur', 'change'] } ], }, contactRules: { contactName: [ { required: true, message: ' ', trigger: ['blur', 'change'] } ], position: [ { required: true, message: ' ', trigger: ['blur', 'change'] } ], primaryContact: [ { required: true, message: ' ', trigger: ['blur', 'change'] } ], contactStatus: [ { required: true, message: ' ', trigger: ['blur', 'change'] } ], contactPhoneNumber1: [ { required: true, message: ' ', trigger: ['blur', 'change'] } ] }, addressRules: { addressName: [ { required: true, message: ' ', trigger: ['blur', 'change'] } ], defaultAddress: [ { required: true, message: ' ', trigger: ['blur', 'change'] } ], addressStatus: [ { required: true, message: ' ', trigger: ['blur', 'change'] } ], addressType: [ { required: true, message: ' ', trigger: ['blur', 'change'] } ] }, projectInformationRules: { projectType: [ { required: true, message: ' ', trigger: ['blur', 'change'] } ], projectName: [ { required: true, message: ' ', trigger: ['blur', 'change'] } ], projectSourceDesc: [ { required: true, message: ' ', trigger: ['blur', 'change'] } ], priorityDesc: [ { required: true, message: ' ', trigger: ['blur', 'change'] } ], needDate: [ { required: true, message: ' ', trigger: ['blur', 'change'] } ], projectManagerName: [ { required: true, message: ' ', trigger: ['blur', 'change'] } ], projectOwnerName: [ { required: true, message: ' ', trigger: ['blur', 'change'] } ], userRoleName: [ { required: true, message: ' ', trigger: ['blur', 'change'] } ] }, // ======== 复选数据集 ========
customerSelections: [], contactSelections: [], addressSelections: [], projectInformationSelections: [], // ======== 选中的当前行数据 ========
customerCurrentRow: {}, contactCurrentRow: {}, addressCurrentRow: {}, projectInformationCurrentRow: {}, // ======== 模态框开关控制 ========
modalFlag: false, modalDisableFlag: false, detailModalFlag: false, contactModalFlag: false, contactDetailModalFlag: false, addressModalFlag: false, addressDetailModalFlag: false, projectInformationModalFlag: false, projectInformationDetailModalFlag: false, // ======== 客户项目相关 ========
operatorList: [], projectManagerList: [], projectOwnerList: [], userRoleList: [], managerFlag: false, ownerFlag: false, userRoleFlag: false, } },
mounted() { this.$nextTick(() => { this.height = window.innerHeight / 2 - 30 /*第二个表格高度的动态调整*/ this.secondHeight = window.innerHeight / 2 - 206 }) },
created() { this.getDataList() },
methods: { // ======== 分页相关方法 ========
/** * 每页数 * @param val */ sizeChangeHandle(val) { this.pageSize = val this.pageIndex = 1 this.getDataList() }, /** * 当前页 * @param val */ currentChangeHandle(val) { this.pageIndex = val this.getDataList() },
// ======== 页签切换相关方法 ========
/** * 列表表格选择替换 * @param tab * @param event */ tabClick(tab, event) { // 刷新列表数据
this.refreshCurrentTabTable() }, /** * 当前值发生变化的时候修改 * @param row * @param oldRow */ changeCurrentRow(row, oldRow) { // 判断是否是获取焦点的事件
if (row) { this.customerCurrentRow = JSON.parse(JSON.stringify(row)) //刷新当前页表
this.refreshCurrentTabTable() } }, /** * 刷新页签的table数据 */ refreshCurrentTabTable() { if (this.activeTable === 'customer_contact') { this.getCustomerContactList() } else if (this.activeTable === 'customer_address') { this.getCustomerAddressList() } else if (this.activeTable === 'project_information') { this.getProjectInformationList() } },
// ======== 列表数据刷新方法 ========
/** * 获取数据列表 */ getDataList() { this.searchData.limit = this.pageSize this.searchData.page = this.pageIndex customerInformationSearch(this.searchData).then(({data}) => { if (data.code === 0) { this.dataList = data.page.list this.pageIndex = data.page.currPage this.pageSize = data.page.pageSize this.totalPage = data.page.totalCount // 判断是否全部存在数据
if (this.totalPage > 0) { // 设置选中行
this.$refs.customerTable.setCurrentRow(this.dataList[0]) // 加载当前的页签的table
this.refreshCurrentTabTable() } } }) }, /** * 刷新客户联系人的列表 */ getCustomerContactList() { let tempData = { site: this.$store.state.user.site, customerNo: this.customerCurrentRow.customerNo } customerContactSearch(tempData).then(({data}) => { if (data && data.code === 0) { this.contactList = data.rows } else { this.contactList = [] } }); }, /** * 刷新客户联系地址的列表 */ getCustomerAddressList() { let tempData = { site: this.$store.state.user.site, customerNo: this.customerCurrentRow.customerNo, customerDesc: this.customerCurrentRow.customerDesc } customerAddressSearch(tempData).then(({data}) => { if (data && data.code === 0) { this.addressList = data.rows } else { this.addressList = [] } }); }, /** * 刷新客户项目信息的列表 */ getProjectInformationList() { let tempData = { site: this.$store.state.user.site, customerId: this.customerCurrentRow.customerNo } projectInformationSearch(tempData).then(({data}) => { if (data && data.code === 0) { this.projectInformationList = data.rows } else { this.projectInformationList = [] } }); },
// ======== 新增模态框 ========
/** * 客户信息新增模态框 */ addModal() { this.modalData = { flag: '1', title: '客户新增', site: this.$store.state.user.site, customerNo: '', customerDesc: '', customerDescription: '', customerIndustry: '', customerCurrency: '', turnoverOfYear: '', potentialRevenueOfYear: '', importantCustomer: '', customerGroupId1: '', customerGroupId2: '', customerGroupName1: '', customerGroupName2: '', customerStatus: 'Y', customerType: '潜在客户', addressName: '', defaultAddress: '', addressStatus: '启用', addressType: '类型一', createBy: this.$store.state.user.name, type: '' } this.modalDisableFlag = false this.detailModalFlag = false this.modalFlag = true }, /** * 客户联系人新增模态框 */ contactSaveModal() { this.contactModalData = { flag: '1', title: '联系人新增', site: this.$store.state.user.site, customerNo: this.customerCurrentRow.customerNo, contactId: '', contactName: '', contactLandlineNumber: '', contactPhoneNumber1: '', contactPhoneNumber2: '', contactPhoneNumber3: '', position: '', departmentName: '', mailbox: '', primaryContact: 'N', contactStatus: '启用', remark: '', createDate: '', createBy: this.$store.state.user.name, } if (this.contactList.length === 0) { this.contactModalData.primaryContact = 'Y' } this.contactDetailModalFlag = false this.contactModalFlag = true }, /** * 客户联系地址新增模态框 */ addressSaveModal() { this.addressModalData = { flag: '1', title: '联系地址新增', site: this.$store.state.user.site, customerNo: this.customerCurrentRow.customerNo, addressId: '', addressName: '', companyName: this.customerCurrentRow.customerDesc, defaultAddress: 'N', addressStatus: '启用', addressType: '', remark: '', createDate: '', createBy: this.$store.state.user.name, } if (this.addressList.length === 0) { this.addressModalData.defaultAddress = 'Y' } this.addressDetailModalFlag = false this.addressModalFlag = true }, /** * 客户项目信息新增模态框 */ projectInformationSaveModal() { this.projectInformationModalData = { flag: '1', title: '项目信息新增', site: this.$store.state.user.site, id: 0, projectLevel: '', projectId: '', projectType: '', projectTypeDb: '', customerId: this.customerCurrentRow.customerNo, customerName: this.customerCurrentRow.customerDesc, projectName: '', projectDesc: '', projectSource: '', projectSourceDesc: '', priority: '', priorityDesc: '', needDate: '', projectManagerName: '', projectOwnerName: '', customerRemark: '', remark: '', status: '', userRoleName: '', projectManagerList: [], projectOwnerList: [], userRoleList: [], createDate: '', createBy: this.$store.state.user.name } this.projectInformationDetailModalFlag = false // this.projectInformationModalFlag = true
this.addOrUpdateVisible = true; this.addOrUpdate = "save"; this.$nextTick(() => { this.$refs.addOrUpdate.initCustomer(this.projectInformationModalData); this.$refs.addOrUpdate.init(); }) },
// ======== 编辑模态框 ========
/** * 客户信息编辑模态框 * @param row */ updateModal(row) { this.modalData = { flag: '2', title: '客户编辑', site: row.site, customerNo: row.customerNo, customerDesc: row.customerDesc, customerDescription: row.customerDescription, customerIndustry: row.customerIndustry, customerCurrency: row.customerCurrency, turnoverOfYear: row.turnoverOfYear, potentialRevenueOfYear: row.potentialRevenueOfYear, customerGroupId1: row.customerGroupId1, customerGroupId2: row.customerGroupId2, customerGroupName1: row.customerGroupName1, customerGroupName2: row.customerGroupName2, importantCustomer: row.importantCustomer, customerStatus: row.customerStatus, customerType: row.customerType, companyName: row.companyName, jobDescription: row.jobDescription, contactStatus: row.contactStatus, addressName: row.addressName, defaultAddress: 'Y', updateBy: this.$store.state.user.name, type: '' } this.modalDisableFlag = true this.detailModalFlag = false this.modalFlag = true }, /** * 客户联系人编辑模态框 * @param row */ updateContactModal(row) { this.contactModalData = { flag: '2', title: '联系人编辑', site: row.site, customerNo: row.customerNo, contactId: row.contactId, contactName: row.contactName, contactLandlineNumber: row.contactLandlineNumber, contactPhoneNumber1: row.contactPhoneNumber1, contactPhoneNumber2: row.contactPhoneNumber2, contactPhoneNumber3: row.contactPhoneNumber3, position: row.position, departmentName: row.departmentName, mailbox: row.mailbox, primaryContact: row.primaryContact, contactStatus: row.contactStatus, remark: row.remark, updateDate: '', updateBy: this.$store.state.user.name } this.contactDetailModalFlag = false this.contactModalFlag = true }, /** * 客户联系地址编辑模态框 * @param row */ updateAddressModal(row) { this.addressModalData = { flag: '2', title: '联系地址编辑', site: row.site, customerNo: row.customerNo, addressId: row.addressId, addressName: row.addressName, companyName: row.companyName, defaultAddress: row.defaultAddress, addressStatus: row.addressStatus, addressType: row.addressType, remark: row.remark, updateDate: '', updateBy: this.$store.state.user.name } this.addressDetailModalFlag = false this.addressModalFlag = true }, /** * 客户项目信息编辑模态框 * @param row */ updateProjectInformationModal(row) { this.projectInformationModalData = { flag: '2', title: '项目信息编辑', site: row.site, id: row.id, projectLevel: row.projectLevel, projectId: row.projectId, projectType: row.projectType, projectTypeDb: row.projectTypeDb, customerId: row.customerId, customerName: row.customerName, projectName: row.projectName, projectDesc: row.projectDesc, projectSource: row.projectSource, projectSourceDesc: row.projectSourceDesc, priority: row.priority, priorityDesc: row.priorityDesc, needDate: row.needDate, projectManagerName: row.projectManagerName, projectOwnerName: row.projectOwnerName, customerRemark: row.customerRemark, remark: row.remark, status: row.status, userRoleName: row.userRoleName, projectManagerList: [], projectOwnerList: [], userRoleList: [], updateDate: '', updateBy: this.$store.state.user.name } // 查询项目经理、负责人、权限列表
let inData = { site: this.projectInformationModalData.site, projectId: this.projectInformationModalData.projectId, type: 'manager' } searchProjectTeamStr(inData).then(({data}) => { this.projectInformationModalData.projectManagerList = data.rows }) let inData2 = { site: this.projectInformationModalData.site, projectId: this.projectInformationModalData.projectId, type: 'owner' } searchProjectTeamStr(inData2).then(({data}) => { this.projectInformationModalData.projectOwnerList = data.rows }) let inData3 = { site: this.projectInformationModalData.site, projectId: this.projectInformationModalData.projectId } searchUserRoll(inData3).then(({data}) => { this.projectInformationModalData.userRoleList = data.rows }) this.projectInformationDetailModalFlag = false // this.projectInformationModalFlag = true
this.addOrUpdateVisible = true this.addOrUpdate = "update"; this.$nextTick(() => { this.$refs.addOrUpdate.init(row.id) }) },
// ======== 详情模态框 ========
/** * 客户信息详情模态框 * @param row */ detailModal(row) { this.modalData = { flag: '3', title: '客户详情', site: row.site, customerNo: row.customerNo, customerDesc: row.customerDesc, customerDescription: row.customerDescription, customerIndustry: row.customerIndustry, customerCurrency: row.customerCurrency, turnoverOfYear: row.turnoverOfYear, potentialRevenueOfYear: row.potentialRevenueOfYear, customerGroupId1: row.customerGroupId1, customerGroupId2: row.customerGroupId2, customerGroupName1: row.customerGroupName1, customerGroupName2: row.customerGroupName2, importantCustomer: row.importantCustomer, customerStatus: row.customerStatus, customerType: row.customerType, companyName: row.companyName, jobDescription: row.jobDescription, contactStatus: row.contactStatus, addressName: row.addressName, type: '' } this.modalDisableFlag = true this.detailModalFlag = true this.modalFlag = true }, /** * 客户联系人详情模态框 * @param row */ detailContactModal(row) { this.contactModalData = { flag: '3', title: '联系人详情', site: row.site, customerNo: row.customerNo, contactId: row.contactId, contactName: row.contactName, contactLandlineNumber: row.contactLandlineNumber, contactPhoneNumber1: row.contactPhoneNumber1, contactPhoneNumber2: row.contactPhoneNumber2, contactPhoneNumber3: row.contactPhoneNumber3, position: row.position, departmentName: row.departmentName, mailbox: row.mailbox, primaryContact: row.primaryContact, contactStatus: row.contactStatus, remark: row.remark } this.contactDetailModalFlag = true this.contactModalFlag = true }, /** * 客户联系地址详情模态框 * @param row */ detailAddressModal(row) { this.addressModalData = { flag: '3', title: '联系地址详情', site: row.site, customerNo: row.customerNo, addressId: row.addressId, addressName: row.addressName, companyName: row.companyName, defaultAddress: row.defaultAddress, addressStatus: row.addressStatus, addressType: row.addressType, remark: row.remark, } this.addressDetailModalFlag = true this.addressModalFlag = true }, /** * 客户项目信息详情模态框 * @param row */ detailProjectInformationModal(row) { this.projectInformationModalData = { flag: '3', title: '项目信息详情', site: row.site, projectId: row.projectId, projectType: row.projectType, projectTypeDb: row.projectTypeDb, customerId: row.customerId, customerName: row.customerName, projectName: row.projectName, projectDesc: row.projectDesc, projectSource: row.projectSource, projectSourceDesc: row.projectSourceDesc, priority: row.priority, priorityDesc: row.priorityDesc, needDate: row.needDate, projectManagerName: row.projectManagerName, projectOwnerName: row.projectOwnerName, customerRemark: row.customerRemark, remark: row.remark, status: row.status, userRoleName: row.userRoleName, buNo: row.buNo, buDesc: row.buDesc } this.projectInformationDetailModalFlag = true this.projectInformationModalFlag = true },
// ======== 删除方法 ========
/** * 客户信息删除 */ delModal() { if (this.customerSelections.length === 0) { this.$message.warning('请勾选要删除的客户!') return } this.$confirm(`是否删除这 ` + this.customerSelections.length + ` 条客户信息?`, '提示', { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning' }).then(() => { let tempData = { informationList: this.customerSelections } customerInformationDelete(tempData).then(({data}) => { if (data && data.code === 0) { this.getDataList() this.customerSelections = [] this.$message({ message: '操作成功', type: 'success', duration: 1500, onClose: () => { } }) } else { this.$alert(data.msg, '错误', { confirmButtonText: '确定' }) } }) }).catch(() => { }) }, /** * 客户联系人删除 */ contactDeleteModal() { if (this.contactSelections.length === 0) { this.$message.warning('请勾选要删除的联系人!') return } this.$confirm(`是否删除这 ` + this.contactSelections.length + ` 条联系人信息?`, '提示', { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning' }).then(() => { let tempContactName = null for (let i = 0; i < this.contactSelections.length; i++) { // 判断是否有默认联系人
if (this.contactSelections[i].primaryContact === 'Y') { tempContactName = this.contactSelections[i].contactName } } if (tempContactName !== '' || tempContactName != null) { this.$confirm(tempContactName + ` 为默认联系人,是否确认删除?`, '提示', { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning' }).then(() => { let tempData = { contactList: this.contactSelections } customerContactDelete(tempData).then(({data}) => { if (data && data.code === 0) { this.getCustomerContactList() this.contactSelections = [] this.$message({ message: '操作成功', type: 'success', duration: 1500, onClose: () => { } }) } else { this.$alert(data.msg, '错误', { confirmButtonText: '确定' }) } }) }).catch(() => { }) } else { let tempData = { contactList: this.contactSelections } customerContactDelete(tempData).then(({data}) => { if (data && data.code === 0) { this.getCustomerContactList() this.contactSelections = [] this.$message({ message: '操作成功', type: 'success', duration: 1500, onClose: () => { } }) } else { this.$alert(data.msg, '错误', { confirmButtonText: '确定' }) } }) } }).catch(() => { }) }, /** * 客户联系地址删除 */ addressDeleteModal() { if (this.addressSelections.length === 0) { this.$message.warning('请勾选要删除的地址!') return } this.$confirm(`是否删除这 ` + this.addressSelections.length + ` 条地址?`, '提示', { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning' }).then(() => { let tempAddressName = null for (let i = 0; i < this.addressSelections.length; i++) { // 判断是否有主联系地址
if (this.addressSelections[i].defaultAddress === 'Y') { tempAddressName = this.addressSelections[i].addressName } } if (tempAddressName !== '' || tempAddressName != null) { this.$confirm(tempAddressName + ` 为主联系地址,是否确认删除?`, '提示', { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning' }).then(() => { let tempData = { addressList: this.addressSelections } customerAddressDelete(tempData).then(({data}) => { if (data && data.code === 0) { this.getCustomerAddressList() this.addressSelections = [] this.$message({ message: '操作成功', type: 'success', duration: 1500, onClose: () => { } }) } else { this.$alert(data.msg, '错误', { confirmButtonText: '确定' }) } }) }).catch(() => { }) } else { let tempData = { addressList: this.addressSelections } customerAddressDelete(tempData).then(({data}) => { if (data && data.code === 0) { this.getCustomerAddressList() this.addressSelections = [] this.$message({ message: '操作成功', type: 'success', duration: 1500, onClose: () => { } }) } else { this.$alert(data.msg, '错误', { confirmButtonText: '确定' }) } }) } }).catch(() => { }) },
// ======== 新增/编辑方法 ========
/** * 客户信息新增/编辑 */ saveData() { if (this.modalData.customerNo === '' || this.modalData.customerNo == null) { this.$message.warning('请输入客户代码!') return } if (this.modalData.customerDesc === '' || this.modalData.customerDesc == null) { this.$message.warning('请输入客户名称!') return } // if (this.modalData.customerIndustry === '' || this.modalData.customerIndustry == null) {
// this.$message.warning('请输入行业!')
// return
// }
if (this.modalData.customerCurrency === '' || this.modalData.customerCurrency == null) { this.$message.warning('请输入币种!') return } if (this.modalData.importantCustomer === '' || this.modalData.importantCustomer == null) { this.$message.warning('请选择重要程度!') return } if (this.modalData.customerStatus === '' || this.modalData.customerStatus == null) { this.$message.warning('请选择客户状态!') return } if (this.modalData.customerType === '' || this.modalData.customerType == null) { this.$message.warning('请选择客户类型!') return } if (this.modalData.flag === '1') { // this.modalData.primaryContact = 'Y'
// this.modalData.contactStatus = '启用'
customerInformationSave(this.modalData).then(({data}) => { if (data && data.code === 0) { this.getDataList() this.modalFlag = false this.$message({ message: '操作成功', type: 'success', duration: 1500, onClose: () => { } }) } else { this.$alert(data.msg, '错误', { confirmButtonText: '确定' }) } }) } else { customerInformationEdit(this.modalData).then(({data}) => { if (data && data.code === 0) { this.getDataList() this.modalFlag = false this.$message({ message: '操作成功', type: 'success', duration: 1500, onClose: () => { } }) } else { this.$alert(data.msg, '错误', { confirmButtonText: '确定' }) } }) } }, /** * 客户联系人新增/编辑 */ saveContactData() { if (this.contactModalData.contactName === '' || this.contactModalData.contactName == null) { this.$message.warning('请输入联系人!') return } if (this.contactModalData.contactPhoneNumber1 === '' || this.contactModalData.contactPhoneNumber1 == null) { this.$message.warning('请输入联系人电话(1)!') return } if (this.contactModalData.primaryContact === '' || this.contactModalData.primaryContact == null) { this.$message.warning('请选择是否为默认联系人!') return } if (this.contactModalData.contactStatus === '' || this.contactModalData.contactStatus == null) { this.$message.warning('请选择状态!') return } if (this.contactModalData.flag === '1') { customerContactSave(this.contactModalData).then(({data}) => { if (data && data.code === 0) { this.getCustomerContactList() this.contactModalFlag = false this.$message({ message: '操作成功', type: 'success', duration: 1500, onClose: () => { } }) } else { this.$alert(data.msg, '错误', { confirmButtonText: '确定' }) } }) } else { customerContactEdit(this.contactModalData).then(({data}) => { if (data && data.code === 0) { this.getCustomerContactList() this.contactModalFlag = false this.$message({ message: '操作成功', type: 'success', duration: 1500, onClose: () => { } }) } else { this.$alert(data.msg, '错误', { confirmButtonText: '确定' }) } }) } }, /** * 客户联系地址新增/编辑 */ saveAddressData() { if (this.addressModalData.addressName === '' || this.addressModalData.addressName == null) { this.$message.warning('请输入地址!') return } if (this.addressModalData.defaultAddress === '' || this.addressModalData.defaultAddress == null) { this.$message.warning('请选择是否为主要地址!') return } if (this.addressModalData.addressStatus === '' || this.addressModalData.addressStatus == null) { this.$message.warning('请选择状态!') return } if (this.addressModalData.addressType === '' || this.addressModalData.addressType == null) { this.$message.warning('请选择地址类型!') return } if (this.addressModalData.flag === '1') { customerAddressSave(this.addressModalData).then(({data}) => { if (data && data.code === 0) { this.getCustomerAddressList() this.addressModalFlag = false this.$message({ message: '操作成功', type: 'success', duration: 1500, onClose: () => { } }) } else { this.$alert(data.msg, '错误', { confirmButtonText: '确定' }) } }) } else { customerAddressEdit(this.addressModalData).then(({data}) => { if (data && data.code === 0) { this.getCustomerAddressList() this.addressModalFlag = false this.$message({ message: '操作成功', type: 'success', duration: 1500, onClose: () => { } }) } else { this.$alert(data.msg, '错误', { confirmButtonText: '确定' }) } }) } }, /** * 客户项目信息新增/编辑 */ saveProjectInformationData() { if (this.projectInformationModalData.projectTypeDb === '' || this.projectInformationModalData.projectTypeDb == null) { this.$message.warning('请选择项目类型!') return } if (this.projectInformationModalData.projectName === '' || this.projectInformationModalData.projectName == null) { this.$message.warning('请输入项目名称!') return } if (this.projectInformationModalData.projectSource === '' || this.projectInformationModalData.projectSource == null) { this.$message.warning('请选择项目来源!') return } if (this.projectInformationModalData.priority === '' || this.projectInformationModalData.priority == null) { this.$message.warning('请选择优先级!') return } if (this.projectInformationModalData.needDate === '' || this.projectInformationModalData.needDate == null) { this.$message.warning('请选择要求日期!') return } if (this.projectInformationModalData.projectManagerName === '' || this.projectInformationModalData.projectManagerName == null) { this.$message.warning('请选择项目经理!') return } if (this.projectInformationModalData.projectOwnerName === '' || this.projectInformationModalData.projectOwnerName == null) { this.$message.warning('请选择项目负责人!') return } if (this.projectInformationModalData.userRoleName === '' || this.projectInformationModalData.userRoleName == null) { this.$message.warning('请选择权限!') return } saveProjectInfo(this.projectInformationModalData).then(({data}) => { if (data && data.code === 0) { this.getProjectInformationList() this.projectInformationModalFlag = false this.$message({ message: '操作成功', type: 'success', duration: 1500, onClose: () => { } }) } else { this.$alert(data.msg, '错误', { confirmButtonText: '确定' }) } }) },
// ======== 列表单机选中方法 ========
/** * 单机选中客户信息 * @param row */ customerClickRow(row) { this.customerCurrentRow = JSON.parse(JSON.stringify(row)) }, /** * 单机选中客户联系人 * @param row */ contactClickRow(row) { this.$refs.contactTable.toggleRowSelection(row) this.contactCurrentRow = JSON.parse(JSON.stringify(row)) }, /** * 单机选中客户联系地址 * @param row */ addressClickRow(row) { this.$refs.addressTable.toggleRowSelection(row) this.addressCurrentRow = JSON.parse(JSON.stringify(row)) }, /** * 单机选中客户项目信息 * @param row */ projectInformationClickRow(row, column) { if (column.label !== '项目号') { this.$refs.projectInformationTable.toggleRowSelection(row) this.projectInformationCurrentRow = JSON.parse(JSON.stringify(row)) } },
// ======== 列表复选方法 ========
/** * 复选客户信息 * @param val */ selectionCustomer(val) { this.customerSelections = val }, /** * 复选客户联系人 * @param val */ selectionContact(val) { this.contactSelections = val }, /** * 复选客户联系人 * @param val */ selectionAddress(val) { this.addressSelections = val }, /** * 复选客户项目信息 * @param val */ selectionProjectInformation(val) { this.projectInformationSelections = val },
// 客户组1输入校验
customerGroupBlur(tagNo) { if (this.modalData.customerGroupId1 != null && this.modalData.customerGroupId1 !== '') { let tempData = { tagno: tagNo, conditionSql: " and customer_group_id = '" + this.modalData.customerGroupId1 + "'" + " and site = '" + this.modalData.site + "'" } verifyData(tempData).then(({data}) => { if (data && data.code === 0) { if (data.baseListData.length > 0) { this.modalData.customerGroupId1 = data.baseListData[0].customer_group_id this.modalData.customerGroupName1 = data.baseListData[0].customer_group_name return } } }) } this.modalData.customerGroupName1 = '' },
// 客户组2输入校验
customerGroupBlur2(tagNo) { if (this.modalData.customerGroupId2 != null && this.modalData.customerGroupId2 !== '') { let tempData = { tagno: tagNo, conditionSql: " and customer_group_id = '" + this.modalData.customerGroupId2 + "'" + " and site = '" + this.modalData.site + "'" } verifyData(tempData).then(({data}) => { if (data && data.code === 0) { if (data.baseListData.length > 0) { this.modalData.customerGroupId2 = data.baseListData[0].customer_group_id this.modalData.customerGroupName2 = data.baseListData[0].customer_group_name return } } }) } this.modalData.customerGroupName2 = '' },
// ======== chooseList相关方法 ========
/** * 获取基础数据列表S * @param val * @param type */ getBaseList(val, type) { this.tagNo = val this.tagNo1 = type this.$nextTick(() => { let strVal = '' if (val === 1010) { if (type === 1) { strVal = this.projectInformationModalData.projectTypeDb } } if (val === 102) { if (type === 1) { strVal = this.projectInformationModalData.customerId } } if (val === 1011) { if (type === 1) { strVal = this.projectInformationModalData.projectSource } } if (val === 1012) { if (type === 1) { strVal = this.projectInformationModalData.priority } } if (val === 120) { strVal = this.modalData.customerGroupId1 } else if (val === 121) { strVal = this.modalData.customerGroupId2 } this.$refs.baseList.init(val, strVal) }) }, /** * 列表方法的回调 * @param val */ getBaseData(val) { if (this.tagNo === 1010) { if (this.tagNo1 === 1) { this.projectInformationModalData.projectTypeDb = val.Base_id this.projectInformationModalData.projectType = val.Base_desc } } if (this.tagNo === 102) { if (this.tagNo1 === 1) { this.projectInformationModalData.customerId = val.Customer_no this.projectInformationModalData.customerName = val.Customer_desc } } if (this.tagNo === 1011) { if (this.tagNo1 === 1) { this.projectInformationModalData.projectSource = val.Base_id this.projectInformationModalData.projectSourceDesc = val.Base_desc } } if (this.tagNo === 1012) { if (this.tagNo1 === 1) { this.projectInformationModalData.priority = val.Base_id this.projectInformationModalData.priorityDesc = val.Base_desc } } if (this.tagNo === 120) { this.modalData.customerGroupId1 = val.customer_group_id this.modalData.customerGroupName1 = val.customer_group_name } else if (this.tagNo === 121) { this.modalData.customerGroupId2 = val.customer_group_id this.modalData.customerGroupName2 = val.customer_group_name } }, /** * 项目经理选择模态框 */ managerChooseModal() { // 清空穿梭框的选中值
this.$nextTick(() => { this.$refs.managerTransfer.$refs.leftPanel.checked = [] this.$refs.managerTransfer.$refs.rightPanel.checked = [] }) let inData = { site: this.projectInformationModalData.site, projectId: this.projectInformationModalData.projectId, } searchOperatorWithSite(inData).then(({data}) => { this.operatorList = data.rows }) this.projectManagerList = JSON.parse(JSON.stringify(this.projectInformationModalData.projectManagerList)) this.managerFlag = true }, /** * 项目经理选择 */ saveManagerList() { let projectManagerName = '' for (let i = 0; i < this.projectManagerList.length; i++) { let select = this.operatorList.filter(item => item.operatorId === this.projectManagerList[i]) if (select.length > 0) { projectManagerName += select[0].operatorName + ';' } } this.projectInformationModalData.projectManagerName = projectManagerName this.projectInformationModalData.projectManagerList = JSON.parse(JSON.stringify(this.projectManagerList)) this.managerFlag = false }, /** * 项目负责人选择模态框 */ ownerChooseModal() { // 清空穿梭框的选中值
this.$nextTick(() => { this.$refs.ownerTransfer.$refs.leftPanel.checked = [] this.$refs.ownerTransfer.$refs.rightPanel.checked = [] }) let inData = { site: this.projectInformationModalData.site, projectId: this.projectInformationModalData.projectId, } searchOperatorWithSite(inData).then(({data}) => { this.operatorList = data.rows }) this.projectOwnerList = JSON.parse(JSON.stringify(this.projectInformationModalData.projectOwnerList)) this.ownerFlag = true }, /** * 项目负责人选择 */ saveOwnerList() { let projectOwnerName = '' for (let i = 0; i < this.projectOwnerList.length; i++) { let select = this.operatorList.filter(item => item.operatorId === this.projectOwnerList[i]) if (select.length > 0) { projectOwnerName += select[0].operatorName + ';' } } this.projectInformationModalData.projectOwnerName = projectOwnerName this.projectInformationModalData.projectOwnerList = JSON.parse(JSON.stringify(this.projectOwnerList)) this.ownerFlag = false }, /** * 项目权限模态框 */ userRollModal() { this.userRoleList = JSON.parse(JSON.stringify(this.projectInformationModalData.userRoleList)) this.userRoleFlag = true }, changeAll(row) { if (row.checkAll) { row.searchCheck = true row.updateCheck = true row.downCheck = true row.deleteCheck = true row.searchFlag = 'Y' row.updateFlag = 'Y' row.downFlag = 'Y' row.deleteFlag = 'Y' } else { row.searchCheck = false row.updateCheck = false row.downCheck = false row.deleteCheck = false row.searchFlag = 'N' row.updateFlag = 'N' row.downFlag = 'N' row.deleteFlag = 'N' } }, changeCheck(row, type) { if (type === 1) { if (row.searchCheck) { row.searchFlag = 'Y' } else { row.searchFlag = 'N' } } if (type === 2) { if (row.updateCheck) { row.updateFlag = 'Y' } else { row.updateFlag = 'N' } } if (type === 3) { if (row.downCheck) { row.downFlag = 'Y' } else { row.downFlag = 'N' } } if (type === 4) { if (row.deleteCheck) { row.deleteFlag = 'Y' } else { row.deleteFlag = 'N' } } if (row.searchCheck && row.updateCheck && row.downCheck && row.deleteCheck) { row.checkAll = true } else { row.checkAll = false } this.$forceUpdate(); }, saveUserList() { let name = '' for (let i = 0; i < this.userRoleList.length; i++) { if (this.userRoleList[i].searchCheck || this.userRoleList[i].updateCheck || this.userRoleList[i].downCheck || this.userRoleList[i].deleteCheck) { name += this.userRoleList[i].userDisplay + ';' } } this.projectInformationModalData.userRoleName = name this.projectInformationModalData.userRoleList = JSON.parse(JSON.stringify(this.userRoleList)) this.userRoleFlag = false },
// ======== 导出相关方法 ========
/** * 导出excel */ async createExportData() { this.searchData.limit = -1 this.searchData.page = 1 await customerInformationSearch(this.searchData).then(({data}) => { this.resultList = data.page.list }) return this.resultList }, startDownload() { }, finishDownload() { }, fields() { let json = '{' this.columnList.forEach((item, index) => { if (index == this.columnList.length - 1) { json += '"' + item.columnLabel + '"' + ':' + '"' + item.columnProp + '"' } else { json += '"' + item.columnLabel + '"' + ':' + '"' + item.columnProp + '"' + ',' } }) json += '}' let s = eval('(' + json + ')') return s }, clickProjectId(projectId) { if (this.$router.resolve('project-projectInfo/projectInfo').resolved.name === '404') { this.$alert('权限不足,访问失败', '警告', {confirmButtonText: '确定',}); } else { this.$router.push({name: "project-projectInfo/projectInfo", params: {projectId: projectId},}) } }, rowStyle({row}) { if (this.customerCurrentRow.customerNo === row.customerNo) { return {'background-color': '#E8F7F6', cursor: 'pointer'}; } }, }}</script>
<style scoped lang="scss">/deep/ .customer-tab .el-tabs__content { padding: 0px !important;}
.el-transfer-panel { border: 2px solid #17b3a3; border-radius: 4px; overflow: hidden; background: #fff; display: inline-block; vertical-align: middle; width: 200px; max-height: 100%; -webkit-box-sizing: border-box; box-sizing: border-box; position: relative;}
.el-transfer-panel .el-transfer-panel__header { height: 40px; line-height: 40px; background: #17b3a3; margin: 0; padding-left: 15px; border-bottom: 1px solid #17b3a3; -webkit-box-sizing: border-box; box-sizing: border-box; color: #000;}
.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label { font-size: 14px; color: #303133; font-weight: 400;}
.numInput /deep/ .el-input__inner { text-align: right;}
/deep/ .inlineNumber input::-webkit-outer-spin-button,/deep/ .inlineNumber input::-webkit-inner-spin-button { -webkit-appearance: none;
}
/deep/ .inlineNumber input[type="number"] { -moz-appearance: textfield; padding-right: 5px !important;}</style>
|