Commit c9c5d6e6 authored by 罗超's avatar 罗超

Merge branch 'master' of http://gitlab.oytour.com/huaguohao/crm

# Conflicts:
#	src/components/clueManagement/guestDialogBox.vue
#	src/plugins/index.js
#	vue.config.js
#	yarn.lock
parents 5fa56f7b 2be1b4bf
<style>
.customerDialogBox.add-box .add-tit {
.customerDialogBox.add-box .add-tit {
display: flex;
justify-content: space-between;
align-items: center;
height: 20px;
}
.customerDialogBox.add-box .add-tit p {
}
.customerDialogBox.add-box .add-tit p {
display: flex;
align-items: center;
font-weight: bold;
color: rgba(17, 17, 17, 1);
font-size: 14px;
}
.customerDialogBox.add-box .add-tit p span {
}
.customerDialogBox.add-box .add-tit p span {
display: inline-block;
width: 6px;
height: 6px;
background: #409efe;
background: rgba(13, 36, 129, 1);
border-radius: 50%;
margin-right: 10px;
}
.customerDialogBox.add-box .el-dialog__header {
}
.customerDialogBox.add-box .el-dialog__header {
padding: 15px 20px;
background: rgba(255, 255, 255, 1);
}
.customerDialogBox.add-box .dialog-footer {
}
.customerDialogBox.add-box .dialog-footer {
text-align: center;
background-color: rgba(248, 250, 251, 1);
padding-bottom: 20px;
}
.customerDialogBox.add-box .el-dialog__footer {
}
.customerDialogBox.add-box .el-dialog__footer {
padding: 0;
}
.customerDialogBox.add-box .el-dialog__body {
}
.customerDialogBox.add-box .el-dialog__body {
background-color: rgba(248, 250, 251, 1);
padding-top: 20px;
max-height: 500px;
overflow: auto;
}
.customerDialogBox .add-box-btn.el-button {
}
.customerDialogBox .add-box-btn.el-button {
border-radius: 0;
background-color: #409efecc;
border-color: #409efecc;
background-color: rgba(13, 36, 129, .8);
border-color: rgba(13, 36, 129, .8);
color: white;
padding: 12px 43px;
}
.customerDialogBox .add-box-btn.el-button:hover {
background-color: #409efe;
border-color: #409efe;
}
.customerDialogBox .add-box-btn.el-button:hover {
background-color: rgba(13, 36, 129, 1);
border-color: rgba(13, 36, 129, 1);
color: white;
}
.customerDialogBox .add-box-btn.el-button.add-box-cancel {
color: #409efecc;
}
.customerDialogBox .add-box-btn.el-button.add-box-cancel {
color: rgba(13, 36, 129, .8);
background-color: white;
}
.customerDialogBox .add-box-btn.el-button.add-box-cancel:hover {
color: #409efe;
}
.customerDialogBox .add-box-btn.el-button.add-box-cancel:hover {
color: rgba(13, 36, 129, 1);
background-color: white;
}
.customerDialogBox .el-input .el-input-group__append {
background-color: #409efe;
border-color: #409efe;
}
.customerDialogBox .el-input .el-input-group__append {
background-color: rgba(13, 36, 129, 1);
border-color: rgba(13, 36, 129, 1);
color: #fff;
}
.customerDialogBox .form-box .form-box-tit {
}
.customerDialogBox .form-box .form-box-tit {
display: flex;
align-items: center;
margin-bottom: 20px;
}
.customerDialogBox .form-box .radius {
}
.customerDialogBox .form-box .radius {
display: flex;
width: 4px;
height: 4px;
background: rgba(255, 164, 117, 1);
border-radius: 50%;
margin-right: 10px;
}
.customerDialogBox .up-img-box .uib-item {
}
.customerDialogBox .up-img-box .uib-item {
margin-right: 30px;
width: 120px;
height: 120px;
background-color: white;
position: relative;
margin-bottom: 30px;
}
.customerDialogBox .up-img-box .uib-item p {
}
.customerDialogBox .up-img-box .uib-item p {
position: absolute;
bottom: -30px;
font-size: 12px;
text-align: center;
width: 100%;
}
.customerDialogBox .up-img-box .uib-item:hover .imgzhe-btn {
opacity: 1;
}
.customerDialogBox .imgzhe {
}
.customerDialogBox .up-img-box .uib-item:hover .imgzhe-btn {
opacity: 1
}
.customerDialogBox .imgzhe {
width: 100%;
height: 100%;
position: absolute;
top: 0;
}
.customerDialogBox .imgzhe .imgzhe-btn {
}
.customerDialogBox .imgzhe .imgzhe-btn {
background: rgba(0, 0, 0, 0.6);
width: 100%;
height: 100%;
......@@ -109,42 +127,48 @@
position: absolute;
top: 0;
opacity: 1;
transition: all linear 0.5s;
}
.customerDialogBox .imgzhe .imgzhe-btn i {
transition: all linear .5s
}
.customerDialogBox .imgzhe .imgzhe-btn i {
font-size: 22px;
margin-right: 5px;
color: white;
cursor: pointer;
}
.customerDialogBox .up-ctrl {
}
.customerDialogBox .up-ctrl {
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
}
.customerDialogBox .up-ctrl > div {
}
.customerDialogBox .up-ctrl>div {
width: 100%;
height: 100%;
text-align: center;
line-height: 140px;
}
.MyEditForm-item-checkd.MyEditForm-item .el-form-item {
}
.MyEditForm-item-checkd.MyEditForm-item .el-form-item {
width: 80%;
}
.MyEditForm-item-checkd .el-checkbox {
}
.MyEditForm-item-checkd .el-checkbox {
position: absolute;
right: -50px;
top: 10px;
}
._addPassengerEconomicCapability {
}
._addPassengerEconomicCapability {
line-height: 22px;
overflow: hidden;
width: 100%;
}
}
._addPassengerEconomicCapability span {
._addPassengerEconomicCapability span {
display: inline-block;
padding: 2px 4px;
border: 1px solid #c0c4cc;
......@@ -153,15 +177,33 @@
color: #c0c4cc;
font-size: 12px;
border-radius: 4px;
}
}
._addPassengerEconomicCapability span._active {
._addPassengerEconomicCapability span._active {
border: 1px solid rgb(123, 194, 245);
color: rgb(123, 194, 245);
}
}
.el-collapse-item__wrap {
background-color: rgba(248, 250, 251, 1);
}
.el-col .el-col-8 {
width: 31% !important;
margin-right: 15px;
}
.el-collapse-item__header {
padding-left: 10px;
}
.el-collapse-item__wrap {
padding-top: 15px;
}
</style>
<template>
<el-dialog :visible.sync="dialogTableVisible" @closed="closedDialog" :close-on-click-modal="false" class="add-box add-box1 customerDialogBox">
<el-dialog :visible.sync="dialogTableVisible" @closed="closedDialog" :close-on-click-modal="false"
class="add-box add-box1 customerDialogBox">
<div class="add-tit" slot="title">
<p><span></span>{{name}}</p>
<span icon="el-icon-close"></span>
......@@ -171,28 +213,114 @@
<p class="form-box-tit"><span class="radius"></span> 基本信息</p>
<el-row :gutter="30">
<el-col :span="8">
<div class="MyEditForm-item label-pad-left">
<el-form-item label="名称" prop="ClueName ">
<el-input placeholder="请填写名称" v-model="form.ClueName "></el-input>
</el-form-item>
</div>
</el-col>
<el-col :span="8">
<div class="MyEditForm-item label-pad-left">
<el-form-item label="需求" prop="ClueDemand ">
<el-input placeholder="请填写需求" v-model="form.ClueDemand "></el-input>
</el-form-item>
</div>
</el-col>
<el-col :span="8">
<div class="MyEditForm-item">
<el-form-item label="微信号" prop="WeChatNo">
<el-input placeholder="请输入微信号" v-model="form.WeChatNo"></el-input>
</el-form-item>
</div>
</el-col>
<el-col :span="8">
<div class="MyEditForm-item">
<el-form-item label="手机号码" prop="MobilePhone">
<el-input placeholder="请输入手机号码" v-model="form.MobilePhone"></el-input>
</el-form-item>
</div>
</el-col>
<el-col :span="8">
<div class="MyEditForm-item">
<el-form-item label="客户来源" prop="CustomerSourceType">
<el-select v-model="form.CustomerSourceType" placeholder="请选择客户来源">
<el-option v-for="item in SourceEnum" :key="item.ID" :label="item.Name"
:value="item.ID">
</el-option>
</el-select>
</el-form-item>
</div>
</el-col>
<el-col :span="8" v-if="form.CustomerSourceType === 6">
<div class="MyEditForm-item">
<el-form-item label="客户来源信息" prop="CustomerSource">
<el-input type="textarea" placeholder="请输入客户来源信息" v-model="form.CustomerSource">
</el-input>
</el-form-item>
</div>
</el-col>
<el-col :span="8" v-if="form.CustomerSourceType === 7">
<div class="MyEditForm-item label-pad-left">
<el-form-item label="来源细分" prop="SourceAccount">
<el-select placeholder="请选择来源途径" v-model="form.SourceAccount">
<el-option v-for="item in SourceSegmentList" :key="item.ID" :label="item.Name"
:value="item.ID"></el-option>
</el-select>
</el-form-item>
</div>
</el-col>
<template v-for='(item,index) in EconomicCapabilityS'>
<el-col :span="8" :key="index" v-if='item.isShow'>
<div class="MyEditForm-item">
<el-form-item :label="item.Name">
<el-input v-model="item.Content" type="text" maxlength="50"></el-input>
</el-form-item>
</div>
</el-col>
</template>
</el-row>
<el-col :span="24">
<div class="MyEditForm-item label-pad-left">
<el-form-item label="备注" prop="Remarks">
<el-input type="textarea" placeholder="客户的特殊喜好" v-model="form.Remarks"></el-input>
</el-form-item>
</div>
</el-col>
</el-form>
<div class="_addPassengerEconomicCapability">
<span v-for="(item, index) in EconomicCapabilityS" :key="index" @click="addEconomicCapability(item)" :class="{_active:item.isShow}">{{item.Name}}</span>
</div>
</div>
<div class="form-box" v-if="show">
<el-collapse v-model="activeNames" @change="handleChange">
<el-collapse-item title="详情信息" name="3">
<el-form :model="form" ref="form" class="MyEditForm">
<el-col :span="8">
<div class="MyEditForm-item label-pad-left">
<el-form-item label="身份证号码" prop="IdCard">
<el-input placeholder="请输入客户身份证号码" v-model="form.IdCard"></el-input>
</el-form-item>
</div>
</el-col>
<el-col :span="8">
<div class="MyEditForm-item">
<div class="MyEditForm-item label-pad-left">
<el-form-item label="中文姓" prop="SurName">
<el-input placeholder="请输入中文姓" v-model="form.SurName" @input="Transformation(form.SurName,'SurName')"></el-input>
</el-form-item>
</div>
</el-col>
<el-col :span="8">
<div class="MyEditForm-item">
<div class="MyEditForm-item label-pad-left">
<el-form-item label="中文名" prop="Name">
<el-input placeholder="请输入中文名" v-model="form.Name" @input="Transformation(form.Name,'Name')"></el-input>
</el-form-item>
</div>
</el-col>
<el-col :span="8">
<div class="MyEditForm-item">
<div class="MyEditForm-item label-pad-left">
<el-form-item label="性别" prop="Sex">
<el-select v-model="form.Sex">
<el-option :key="0" label="保密" :value="0"></el-option>
......@@ -203,35 +331,23 @@
</div>
</el-col>
<el-col :span="8">
<div class="MyEditForm-item">
<div class="MyEditForm-item label-pad-left">
<el-form-item label="英文姓" prop="ESurName">
<el-input placeholder="请输入英文姓" v-model="form.ESurName"></el-input>
</el-form-item>
</div>
</el-col>
<el-col :span="8">
<div class="MyEditForm-item">
<div class="MyEditForm-item label-pad-left">
<el-form-item label="英文名" prop="EName">
<el-input placeholder="请输入英文名" v-model="form.EName"></el-input>
</el-form-item>
</div>
</el-col>
<el-col :span="8">
<div class="MyEditForm-item">
<el-form-item label="手机号码" prop="MobilePhone">
<el-input placeholder="请输入手机号码" v-model="form.MobilePhone"></el-input>
</el-form-item>
</div>
</el-col>
<el-col :span="8">
<div class="MyEditForm-item label-pad-left">
<el-form-item label="生日">
<el-date-picker
:clearable="false"
value-format="yyyy-MM-dd HH:mm:ss"
v-model="form.Birthday"
type="date"
placeholder="选择日期">
<el-date-picker :clearable="false" value-format="yyyy-MM-dd HH:mm:ss" v-model="form.Birthday" type="date" placeholder="选择日期">
</el-date-picker>
</el-form-item>
</div>
......@@ -260,12 +376,7 @@
<el-col :span="8">
<div class="MyEditForm-item label-pad-left">
<el-form-item label="护照签发日期">
<el-date-picker
:clearable="false"
value-format="yyyy-MM-dd HH:mm:ss"
v-model="form.PassportIssued"
type="date"
placeholder="选择日期">
<el-date-picker :clearable="false" value-format="yyyy-MM-dd HH:mm:ss" v-model="form.PassportIssued" type="date" placeholder="选择日期">
</el-date-picker>
</el-form-item>
</div>
......@@ -273,26 +384,16 @@
<el-col :span="8">
<div class="MyEditForm-item label-pad-left">
<el-form-item label="护照过期日">
<el-date-picker
:clearable="false"
value-format="yyyy-MM-dd HH:mm:ss"
v-model="form.PassportExpiry"
type="date"
placeholder="选择日期">
<el-date-picker :clearable="false" value-format="yyyy-MM-dd HH:mm:ss" v-model="form.PassportExpiry" type="date" placeholder="选择日期">
</el-date-picker>
</el-form-item>
</div>
</el-col>
<el-col :span="8">
<div class="MyEditForm-item">
<div class="MyEditForm-item label-pad-left">
<el-form-item label="国籍" prop="Nationality">
<el-select
v-model="form.Nationality" placeholder="国家">
<el-option
v-for="item in countryList"
:key="item.ID"
:label="item.Name"
:value="item.ID">
<el-select v-model="form.Nationality" placeholder="国家">
<el-option v-for="item in countryList" :key="item.ID" :label="item.Name" :value="item.ID">
</el-option>
</el-select>
</el-form-item>
......@@ -339,12 +440,13 @@
<el-option v-for="item in VisaDeparturesType" :key="item.Id" :label="item.Name" :value="item.Name">
</el-option>
</el-select>
<el-checkbox v-model='form.IsRecommend' :true-label='1' :false-label='2'>推荐</el-checkbox>
<el-checkbox v-model='form.IsRecommend' :true-label='1' :false-label='2'>推荐
</el-checkbox>
</el-form-item>
</div>
</el-col>
<el-col :span="8">
<div class="MyEditForm-item ">
<div class="MyEditForm-item label-pad-left">
<el-form-item label="职务" prop="Duty">
<el-select v-model="form.Duty" filterable>
<el-option v-for="item in VisaDutyTypeEnum" :key="item.Id" :label="item.Name" :value="item.Name"></el-option>
......@@ -354,40 +456,33 @@
</el-col>
<el-col :span="8">
<div class="MyEditForm-item label-pad-left">
<el-form-item label="备注">
<el-input type="textarea" placeholder="客户的特殊喜好" v-model="form.Remarks"></el-input>
</el-form-item>
</div>
</el-col>
<el-col :span="8">
<div class="MyEditForm-item">
<el-form-item label="出游类型" prop="TravelType">
<el-select v-model="form.TravelType" filterable >
<el-select v-model="form.TravelType" filterable>
<el-option v-for="item in TravelTypeList" :key="item.Code" :label="item.Content" :value="item.Code"></el-option>
</el-select>
</el-form-item>
</div>
</el-col>
<el-col :span="8">
<div class="MyEditForm-item">
<div class="MyEditForm-item label-pad-left">
<el-form-item label="单位类型" prop="UnitType">
<el-select v-model="form.UnitType" filterable >
<el-select v-model="form.UnitType" filterable>
<el-option v-for="item in UnitTypeList" :key="item.Code" :label="item.Content" :value="item.Code"></el-option>
</el-select>
</el-form-item>
</div>
</el-col>
<el-col :span="8">
<div class="MyEditForm-item">
<div class="MyEditForm-item label-pad-left">
<el-form-item label="职务类型" prop="DutyType">
<el-select v-model="form.DutyType" filterable >
<el-select v-model="form.DutyType" filterable>
<el-option v-for="item in DutyTypeList" :key="item.Code" :label="item.Content" :value="item.Code"></el-option>
</el-select>
</el-form-item>
</div>
</el-col>
<el-col :span="8">
<div class="MyEditForm-item">
<div class="MyEditForm-item label-pad-left">
<el-form-item label="高校学生">
<el-select v-model="form.IsHightSchool">
<el-option :key="1" label="是" :value="1"></el-option>
......@@ -396,83 +491,54 @@
</el-form-item>
</div>
</el-col>
<el-col :span="8">
<div class="MyEditForm-item">
<el-form-item label="客户来源" prop="CustomerSourceType">
<el-select v-model="form.CustomerSourceType" placeholder="请选择客户来源">
<el-option
v-for="item in SourceEnum"
:key="item.ID"
:label="item.Name"
:value="item.ID">
</el-option>
</el-select>
</el-form-item>
</div>
</el-col>
<el-col :span="16" v-if="form.CustomerSourceType === 6">
<div class="MyEditForm-item">
<el-form-item label="客户来源信息" prop="CustomerSource">
<el-input type="textarea" placeholder="请输入客户来源信息" v-model="form.CustomerSource"></el-input>
</el-form-item>
</div>
</el-col>
<template v-for='(item,index) in EconomicCapabilityS' >
<el-col :span="8" :key="index" v-if='item.isShow' >
<div class="MyEditForm-item">
<el-form-item :label="item.Name">
<el-input v-model="item.Content" type="text" maxlength="50"></el-input>
</el-form-item>
</div>
</el-col>
</template>
</el-row>
</el-form>
<div class="_addPassengerEconomicCapability">
<span v-for="(item, index) in EconomicCapabilityS" :key="index" @click="addEconomicCapability(item)"
:class="{_active:item.isShow}">{{item.Name}}</span>
</div>
</div>
<div slot="footer" class="dialog-footer">
</el-collapse-item>
</el-collapse>
</div>
<div slot="footer" class="dialog-footer">
<el-button type="primary" class="add-box-btn" @click="submitForm('form')">确 定</el-button>
<el-button class="add-box-btn add-box-cancel" @click="dialogTableVisible = false, resetForm('form')">取 消</el-button>
</div>
<el-dialog :visible.sync="dialogVisible">
<el-button class="add-box-btn add-box-cancel" @click="dialogTableVisible = false, resetForm('form')">取 消
</el-button>
</div>
<el-dialog :visible.sync="dialogVisible">
<img width="100%" :src="dialogImageUrl" alt="">
</el-dialog>
</el-dialog>
</el-dialog>
</el-dialog>
</template>
<script>
export default {
export default {
props: {
CustomerId: {
type: Number,
default: 0,
default: 0
},
name: {
type: String,
default: "新建客户",
},
default: '新建客户'
}
},
data() {
let checkPhone = (rule, value, callback) => {
if (!value) {
return callback(new Error("手机号不能为空"));
return callback(new Error('手机号不能为空'));
} else {
const reg = /^1[3|4|5|7|8][0-9]\d{8}$/;
const reg = /^1[3|4|5|7|8][0-9]\d{8}$/
if (reg.test(value)) {
callback();
} else {
return callback(new Error("请输入正确的手机号"));
return callback(new Error('请输入正确的手机号'));
}
}
}
};
return {
dialogTableVisible: false,
SourceEnum: [],
countryList: "",
provinceList: "",
dialogImageUrl: "",
dialogImageUrl: '',
dialogVisible: false,
cityList: "",
district: "",
......@@ -480,38 +546,44 @@ export default {
fileList: [],
CustomerLevelEnum: [],
CustomerBrandList: [],
activeNames: ['3'],
form: {
Id: 0,
SurName: "",
Name: "",
Sex: "",
EName: "",
ESurName: "",
Birthday: "",
BirthdayAddress: "",
PassportAddress: "",
PassportExpiry: "",
PassportNo: "",
Nationality: "",
Marriage: "",
Address: "",
AddressDetail: "",
HistoryRecord: "",
IdentityType: "",
Duty: "",
SurName: '',
Name: '',
Sex: '',
EName: '',
ESurName: '',
Birthday: '',
BirthdayAddress: '',
PassportAddress: '',
PassportExpiry: '',
PassportNo: '',
Nationality: '',
Marriage: '',
Address: '',
AddressDetail: '',
HistoryRecord: '',
IdentityType: '',
Duty: '',
EconomicCapabilityList: [],
Remarks: "",
TravelType: "",
UnitType: "",
DutyType: "",
IsHightSchool: "",
IsRecommend: "",
PassportIssued: "",
IssuingAuthority: "",
IdCard: "",
MobilePhone: "",
CustomerSourceType: "",
CustomerSource: "",
Remarks: '',
TravelType: '',
UnitType: '',
DutyType: '',
IsHightSchool: '',
IsRecommend: '',
PassportIssued: '',
IssuingAuthority: '',
IdCard: '',
MobilePhone: '',
CustomerSourceType: '',
CustomerSource: '',
ClueName: '',
ClueDemand: '',
WeChatNo: '',
SourceAccount: '',
},
VisaIdentityTypeEnum: [],
VisaDeparturesType: [],
......@@ -520,287 +592,293 @@ export default {
DutyTypeList: [],
UnitTypeList: [],
rules: {
DutyType: [
{ required: true, message: "请选择职务类型", trigger: "change" },
],
UnitType: [
{ required: true, message: "请选择单位类型", trigger: "change" },
],
TravelType: [
{ required: true, message: "请选择出游类型", trigger: "change" },
],
IdCard: [
{
/* DutyType: [{
required: true,
message: '请选择职务类型',
trigger: 'change'
}],
UnitType: [{
required: true,
message: '请选择单位类型',
trigger: 'change'
}],
TravelType: [{
required: true,
message: '请选择出游类型',
trigger: 'change'
}],
IdCard: [{
required: true,
message: "请填身份证号码",
trigger: "blur",
},
],
SurName: [
{
trigger: "blur"
}],
SurName: [{
required: true,
message: "请填写中文姓",
trigger: "blur",
},
],
Name: [
{
trigger: "blur"
}],
Name: [{
required: true,
message: "请填写中文名",
trigger: "blur",
},
],
Sex: [
{
trigger: "blur"
}],
Sex: [{
required: true,
message: "请填选择性别",
trigger: "change",
},
],
ESurName: [
{
trigger: "change"
}],
ESurName: [{
required: true,
message: "请填写英文姓",
trigger: "blur",
},
{
trigger: "blur"
}, {
pattern: /^[a-zA-Z]/,
message: "请输入英文姓",
},
],
EName: [
{
message: "请输入英文姓"
}],
EName: [{
required: true,
message: "请填写英文名",
trigger: "blur",
},
{
trigger: "blur"
}, {
pattern: /^[a-zA-Z]/,
message: "请输入英文姓",
},
],
Birthday: [
{
message: "请输入英文姓"
}],
Birthday: [{
required: true,
message: "请填选择出生日期",
trigger: "blur",
},
],
PassportNo: [
{
trigger: "blur"
}],
PassportNo: [{
required: true,
message: "请填写护照号",
trigger: "blur",
},
{
trigger: "blur"
}, {
pattern: /^[0-9a-zA-Z]+$/,
message: "正确的护照号",
},
],
PassportIssued: [
{
message: "正确的护照号"
}],
PassportIssued: [{
required: true,
message: "请选择签发日期",
trigger: "blur",
},
],
PassportExpiry: [
{
trigger: "blur"
}],
PassportExpiry: [{
required: true,
message: "请选择过期日",
trigger: "blur",
},
],
AddressDetail: [
{
trigger: "blur"
}],
AddressDetail: [{
required: true,
message: "请输入详细地址",
trigger: "blur",
},
],
Address: [
{
trigger: "blur"
}],
Address: [{
required: true,
message: "请输入家庭居住地",
trigger: "blur",
},
],
PassportAddress: [
{
trigger: "blur"
}],
PassportAddress: [{
required: true,
message: "请填写签发地",
trigger: "blur",
},
],
MobilePhone: [{ validator: checkPhone, trigger: "blur" }],
Nationality: [
{
trigger: "blur"
}],
MobilePhone: [{
validator: checkPhone,
trigger: 'blur'
}],
Nationality: [{
required: true,
message: "请选择国籍",
trigger: "change",
},
],
BirthdayAddress: [
{
trigger: "change"
}],
BirthdayAddress: [{
required: true,
message: "请填写出生地",
trigger: "change",
},
],
IdentityType: [
{
trigger: "change"
}],
IdentityType: [{
required: true,
message: "请选择身份确认",
trigger: "change",
},
],
HistoryRecord: [
{
trigger: "change"
}],
HistoryRecord: [{
required: true,
message: "请选择出境记录",
trigger: "change",
},
],
Duty: [
{
trigger: "change"
}],
Duty: [{
required: true,
message: "请选择职务",
trigger: "change",
},
],
Marriage: [
{
trigger: "change"
}],
Marriage: [{
required: true,
message: "请选择婚姻",
trigger: "change",
},
],
CustomerSource: [
{ required: true, message: "请输入客户来源信息", trigger: "blur" },
],
CustomerSourceType: [
{ required: true, message: "请选择客户来源", trigger: "change" },
],
trigger: "change"
}], */
ClueName: [{
required: true,
message: '请填写名称',
trigger: 'blur'
}],
ClueDemand: [{
required: true,
message: '请填写需求',
trigger: 'blur'
}],
Remarks: [{
required: true,
message: '请填写备注',
trigger: 'blur'
}],
WeChatNo: [{
required: true,
message: '请填写微信号',
trigger: 'blur'
}],
MobilePhone: [{
required: true,
message: '请填写手机号码',
trigger: 'blur'
}],
CustomerSource: [{
required: true,
message: '请输入客户来源信息',
trigger: 'blur'
}],
CustomerSourceType: [{
required: true,
message: '请选择客户来源',
trigger: 'change'
}],
SourceAccount: [{
required: true,
message: '请选择你的来源',
trigger: 'change'
}]
},
show: true,
CustomerList: [],
EconomicCapabilityS: [],
// 小红书
SourceSegmentList: [],
};
},
watch: {
CustomerId: {
handler(val, oldVal) {
console.log(val);
},
deep: true,
console.log(val)
},
deep: true
}
},
mounted() {
this.GetCustomerLevelEnum();
this.getJycs();
this.getCustomerBrandList();
this.getCountryList();
this.GetCustomerSourceEnum();
this.getCustomerList();
this.getVisaIdentityTypeEnum();
this.getVisaDeparturesType();
this.getVisaDutyTypeEnum();
this.getTravelType();
this.getUnitType();
this.getDutyType();
this.getEconomicCapability();
let $this = this;
this.GetCustomerLevelEnum()
this.getJycs()
this.getCustomerBrandList()
this.getCountryList()
this.GetCustomerSourceEnum()
this.getCustomerList()
this.getVisaIdentityTypeEnum()
this.getVisaDeparturesType()
this.getVisaDutyTypeEnum()
this.getTravelType()
this.getUnitType()
this.getDutyType()
this.getEconomicCapability()
this.getSourceSegmentList()
let $this = this
setTimeout(() => {
$this.dialogTableVisible = true;
}, 50);
$this.dialogTableVisible = true
}, 50)
if (this.CustomerId !== 0) {
this.apipost(
"/api/Customer/GetAllGuesstCustomerModel",
{ ID: this.CustomerId },
(res) => {
this.apipost('/api/Customer/GetAllGuesstCustomerModel', {
ID: this.CustomerId
}, res => {
if (res.data.resultCode == 1) {
let data = res.data.data;
let data = res.data.data
if (!data.HousePhotos) {
data.HousePhotos = [];
data.HousePhotos = []
}
if (!data.BusinessCardPhotos) {
data.BusinessCardPhotos = [];
data.BusinessCardPhotos = []
}
if (!data.Images) {
data.Images = [];
data.Images = []
}
if (!data.CustomerSourceType) {
data.CustomerSourceType = "";
data.CustomerSourceType = ''
}
if (!data.CustomerSource) {
data.CustomerSource = "";
data.CustomerSource = ''
}
if (!data.Province) {
data.Province = "";
data.Province = ''
}
if (!data.Country) {
data.Country = "";
data.Country = ''
}
if (!data.City) {
data.City = "";
data.City = ''
}
if (!data.District) {
data.District = "";
data.District = ''
}
if (data.Country) {
this.getProvinceList2(data.Country, 1);
this.getProvinceList2(data.Country, 1)
}
if (data.Province) {
this.getProvinceList2(data.Province, 2);
this.getProvinceList2(data.Province, 2)
}
if (data.City) {
this.getProvinceList2(data.City, 3);
this.getProvinceList2(data.City, 3)
}
this.form = data;
this.form = data
}
}
);
})
}
},
/* /api/Customer/GetGuestSourceAccountList */
methods: {
handleChange(val) {
console.log(val);
},
Transformation(val, type) {
let text = this.pinyin(val, {
style: this.pinyin.STYLE_NORMAL,
style: this.pinyin.STYLE_NORMAL
});
if (type == "SurName") {
let upText = text.join("").toLocaleUpperCase();
let upText = text.join("").toLocaleUpperCase()
this.form.ESurName = upText;
}
if (type == "Name") {
let upText = text.join("").toLocaleUpperCase();
let upText = text.join("").toLocaleUpperCase()
this.form.EName = upText;
}
},
getEconomicCapability() {
//获取经济能力
this.apipost2(
"dict_post_GetList",
{
"dict_post_GetList", {
Key: "SK_Visa_EconomicCapability",
IsTimer: 1,
IsTimer: 1
},
(res) => {
res => {
this.EconomicCapabilityS = res.data.data;
if (this.CustomerId != 0) {
this.form.Id = this.CustomerId;
this.apipost(
"/api/Customer/GetAllGuesstCustomerModel",
{ ID: this.CustomerId },
(res) => {
this.apipost('/api/Customer/GetAllGuesstCustomerModel', {
ID: this.CustomerId
}, res => {
if (res.data.resultCode == 1) {
let obj = res.data.data;
obj.TravelType = obj.TravelType.toString();
obj.UnitType = obj.UnitType.toString();
obj.DutyType = obj.DutyType.toString();
obj.TravelType = obj.TravelType.toString()
obj.UnitType = obj.UnitType.toString()
obj.DutyType = obj.DutyType.toString()
this.form = obj;
this.EconomicCapabilityS.forEach((x) => {
this.EconomicCapabilityS.forEach(x => {
if (obj.EconomicCapabilityList) {
obj.EconomicCapabilityList.forEach((y) => {
obj.EconomicCapabilityList.forEach(y => {
if (x.ID == y.ID) {
x.isShow = true;
x.Content = y.Value;
......@@ -809,16 +887,18 @@ export default {
}
});
}
}
);
})
}
},
(err) => {}
err => {}
);
},
addLittleRedBook() {
},
addEconomicCapability(obj) {
// 添加经济能力说明
this.EconomicCapabilityS.forEach((x) => {
this.EconomicCapabilityS.forEach(x => {
if (x.ID == obj.ID) {
x.isShow ? (x.isShow = false) : (x.isShow = true);
}
......@@ -827,47 +907,41 @@ export default {
},
getDutyType() {
this.apipost2(
"dict_get_GetDictValueCommonList",
{
Key: "SK_CRM_DutyType",
"dict_get_GetDictValueCommonList", {
Key: 'SK_CRM_DutyType',
},
(res) => {
res => {
if (res.data.resultCode == 1) {
this.DutyTypeList = res.data.data;
} else {
}
this.DutyTypeList = res.data.data
} else {}
},
(err) => {}
err => {}
);
},
getUnitType() {
this.apipost2(
"dict_get_GetDictValueCommonList",
{
Key: "SK_CRM_UnitType",
"dict_get_GetDictValueCommonList", {
Key: 'SK_CRM_UnitType',
},
(res) => {
res => {
if (res.data.resultCode == 1) {
this.UnitTypeList = res.data.data;
} else {
}
this.UnitTypeList = res.data.data
} else {}
},
(err) => {}
err => {}
);
},
getTravelType() {
this.apipost2(
"dict_get_GetDictValueCommonList",
{
Key: "SK_CRM_TravelType",
"dict_get_GetDictValueCommonList", {
Key: 'SK_CRM_TravelType',
},
(res) => {
res => {
if (res.data.resultCode == 1) {
this.TravelTypeList = res.data.data;
} else {
}
this.TravelTypeList = res.data.data
} else {}
},
(err) => {}
err => {}
);
},
getVisaDutyTypeEnum() {
......@@ -876,14 +950,14 @@ export default {
this.apipost2(
"dmc_get_visa_GetVisaDutyTypeEnum",
msg,
(res) => {
res => {
if (res.data.resultCode == 1) {
this.VisaDutyTypeEnum = res.data.data;
} else {
this.$message.error(res.data.message);
}
},
(err) => {}
err => {}
);
},
getVisaDeparturesType() {
......@@ -892,14 +966,14 @@ export default {
this.apipost2(
"dmc_get_visa_GetVisaDeparturesTypeEnum",
msg,
(res) => {
res => {
if (res.data.resultCode == 1) {
this.VisaDeparturesType = res.data.data;
} else {
this.$message.error(res.data.message);
}
},
(err) => {}
err => {}
);
},
getVisaIdentityTypeEnum() {
......@@ -908,62 +982,58 @@ export default {
this.apipost2(
"dmc_get_visa_GetVisaIdentityTypeEnum",
msg,
(res) => {
res => {
if (res.data.resultCode == 1) {
this.VisaIdentityTypeEnum = res.data.data;
} else {
this.$message.error(res.data.message);
}
},
(err) => {}
err => {}
);
},
getCustomerList() {
this.apipost("/api/Customer/GetCustomerListByCreateInfo", {}, (res) => {
this.apipost('/api/Customer/GetCustomerListByCreateInfo', {}, res => {
if (res.data.resultCode == 1) {
this.CustomerList = res.data.data;
this.CustomerList = res.data.data
}
});
})
},
closedDialog() {
this.MsgBus.$emit("closeCustomerDialogBox");
this.MsgBus.$emit('closeCustomerDialogBox')
},
addData() {
if (this.form.CustomerID === "") {
this.form.CustomerID = 0;
if (this.form.CustomerID === '') {
this.form.CustomerID = 0
}
this.form.EconomicCapabilityList = [];
this.EconomicCapabilityS.forEach((x) => {
this.form.EconomicCapabilityList = []
this.EconomicCapabilityS.forEach(x => {
if (x.isShow == true) {
this.form.EconomicCapabilityList.push({
Key: x.Name,
Value: x.Content,
ID: x.ID,
ID: x.ID
});
}
});
this.apipost(
"/api/Customer/CreateGuestCustomerClue",
this.form,
(res) => {
this.apipost('/api/Customer/CreateGuestCustomerClue', this.form, res => {
if (res.data.resultCode == 1) {
this.dialogTableVisible = false;
// 有id 发送更新抽屉消息
if (this.CustomerId !== 0) {
this.$message.success("修改直客成功");
this.MsgBus.$emit("RefreshInfoBox");
this.$message.success('修改直客成功');
this.MsgBus.$emit('RefreshInfoBox')
} else {
this.$message.success("新建直客成功");
this.$message.success('新建直客成功');
}
this.$emit("getList");
this.$emit('getList')
this.resetForm("form");
}
}
);
})
},
submitForm(addMsg) {
//提交创建、修改表单
this.$refs[addMsg].validate((valid) => {
this.$refs[addMsg].validate(valid => {
if (valid) {
this.addData();
} else {
......@@ -971,92 +1041,90 @@ export default {
}
});
},
resetForm(formName) {
// 重置表单
resetForm(formName) { // 重置表单
this.form = {
Id: 0,
SurName: "",
SurName: '',
Name: 0,
Sex: "",
EName: "",
Sex: '',
EName: '',
ESurName: 0,
Birthday: "",
Birthday: '',
BirthdayAddress: 2,
PassportAddress: "",
PassportExpiry: "",
PassportNo: "",
Nationality: "",
Marriage: "",
Address: "",
AddressDetail: "",
HistoryRecord: "",
IdentityType: "",
Duty: "",
PassportAddress: '',
PassportExpiry: '',
PassportNo: '',
Nationality: '',
Marriage: '',
Address: '',
AddressDetail: '',
HistoryRecord: '',
IdentityType: '',
Duty: '',
EconomicCapabilityList: [],
Remarks: "",
TravelType: "",
UnitType: "",
DutyType: "",
IsHightSchool: "",
IsRecommend: "",
PassportIssued: "",
IssuingAuthority: "",
IdCard: "",
MobilePhone: "",
CustomerSourceType: "",
CustomerSource: "",
};
Remarks: '',
TravelType: '',
UnitType: '',
DutyType: '',
IsHightSchool: '',
IsRecommend: '',
PassportIssued: '',
IssuingAuthority: '',
IdCard: '',
MobilePhone: '',
CustomerSourceType: '',
CustomerSource: '',
ClueName: '',
WeChatNo: '',
SourceAccount: '',
}
this.$refs[formName].resetFields();
},
getCustomerBrandList() {
// 获取品牌
this.apipost2(
"app_get_customer_brand",
{},
(res) => {
getCustomerBrandList() { // 获取品牌
this.apipost2('app_get_customer_brand', {}, res => {
if (res.data.resultCode == 1) {
this.CustomerBrandList = res.data.data;
} else {
this.$message.error(res.data.message);
this.$message.error(res.data.message)
}
},
(err) => {}
);
}, err => {})
},
getJycs() {
this.apipost2(
"app_today_visit_GetCustomerPremisesEnum",
{},
(res) => {
this.apipost2('app_today_visit_GetCustomerPremisesEnum', {}, res => {
if (res.data.resultCode == 1) {
this.jycs = res.data.data;
this.jycs = res.data.data
}
},
(err) => {}
);
}, err => {})
},
GetCustomerLevelEnum() {
this.apipost("/api/Customer/GetCustomerLevelEnum", {}, (res) => {
this.apipost('/api/Customer/GetCustomerLevelEnum', {}, res => {
if (res.data.resultCode == 1) {
this.CustomerLevelEnum = res.data.data;
this.CustomerLevelEnum = res.data.data
}
});
})
},
GetCustomerSourceEnum() {
this.apipost("/api/Customer/GetCustomerSourceEnum", {}, (res) => {
this.apipost('/api/Customer/GetCustomerSourceEnum', {}, res => {
if (res.data.resultCode == 1) {
this.SourceEnum = res.data.data;
this.SourceEnum = res.data.data
}
});
})
},
getSourceSegmentList() {
this.apipost('/api/Customer/GetGuestSourceAccountList', {}, res => {
if (res.data.resultCode == 1) {
this.SourceSegmentList = res.data.data
}
})
},
getProvinceList2(ID, type) {
let msg = {
Id: ID,
Id: ID
};
this.apipost2(
"dict_post_Destination_GetChildList",
msg,
(res) => {
res => {
if (type == 1) {
this.provinceList = res.data.data;
} else if (type == 2) {
......@@ -1065,24 +1133,23 @@ export default {
this.district = res.data.data;
}
},
(err) => {}
err => {}
);
},
//获取国家
getCountryList() {
this.apipost2(
"dict_post_Destination_GetCountry",
{},
(res) => {
"dict_post_Destination_GetCountry", {},
res => {
this.countryList = res.data.data;
},
(err) => {}
err => {}
);
},
//根据省份获取城市
getProvinceList(ID, type) {
let msg = {
Id: ID,
Id: ID
};
if (type == 1) {
this.form.Province = "";
......@@ -1098,7 +1165,7 @@ export default {
this.apipost2(
"dict_post_Destination_GetChildList",
msg,
(res) => {
res => {
if (type == 1) {
this.provinceList = res.data.data;
} else if (type == 2) {
......@@ -1107,7 +1174,7 @@ export default {
this.district = res.data.data;
}
},
(err) => {}
err => {}
);
}
},
......@@ -1116,8 +1183,8 @@ export default {
let newArr = [];
newArr.push(file.file);
let path = "/Upload/Temporary/";
this.UploadSelfFileT(path, newArr, (x) => {
let url = this.domainManager().ViittoFileUrl + x.data.FilePath;
this.UploadSelfFileT(path, newArr, x => {
let url = this.domainManager().ViittoFileUrl + x.data.FilePath
this.form.Images.push(url);
});
},
......@@ -1126,8 +1193,8 @@ export default {
let newArr = [];
newArr.push(file.file);
let path = "/Upload/Temporary/";
this.UploadSelfFileT(path, newArr, (x) => {
let url = this.domainManager().ViittoFileUrl + x.data.FilePath;
this.UploadSelfFileT(path, newArr, x => {
let url = this.domainManager().ViittoFileUrl + x.data.FilePath
this.form.BusinessCardPhotos.push(url);
});
},
......@@ -1136,32 +1203,32 @@ export default {
let newArr = [];
newArr.push(file.file);
let path = "/Upload/Temporary/";
this.UploadSelfFileT(path, newArr, (x) => {
let url = this.domainManager().ViittoFileUrl + x.data.FilePath;
this.UploadSelfFileT(path, newArr, x => {
let url = this.domainManager().ViittoFileUrl + x.data.FilePath
this.form.HousePhotos.push(url);
});
},
showImg(i) {
let url = "";
let url = ''
if (i === 1) {
url = this.form.Images[0];
url = this.form.Images[0]
} else if (i === 2) {
url = this.form.BusinessCardPhotos[0];
url = this.form.BusinessCardPhotos[0]
} else if (i === 3) {
url = this.form.HousePhotos[0];
url = this.form.HousePhotos[0]
}
this.dialogImageUrl = url;
this.dialogVisible = true;
},
delImg(i) {
if (i === 1) {
this.form.Images = [];
this.form.Images = []
} else if (i === 2) {
this.form.BusinessCardPhotos = [];
this.form.BusinessCardPhotos = []
} else if (i === 3) {
this.form.HousePhotos = [];
this.form.HousePhotos = []
}
},
},
};
}
}
</script>
\ No newline at end of file
......@@ -6,20 +6,19 @@ export default {
apiurl: ''
},
install(Vue, options) {
Vue.prototype.isOnline = function () {
Vue.prototype.isOnline = function() {
return process.env.NODE_ENV !== 'development';
},
//域名管理对象
Vue.prototype.domainManager = function () {
let domainUrl = "https://localhost:5001"
Vue.prototype.domainManager = function() {
let domainUrl = "http://192.168.10.2:8098"
let locationName = window.location.hostname;
let domainPostUrl = "http://reborn.oytour.com"
let domainPostUrl = "http://198.168.10.2:8083"
if (this.isOnline()) {
if (window.location.host.indexOf('fcrmyx.oytour.com') != -1) {
domainUrl = "http://crm.oytour.com"
domainPostUrl = "http://reborn.oytour.com"
}
else {
} else {
domainUrl = "http://testcrm.oytour.com"
domainPostUrl = "http://testapi.oytour.com"
}
......@@ -48,7 +47,7 @@ export default {
};
return obj;
},
Vue.prototype.GetLocalFile = function (cmd, msg, fileName, successCall) {
Vue.prototype.GetLocalFile = function(cmd, msg, fileName, successCall) {
var apiurl = this.domainManager().LocalFileStreamDownLoadUrl;
var timestamp = (new Date()).valueOf();
if (!localStorage.userInfo && localStorage.userInfo != "" && this.$route.path.toLowerCase() != "/login") {
......@@ -84,10 +83,10 @@ export default {
document.body.appendChild(link);
link.click();
successCall(res);
}).catch(function (res) { });
}).catch(function(res) {});
},
//价钱格式化,三位数逗号分隔,保留两位小数 duanjun
Vue.prototype.moneyFormat = function (value) {
Vue.prototype.moneyFormat = function(value) {
let nStr = Number(value).toFixed(2)
nStr += '';
let x = nStr.split('.');
......@@ -100,7 +99,7 @@ export default {
return x1 + x2;
},
//消息成功提示
Vue.prototype.Success = function (msg) {
Vue.prototype.Success = function(msg) {
this.$message({
message: msg,
duration: 2000,
......@@ -108,7 +107,7 @@ export default {
});
},
//错误提示
Vue.prototype.Error = function (msg) {
Vue.prototype.Error = function(msg) {
this.$message({
message: msg,
duration: 2000,
......@@ -117,7 +116,7 @@ export default {
},
//一般提示
Vue.prototype.Info = function (msg) {
Vue.prototype.Info = function(msg) {
this.$message({
message: msg,
duration: 2000,
......@@ -125,7 +124,7 @@ export default {
});
},
//警告提示
Vue.prototype.Warning = function (msg) {
Vue.prototype.Warning = function(msg) {
this.$message({
message: msg,
duration: 2000,
......@@ -133,7 +132,7 @@ export default {
});
},
//Confirm
Vue.prototype.Confirm = function (msg, callback) {
Vue.prototype.Confirm = function(msg, callback) {
this.$confirm(msg, "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
......@@ -153,7 +152,7 @@ export default {
//type : m_filt 填充 m_w 宽度固定 高度不固定 m_h 高度固定 宽度不固定
// w : 宽
// h : 高
Vue.prototype.compressImg = function (path, type, w, h) {
Vue.prototype.compressImg = function(path, type, w, h) {
let url = this.domainManager().UploadUrl;
let poise = 'width=';
w = w ? w : ''
......@@ -166,13 +165,13 @@ export default {
return path.split('?')[0] + '?width=' + w;
}
//打开新窗口连接
Vue.prototype.OpenNewUrl = function (URL) {
Vue.prototype.OpenNewUrl = function(URL) {
if (URL != '') {
window.open('http://' + URL, '_blank');
}
}
//HTTP提交数据
Vue.prototype.apipost2 = function (cmd, msg, successCall, faildCall, isOnline) {
Vue.prototype.apipost2 = function(cmd, msg, successCall, faildCall, isOnline) {
if (msg == null || msg == "") {
msg = {}
}
......@@ -219,7 +218,7 @@ export default {
}
}, faildCall)
}
Vue.prototype.apipost = function (cmd, msg, successCall, faildCall) {
Vue.prototype.apipost = function(cmd, msg, successCall, faildCall) {
if (msg == null || msg == "") {
msg = {}
}
......@@ -262,7 +261,7 @@ export default {
}
}, faildCall)
},
Vue.prototype.apiJavaPost = function (cmd, msg, successCall, faildCall) {
Vue.prototype.apiJavaPost = function(cmd, msg, successCall, faildCall) {
if (msg == null || msg == "") {
msg = {}
}
......@@ -313,7 +312,7 @@ export default {
}
}, faildCall)
},
Vue.prototype.getAction = function (actionId, lineId) {
Vue.prototype.getAction = function(actionId, lineId) {
// if(actionId==1){
// console.log("浏览签证产品",actionId)
// }
......@@ -340,7 +339,7 @@ export default {
}
//验证只能输入2位小数
Vue.prototype.checkPrice = function (item, filed) {
Vue.prototype.checkPrice = function(item, filed) {
var value = "";
if (typeof item[filed] == "string") {
value = item[filed];
......@@ -361,7 +360,7 @@ export default {
item[filed] = value;
}
//验证只能输入整数
Vue.prototype.checkInteger = function (item, filed) {
Vue.prototype.checkInteger = function(item, filed) {
var value = "";
if (typeof item[filed] == "string") {
value = item[filed];
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment