Commit ba1474f1 authored by 黄媛媛's avatar 黄媛媛
parents c6085d73 332303e1
...@@ -677,5 +677,6 @@ export const obj = { ...@@ -677,5 +677,6 @@ export const obj = {
suoshusj: '所属上级', suoshusj: '所属上级',
shangpinlxmc: '商品类型名称', shangpinlxmc: '商品类型名称',
qingshangctp: '请上传图片', qingshangctp: '请上传图片',
kehuditu: '客户地图'
} }
export default obj; export default obj;
\ No newline at end of file
...@@ -677,5 +677,6 @@ xiugaishangplx: '修改商品類型', ...@@ -677,5 +677,6 @@ xiugaishangplx: '修改商品類型',
suoshusj: '所屬上級', suoshusj: '所屬上級',
shangpinlxmc: '商品類型名稱', shangpinlxmc: '商品類型名稱',
qingshangctp: '請上傳圖片', qingshangctp: '請上傳圖片',
kehuditu: '客戶地圖'
} }
export default obj; export default obj;
\ No newline at end of file
<style> <style>
@import "../../assets/css/comSupplier.css"; @import "../../assets/css/comSupplier.css";
</style> </style>
<template> <template>
<div class="flexOne suppierManage"> <div class="flexOne suppierManage">
...@@ -8,147 +7,358 @@ ...@@ -8,147 +7,358 @@
<ul> <ul>
<li> <li>
<span> <span>
<em>{{$t('system.quety_area')}}</em> <em>{{ $t("system.quety_area") }}</em>
<el-select v-model="msg.CountryStr" clearable class="w150" filterable <el-select
@change="getProvinceList(msg.CountryStr,1)" :placeholder="$t('hotel.hotel_country')"> v-model="msg.CountryStr"
<el-option v-for='item in countryList' :key="item.ID" :label="item.Name" :value="item.ID"> clearable
class="w150"
filterable
@change="getProvinceList(msg.CountryStr, 1)"
:placeholder="$t('hotel.hotel_country')"
>
<el-option
v-for="item in countryList"
:key="item.ID"
:label="item.Name"
:value="item.ID"
>
</el-option> </el-option>
</el-select> </el-select>
<el-select v-model="msg.ProvinceStr" class="w150" filterable @change="getProvinceList(msg.ProvinceStr,2)" <el-select
:placeholder="$t('hotel.hotel_province')"> v-model="msg.ProvinceStr"
<el-option v-for='item in provinceList' :key="item.ID" :label="item.Name" :value="item.ID"> class="w150"
filterable
@change="getProvinceList(msg.ProvinceStr, 2)"
:placeholder="$t('hotel.hotel_province')"
>
<el-option
v-for="item in provinceList"
:key="item.ID"
:label="item.Name"
:value="item.ID"
>
</el-option> </el-option>
</el-select> </el-select>
<el-select v-model="msg.CityStr" class="w150" filterable @change="getProvinceList(msg.CityStr,3)" <el-select
:placeholder="$t('hotel.hotel_city')"> v-model="msg.CityStr"
<el-option v-for='item in cityList' :key="item.ID" :label="item.Name" :value="item.ID"> class="w150"
filterable
@change="getProvinceList(msg.CityStr, 3)"
:placeholder="$t('hotel.hotel_city')"
>
<el-option
v-for="item in cityList"
:key="item.ID"
:label="item.Name"
:value="item.ID"
>
</el-option> </el-option>
</el-select> </el-select>
<el-select v-model="msg.DistrictStr" class="w150" filterable :placeholder="$t('hotel.hotel_area')"> <el-select
<el-option v-for='item in district' :key="item.ID" :label="item.Name" :value="item.ID"> v-model="msg.DistrictStr"
class="w150"
filterable
:placeholder="$t('hotel.hotel_area')"
>
<el-option
v-for="item in district"
:key="item.ID"
:label="item.Name"
:value="item.ID"
>
</el-option> </el-option>
</el-select> </el-select>
</span> </span>
</li> </li>
<li> <li>
<span> <span>
<em>{{$t('hotel.suplier_name')}}</em> <em>{{ $t("hotel.suplier_name") }}</em>
<el-input maxlength="50" @keyup.native.enter="initData" v-model="msg.Name" class="permiss-input w150" <el-input
:placeholder="$t('pub.pleaseImport')"></el-input> maxlength="50"
@keyup.native.enter="initData"
v-model="msg.Name"
class="permiss-input w150"
:placeholder="$t('pub.pleaseImport')"
></el-input>
</span> </span>
</li> </li>
<li> <li>
<span> <span>
<em>{{$t('hotel.suplier_contact')}}</em> <em>{{ $t("hotel.suplier_contact") }}</em>
<el-input maxlength="50" @keyup.native.enter="initData" v-model="msg.Contact" class="permiss-input w150" <el-input
:placeholder="$t('pub.pleaseImport')"></el-input> maxlength="50"
@keyup.native.enter="initData"
v-model="msg.Contact"
class="permiss-input w150"
:placeholder="$t('pub.pleaseImport')"
></el-input>
</span> </span>
</li> </li>
<li> <li>
<button class="hollowFixedBtn" type="button" <button
@click="resetPageIndex(),initData()">{{$t('pub.searchBtn')}}</button> class="hollowFixedBtn"
<button class="normalBtn" type="button" type="button"
@click="clearinputInfo(),outerVisible = true,dialogTitle=$t('visaT.Addingsuppliers')">{{$t('pub.addBtn')}}</button> @click="resetPageIndex(), initData()"
>
{{ $t("pub.searchBtn") }}
</button>
<button
class="normalBtn"
type="button"
@click="
clearinputInfo(),
(outerVisible = true),
(dialogTitle = $t('visaT.Addingsuppliers'))
"
>
{{ $t("pub.addBtn") }}
</button>
</li> </li>
</ul> </ul>
<el-dialog custom-class='addCompany' :title="dialogTitle" :visible.sync="outerVisible" center> <el-dialog
<el-form :model="addMsg" :rules="rules" ref="addMsg" label-width="100px"> custom-class="addCompany"
:title="dialogTitle"
:visible.sync="outerVisible"
center
>
<el-form
:model="addMsg"
:rules="rules"
ref="addMsg"
label-width="100px"
>
<el-form-item :label="$t('hotel.suplier_name')" prop="Name"> <el-form-item :label="$t('hotel.suplier_name')" prop="Name">
<el-input type="text" class="w300" maxlength="50" v-model="addMsg.Name"></el-input> <el-input
type="text"
class="w300"
maxlength="50"
v-model="addMsg.Name"
></el-input>
</el-form-item> </el-form-item>
<el-form-item :label="$t('restaurant.res_belongArea')"> <el-form-item :label="$t('restaurant.res_belongArea')">
<el-select v-model="addMsg.Country" clearable class="w150" filterable <el-select
@change="getProvinceList(addMsg.Country,1)" :placeholder="$t('hotel.hotel_country')"> v-model="addMsg.Country"
<el-option v-for='item in countryList' :key="item.ID" :label="item.Name" :value="item.ID"> clearable
class="w150"
filterable
@change="getProvinceList(addMsg.Country, 1)"
:placeholder="$t('hotel.hotel_country')"
>
<el-option
v-for="item in countryList"
:key="item.ID"
:label="item.Name"
:value="item.ID"
>
</el-option> </el-option>
</el-select> </el-select>
<el-select v-model="addMsg.Province" class="w150" filterable @change="getProvinceList(addMsg.Province,2)" <el-select
:placeholder="$t('hotel.hotel_province')"> v-model="addMsg.Province"
<el-option v-for='item in provinceList' :key="item.ID" :label="item.Name" :value="item.ID"> class="w150"
filterable
@change="getProvinceList(addMsg.Province, 2)"
:placeholder="$t('hotel.hotel_province')"
>
<el-option
v-for="item in provinceList"
:key="item.ID"
:label="item.Name"
:value="item.ID"
>
</el-option> </el-option>
</el-select> </el-select>
<el-select v-model="addMsg.City" class="w150" filterable @change="getProvinceList(addMsg.City,3)" <el-select
:placeholder="$t('hotel.hotel_city')"> v-model="addMsg.City"
<el-option v-for='item in cityList' :key="item.ID" :label="item.Name" :value="item.ID"> class="w150"
filterable
@change="getProvinceList(addMsg.City, 3)"
:placeholder="$t('hotel.hotel_city')"
>
<el-option
v-for="item in cityList"
:key="item.ID"
:label="item.Name"
:value="item.ID"
>
</el-option> </el-option>
</el-select> </el-select>
<el-select v-model="addMsg.District" class="w150" filterable :placeholder="$t('hotel.hotel_area')"> <el-select
<el-option v-for='item in district' :key="item.ID" :label="item.Name" :value="item.ID"> v-model="addMsg.District"
class="w150"
filterable
:placeholder="$t('hotel.hotel_area')"
>
<el-option
v-for="item in district"
:key="item.ID"
:label="item.Name"
:value="item.ID"
>
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item :label="$t('hotel.table_HotelAddress')" prop="Address"> <el-form-item :label="$t('hotel.table_HotelAddress')" prop="Address">
<el-input type="text" class="w300" maxlength="50" v-model="addMsg.Address" <el-input
:placeholder="$t('hotel.table_areaDetail')"></el-input> type="text"
class="w300"
maxlength="50"
v-model="addMsg.Address"
:placeholder="$t('hotel.table_areaDetail')"
></el-input>
</el-form-item> </el-form-item>
<el-form-item :label="$t('fnc.fkfangshi')" prop="Address"> <el-form-item :label="$t('fnc.fkfangshi')" prop="Address">
<el-select v-model="addMsg.PayType" filterable :placeholder="$t('pub.pleaseSel')" class="w300"> <el-select
<el-option v-for='item in PayTypeList' :key="item.Id" :label="item.name" :value="item.Id"> v-model="addMsg.PayType"
filterable
:placeholder="$t('pub.pleaseSel')"
class="w300"
>
<el-option
v-for="item in PayTypeList"
:key="item.Id"
:label="item.name"
:value="item.Id"
>
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item :label="$t('ground.shifouyouspf')"> <el-form-item :label="$t('ground.shifouyouspf')">
<el-switch v-model="addMsg.IsHaveShouPeiFee" :active-value="inActive" :inactive-value="notInActive"> <el-switch
v-model="addMsg.IsHaveShouPeiFee"
:active-value="inActive"
:inactive-value="notInActive"
>
</el-switch> </el-switch>
</el-form-item> </el-form-item>
<el-form-item v-if="addMsg.IsHaveShouPeiFee==1" :label="$t('ground.shoupeije')"> <el-form-item
<el-input type="text" class="w300" maxlength="10" @keyup.native="checkPrice(addMsg,'ShouPeiMoney')" v-if="addMsg.IsHaveShouPeiFee == 1"
v-model="addMsg.ShouPeiMoney"></el-input> :label="$t('ground.shoupeije')"
>
<el-input
type="text"
class="w300"
maxlength="10"
@keyup.native="checkPrice(addMsg, 'ShouPeiMoney')"
v-model="addMsg.ShouPeiMoney"
></el-input>
</el-form-item> </el-form-item>
<el-form-item :label="$t('hotel.table_tel')" prop="Tel"> <el-form-item :label="$t('hotel.table_tel')" prop="Tel">
<el-input type="text" class="w300" maxlength="20" v-model="addMsg.Tel"></el-input> <el-input
type="text"
class="w300"
maxlength="20"
v-model="addMsg.Tel"
></el-input>
</el-form-item> </el-form-item>
<el-form-item :label="$t('hotel.suplier_contact')" prop="Contact"> <el-form-item :label="$t('hotel.suplier_contact')" prop="Contact">
<el-input type="text" class="w300" maxlength="20" v-model="addMsg.Contact"></el-input> <el-input
type="text"
class="w300"
maxlength="20"
v-model="addMsg.Contact"
></el-input>
</el-form-item> </el-form-item>
<el-form-item :label="$t('hotel.hotel_fax')" prop="Fax"> <el-form-item :label="$t('hotel.hotel_fax')" prop="Fax">
<el-input type="text" class="w300" maxlength="20" v-model="addMsg.Fax"></el-input> <el-input
type="text"
class="w300"
maxlength="20"
v-model="addMsg.Fax"
></el-input>
</el-form-item> </el-form-item>
<el-form-item :label="$t('hotel.hotel_remark')" prop="Remark"> <el-form-item :label="$t('hotel.hotel_remark')" prop="Remark">
<el-input type="textarea" class="w300" maxlength="200" v-model="addMsg.Remark"></el-input> <el-input
type="textarea"
class="w300"
maxlength="200"
v-model="addMsg.Remark"
></el-input>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<button class="hollowFixedBtn" <button
@click="resetForm('addMsg'),outerVisible = false">{{$t('pub.cancelBtn')}}</button> &nbsp; class="hollowFixedBtn"
<button class="normalBtn" type="primary" @click="submitForm('addMsg')">{{$t('pub.sureBtn')}}</button> @click="resetForm('addMsg'), (outerVisible = false)"
>
{{ $t("pub.cancelBtn") }}
</button>
&nbsp;
<button
class="normalBtn"
type="primary"
@click="submitForm('addMsg')"
>
{{ $t("pub.sureBtn") }}
</button>
</div> </div>
</el-dialog> </el-dialog>
</div> </div>
<div class="supplierList clearfix" v-loading="loading"> <div class="supplierList clearfix" v-loading="loading">
<div class="supList" v-for="item in tabelDate" :key="item.subCode" style="height:270px;"> <div
class="supList"
v-for="item in tabelDate"
:key="item.subCode"
style="height:270px;"
>
<div class="suTop"> <div class="suTop">
<img src="../../assets/img/suplier.jpg"> <img src="../../assets/img/suplier.jpg" />
<div class="topCircle">{{item.Number}}</div> <div class="topCircle">{{ item.Number }}</div>
</div> </div>
<div class="supTitle">{{item.Name}}</div> <div class="supTitle">{{ item.Name }}</div>
<div class="telNumber">{{item.Tel}}</div> <div class="telNumber">{{ item.Tel }}</div>
<div class="Address"> <div class="Address">
<div v-show="item.Contact"> <div v-show="item.Contact">
<i class="iconfont icon-img_dz"></i> <i class="iconfont icon-img_dz"></i>
<el-tooltip class="item" effect="dark" :content="item.Contact" placement="top-start"> <el-tooltip
<div class="AddressInner">{{item.Contact}}</div> class="item"
effect="dark"
:content="item.Contact"
placement="top-start"
>
<div class="AddressInner">{{ item.Contact }}</div>
</el-tooltip> </el-tooltip>
</div> </div>
</div> </div>
<div class="updataBtn"> <div class="updataBtn">
<button class="normalBtn UPBtn" <button
@click="outerVisible = true,dialogTitle=$t('visaT.xiugaigysxx'),updateInfo(item.ID)">{{$t('pub.updateMsg')}}</button> class="normalBtn UPBtn"
<button class="hollowFixedBtn UPBtn" @click="isdelete(item.ID)">{{$t('system.table_delete')}}</button> @click="
<button class="hollowFixedBtn HS_financial" @click="AccountManage(item)">{{$t("visaT.Accountmanagement")}}</button> (outerVisible = true),
<button class="hollowFixedBtn HS_financial" @click="GoHotel(item)" >{{$t("ground.jiudianfkfspz")}}</button> (dialogTitle = $t('visaT.xiugaigysxx')),
updateInfo(item.ID)
"
>
{{ $t("pub.updateMsg") }}
</button>
<button class="hollowFixedBtn UPBtn" @click="isdelete(item.ID)">
{{ $t("system.table_delete") }}
</button>
<button
class="hollowFixedBtn HS_financial"
@click="AccountManage(item)"
>
{{ $t("visaT.Accountmanagement") }}
</button>
<button class="hollowFixedBtn HS_financial" @click="GoHotel(item)">
{{ $t("ground.jiudianfkfspz") }}
</button>
</div> </div>
</div> </div>
</div> </div>
<el-pagination background @current-change="handleCurrentChange" :current-page.sync="currentPage" <el-pagination
layout="total,prev, pager, next, jumper" :page-size="this.msg.pageSize" :total="total"> background
@current-change="handleCurrentChange"
:current-page.sync="currentPage"
layout="total,prev, pager, next, jumper"
:page-size="this.msg.pageSize"
:total="total"
>
</el-pagination> </el-pagination>
</div> </div>
</template> </template>
<script> <script>
export default { export default {
data() { data() {
return { return {
total: 0, total: 0,
...@@ -192,45 +402,52 @@ ...@@ -192,45 +402,52 @@
Fax: "", Fax: "",
Remark: "", Remark: "",
Type: "1", Type: "1",
PayType: '', PayType: "",
//是否有手配费 //是否有手配费
IsHaveShouPeiFee: 0, IsHaveShouPeiFee: 0,
//手配费金额 //手配费金额
ShouPeiMoney: 0 ShouPeiMoney: 0
}, },
//付款方式 //付款方式
PayTypeList: [{ PayTypeList: [
name: this.$t('ground.xianfu'), {
name: this.$t("ground.xianfu"),
Id: 1 Id: 1
}, { },
name: this.$t('ground.qiandan'), {
name: this.$t("ground.qiandan"),
Id: 2 Id: 2
}], },
{ name: this.$t("ground.yufu"), Id: 4 }
],
rules: { rules: {
Name: [{ Name: [
{
required: true, required: true,
message: this.$t('visaT.qsrgysname'), message: this.$t("visaT.qsrgysname"),
trigger: "blur" trigger: "blur"
}], }
Contact: [{ ],
Contact: [
{
required: true, required: true,
message: this.$t('ground.qingshurulxr'), message: this.$t("ground.qingshurulxr"),
trigger: "blur" trigger: "blur"
}] }
]
} }
}; };
}, },
methods: { methods: {
//跳转到供应商酒店配置页面 //跳转到供应商酒店配置页面
GoHotel(item) GoHotel(item) {
{
this.$router.push({ this.$router.push({
path: "HotelSupplierHotel", path: "HotelSupplierHotel",
query: { query: {
ID: item.ID, ID: item.ID,
Name:item.Name, Name: item.Name,
tab: "供应商酒店备注", tab: "供应商酒店备注",
blank: 'y', blank: "y"
} }
}); });
}, },
...@@ -260,21 +477,21 @@ ...@@ -260,21 +477,21 @@
isdelete(ID) { isdelete(ID) {
this.deleteID = ID; this.deleteID = ID;
this.$confirm(this.$t("tips.shifoushanchu"), "提示", { this.$confirm(this.$t("tips.shifoushanchu"), "提示", {
confirmButtonText: this.$t('pub.sureBtn'), confirmButtonText: this.$t("pub.sureBtn"),
cancelButtonText: this.$t('pub.cancelBtn'), cancelButtonText: this.$t("pub.cancelBtn"),
type: "warning" type: "warning"
}) })
.then(() => { .then(() => {
this.$message({ this.$message({
type: "success", type: "success",
message: this.$t('tips.shanchuchenggong') message: this.$t("tips.shanchuchenggong")
}); });
this.delsuppli(); this.delsuppli();
}) })
.catch(() => { .catch(() => {
this.$message({ this.$message({
type: "info", type: "info",
message: this.$t('tips.cancleDelete') message: this.$t("tips.cancleDelete")
}); });
}); });
}, },
...@@ -287,7 +504,7 @@ ...@@ -287,7 +504,7 @@
msg, msg,
response => { response => {
if (response.data.resultCode == 1) { if (response.data.resultCode == 1) {
this.Success(this.$t('tips.shanchuchenggong')); this.Success(this.$t("tips.shanchuchenggong"));
this.initData(); this.initData();
} else { } else {
this.Error(response.data.message); this.Error(response.data.message);
...@@ -297,7 +514,7 @@ ...@@ -297,7 +514,7 @@
); );
}, },
saveInfo() { saveInfo() {
if (this.addMsg.ShouPeiMoney == '') { if (this.addMsg.ShouPeiMoney == "") {
this.addMsg.ShouPeiMoney = 0; this.addMsg.ShouPeiMoney = 0;
} }
this.apipost( this.apipost(
...@@ -306,7 +523,7 @@ ...@@ -306,7 +523,7 @@
res => { res => {
if (res.data.resultCode == 1) { if (res.data.resultCode == 1) {
this.initData(); this.initData();
this.Success(this.$t('tips.saveYes')); this.Success(this.$t("tips.saveYes"));
this.outerVisible = false; this.outerVisible = false;
} else { } else {
this.Error(res.data.message); this.Error(res.data.message);
...@@ -328,7 +545,7 @@ ...@@ -328,7 +545,7 @@
Fax: "", Fax: "",
Remark: "", Remark: "",
Type: 1, Type: 1,
PayType: '', PayType: "",
IsHaveShouPeiFee: 0, IsHaveShouPeiFee: 0,
ShouPeiMoney: 0 ShouPeiMoney: 0
}), }),
...@@ -456,8 +673,8 @@ ...@@ -456,8 +673,8 @@
query: { query: {
id: item.ID, id: item.ID,
type: 1, type: 1,
blank: 'y', blank: "y",
tab: '账户管理' tab: "账户管理"
} }
}); });
} }
...@@ -467,6 +684,5 @@ ...@@ -467,6 +684,5 @@
this.initData(); this.initData();
this.getCountryList(); //初始化国家下拉 this.getCountryList(); //初始化国家下拉
} }
}; };
</script> </script>
<style> <style>
.CM_look { .CM_look {
padding: 4px !important; padding: 4px !important;
position: relative; position: relative;
top: 1px; top: 1px;
} }
</style> </style>
<template> <template>
<div class="flexOne"> <div class="flexOne">
<div class="query-box"> <div class="query-box">
<ul> <ul>
<li> <li>
<input type="button" class="normalBtn" :value="$t('pub.addBtn')" @click="isShow=true,dialogTitle=$t('ground.xinzengjdgyfs')" /> <input
type="button"
class="normalBtn"
:value="$t('pub.addBtn')"
@click="(isShow = true), (dialogTitle = $t('ground.xinzengjdgyfs'))"
/>
</li> </li>
</ul> </ul>
<el-dialog :title="dialogTitle" :visible.sync="isShow" center custom-class="w460"> <el-dialog
:title="dialogTitle"
:visible.sync="isShow"
center
custom-class="w460"
>
<el-form :model="addMsg" label-width="100px"> <el-form :model="addMsg" label-width="100px">
<el-form-item :label="$t('hotel.suplier_name')" prop="Name"> <el-form-item :label="$t('hotel.suplier_name')" prop="Name">
{{SupplierName}} {{ SupplierName }}
</el-form-item> </el-form-item>
<el-form-item :label="$t('hotel.hotel')"> <el-form-item :label="$t('hotel.hotel')">
<el-select v-model="addMsg.HotelId" filterable :placeholder="$t('pub.pleaseSel')" class="w220"> <el-select
v-model="addMsg.HotelId"
filterable
:placeholder="$t('pub.pleaseSel')"
class="w220"
>
<el-option :label="$t('pub.pleaseSel')" :value="0"></el-option> <el-option :label="$t('pub.pleaseSel')" :value="0"></el-option>
<el-option v-for='item in HotelList' :key="item.ID" :label="item.Name" :value="item.ID"> <el-option
v-for="item in HotelList"
:key="item.ID"
:label="item.Name"
:value="item.ID"
>
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item :label="$t('fnc.fkfangshi')"> <el-form-item :label="$t('fnc.fkfangshi')">
<el-select v-model="addMsg.SubPayType" filterable :placeholder="$t('pub.pleaseSel')" class="w220"> <el-select
v-model="addMsg.SubPayType"
filterable
:placeholder="$t('pub.pleaseSel')"
class="w220"
>
<el-option :label="$t('pub.pleaseSel')" :value="0"></el-option> <el-option :label="$t('pub.pleaseSel')" :value="0"></el-option>
<el-option v-for='item in PayTypeList' :key="item.Id" :label="item.name" :value="item.Id"> <el-option
v-for="item in PayTypeList"
:key="item.Id"
:label="item.name"
:value="item.Id"
>
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item :label="$t('hotel.hotel_StartDate')"> <el-form-item :label="$t('hotel.hotel_StartDate')">
<el-date-picker class="w220" type="date" v-model="addMsg.StartDate" :picker-options="pickerBeginDateBefore" <el-date-picker
value-format="yyyy-MM-dd" placeholder></el-date-picker> class="w220"
type="date"
v-model="addMsg.StartDate"
:picker-options="pickerBeginDateBefore"
value-format="yyyy-MM-dd"
placeholder
></el-date-picker>
</el-form-item> </el-form-item>
<el-form-item :label="$t('hotel.hotel_EndDate')"> <el-form-item :label="$t('hotel.hotel_EndDate')">
<el-date-picker class="w220" type="date" v-model="addMsg.EndDate" :picker-options="pickerBeginDateAfter" <el-date-picker
value-format="yyyy-MM-dd" placeholder></el-date-picker> class="w220"
type="date"
v-model="addMsg.EndDate"
:picker-options="pickerBeginDateAfter"
value-format="yyyy-MM-dd"
placeholder
></el-date-picker>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<button class="hollowFixedBtn" @click="initData(),isShow = false">{{$t('pub.cancelBtn')}}</button> &nbsp; <button class="hollowFixedBtn" @click="initData(), (isShow = false)">
<button class="normalBtn" type="primary" @click="SaveData()">{{$t('pub.sureBtn')}}</button> {{ $t("pub.cancelBtn") }}
</button>
&nbsp;
<button class="normalBtn" type="primary" @click="SaveData()">
{{ $t("pub.sureBtn") }}
</button>
</div> </div>
</el-dialog> </el-dialog>
</div> </div>
<table class="singeRowTable" border="0" cellspacing="0" cellpadding="0" v-loading="loading"> <table
class="singeRowTable"
border="0"
cellspacing="0"
cellpadding="0"
v-loading="loading"
>
<tr> <tr>
<th>{{$t('hotel.hotel')}}</th> <th>{{ $t("hotel.hotel") }}</th>
<th>{{$t('hotel.hotel_StartDate')}}</th> <th>{{ $t("hotel.hotel_StartDate") }}</th>
<th>{{$t('hotel.hotel_EndDate')}}</th> <th>{{ $t("hotel.hotel_EndDate") }}</th>
<th>{{$t('fnc.fkfangshi')}}</th> <th>{{ $t("fnc.fkfangshi") }}</th>
<th>{{$t('system.table_operation')}}</th> <th>{{ $t("system.table_operation") }}</th>
</tr> </tr>
<tr v-for="item in dataList"> <tr v-for="item in dataList">
<td>{{item.HotelName}}</td> <td>{{ item.HotelName }}</td>
<td>{{item.StartDateStr}}</td> <td>{{ item.StartDateStr }}</td>
<td>{{item.EndDateStr}}</td> <td>{{ item.EndDateStr }}</td>
<td>{{item.SubPayTypeStr}}</td> <td>{{ item.SubPayTypeStr }}</td>
<td> <td>
<el-tooltip class="item" effect="dark" :content="$t('system.table_edit')" placement="top-start"> <el-tooltip
<el-button type="primary" class="iconfont icon-bianji-smal" class="item"
@click="GetData(item.Id),isShow=true,dialogTitle=$t('ground.xinzengjdgyfs')"></el-button> effect="dark"
:content="$t('system.table_edit')"
placement="top-start"
>
<el-button
type="primary"
class="iconfont icon-bianji-smal"
@click="
GetData(item.Id),
(isShow = true),
(dialogTitle = $t('ground.xinzengjdgyfs'))
"
></el-button>
</el-tooltip> </el-tooltip>
</td> </td>
</tr> </tr>
...@@ -74,17 +138,17 @@ ...@@ -74,17 +138,17 @@
</template> </template>
<script> <script>
export default { export default {
data() { data() {
return { return {
msg: { msg: {
SupplierId: 0, SupplierId: 0
}, },
loading: false, loading: false,
isShow: false, //是否显示新增修改 isShow: false, //是否显示新增修改
//供应商名称 //供应商名称
SupplierName: "", SupplierName: "",
dialogTitle: this.$t('ground.xinzengjdgyfs'), dialogTitle: this.$t("ground.xinzengjdgyfs"),
//数据源 //数据源
dataList: [], dataList: [],
HotelList: [], //酒店列表 HotelList: [], //酒店列表
...@@ -95,33 +159,37 @@ ...@@ -95,33 +159,37 @@
HotelId: 0, HotelId: 0,
StartDate: "", StartDate: "",
EndDate: "", EndDate: "",
SubPayType: 0, SubPayType: 0
}, },
//付款方式 //付款方式
PayTypeList: [{ PayTypeList: [
name: this.$t('ground.xianfu'), {
name: this.$t("ground.xianfu"),
Id: 1 Id: 1
}, { },
name: this.$t('ground.qiandan'), {
name: this.$t("ground.qiandan"),
Id: 2 Id: 2
}], },
{ name: this.$t("ground.yufu"), Id: 4 }
],
pickerBeginDateBefore: { pickerBeginDateBefore: {
disabledDate: time => { disabledDate: time => {
if (this.addMsg.EndDate == null) { if (this.addMsg.EndDate == null) {
return false; return false;
} else { } else {
let endTime = new Date(this.addMsg.EndDate) let endTime = new Date(this.addMsg.EndDate);
return endTime.getTime() < time.getTime() return endTime.getTime() < time.getTime();
} }
} }
}, },
pickerBeginDateAfter: { pickerBeginDateAfter: {
disabledDate: time => { disabledDate: time => {
let startTime = new Date(this.addMsg.StartDate) let startTime = new Date(this.addMsg.StartDate);
return startTime.getTime() >= time.getTime() return startTime.getTime() >= time.getTime();
}
} }
} }
};
}, },
mounted() { mounted() {
this.msg.SupplierId = this.$route.query.ID; this.msg.SupplierId = this.$route.query.ID;
...@@ -142,19 +210,19 @@ ...@@ -142,19 +210,19 @@
}, },
SaveData() { SaveData() {
if (this.addMsg.HotelId <= 0) { if (this.addMsg.HotelId <= 0) {
this.Info(this.$t('ground.qingxuanzejiud')); this.Info(this.$t("ground.qingxuanzejiud"));
return; return;
} }
if (this.addMsg.SubPayType <= 0) { if (this.addMsg.SubPayType <= 0) {
this.Info(this.$t('ground.qingxuanzefkfs')); this.Info(this.$t("ground.qingxuanzefkfs"));
return; return;
} }
if (this.addMsg.StartDate == "") { if (this.addMsg.StartDate == "") {
this.Info(this.$t('ground.qingxuanzekssjs')); this.Info(this.$t("ground.qingxuanzekssjs"));
return; return;
} }
if (this.addMsg.EndDate == "") { if (this.addMsg.EndDate == "") {
this.Info(this.$t('ground.qingxuanzejssjs')); this.Info(this.$t("ground.qingxuanzejssjs"));
return; return;
} }
this.apipost( this.apipost(
...@@ -177,7 +245,8 @@ ...@@ -177,7 +245,8 @@
//根据编号获取实体 //根据编号获取实体
GetData(Id) { GetData(Id) {
this.apipost( this.apipost(
"supplier_post_GetEntityService", { "supplier_post_GetEntityService",
{
Id: Id Id: Id
}, },
res => { res => {
...@@ -217,7 +286,8 @@ ...@@ -217,7 +286,8 @@
getHotelList() { getHotelList() {
this.loading = true; this.loading = true;
this.apipost( this.apipost(
"hotel_post_GetList", { "hotel_post_GetList",
{
QCountry: 651 QCountry: 651
}, },
res => { res => {
...@@ -230,8 +300,7 @@ ...@@ -230,8 +300,7 @@
}, },
null null
); );
},
} }
} }
};
</script> </script>
...@@ -29,7 +29,8 @@ ...@@ -29,7 +29,8 @@
</ul> </ul>
{{$t('ground.jisuan1')}} <br /> {{$t('ground.jisuan1')}} <br />
{{$t('ground.jisuan2')}} <br /> {{$t('ground.jisuan2')}} <br />
{{$t('ground.sidaobsuan')}} {{$t('ground.sidaobsuan')}}<br />
付款方式是现付的,必須上传手配书.
</div> </div>
<div style="width: 100%; overflow-x: auto;padding-bottom: 10px; " :style="{height: boxHeight + 'px'}" <div style="width: 100%; overflow-x: auto;padding-bottom: 10px; " :style="{height: boxHeight + 'px'}"
class="ownScrollbarStyle" ref="ownScrollbarStyle"> class="ownScrollbarStyle" ref="ownScrollbarStyle">
...@@ -164,7 +165,10 @@ ...@@ -164,7 +165,10 @@
<tr> <tr>
<td colspan="2"> <td colspan="2">
<p style="padding-top: 5px;"> <p style="padding-top: 5px;">
<a v-if="subItem.ContractUrl" target="_blank" style="color:green" :href="subItem.ContractUrl">已上传手配书</a> <template v-if="subItem.ContractUrl!=''">
<span style="color:green">已上传手配书</span>
&nbsp;&nbsp;<a v-if="subItem.ContractUrl" target="_blank" style="color:red" :href="subItem.ContractUrl">查看</a>
</template>
</p> </p>
<el-upload :http-request="uploadFileBtnS" :multiple="false" :show-file-list="false" action=''> <el-upload :http-request="uploadFileBtnS" :multiple="false" :show-file-list="false" action=''>
<el-button size="small" type="danger" @click='getItem(index, subIndex)'> <el-button size="small" type="danger" @click='getItem(index, subIndex)'>
...@@ -875,8 +879,8 @@ ...@@ -875,8 +879,8 @@
var str=""; var str="";
this.list.forEach(item => { this.list.forEach(item => {
item.HotelOrderList.forEach(subItem => { item.HotelOrderList.forEach(subItem => {
if(isUpload&&subItem.PayStyle==1&&subItem.ContractUrl==''){ if(isUpload&&subItem.PayStyle==1&&subItem.ContractUrl==''&&this.CurrentUserInfo.EmployeeId!=615){
str+="" str+=`请上传${item.UseTimeStr}的手配书`
isUpload=false; isUpload=false;
} }
subItem.OrderDetailsList.forEach((y, sIndex) => { subItem.OrderDetailsList.forEach((y, sIndex) => {
...@@ -907,8 +911,10 @@ ...@@ -907,8 +911,10 @@
} }
}); });
}) })
if(!isUpload){
if(flag){ this.Error(str);
return;
}
this.loading = true; this.loading = true;
this.apipost('dmcstatistics_get_SetHotelOrder', this.list, res => { this.apipost('dmcstatistics_get_SetHotelOrder', this.list, res => {
this.loading = false; this.loading = false;
...@@ -919,19 +925,20 @@ ...@@ -919,19 +925,20 @@
this.Error(res.data.message); this.Error(res.data.message);
} }
}, err => {}) }, err => {})
}
}, },
//单条保存 //单条保存
SaveSingle(item) { SaveSingle(item) {
item.HotelOrderState = 1; item.HotelOrderState = 1;
var flag=true; var flag=true;
var isUpload=true;
var str="";
this.list.forEach(item => { this.list.forEach(item => {
item.HotelOrderList.forEach(subItem => { item.HotelOrderList.forEach(subItem => {
subItem.OrderDetailsList.forEach(y => { if(isUpload&&subItem.PayStyle==1&&subItem.ContractUrl==''&&this.CurrentUserInfo.EmployeeId!=615){
if(subItem.CurrencyId==3&&subItem.ContractUrl==''){ str+=`请上传${item.UseTimeStr}的手配书`
this.Error('请上传手配书'); isUpload=false;
flag=false;
} }
subItem.OrderDetailsList.forEach(y => {
if (y.HouseTypeCount) { if (y.HouseTypeCount) {
y.HouseTypeCount = parseFloat(y.HouseTypeCount); y.HouseTypeCount = parseFloat(y.HouseTypeCount);
} else { } else {
...@@ -960,7 +967,10 @@ ...@@ -960,7 +967,10 @@
} }
}); });
}) })
if(flag){ if(!isUpload){
this.Error(str);
return;
}
let mag = { let mag = {
TotalList: this.list, TotalList: this.list,
SingleItem: item SingleItem: item
...@@ -973,7 +983,6 @@ ...@@ -973,7 +983,6 @@
this.Error(res.data.message); this.Error(res.data.message);
} }
}, err => {}) }, err => {})
}
}, },
// 获取供应商 // 获取供应商
......
...@@ -363,13 +363,24 @@ ...@@ -363,13 +363,24 @@
<span v-else-if="subItem.DMCPayType === 9">月结</span> <span v-else-if="subItem.DMCPayType === 9">月结</span>
<span v-else-if="subItem.DMCPayType === 11">刷卡</span> <span v-else-if="subItem.DMCPayType === 11">刷卡</span>
<span v-else-if="subItem.DMCPayType === 10">领队导游垫付</span> <span v-else-if="subItem.DMCPayType === 10">领队导游垫付</span>
</br> <br/>
<span v-show="subItem.DMCPayType==6">付款团号:{{subItem.PayTypeTCNUM}}</span> <span v-show="subItem.DMCPayType==6">付款团号:{{subItem.PayTypeTCNUM}}</span>
</td> </td>
<td v-if="childIndex==0" :rowspan="6"> <td v-if="childIndex==0" :rowspan="6">
<span>{{subItem.SupplierName}} <span v-if="subItem.SupplierPayType !== 0" <span>{{subItem.SupplierName}}
:style="{'color': subItem.SupplierPayType == 2 ? '#E95252': '#111111'}">{{subItem.SupplierPayType == 2 ? '签单' : '现付'}}</span></span> <br/>
<template v-if="subItem.SupplierPayType !== 0">
<span v-if="subItem.SupplierPayType == 1">
现付
</span>
<span v-else-if="subItem.SupplierPayType == 2">
签单
</span>
<span v-else-if="subItem.SupplierPayType == 4">
预付
</span>
</template>
</span>
<div v-if="subItem.IsHaveShouPeiFee==0" style="color:red;">无手配费</div> <div v-if="subItem.IsHaveShouPeiFee==0" style="color:red;">无手配费</div>
<div v-if="subItem.IsHaveShouPeiFee==1" style="color:red;">手配费:{{subItem.ShouPeiMoney}}</div> <div v-if="subItem.IsHaveShouPeiFee==1" style="color:red;">手配费:{{subItem.ShouPeiMoney}}</div>
......
<style>
.customerMap{
width: 100%;
height: 100%;
}
</style>
<template>
<div class="customerMap">
<div :style="{height:'100%',width:'100%'}" ref="myEchart" id="centerMpBaidu"></div>
</div>
</template>
<script>
export default {
data() {
return {
map: {},
baiduMapData: [
{ lng: 120.03469, lat: 30.303904, type: 2},
{ lng: 120.088499, lat: 30.275182, type: 2},
{ lng: 120.089249, lat: 30.317759, type: 0},
{ lng: 120.161941, lat: 30.283073, type: 0 },
{ lng: 120.174941, lat: 30.275073, type: 0 },
{ lng: 120.186941, lat: 30.297073, type: 1 },
{ lng: 120.198941, lat: 30.299073, type: 1 },
]
};
},
methods: {
creatMap(){
let _this = this
let data = this.baiduMapData;
//实例化,并设置最大最小缩放层级
const map = new BMap.Map("centerMpBaidu", {
minZoom: 3,
maxZoom: 20,
});
//设置中心点、默认缩放层级
if (data.length > 0) {
map.centerAndZoom(new BMap.Point(data[0].lng, data[0].lat), 10);
} else {
map.centerAndZoom(new BMap.Point(104.0727017791, 30.6643622306), 10);
}
//可以鼠标缩放
map.enableScrollWheelZoom(true);
const points = data
const markerClusterers = [[], [], []]
points.forEach(item => {
//实例化点
const point = new BMap.Point(item.lng, item.lat)
//自定义点的样式
// type 0 激活 绿色 20191125015057879
// 1 未拜访 紫色 20191125015102111
// 2 未激活 红色 20191125015100234
const icon = new BMap.Icon(
item.type === 0 ? 'http://imgfile.oytour.com/New/Upload/Cloud/2019-11/20191125015057879.png' : item.type === 1 ? 'http://imgfile.oytour.com/New/Upload/Cloud/2019-11/20191125015102111.png' : 'http://imgfile.oytour.com/New/Upload/Cloud/2019-11/20191125015100234.png',
new BMap.Size(30, 30)
);
//生成点标注
const marker = new BMap.Marker(point, { icon: icon });
// const infoWindow = new BMap.InfoWindow('简易的信息窗口')
//绑定事件,显示窗口
marker.addEventListener("click", function(){
_this.markerClick(point, item)
// map.openInfoWindow(infoWindow,point);
});
markerClusterers[item.type || 0].push(marker)
//添加点标注即添加覆盖物
map.addOverlay(marker);
})
// //2种聚合的实现
const size = new BMap.Size( 30, 30 )
var markerClusterer1 = new window.BMapLib.MarkerClusterer(map, {
markers: markerClusterers[1],
styles: [{
url:'http://imgfile.oytour.com/New/Upload/Cloud/2019-11/20191125015102111.png',
size: size,
textSize: 18,
textColor: 'white',
}, {
url: 'http://imgfile.oytour.com/New/Upload/Cloud/2019-11/20191125015102111.png',
size: size,
textSize: 18,
textColor: 'white',
}, {
url: 'http://imgfile.oytour.com/New/Upload/Cloud/2019-11/20191125015102111.png',
size: size,
textSize: 18,
textColor: 'white',
}]
})
var markerClusterer2 = new window.BMapLib.MarkerClusterer(map, {
markers: markerClusterers[2],
styles: [{
url:'http://imgfile.oytour.com/New/Upload/Cloud/2019-11/20191125015100234.png',
size: size,
textSize: 18,
textColor: 'white',
}, {
url: 'http://imgfile.oytour.com/New/Upload/Cloud/2019-11/20191125015100234.png',
size: size,
textSize: 18,
textColor: 'white',
}, {
url: 'http://imgfile.oytour.com/New/Upload/Cloud/2019-11/20191125015100234.png',
size: size,
textSize: 18,
textColor: 'white',
}]
})
var markerClusterer4 = new window.BMapLib.MarkerClusterer(map, { markers: markerClusterers[0],
styles: [{
url:'http://imgfile.oytour.com/New/Upload/Cloud/2019-11/20191125015057879.png',
size: size,
textSize: 18,
textColor: 'white',
}, {
url: 'http://imgfile.oytour.com/New/Upload/Cloud/2019-11/20191125015057879.png',
size: size,
textSize: 18,
textColor: 'white',
}, {
url: 'http://imgfile.oytour.com/New/Upload/Cloud/2019-11/20191125015057879.png',
size: size,
textSize: 18,
textColor: 'white',
}] })
this.map = map
},
markerClick(point, item){
this.apipost('financestatistics_post_GetCustomerInfoForB2BKB', {CustomerId: item.CustomerId}, res=>{
if(res.data.resultCode == 1) {
const infoWindow = new BMap.InfoWindow(`
<p>联系人:${res.data.data.Contact}</p>
<p>联系电话:${res.data.data.ContactNumber}</p>
<p>门店名称:${res.data.data.CustomerName}</p>
<p>门店地址:${res.data.data.Address}</p>
`)
this.map.openInfoWindow(infoWindow, point);
}
})
}
},
mounted() {
this.creatMap()
}
};
</script>
\ No newline at end of file
...@@ -75,6 +75,12 @@ ...@@ -75,6 +75,12 @@
</li> </li>
<li style="float:right;padding-top:10px;color:#111111">{{$t('salesModule.JYETJ')}}{{datainfo.sumMoney}}</li> <li style="float:right;padding-top:10px;color:#111111">{{$t('salesModule.JYETJ')}}{{datainfo.sumMoney}}</li>
<li> <li>
<input
type="button"
class="hollowFixedBtn"
:value="$t('ground.kehuditu')"
@click="getMap()"
>
<input <input
type="button" type="button"
class="hollowFixedBtn" class="hollowFixedBtn"
...@@ -633,6 +639,9 @@ export default { ...@@ -633,6 +639,9 @@ export default {
getUrl(item){ getUrl(item){
this.$router.push({ name:"CustomerAnalysis",query:{"customerId":item.CustomerIdS,blank: 'y'} }) this.$router.push({ name:"CustomerAnalysis",query:{"customerId":item.CustomerIdS,blank: 'y'} })
}, },
getMap(){
this.$router.push({ name:"customerMap",query:{blank: 'y'} })
},
updateData: function(obj) { updateData: function(obj) {
this.apipost( this.apipost(
"app_customer_GetLeaderCustomerInfo", "app_customer_GetLeaderCustomerInfo",
......
<style>
.syslog_Content {
width: 100%;
}
.syslog_ul li {
width: 100%;
min-height: 135px;
margin-bottom: 10px;
}
.syslog_top {
width: 100%;
height: 34px;
line-height: 34px;
background-color: #dfdfdf;
}
.sys_content {
width: 100%;
min-height: 101px;
padding: 20px;
font-size: 14px;
background-color: #fff;
}
.appUpdateLog .ql-editor {
min-height: 200px;
}
.sysTop_left {
float: left;
}
.sysTop_banben {
display: inline-block;
color: #38425d;
font-size: 14px;
font-weight: bold;
margin: 0 30px;
}
.sysTop_uptime {
font-size: 14px;
color: #666666;
}
.sysTop_right {
float: right;
margin-right: 30px;
}
.sysliteleBtn {
color: #fff;
padding: 0 10px;
height: 20px;
background: #e95252;
border: 1px solid #e95252;
cursor: pointer;
border-radius: 15px;
margin-left: 10px;
}
</style>
<template>
<div class="flexOne appUpdateLog">
<table v-loading="loading" class="singeRowTable">
<tr>
<th width="150">名称</th>
<th width="150">Code</th>
<th>Content</th>
<th width="100">操作</th>
</tr>
<tr v-for="(item, index) in dataList" :key="index">
<td>
{{ item.Name }}
</td>
<td>
{{ item.Code }}
</td>
<td style="text-align:left;padding:0 5px;">
{{ item.Content }}
</td>
<td>
<input
type="button"
class="sysliteleBtn"
@click="updateLog(item)"
value="修改"
/>
</td>
</tr>
</table>
<el-dialog
custom-class="w800"
:title="dialogTitle"
:visible.sync="outerVisible"
center
>
<el-form :model="addMsg" label-width="80px">
<table style="width:100%">
<tr>
<td colspan="2">
<el-form-item label="更新內容">
<el-input
v-model="addMsg.Content"
class="w595"
placeholder="请输入"
/>
</el-form-item>
</td>
</tr>
</table>
</el-form>
<div slot="footer" class="dialog-footer">
<button class="normalBtn" @click="SaveAppLog()">
{{ $t("pub.saveBtn") }}
</button>
&nbsp;
<button
class="hollowFixedBtn"
@click="(outerVisible = false), clearMsg()"
>
{{ $t("pub.cancelBtn") }}
</button>
</div>
</el-dialog>
</div>
</template>
<script>
export default {
data() {
return {
msg: {},
loading: false,
dataList: [],
dialogTitle: "",
outerVisible: false,
addMsg: {
ID: 0,
Content: ""
}
};
},
methods: {
getList() {
//获取现有线路列表
this.loading = true;
this.apipost(
"admin_get_GetDictValueListService",
this.msg,
res => {
this.loading = false;
if (res.data.resultCode == 1) {
this.dataList = res.data.data;
} else {
this.Error(res.data.message);
}
},
err => {}
);
},
//修改获取数据
updateLog(item) {
this.addMsg.ID = item.ID;
this.addMsg.Content = item.Content;
this.dialogTitle = "修改更新日志";
this.outerVisible = true;
},
clearMsg() {
this.addMsg.ID = 0;
this.addMsg.Content = "";
},
SaveAppLog() {
this.apipost(
"admin_post_SetDictValueListService",
this.addMsg,
res => {
if (res.data.resultCode == 1) {
this.outerVisible = false;
this.clearMsg();
this.Success(res.data.message);
this.getList();
} else {
this.Error(res.data.message);
}
},
err => {}
);
}
},
mounted() {
this.getList();
}
};
</script>
...@@ -940,6 +940,14 @@ export default { ...@@ -940,6 +940,14 @@ export default {
title: '系统更新与日志管理' title: '系统更新与日志管理'
}, },
}, },
{
path: '/appUpdateLog', //App更新与日志管理
name: 'appUpdateLog',
component: resolve => require(['@/components/systemManagement/appUpdateLog'], resolve),
meta: {
title: '系统更新与日志管理'
},
},
{ {
path: '/destinationManagement', //目的地管理 path: '/destinationManagement', //目的地管理
name: 'destinationManagement', name: 'destinationManagement',
...@@ -2200,6 +2208,14 @@ export default { ...@@ -2200,6 +2208,14 @@ export default {
title: '客户转交' title: '客户转交'
}, },
}, },
{ // 客户 地图
path: '/customerMap',
name: 'customerMap',
component: resolve => require(['@/components/SalesModule/customerMap'], resolve),
meta: {
title: '客户地图'
},
},
{ // 销售 活动统计 { // 销售 活动统计
path: '/ActivityStatistics', path: '/ActivityStatistics',
name: 'ActivityStatistics', name: 'ActivityStatistics',
......
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