Commit ba1474f1 authored by 黄媛媛's avatar 黄媛媛
parents c6085d73 332303e1
......@@ -677,5 +677,6 @@ export const obj = {
suoshusj: '所属上级',
shangpinlxmc: '商品类型名称',
qingshangctp: '请上传图片',
kehuditu: '客户地图'
}
export default obj;
\ No newline at end of file
......@@ -677,5 +677,6 @@ xiugaishangplx: '修改商品類型',
suoshusj: '所屬上級',
shangpinlxmc: '商品類型名稱',
qingshangctp: '請上傳圖片',
kehuditu: '客戶地圖'
}
export default obj;
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
......@@ -29,7 +29,8 @@
</ul>
{{$t('ground.jisuan1')}} <br />
{{$t('ground.jisuan2')}} <br />
{{$t('ground.sidaobsuan')}}
{{$t('ground.sidaobsuan')}}<br />
付款方式是现付的,必須上传手配书.
</div>
<div style="width: 100%; overflow-x: auto;padding-bottom: 10px; " :style="{height: boxHeight + 'px'}"
class="ownScrollbarStyle" ref="ownScrollbarStyle">
......@@ -164,7 +165,10 @@
<tr>
<td colspan="2">
<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>
<el-upload :http-request="uploadFileBtnS" :multiple="false" :show-file-list="false" action=''>
<el-button size="small" type="danger" @click='getItem(index, subIndex)'>
......@@ -875,9 +879,9 @@
var str="";
this.list.forEach(item => {
item.HotelOrderList.forEach(subItem => {
if(isUpload&&subItem.PayStyle==1&&subItem.ContractUrl==''){
str+=""
isUpload=false;
if(isUpload&&subItem.PayStyle==1&&subItem.ContractUrl==''&&this.CurrentUserInfo.EmployeeId!=615){
str+=`请上传${item.UseTimeStr}的手配书`
isUpload=false;
}
subItem.OrderDetailsList.forEach((y, sIndex) => {
if (y.HouseTypeCount) {
......@@ -907,31 +911,34 @@
}
});
})
if(flag){
this.loading = true;
this.apipost('dmcstatistics_get_SetHotelOrder', this.list, res => {
this.loading = false;
if (res.data.resultCode == 1) {
this.getList();
this.Success(res.data.message);
} else {
this.Error(res.data.message);
}
}, err => {})
if(!isUpload){
this.Error(str);
return;
}
this.loading = true;
this.apipost('dmcstatistics_get_SetHotelOrder', this.list, res => {
this.loading = false;
if (res.data.resultCode == 1) {
this.getList();
this.Success(res.data.message);
} else {
this.Error(res.data.message);
}
}, err => {})
},
//单条保存
SaveSingle(item) {
item.HotelOrderState = 1;
var flag=true;
var isUpload=true;
var str="";
this.list.forEach(item => {
item.HotelOrderList.forEach(subItem => {
if(isUpload&&subItem.PayStyle==1&&subItem.ContractUrl==''&&this.CurrentUserInfo.EmployeeId!=615){
str+=`请上传${item.UseTimeStr}的手配书`
isUpload=false;
}
subItem.OrderDetailsList.forEach(y => {
if(subItem.CurrencyId==3&&subItem.ContractUrl==''){
this.Error('请上传手配书');
flag=false;
}
if (y.HouseTypeCount) {
y.HouseTypeCount = parseFloat(y.HouseTypeCount);
} else {
......@@ -960,20 +967,22 @@
}
});
})
if(flag){
let mag = {
TotalList: this.list,
SingleItem: item
};
this.apipost('dmcstatistics_get_SetHotelOrder', this.list, res => {
if (res.data.resultCode == 1) {
this.Success(res.data.message);
this.getList();
} else {
this.Error(res.data.message);
}
}, err => {})
if(!isUpload){
this.Error(str);
return;
}
let mag = {
TotalList: this.list,
SingleItem: item
};
this.apipost('dmcstatistics_get_SetHotelOrder', this.list, res => {
if (res.data.resultCode == 1) {
this.Success(res.data.message);
this.getList();
} else {
this.Error(res.data.message);
}
}, err => {})
},
// 获取供应商
......
......@@ -363,13 +363,24 @@
<span v-else-if="subItem.DMCPayType === 9">月结</span>
<span v-else-if="subItem.DMCPayType === 11">刷卡</span>
<span v-else-if="subItem.DMCPayType === 10">领队导游垫付</span>
</br>
<br/>
<span v-show="subItem.DMCPayType==6">付款团号:{{subItem.PayTypeTCNUM}}</span>
</td>
<td v-if="childIndex==0" :rowspan="6">
<span>{{subItem.SupplierName}} <span v-if="subItem.SupplierPayType !== 0"
:style="{'color': subItem.SupplierPayType == 2 ? '#E95252': '#111111'}">{{subItem.SupplierPayType == 2 ? '签单' : '现付'}}</span></span>
<span>{{subItem.SupplierName}}
<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==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 @@
</li>
<li style="float:right;padding-top:10px;color:#111111">{{$t('salesModule.JYETJ')}}{{datainfo.sumMoney}}</li>
<li>
<input
type="button"
class="hollowFixedBtn"
:value="$t('ground.kehuditu')"
@click="getMap()"
>
<input
type="button"
class="hollowFixedBtn"
......@@ -633,6 +639,9 @@ export default {
getUrl(item){
this.$router.push({ name:"CustomerAnalysis",query:{"customerId":item.CustomerIdS,blank: 'y'} })
},
getMap(){
this.$router.push({ name:"customerMap",query:{blank: 'y'} })
},
updateData: function(obj) {
this.apipost(
"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 {
title: '系统更新与日志管理'
},
},
{
path: '/appUpdateLog', //App更新与日志管理
name: 'appUpdateLog',
component: resolve => require(['@/components/systemManagement/appUpdateLog'], resolve),
meta: {
title: '系统更新与日志管理'
},
},
{
path: '/destinationManagement', //目的地管理
name: 'destinationManagement',
......@@ -2200,6 +2208,14 @@ export default {
title: '客户转交'
},
},
{ // 客户 地图
path: '/customerMap',
name: 'customerMap',
component: resolve => require(['@/components/SalesModule/customerMap'], resolve),
meta: {
title: '客户地图'
},
},
{ // 销售 活动统计
path: '/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