1045 lines
35 KiB
Vue
1045 lines
35 KiB
Vue
|
<template>
|
|||
|
<div>
|
|||
|
<van-form ref="form" :model="form" :rules="rules">
|
|||
|
<van-field
|
|||
|
ref="cusCode"
|
|||
|
v-model="form.cusCode"
|
|||
|
label="客户编码"
|
|||
|
placeholder="系统自动生成"
|
|||
|
readonly>
|
|||
|
</van-field>
|
|||
|
<van-field
|
|||
|
ref="cusSapCode"
|
|||
|
v-model="form.cusSapCode"
|
|||
|
label="SAP客户编码"
|
|||
|
placeholder="审批通过自动生成"
|
|||
|
readonly>
|
|||
|
</van-field>
|
|||
|
<van-field
|
|||
|
ref="cusName"
|
|||
|
v-model="form.cusName"
|
|||
|
required
|
|||
|
readonly
|
|||
|
name="cusName"
|
|||
|
label="客户名称"
|
|||
|
placeholder="企查查带出"
|
|||
|
:rules="[{ required: true, message: '客户未选择' }]">
|
|||
|
<template #button>
|
|||
|
<van-button :disabled="form.cusApprovalStatus === '1' || form.cusApprovalStatus === '2' || form.cusApprovalStatus === '3'"
|
|||
|
size="small" @click="openQcc" v-hasPermi="['customer:customer:qcclist']" type="primary">点击查询</van-button>
|
|||
|
</template>
|
|||
|
</van-field>
|
|||
|
<van-field
|
|||
|
ref="cusQccStreet"
|
|||
|
v-model="form.cusQccStreet"
|
|||
|
label="街道"
|
|||
|
placeholder="企查查带出"
|
|||
|
readonly>
|
|||
|
</van-field>
|
|||
|
<van-field
|
|||
|
ref="cusVatNo"
|
|||
|
v-model="form.cusVatNo"
|
|||
|
label="增值税号"
|
|||
|
placeholder="企查查带出"
|
|||
|
readonly>
|
|||
|
</van-field>
|
|||
|
<van-field
|
|||
|
re="cusStreet"
|
|||
|
v-model="form.cusStreet"
|
|||
|
name="cusStreet"
|
|||
|
required
|
|||
|
label="街道/门牌号"
|
|||
|
placeholder="请输入街道/门牌号"
|
|||
|
:readonly="form.cusApprovalStatus === '1' || form.cusApprovalStatus === '2' || form.cusApprovalStatus === '3'"
|
|||
|
:rules="[{ required: true, message: '' }]">
|
|||
|
</van-field>
|
|||
|
<van-field
|
|||
|
ref="cusPhoneNumber"
|
|||
|
name="cusPhoneNumber"
|
|||
|
v-model="form.cusPhoneNumber"
|
|||
|
label="电话号码"
|
|||
|
required
|
|||
|
placeholder="请输入电话号码"
|
|||
|
:readonly="form.cusApprovalStatus === '1' || form.cusApprovalStatus === '2' || form.cusApprovalStatus === '3'"
|
|||
|
:rules="[{ required: true, message: '' }]">
|
|||
|
</van-field>
|
|||
|
<van-field
|
|||
|
readonly
|
|||
|
name="khzbText"
|
|||
|
required
|
|||
|
:value="khzbText"
|
|||
|
label="客户组类别"
|
|||
|
placeholder="点击选择客户组类别"
|
|||
|
@click="(form.cusApprovalStatus === '1' || form.cusApprovalStatus === '2' || form.cusApprovalStatus === '3') ? khzbShowPicker = false : khzbShowPicker = true"
|
|||
|
:rules="[{ required: true, message: '' }]"
|
|||
|
/>
|
|||
|
<van-popup v-model="khzbShowPicker" position="bottom">
|
|||
|
<van-picker
|
|||
|
show-toolbar
|
|||
|
:columns="khzbColumns"
|
|||
|
:default-index="2"
|
|||
|
@confirm="khzbOnConfirm"
|
|||
|
@cancel="khzbShowPicker = false"
|
|||
|
/>
|
|||
|
</van-popup>
|
|||
|
<van-field
|
|||
|
readonly
|
|||
|
:value="khlxText"
|
|||
|
name="khlxText"
|
|||
|
required
|
|||
|
label="客户类型"
|
|||
|
placeholder="点击选择客户类型"
|
|||
|
@click="(form.cusApprovalStatus === '1' || form.cusApprovalStatus === '2' || form.cusApprovalStatus === '3') ? khlxShowPicker = false : khlxShowPicker = true"
|
|||
|
:rules="[{ required: true, message: '' }]"
|
|||
|
/>
|
|||
|
<van-popup v-model="khlxShowPicker" position="bottom">
|
|||
|
<van-picker
|
|||
|
show-toolbar
|
|||
|
:columns="khlxColumns"
|
|||
|
@confirm="khlxOnConfirm"
|
|||
|
@cancel="khlxShowPicker = false"
|
|||
|
/>
|
|||
|
</van-popup>
|
|||
|
<van-field
|
|||
|
readonly
|
|||
|
required
|
|||
|
:value="countryText"
|
|||
|
name="countryText"
|
|||
|
label="国家"
|
|||
|
placeholder="点击选择国家"
|
|||
|
@click="(form.cusApprovalStatus === '1' || form.cusApprovalStatus === '2' || form.cusApprovalStatus === '3') ? countryShowPicker = false : countryShowPicker = true"
|
|||
|
:rules="[{ required: true, message: '' }]"
|
|||
|
/>
|
|||
|
<van-popup v-model="countryShowPicker" position="bottom">
|
|||
|
<van-picker
|
|||
|
value-key="label"
|
|||
|
show-toolbar
|
|||
|
:columns="countrysDicts"
|
|||
|
@confirm="countryOnConfirm"
|
|||
|
@cancel="countryShowPicker = false"
|
|||
|
/>
|
|||
|
</van-popup>
|
|||
|
<van-field
|
|||
|
readonly
|
|||
|
required
|
|||
|
:value="languageText"
|
|||
|
name="languageText"
|
|||
|
label="语言"
|
|||
|
placeholder="点击选择语言"
|
|||
|
@click="(form.cusApprovalStatus === '1' || form.cusApprovalStatus === '2' || form.cusApprovalStatus === '3') ? languageShowPicker = false : languageShowPicker = true "
|
|||
|
:rules="[{ required: true, message: '' }]"
|
|||
|
/>
|
|||
|
<van-popup v-model="languageShowPicker" position="bottom">
|
|||
|
<van-picker
|
|||
|
:default-index="1"
|
|||
|
show-toolbar
|
|||
|
value-key="label"
|
|||
|
:columns="languageDicts"
|
|||
|
@confirm="languageOnConfirm"
|
|||
|
@cancel="languageShowPicker = false"
|
|||
|
/>
|
|||
|
</van-popup>
|
|||
|
</van-form>
|
|||
|
<el-divider content-position="left" class="customer_divider_text">银行信息</el-divider>
|
|||
|
<el-row class="mb8" :gutter="8" style="margin: 10px">
|
|||
|
<el-col :span="1.5">
|
|||
|
<div v-hasPermi="['customer:customer:bankAdd']">
|
|||
|
<el-button type="primary" icon="el-icon-plus" size="mini" @click="handleAddBank" v-if="bankButtonShow">添加</el-button>
|
|||
|
</div>
|
|||
|
</el-col>
|
|||
|
<el-col :span="1.5">
|
|||
|
<div v-hasPermi="['customer:customer:bankDel']">
|
|||
|
<el-button type="danger" icon="el-icon-delete" size="mini" @click="handleDeleteBank" v-if="bankButtonShow">删除</el-button>
|
|||
|
</div>
|
|||
|
</el-col>
|
|||
|
</el-row>
|
|||
|
<el-table :data="bankList" @selection-change="handleBankSelectionChange" :row-class-name="rowBankIndex" ref="bank">
|
|||
|
<el-table-column type="selection" width="50" align="center" />
|
|||
|
<el-table-column label="序号" align="center" v-if="false" prop="index" width="50"/>
|
|||
|
<el-table-column label="国家" prop="bankCountry" v-if="false">
|
|||
|
<template slot-scope="scope">
|
|||
|
<el-input v-model="scope.row.bankCountry" placeholder="选择银行代码自动带出" :disabled="true"/>
|
|||
|
</template>
|
|||
|
</el-table-column>
|
|||
|
<el-table-column label="银行代码" prop="bankCode" v-if="false">
|
|||
|
<template slot-scope="scope">
|
|||
|
<el-input v-model="scope.row.bankCode" placeholder="请输入银行代码" :disabled="true" >
|
|||
|
<i v-if="!isDisSjz" slot="suffix" class="el-input__icon el-icon-search" @click="handleSearchBankCode(scope)"></i>
|
|||
|
</el-input>
|
|||
|
</template>
|
|||
|
</el-table-column>
|
|||
|
<el-table-column label="银行名称" prop="bankName">
|
|||
|
<template slot-scope="scope">
|
|||
|
<el-input v-model="scope.row.bankName" placeholder="请输入银行名称" :disabled="isDisSalesman"/>
|
|||
|
</template>
|
|||
|
</el-table-column>
|
|||
|
<el-table-column label="银行账户" prop="bankAccount">
|
|||
|
<template slot-scope="scope">
|
|||
|
<el-input v-model="scope.row.bankAccount" placeholder="请输入银行账户" :disabled="isDisSalesman" />
|
|||
|
</template>
|
|||
|
</el-table-column>
|
|||
|
</el-table>
|
|||
|
<div slot="footer" class="dialog-footer fixed-buttons-container">
|
|||
|
<span v-hasPermi="['customer:customer:save']">
|
|||
|
<el-button @click="saveForm" v-if="buttonShowSalesman">保 存</el-button>
|
|||
|
</span>
|
|||
|
<span style="margin-left: 10px" v-hasPermi="['customer:customer:commit']">
|
|||
|
<el-button type="primary" plain @click="commitForm" v-if="buttonShowSalesman">提 交</el-button>
|
|||
|
</span>
|
|||
|
<span style="margin-left: 10px" v-hasPermi="['customer:customer:return']">
|
|||
|
<el-button type="danger" plain @click="returnForm" v-if="buttonShowSjz">驳 回</el-button>
|
|||
|
</span>
|
|||
|
<span style="margin-left: 10px" v-hasPermi="['customer:customer:commitSAP']">
|
|||
|
<el-button type="primary" plain @click="commitSAPForm" v-if="buttonShowSjz">提 交SAP</el-button>
|
|||
|
</span>
|
|||
|
</div>
|
|||
|
<el-dialog :title="qccTitle" :visible.sync="qccOpen" :width="dialogWidth" append-to-body>
|
|||
|
<el-form :model="queryQccParams" ref="queryQccForm" size="small" :inline="true" label-width="100px" @submit.native.prevent>
|
|||
|
<el-form-item label="公司名称" prop="Name">
|
|||
|
<el-input
|
|||
|
v-model="queryQccParams.Name"
|
|||
|
placeholder="请输入公司名称"
|
|||
|
@keyup.enter.native="handleQccQuery"
|
|||
|
clearable
|
|||
|
/>
|
|||
|
</el-form-item>
|
|||
|
<el-form-item>
|
|||
|
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQccQuery">搜索</el-button>
|
|||
|
</el-form-item>
|
|||
|
</el-form>
|
|||
|
<el-table v-loading="qccLoading" ref="qccTable" :data="qccCustomerList" @selection-change="handleSelectionQccChange" :height="tableHeight">
|
|||
|
<el-table-column type="selection" width="45" align="center" />
|
|||
|
<el-table-column label="公司名" width="250" align="left" prop="name" />
|
|||
|
<el-table-column label="法人" align="center" prop="operName" />
|
|||
|
<el-table-column label="注册时间" width="100" align="center" prop="startDate" />
|
|||
|
<el-table-column label="增值税号" width="170" align="left" prop="creditCode" />
|
|||
|
<el-table-column label="地址" width="300" align="left" prop="address" />
|
|||
|
</el-table>
|
|||
|
<div slot="footer" class="dialog-footer">
|
|||
|
<el-button type="primary" @click="qccConfirm" :disabled="qccSingle">确 定</el-button>
|
|||
|
<el-button @click="qccCancel">取 消</el-button>
|
|||
|
</div>
|
|||
|
</el-dialog>
|
|||
|
</div>
|
|||
|
</template>
|
|||
|
|
|||
|
<script>
|
|||
|
import { listCustomer, getCustomer, delCustomer,changCusStatus, addCustomer, updateCustomer,getReturnUpdateCustomer, commitCustomer,returnCustomer, commitSAPCustomer, checkQccCount, qccListCustomer, getIndustryCodeQcc } from "@/api/customer/customer";
|
|||
|
import { checkPermi, checkRole } from "@/utils/permission"; // 权限判断函数
|
|||
|
import { bankCodeList,getCountrys,getIndustryCode,getLanguage,getPaymentTerms,getSalesOrganization,getDistributionChannel,getSalesTerritory,getSaleOffice,getTax,getReconciliationAccount, getAccountAllocationGroup } from "@/api/common/sapRfc";// sap-rfc 函数
|
|||
|
|
|||
|
/** 弹窗放大、拖拽 */
|
|||
|
import elDragDialog from "@/directive/dialog/dragDialog";
|
|||
|
|
|||
|
// 自定义校验-付款条件
|
|||
|
const validateCusPaymentTerms = (rule, value, callback) => {
|
|||
|
if (!value) {
|
|||
|
callback(new Error("付款条件不能为空"));
|
|||
|
} else {
|
|||
|
callback();
|
|||
|
}
|
|||
|
};
|
|||
|
// 自定义校验-行业代码
|
|||
|
const validateCusIndustryCode = (rule, value, callback) => {
|
|||
|
if (!value) {
|
|||
|
callback(new Error("行业代码不能为空"));
|
|||
|
} else {
|
|||
|
callback();
|
|||
|
}
|
|||
|
};
|
|||
|
// 自定义校验-销售地区
|
|||
|
const validateCusSalesTerritory = (rule, value, callback) => {
|
|||
|
if (!value) {
|
|||
|
callback(new Error("销售地区不能为空"));
|
|||
|
} else {
|
|||
|
callback();
|
|||
|
}
|
|||
|
};
|
|||
|
// 自定义校验-销售办公室
|
|||
|
const validateCusSaleOffice = (rule, value, callback) => {
|
|||
|
if (!value) {
|
|||
|
callback(new Error("销售办公室不能为空"));
|
|||
|
} else {
|
|||
|
callback();
|
|||
|
}
|
|||
|
};
|
|||
|
// 自定义校验-客户税分类
|
|||
|
const validateCusTax = (rule, value, callback) => {
|
|||
|
if (!value) {
|
|||
|
callback(new Error("客户税分类不能为空"));
|
|||
|
} else {
|
|||
|
callback();
|
|||
|
}
|
|||
|
};
|
|||
|
// 自定义校验-统驭科目
|
|||
|
const validateCusReconciliationAccount = (rule, value, callback) => {
|
|||
|
if (!value) {
|
|||
|
callback(new Error("统驭科目不能为空"));
|
|||
|
} else {
|
|||
|
callback();
|
|||
|
}
|
|||
|
};
|
|||
|
// 自定义校验-统驭科目
|
|||
|
const cusAccountAllocationGroup = (rule, value, callback) => {
|
|||
|
if (!value) {
|
|||
|
callback(new Error("账户分配组不能为空"));
|
|||
|
} else {
|
|||
|
callback();
|
|||
|
}
|
|||
|
};
|
|||
|
|
|||
|
|
|||
|
export default {
|
|||
|
name: "addCustomer",
|
|||
|
data() {
|
|||
|
return {
|
|||
|
value1: '',
|
|||
|
khzbText: '',
|
|||
|
khzbColumns: [
|
|||
|
{ text: '国内客户', value: 'Z001' },
|
|||
|
],
|
|||
|
khzbShowPicker: false,
|
|||
|
khlxText: '',
|
|||
|
khlxColumns: [
|
|||
|
{ text: '销售客户', value: '0' },
|
|||
|
],
|
|||
|
khlxShowPicker: false,
|
|||
|
countrysDicts: [], // 国家数据列表
|
|||
|
languageDicts: [], //语言
|
|||
|
countryText: '',
|
|||
|
countryShowPicker: false,
|
|||
|
languageText: '',
|
|||
|
languageShowPicker: false,
|
|||
|
queryParams: {
|
|||
|
pageNum: 1,
|
|||
|
pageSize: 10,
|
|||
|
cusCode: null,
|
|||
|
cusName: null,
|
|||
|
cusSapCode: null,
|
|||
|
cusState: null,
|
|||
|
cusApprovalStatus: null
|
|||
|
},
|
|||
|
/*****************************企查查查询模块*************************************/
|
|||
|
// 遮罩层
|
|||
|
qccLoading: false,
|
|||
|
// 弹出层标题
|
|||
|
qccTitle: "",
|
|||
|
// 是否显示弹出层
|
|||
|
qccOpen: false,
|
|||
|
|
|||
|
// 企查查客户表格数据
|
|||
|
/*qccCurrentPage: 1,
|
|||
|
qccPageSize: 10,
|
|||
|
qccTotal: 0,*/
|
|||
|
qccCustomerList: [], // 企查查客户数据
|
|||
|
|
|||
|
// 非单个禁用
|
|||
|
qccSingle: true,
|
|||
|
// 非多个禁用
|
|||
|
qccMultiple: true,
|
|||
|
queryQccParams:{
|
|||
|
Name: null
|
|||
|
},
|
|||
|
dialogWidth: '100%',
|
|||
|
tableHeight: '300px', // 表格高度固定
|
|||
|
/*****************************企查查查询模块*************************************/
|
|||
|
//选项卡默认
|
|||
|
activeName: 'customerInfo',
|
|||
|
|
|||
|
// 遮罩层
|
|||
|
loading: true,
|
|||
|
// 选中数组
|
|||
|
ids: [],
|
|||
|
// 子表选中数据
|
|||
|
checkedBank: [],
|
|||
|
// 非单个禁用
|
|||
|
single: true,
|
|||
|
// 非多个禁用
|
|||
|
multiple: true,
|
|||
|
// 显示搜索条件
|
|||
|
showSearch: true,
|
|||
|
// 总条数
|
|||
|
total: 0,
|
|||
|
// 客户管理表格数据
|
|||
|
customerList: [],
|
|||
|
// 银行表格数据
|
|||
|
bankList: [],
|
|||
|
// 弹出层标题
|
|||
|
title: "",
|
|||
|
// 是否显示弹出层
|
|||
|
open: false,
|
|||
|
// 表单参数
|
|||
|
form: {},
|
|||
|
// 表单校验
|
|||
|
rules: {
|
|||
|
cusName: [{ required: true, message: '客户名称不可为空' }],
|
|||
|
cusStreet: [{ required: true, message: '请输入街道/门牌号' }],
|
|||
|
cusPhoneNumber: [{ required: true, message: '请输入电话号码' }],
|
|||
|
khzbText: [{ required: true, message: '请选择客户组类别' }],
|
|||
|
khlxText: [{ required: true, message: '请选择客户类型' }],
|
|||
|
countryText: [{ required: true, message: '请选择国家' }],
|
|||
|
languageText: [{ required: true, message: '请选择语言' }]
|
|||
|
},
|
|||
|
// 保存\提交 按钮显示 - 业务员
|
|||
|
buttonShowSalesman: true,
|
|||
|
|
|||
|
// 明细添加、删除 按钮显示
|
|||
|
bankButtonShow: true,
|
|||
|
|
|||
|
// 提交OA 按钮显示 - 数据组
|
|||
|
buttonShowSjz: true,
|
|||
|
|
|||
|
// 审批中 设置禁用 - 业务员
|
|||
|
isDisSalesman: false,
|
|||
|
// 审批中 设置禁用 - 数据组
|
|||
|
isDisSjz: false,
|
|||
|
|
|||
|
// 客户名称、街道、增值税号设置禁用
|
|||
|
isDisCustomer: true,
|
|||
|
/*****************************银行代码查询模块*************************************/
|
|||
|
// 遮罩层
|
|||
|
bankCodeLoading: false,
|
|||
|
// 弹出层标题
|
|||
|
bankCodeTitle: "",
|
|||
|
// 是否显示弹出层
|
|||
|
bankCodeOpen: false,
|
|||
|
|
|||
|
// 银行代码表格数据
|
|||
|
bankSelectedIndex: "",
|
|||
|
bankCodeTotal: 0,
|
|||
|
bankCodeCurrentPage: 1,
|
|||
|
bankCodePageSize: 10,
|
|||
|
bankCodeList: [], // 银行代码数据
|
|||
|
|
|||
|
// 非单个禁用
|
|||
|
bankCodeSingle: true,
|
|||
|
// 非多个禁用
|
|||
|
bankCodeMultiple: true,
|
|||
|
queryBankCodeParams:{
|
|||
|
bankName: null
|
|||
|
},
|
|||
|
/*****************************银行代码查询模块*************************************/
|
|||
|
/*****************************SAP-RFC查询模块*************************************/
|
|||
|
industryCodeDicts: [], // 行业代码数据列表
|
|||
|
paymentTermsDicts: [], // 付款条件数据列表
|
|||
|
salesOrganizationDicts: [], // 销售组织数据列表
|
|||
|
distributionChannelDicts: [], // 分销渠道数据列表
|
|||
|
salesTerritoryDicts: [], // 销售地区数据列表
|
|||
|
saleOfficeDicts: [], // 销售办公室数据列表
|
|||
|
taxDicts: [], // 客户税分类数据列表
|
|||
|
reconciliationAccountDicts: [], // 统驭科目数据列表
|
|||
|
accountAllocationGroupDicts: [], // 账户分配组数据列表
|
|||
|
/*****************************SAP-RFC查询模块*************************************/
|
|||
|
}
|
|||
|
},
|
|||
|
created() {
|
|||
|
console.log("触发create函数")
|
|||
|
this.getCountrys();
|
|||
|
this.getLanguage();
|
|||
|
const param = this.$route.query;
|
|||
|
console.log("输出" + param.cusId)
|
|||
|
if (param.cusId !== undefined && param.cusId !== null) {
|
|||
|
const row = {'cusId':param.cusId}
|
|||
|
this.handleUpdate(row);
|
|||
|
}
|
|||
|
},
|
|||
|
computed: {
|
|||
|
|
|||
|
},
|
|||
|
mounted() {
|
|||
|
this.$store.dispatch('app/toggleSideBarHide', true);
|
|||
|
document.querySelector('.navbar').style.display = "none";
|
|||
|
document.querySelector('.tags-view-container').style.display = "none";
|
|||
|
},
|
|||
|
methods: {
|
|||
|
checkPermi,
|
|||
|
checkRole,
|
|||
|
/** 查询客户管理列表 */
|
|||
|
getList() {
|
|||
|
this.loading = true;
|
|||
|
listCustomer(this.queryParams).then(response => {
|
|||
|
this.customerList = response.rows;
|
|||
|
this.total = response.total;
|
|||
|
this.loading = false;
|
|||
|
});
|
|||
|
},
|
|||
|
// 取消按钮
|
|||
|
cancel() {
|
|||
|
this.open = false;
|
|||
|
this.reset();
|
|||
|
},
|
|||
|
// 表单重置
|
|||
|
reset() {
|
|||
|
this.form = {
|
|||
|
cusId: null,
|
|||
|
cusCode: null,
|
|||
|
cusName: null,
|
|||
|
cusSapCode: null,
|
|||
|
cusStreet: null,
|
|||
|
cusPhoneNumber: null,
|
|||
|
cusGroup: null,
|
|||
|
cusVatNo: null,
|
|||
|
cusType: null,
|
|||
|
cusCountry: null,
|
|||
|
cusLanguage: null,
|
|||
|
cusSalesman: null,
|
|||
|
cusRemark: null,
|
|||
|
cusState: null,
|
|||
|
cusApprovalStatus: null,
|
|||
|
|
|||
|
cusPaymentTerms: null,
|
|||
|
cusIndustryCode: null,
|
|||
|
cusIndustryCodeQcc: null,
|
|||
|
cusSalesTerritory: null,
|
|||
|
cusDistributionChannel: null,
|
|||
|
cusSaleOffice: null,
|
|||
|
cusCurrency: null,
|
|||
|
cusTax: null,
|
|||
|
cusReconciliationAccount: null,
|
|||
|
cusAccountAllocationGroup: null,
|
|||
|
};
|
|||
|
this.bankList = [];
|
|||
|
this.resetForm("form");
|
|||
|
this.setInitF();
|
|||
|
this.setInitV();
|
|||
|
// 保存\提交 按钮显示 - 业务员
|
|||
|
this.buttonShowSalesman = true;
|
|||
|
// 明细添加、删除 按钮显示
|
|||
|
this.bankButtonShow = true;
|
|||
|
// 提交OA 按钮显示 - 数据组
|
|||
|
this.buttonShowSjz = true;
|
|||
|
// 审批中 设置禁用 - 业务员
|
|||
|
this.isDisSalesman = false;
|
|||
|
// 审批中 设置禁用 - 数据组
|
|||
|
this.isDisSjz = false;
|
|||
|
// 客户名称、街道、增值税号设置禁用
|
|||
|
this.isDisCustomer = true;
|
|||
|
},
|
|||
|
/** 搜索按钮操作 */
|
|||
|
handleQuery() {
|
|||
|
this.queryParams.pageNum = 1;
|
|||
|
this.getList();
|
|||
|
},
|
|||
|
/** 重置按钮操作 */
|
|||
|
resetQuery() {
|
|||
|
this.resetForm("queryForm");
|
|||
|
this.handleQuery();
|
|||
|
},
|
|||
|
// 多选框选中数据
|
|||
|
handleSelectionChange(selection) {
|
|||
|
this.ids = selection.map(item => item.cusId)
|
|||
|
this.single = selection.length!==1
|
|||
|
this.multiple = !selection.length
|
|||
|
},
|
|||
|
// 客户状态修改
|
|||
|
handleStatusChange(row) {
|
|||
|
let text = row.cusState === "0" ? "启用" : "停用";
|
|||
|
this.$modal.confirm('确认要"' + text + '""' + row.cusName + '"吗?').then(function() {
|
|||
|
return changCusStatus(row.cusId, row.cusState);
|
|||
|
}).then(() => {
|
|||
|
this.$modal.msgSuccess(text + "成功");
|
|||
|
}).catch(function() {
|
|||
|
row.cusState = row.cusState === "0" ? "1" : "0";
|
|||
|
});
|
|||
|
},
|
|||
|
/** 新增按钮操作 */
|
|||
|
async handleAdd() {
|
|||
|
await this.reset();
|
|||
|
this.open = true;
|
|||
|
this.title = "添加客户信息";
|
|||
|
|
|||
|
this.form.cusSalesman = this.$store.state.user.nickName;
|
|||
|
this.buttonShowSalesman = checkRole(['ITZX_SJZ']) ? false : true; // 如果是业务员角色 则保存、提交 按钮显示 反之不显示
|
|||
|
this.buttonShowSjz = checkRole(['ITZX_SJZ']) ? true : false;// 如果是业务员角色 则保存、提交 按钮不显示 反之显示
|
|||
|
this.isDisCustomer = checkRole(['ITZX_SJZ']) ? false : true;// 如果是数据组角色角色则可编辑客户名称
|
|||
|
this.handleAddBank();//默认添加一行
|
|||
|
},
|
|||
|
/** 修改按钮操作 */
|
|||
|
async handleUpdate(row) {
|
|||
|
await this.reset();
|
|||
|
const cusId = row.cusId || this.ids
|
|||
|
getCustomer(cusId).then(response => {
|
|||
|
this.setInfo(response);
|
|||
|
});
|
|||
|
},
|
|||
|
|
|||
|
/** 错误修订按钮操作 */
|
|||
|
async handleReturnUpdate(row) {
|
|||
|
this.reset();
|
|||
|
const cusId = row.cusId || this.ids
|
|||
|
getReturnUpdateCustomer(cusId).then(response => {
|
|||
|
this.setInfo(response);
|
|||
|
});
|
|||
|
},
|
|||
|
/** 修改按钮操作-详细信息设置 */
|
|||
|
setInfo(response){
|
|||
|
this.form = response.data;
|
|||
|
// 获取 cusType 对应的 text 值并打印
|
|||
|
const cusGroup = this.khzbColumns.find(item => item.value === this.form.cusGroup);
|
|||
|
if (cusGroup) {
|
|||
|
this.khzbText = cusGroup.text;
|
|||
|
}
|
|||
|
const cusTypeItem = this.khlxColumns.find(item => item.value === this.form.cusType);
|
|||
|
if (cusTypeItem) {
|
|||
|
this.khlxText = cusTypeItem.text;
|
|||
|
}
|
|||
|
const cusCountryItem = this.countrysDicts.find(item => item.value === this.form.cusCountry);
|
|||
|
if (cusCountryItem) {
|
|||
|
this.countryText = cusCountryItem.label;
|
|||
|
}
|
|||
|
const cusLanguageItem = this.languageDicts.find(item => item.value === this.form.cusLanguage);
|
|||
|
if (cusLanguageItem) {
|
|||
|
this.languageText = cusLanguageItem.label;
|
|||
|
}
|
|||
|
console.log(this.form)
|
|||
|
// 业务员角色-如果是保存状态则显示 反之不显示
|
|||
|
this.buttonShowSalesman = this.form.cusApprovalStatus == '0'?true:false;
|
|||
|
// 业务员待提交的数据 或者 数据组审核业务员提交的数据时可编辑
|
|||
|
this.isDisSalesman = this.form.cusApprovalStatus == '0' ? false : (checkRole(['ITZX_SJZ'])&&this.form.cusApprovalStatus == '1') ? false : true;
|
|||
|
// 数据组角色-如果不是完成且驳回状态、提交SAP、驳回 按钮显示
|
|||
|
this.buttonShowSjz = (this.form.cusApprovalStatus != '2' && this.form.cusApprovalStatus != '3') ?true:false;
|
|||
|
// 数据组角色-如果是审批中状态, 则可编辑
|
|||
|
this.isDisSjz = this.form.cusApprovalStatus == '1'?false:true;
|
|||
|
// 业务员待审核的数据 或者 数据组审核业务员提交的数据时显示
|
|||
|
this.bankButtonShow = this.form.cusApprovalStatus == '0'?true:(checkRole(['ITZX_SJZ'])&&this.form.cusApprovalStatus == '1') ? true : false;
|
|||
|
|
|||
|
// 数据组创建或者审核时 客户名称、街道、增值税号可编辑
|
|||
|
this.isDisCustomer = (checkRole(['ITZX_SJZ'])&&this.form.cusApprovalStatus != '2'&&this.form.cusApprovalStatus != '3')?false:true;
|
|||
|
|
|||
|
this.bankList = response.data.bankList;
|
|||
|
if(this.bankList.length==0){
|
|||
|
this.handleAddBank();//默认添加一行
|
|||
|
}
|
|||
|
},
|
|||
|
|
|||
|
async validateForm() {
|
|||
|
try {
|
|||
|
await this.$refs.form.validate();
|
|||
|
return true;
|
|||
|
} catch (error) {
|
|||
|
console.error('Form validation failed:', error);
|
|||
|
return false;
|
|||
|
}
|
|||
|
},
|
|||
|
|
|||
|
/** 保存按钮 */
|
|||
|
async saveForm() {
|
|||
|
const valid = await this.validateForm();
|
|||
|
console.log(11111111)
|
|||
|
|
|||
|
if (valid) {
|
|||
|
console.log(11111111)
|
|||
|
this.form.bankList = this.bankList;
|
|||
|
if (this.form.cusId != null) {
|
|||
|
updateCustomer(this.form).then(response => {
|
|||
|
this.$modal.msgSuccess("修改成功");
|
|||
|
});
|
|||
|
} else {
|
|||
|
addCustomer(this.form).then(response => {
|
|||
|
this.$modal.msgSuccess("新增成功");
|
|||
|
this.$store.dispatch('tagsView/delView',this.$route)
|
|||
|
this.$router.go(-1)
|
|||
|
});
|
|||
|
}
|
|||
|
}
|
|||
|
},
|
|||
|
/** 提交按钮 */
|
|||
|
async commitForm() {
|
|||
|
const valid = await this.validateForm();
|
|||
|
if (valid) {
|
|||
|
this.form.bankList = this.bankList;
|
|||
|
// 遍历表格数据
|
|||
|
try{
|
|||
|
if(this.bankList.length==0){
|
|||
|
this.$modal.msgError("未添加银行信息");
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
this.bankList.forEach((row, index) => {
|
|||
|
if(!row.bankName || !row.bankAccount){
|
|||
|
this.$modal.msgError("银行名称或银行账户不能为空");
|
|||
|
throw new Error;
|
|||
|
}
|
|||
|
})
|
|||
|
}catch(e){
|
|||
|
return;
|
|||
|
}
|
|||
|
commitCustomer(this.form).then(response => {
|
|||
|
this.$modal.msgSuccess("提交成功");
|
|||
|
this.$store.dispatch('tagsView/delView',this.$route)
|
|||
|
this.$router.go(-1)
|
|||
|
});
|
|||
|
|
|||
|
}
|
|||
|
},
|
|||
|
/** 驳回 */
|
|||
|
returnForm() {
|
|||
|
if(!this.form.cusReturnRemark){
|
|||
|
this.$modal.msgError("请填写驳回备注");
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
this.$modal.confirm('是否确认驳回该客户?').then(function() {}).then(() => {
|
|||
|
returnCustomer(this.form).then(response => {
|
|||
|
this.$modal.msgSuccess("驳回成功");
|
|||
|
this.open = false;
|
|||
|
this.getList();
|
|||
|
});
|
|||
|
}).catch(() => {});
|
|||
|
},
|
|||
|
/** 提交SAP按钮 */
|
|||
|
commitSAPForm() {
|
|||
|
this.$refs["form"].validate(valid => {
|
|||
|
if (valid) {
|
|||
|
this.form.bankList = this.bankList;
|
|||
|
|
|||
|
if (this.form.cusId != null) {//数据组审核
|
|||
|
this.bankList.forEach((row, index) => {
|
|||
|
if(!row.bankCode){
|
|||
|
this.$modal.msgError("银行代码不能为空");
|
|||
|
throw new Error;
|
|||
|
}
|
|||
|
})
|
|||
|
}
|
|||
|
|
|||
|
this.$modal.confirm('是否确认提交该客户至SAP?').then(function() {}).then(() => {
|
|||
|
commitSAPCustomer(this.form).then(response => {
|
|||
|
this.$modal.msgSuccess("提交SAP成功");
|
|||
|
this.open = false;
|
|||
|
this.getList();
|
|||
|
});
|
|||
|
}).catch(() => {});
|
|||
|
}
|
|||
|
});
|
|||
|
},
|
|||
|
/** 删除按钮操作 */
|
|||
|
handleDelete(row) {
|
|||
|
const cusIds = row.cusId || this.ids;
|
|||
|
this.$modal.confirm('是否确认删除所选客户?').then(function() {
|
|||
|
return delCustomer(cusIds);
|
|||
|
}).then(() => {
|
|||
|
this.getList();
|
|||
|
this.$modal.msgSuccess("删除成功");
|
|||
|
}).catch(() => {});
|
|||
|
},
|
|||
|
/** 银行添加按钮操作 */
|
|||
|
handleAddBank() {
|
|||
|
let obj = {};
|
|||
|
obj.bankCountry = "";
|
|||
|
obj.bankCode = "";
|
|||
|
obj.bankName = "";
|
|||
|
obj.bankAccount = "";
|
|||
|
this.bankList.push(obj);
|
|||
|
},
|
|||
|
/** 银行删除按钮操作 */
|
|||
|
handleDeleteBank() {
|
|||
|
if (this.checkedBank.length == 0) {
|
|||
|
this.$modal.msgError("请先选择要删除的银行数据");
|
|||
|
} else {
|
|||
|
const bankList = this.bankList;
|
|||
|
const checkedBank = this.checkedBank;
|
|||
|
this.bankList = bankList.filter(function(item) {
|
|||
|
return checkedBank.indexOf(item.index) == -1
|
|||
|
});
|
|||
|
}
|
|||
|
},
|
|||
|
|
|||
|
/** 复选框选中数据 */
|
|||
|
handleBankSelectionChange(selection) {
|
|||
|
this.checkedBank = selection.map(item => item.index)
|
|||
|
console.log(this.checkedBank)
|
|||
|
},
|
|||
|
/** 序号 */
|
|||
|
rowBankIndex({ row, rowIndex }) {
|
|||
|
row.index = rowIndex + 1;
|
|||
|
},
|
|||
|
/** 导出按钮操作 */
|
|||
|
handleExport() {
|
|||
|
this.download('customer/customer/export', {
|
|||
|
...this.queryParams
|
|||
|
}, `customer_${new Date().getTime()}.xlsx`)
|
|||
|
},
|
|||
|
/*****************************银行代码查询模块*************************************/
|
|||
|
/** 选择银行代码弹出框 */
|
|||
|
handleSearchBankCode(scope) {
|
|||
|
this.bankCodeOpen = true;
|
|||
|
this.bankCodeTitle = "银行代码信息";
|
|||
|
this.resetBankCodeQuery();
|
|||
|
this.bankSelectedIndex = scope.$index;
|
|||
|
},
|
|||
|
|
|||
|
/** 切换每页显示条数 */
|
|||
|
handleBankCodeSizeChange(val) {
|
|||
|
this.bankCodePageSize = val;
|
|||
|
this.bankCodeCurrentPage = 1;
|
|||
|
},
|
|||
|
/** 页码选择 */
|
|||
|
handleBankCodeCurrentChange(val) {
|
|||
|
this.bankCodeCurrentPage = val;
|
|||
|
},
|
|||
|
|
|||
|
/** 银行代码查询 */
|
|||
|
handleBankCodeQuery(){
|
|||
|
if(!this.queryBankCodeParams.bankName){
|
|||
|
this.$message.warning("请输入银行名称!");
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
this.bankCodeLoading = true;
|
|||
|
bankCodeList(this.queryBankCodeParams).then(response => {
|
|||
|
this.bankCodeList = response.rows;
|
|||
|
this.bankCodeTotal = response.total;
|
|||
|
this.bankCodeCurrentPage = 1;
|
|||
|
this.bankCodeLoading = false;
|
|||
|
},response => {
|
|||
|
this.bankCodeLoading = false;
|
|||
|
});
|
|||
|
},
|
|||
|
|
|||
|
// 多选框选中数据
|
|||
|
handleSelectionBankCodeChange(selection) {
|
|||
|
this.bankCodeSingle = selection.length!==1
|
|||
|
this.bankCodeMultiple = !selection.length
|
|||
|
},
|
|||
|
|
|||
|
// 确认按钮
|
|||
|
bankCodeConfirm(){
|
|||
|
const bankCodeTable = this.$refs.bankCodeTable;
|
|||
|
const selectedData = bankCodeTable.selection;
|
|||
|
const bankCode = selectedData[0].bankCode;
|
|||
|
const bankName = selectedData[0].bankName;
|
|||
|
const bankCountry = selectedData[0].bankCountry;
|
|||
|
|
|||
|
// 获取指定行的数据
|
|||
|
const bank = this.bankList[this.bankSelectedIndex];
|
|||
|
|
|||
|
bank.bankCode = bankCode;
|
|||
|
bank.bankName = bankName;
|
|||
|
bank.bankCountry = bankCountry;
|
|||
|
this.bankCodeOpen = false;
|
|||
|
},
|
|||
|
// 取消按钮
|
|||
|
bankCodeCancel() {
|
|||
|
this.bankCodeOpen = false;
|
|||
|
this.resetBankCodeQuery();
|
|||
|
},
|
|||
|
/** 重置按钮操作 */
|
|||
|
resetBankCodeQuery() {
|
|||
|
this.bankCodeList = [];
|
|||
|
this.bankCodeTotal = 0;
|
|||
|
this.queryBankCodeParams = {
|
|||
|
bankName: ""
|
|||
|
}
|
|||
|
},
|
|||
|
/*****************************银行代码查询模块*************************************/
|
|||
|
/*****************************SAP-RFC查询模块*************************************/
|
|||
|
// 默认值设置
|
|||
|
setInitV(){
|
|||
|
this.activeName = 'customerInfo';
|
|||
|
|
|||
|
this.form.cusGroup = 'Z001';
|
|||
|
this.form.cusType = '0';
|
|||
|
this.form.cusCountry = 'CN';
|
|||
|
this.form.cusLanguage = '1';
|
|||
|
this.form.cusSalesOrganization = '1100';
|
|||
|
this.form.cusDistributionChannel = '10';
|
|||
|
this.form.cusCurrency = 'CNY';
|
|||
|
this.form.cusTax = '1';
|
|||
|
this.form.cusReconciliationAccount = '1122010100';
|
|||
|
this.form.cusAccountAllocationGroup = '01';
|
|||
|
},
|
|||
|
// 加载SAP公共数据
|
|||
|
setInitF(){
|
|||
|
this.activeName = 'customerInfo';
|
|||
|
|
|||
|
this.getCountrys();
|
|||
|
this.getIndustryCode();
|
|||
|
this.getLanguage();
|
|||
|
this.getPaymentTerms();
|
|||
|
this.getSalesOrganization();
|
|||
|
this.getDistributionChannel();
|
|||
|
this.getSalesTerritory();
|
|||
|
this.getSaleOffice();
|
|||
|
this.getTax();
|
|||
|
this.getReconciliationAccount();
|
|||
|
this.getAccountAllocationGroup();
|
|||
|
},
|
|||
|
//SAP行业代码数据列表
|
|||
|
getIndustryCode(){
|
|||
|
getIndustryCode(this.queryParams).then(response => {
|
|||
|
this.industryCodeDicts = response.industryCodeDicts;
|
|||
|
});
|
|||
|
},
|
|||
|
//SAP付款条件数据列表
|
|||
|
getPaymentTerms(){
|
|||
|
getPaymentTerms(this.queryParams).then(response => {
|
|||
|
this.paymentTermsDicts = response.paymentTermsDicts;
|
|||
|
});
|
|||
|
},
|
|||
|
//SAP销售组织数据列表
|
|||
|
getSalesOrganization(){
|
|||
|
getSalesOrganization(this.queryParams).then(response => {
|
|||
|
this.salesOrganizationDicts = response.salesOrganizationDicts;
|
|||
|
});
|
|||
|
},
|
|||
|
//SAP分销渠道数据列表
|
|||
|
getDistributionChannel(){
|
|||
|
getDistributionChannel(this.queryParams).then(response => {
|
|||
|
this.distributionChannelDicts = response.distributionChannelDicts;
|
|||
|
});
|
|||
|
},
|
|||
|
//SAP销售地区数据列表
|
|||
|
getSalesTerritory(){
|
|||
|
getSalesTerritory(this.queryParams).then(response => {
|
|||
|
this.salesTerritoryDicts = response.salesTerritoryDicts;
|
|||
|
});
|
|||
|
},
|
|||
|
//SAP销售办公室数据列表
|
|||
|
getSaleOffice(){
|
|||
|
getSaleOffice(this.queryParams).then(response => {
|
|||
|
this.saleOfficeDicts = response.saleOfficeDicts;
|
|||
|
});
|
|||
|
},
|
|||
|
//客户税分类数据列表
|
|||
|
getTax(){
|
|||
|
getTax(this.queryParams).then(response => {
|
|||
|
this.taxDicts = response.taxDicts;
|
|||
|
});
|
|||
|
},
|
|||
|
//客户税分类数据列表
|
|||
|
getReconciliationAccount(){
|
|||
|
getReconciliationAccount(this.queryParams).then(response => {
|
|||
|
this.reconciliationAccountDicts = response.reconciliationAccountDicts;
|
|||
|
});
|
|||
|
},
|
|||
|
getAccountAllocationGroup(){
|
|||
|
getAccountAllocationGroup(this.queryParams).then(response => {
|
|||
|
this.accountAllocationGroupDicts = response.accountAllocationGroupDicts;
|
|||
|
});
|
|||
|
},
|
|||
|
/*****************************SAP-RFC查询模块*************************************/
|
|||
|
//SAP语言数据列表
|
|||
|
getLanguage(){
|
|||
|
getLanguage(this.queryParams).then(response => {
|
|||
|
this.languageDicts = response.languageDicts;
|
|||
|
});
|
|||
|
},
|
|||
|
/**------------------SAP国家数据列表-------------------**/
|
|||
|
getCountrys(){
|
|||
|
getCountrys(this.queryParams).then(response => {
|
|||
|
this.countrysDicts = response.countrysDicts;
|
|||
|
});
|
|||
|
},
|
|||
|
/**-------------选择器确认按钮---------**/
|
|||
|
khzbOnConfirm(columns) {
|
|||
|
this.form.cusGroup = columns.value
|
|||
|
this.khzbText = columns.text;
|
|||
|
this.khzbShowPicker = false;
|
|||
|
},
|
|||
|
khlxOnConfirm(columns) {
|
|||
|
this.form.cusType = columns.value
|
|||
|
this.khlxText = columns.text;
|
|||
|
this.khlxShowPicker = false;
|
|||
|
},
|
|||
|
countryOnConfirm(columns) {
|
|||
|
this.form.cusCountry = columns.value
|
|||
|
this.countryText = columns.label
|
|||
|
this.countryShowPicker = false;
|
|||
|
},
|
|||
|
languageOnConfirm(columns) {
|
|||
|
this.form.cusLanguage = columns.value
|
|||
|
this.languageText = columns.label
|
|||
|
this.languageShowPicker = false;
|
|||
|
},
|
|||
|
/*****************************企查查查询模块*************************************/
|
|||
|
/** 企查查客户弹出框 */
|
|||
|
openQcc(){
|
|||
|
this.qccOpen = true;
|
|||
|
this.qccTitle = "企查查客户信息";
|
|||
|
this.resetQccQuery();
|
|||
|
},
|
|||
|
|
|||
|
/** 切换每页显示条数 */
|
|||
|
/*handleQccSizeChange(val) {
|
|||
|
this.qccPageSize = val;
|
|||
|
this.qccCurrentPage = 1;
|
|||
|
},*/
|
|||
|
/** 页码选择 */
|
|||
|
/*handleQccCurrentChange(val) {
|
|||
|
this.qccCurrentPage = val;
|
|||
|
},*/
|
|||
|
|
|||
|
/** 企查查客户查询 */
|
|||
|
handleQccQuery(){
|
|||
|
if(!this.queryQccParams.Name){
|
|||
|
this.$message.warning("请输入公司名称!");
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
// 校验是否超过企查查接口查询次数
|
|||
|
checkQccCount().then(response => {
|
|||
|
this.qccLoading = true;
|
|||
|
qccListCustomer(this.queryQccParams).then(response => {
|
|||
|
this.qccCustomerList = response.rows;
|
|||
|
//this.qccTotal = response.total;
|
|||
|
//this.qccCurrentPage = 1;
|
|||
|
this.qccLoading = false;
|
|||
|
},response => {
|
|||
|
this.qccLoading = false;
|
|||
|
});
|
|||
|
});
|
|||
|
},
|
|||
|
|
|||
|
// 多选框选中数据
|
|||
|
handleSelectionQccChange(selection) {
|
|||
|
this.qccSingle = selection.length!==1
|
|||
|
this.qccMultiple = !selection.length
|
|||
|
},
|
|||
|
|
|||
|
// 确认按钮
|
|||
|
async qccConfirm() {
|
|||
|
const qccTable = this.$refs.qccTable;
|
|||
|
const selectedData = qccTable.selection;
|
|||
|
this.form.cusName = selectedData[0].name;
|
|||
|
this.form.cusVatNo = selectedData[0].creditCode;
|
|||
|
this.form.cusQccStreet = selectedData[0].address;
|
|||
|
|
|||
|
//获取客户行业代码
|
|||
|
await getIndustryCodeQcc(selectedData[0].name).then(response => {
|
|||
|
console.log(response)
|
|||
|
this.form.cusIndustryCodeQcc = response.cusIndustryCodeQcc;
|
|||
|
})
|
|||
|
this.qccOpen = false;
|
|||
|
},
|
|||
|
|
|||
|
// 取消按钮
|
|||
|
qccCancel() {
|
|||
|
this.qccOpen = false;
|
|||
|
this.resetQccQuery();
|
|||
|
},
|
|||
|
/** 重置按钮操作 */
|
|||
|
resetQccQuery() {
|
|||
|
this.qccCustomerList = [];
|
|||
|
this.queryQccParams = {
|
|||
|
Name: ""
|
|||
|
}
|
|||
|
},
|
|||
|
/*****************************企查查查询模块*************************************/
|
|||
|
},
|
|||
|
}
|
|||
|
</script>
|
|||
|
|
|||
|
<style>
|
|||
|
.fixed-buttons-container {
|
|||
|
padding: 10px;
|
|||
|
position: fixed;
|
|||
|
bottom: 0;
|
|||
|
width: 100%;
|
|||
|
background-color: #fff; /* 背景颜色,根据你的页面设计调整 */
|
|||
|
box-shadow: 0 -2px 10px rgba(0, 0, 0, 0.1); /* 阴影效果,根据需要调整 */
|
|||
|
justify-content: center; /* 居中对齐 */
|
|||
|
text-align: center;
|
|||
|
}
|
|||
|
|
|||
|
</style>
|