diff --git a/.env.development b/.env.development
index f34654e..935a2b1 100644
--- a/.env.development
+++ b/.env.development
@@ -1,12 +1,16 @@
#调用后台地址
-# 公司
-VITE_APP_BASE_URL = 'http://118.186.13.120:31302'
+# 贝英斯公司
+# VITE_APP_BASE_URL = 'http://118.186.13.120:31302'
# VITE_APP_BASE_URL = "http://192.168.236.71:31302"
# VITE_APP_BASE_URL = "http://123.57.20.168:3000"
-# 友晟外网
+# 友晟test外网
# VITE_APP_BASE_URL = 'https://app-test.718yousheng.com/app'
-# 友晟内网
+# 友晟test内网
# VITE_APP_BASE_URL = 'https://appi-test.718yousheng.com/app'
+# 友晟线上内网
+# VITE_APP_BASE_URL = 'https://appi.718yousheng.com/app'
+# 友晟线上外网网
+VITE_APP_BASE_URL = 'https://app.718yousheng.com/app'
diff --git a/.env.production b/.env.production
index 6731db1..b9a031e 100644
--- a/.env.production
+++ b/.env.production
@@ -1,11 +1,16 @@
#调用后台地址
-# 公司
+# 贝英斯公司
# VITE_APP_BASE_URL = 'http://118.186.13.120:31302'
# VITE_APP_BASE_URL = "http://192.168.236.71:31302"
# VITE_APP_BASE_URL = "http://123.57.20.168:3000"
-# 友晟外网
-VITE_APP_BASE_URL = 'https://app-test.718yousheng.com/app'
-# 友晟内网
-# VITE_APP_BASE_URL = 'https://appi-test.718yousheng.com/app'
\ No newline at end of file
+# 友晟test外网
+# VITE_APP_BASE_URL = 'https://app-test.718yousheng.com/app'
+# 友晟test内网
+# VITE_APP_BASE_URL = 'https://appi-test.718yousheng.com/app'
+
+# 友晟线上内网
+# VITE_APP_BASE_URL = 'https://appi.718yousheng.com/app'
+# 友晟线上外网网
+VITE_APP_BASE_URL = 'https://app.718yousheng.com/app'
\ No newline at end of file
diff --git a/src/api/crm/activity/map.js b/src/api/crm/activity/map.js
index fe0c710..22ad50c 100644
--- a/src/api/crm/activity/map.js
+++ b/src/api/crm/activity/map.js
@@ -10,6 +10,14 @@ export function addStartMap(data) {
});
}
+//出差打卡接口
+export function businessTripClockIn(data) {
+ return request.post({
+ url: '/crm/app/appVisistMap/businessTripClockIn',
+ data
+ },{isTransformResponse:false});
+}
+
//新增地图开始打卡接口
export function addStartMapForClockIn(data) {
return request.post({
diff --git a/src/components/closeableModal.vue b/src/components/closeableModal.vue
new file mode 100644
index 0000000..adfe729
--- /dev/null
+++ b/src/components/closeableModal.vue
@@ -0,0 +1,176 @@
+
+
+
+ {{closeTip}}
+
+ {{ title }}
+
+ {{text}}
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/constants/mapApiConstants.js b/src/constants/mapApiConstants.js
new file mode 100644
index 0000000..8d3a254
--- /dev/null
+++ b/src/constants/mapApiConstants.js
@@ -0,0 +1,22 @@
+/**
+ * @description 定位API的配置
+ * @type {{URL: string, token: string}}
+ */
+export const MapApiConfig = {
+ /**
+ * @description API接口地址
+ */
+ URL: 'https://tiles.geovisearth.com/geo/v1/geocode/regeo',
+ /**
+ * @description 接口鉴权Token
+ */
+ token: '66c87c897f0251295afdc794e4fbf73046a070338a726fe04f06cece6cb1ffdf',
+ /**
+ * @description 打卡类型:西安办事处
+ */
+ XI_AN_BAN: {latitude: 34.1360, longitude: 108.9126, typeName: '西安办事处位置打卡'},
+ /**
+ * @description 打卡类型:第三方维护
+ */
+ OTHER: {typeName: '第三方维护打卡'}
+}
\ No newline at end of file
diff --git a/src/pages.json b/src/pages.json
index d86b7d5..b0f497d 100644
--- a/src/pages.json
+++ b/src/pages.json
@@ -331,7 +331,8 @@
"path": "pages/business/CRM/plan/planView",
//周计划查看
"style": {
- "navigationBarTitleText": ""
+ "navigationBarTitleText": "",
+ "enablePullDownRefresh": true
}
},
{
diff --git a/src/pages/business/CRM/customer/changeCustomerOwner.vue b/src/pages/business/CRM/customer/changeCustomerOwner.vue
index feb555b..2964bce 100644
--- a/src/pages/business/CRM/customer/changeCustomerOwner.vue
+++ b/src/pages/business/CRM/customer/changeCustomerOwner.vue
@@ -24,7 +24,7 @@
-
@@ -126,7 +126,7 @@ let list = ref([]);
const upOption = ref({
page: {num: 0, size: 10},
noMoreSize: 5,
- empty: {
+ empty: {
tip: '~ 空空如也 ~',
icon: "../../../../static/images/mescroll-empty.png"
},
@@ -149,44 +149,31 @@ const mescrollInit = (mescroll) => {
// 下拉刷新
const downCallback = async (mescroll) => {
- try {
- uni.showLoading();
- cssFlag.value = true;
- setTimeout(async () => {
- // 重置页码为第一页
- const res = await getList(1, mescroll.size || upOption.page.size);
- list.value = res.list;
- cssFlag.value = false;
- // 正确传递 total 参数
- mescroll.endSuccess(res.list.length, res.total >= mescroll.size);
- uni.hideLoading();
-
- }, 500);
- } catch (error) {
- console.log(error)
- mescroll.endErr();
- }
+ uni.showLoading();
+ cssFlag.value = true;
+ setTimeout(async () => {
+ // 重置页码为第一页
+ const res = await getList(1, mescroll.size || upOption.page.size);
+ cssFlag.value = false;
+ list.value = res.list;
+ // 正确传递 total 参数
+ mescroll.endSuccess(res.list.length, res.total >= mescroll.size);
+ }, 500);
}
// 上拉加载更多
const upCallback = async (mescroll) => {
- try {
- uni.showLoading();
- setTimeout(async () => {
- // 使用 mescroll 提供的页码和大小参数
- const res = await getList(mescroll.num, mescroll.size);
- if (mescroll.num === 1) {
- list.value = res.list;
- } else {
- list.value.push(...res.list);
- }
- // 正确判断是否还有更多数据
- mescroll.endSuccess(res.list.length, res.total >= mescroll.size);
- uni.hideLoading();
- }, 500);
- } catch (error) {
- console.log(error)
- mescroll.endErr();
- }
+ uni.showLoading();
+ setTimeout(async () => {
+ // 使用 mescroll 提供的页码和大小参数
+ const res = await getList(mescroll.num, mescroll.size);
+ if (mescroll.num === 1) {
+ list.value = res.list;
+ } else {
+ list.value.push(...res.list);
+ }
+ // 正确判断是否还有更多数据
+ mescroll.endSuccess(res.list.length, res.total >= mescroll.size);
+ }, 500);
}
// 获取数据列表
@@ -197,12 +184,17 @@ const getList = (pageIndex, pageSize) => {
pageSize,
searchContent: searchValue.value
}
-
- let res = await SearchForAllPerson(param);
- resolve({
- list: res.rows,
- total: res.total
- });
+ try {
+ let res = await SearchForAllPerson(param);
+ resolve({
+ list: res.rows,
+ total: res.total
+ });
+ } catch (e) {
+ console.log(e, '数据获取失败');
+ } finally {
+ uni.hideLoading();
+ }
});
}
@@ -303,41 +295,20 @@ let handleCopyInfo = (item) => {
}
-
\ No newline at end of file
diff --git a/src/pages/business/CRM/customer/components/customerUserEdit.vue b/src/pages/business/CRM/customer/components/customerUserEdit.vue
index 1742605..624fce6 100644
--- a/src/pages/business/CRM/customer/components/customerUserEdit.vue
+++ b/src/pages/business/CRM/customer/components/customerUserEdit.vue
@@ -612,12 +612,11 @@ let submitForm = async () => {
uni.showToast({
title: "更新成功"
})
+ const eventChannel = instance.getOpenerEventChannel();
+ eventChannel.emit("refreshCusUserList");
setTimeout(()=>{
uni.navigateBack();
- const eventChannel = instance.getOpenerEventChannel();
- eventChannel.emit("refreshCusUserList");
},1000);
-
}else{
uni.showToast({
title: "操作失败",
diff --git a/src/pages/business/CRM/customer/customerAudit.vue b/src/pages/business/CRM/customer/customerAudit.vue
index 533fcf5..fbb1343 100644
--- a/src/pages/business/CRM/customer/customerAudit.vue
+++ b/src/pages/business/CRM/customer/customerAudit.vue
@@ -7,7 +7,13 @@
-
+
+
+
+
+ {{iconType==='arrow-up'?'最新':'最早'}}
+
+
@@ -17,12 +23,12 @@
-
-
-
-
+
+
+
+
-
+
{
watch(searchValue, (newValue, oldValue) => {
handleSearch()
})
-let clearSearchValue = () => {
- searchValue.value = '';
+// 排序图标
+const iconType = ref('arrow-up');
+let handleReSort = () => {
+ iconType.value = iconType.value === 'arrow-down' ? 'arrow-up' : 'arrow-down';
+ list.value = list.value.reverse();
}
+
// 查询列表
let list = ref([]);
const upOption = ref({
page: {num: 0, size: 10},
noMoreSize: 5,
- empty: {
+ empty: {
tip: '~ 空空如也 ~',
- icon: "../../static/images/mescroll-empty.png"
+ icon: "../../../../static/images/mescroll-empty.png"
},
textLoading: '加载中...',
textNoMore: '已经到底了'
@@ -133,10 +143,11 @@ const mescrollInit = (mescroll) => {
// 下拉刷新
const downCallback = async (mescroll) => {
- try {
- uni.showLoading();
- cssFlag.value = true;
- setTimeout(async () => {
+
+ uni.showLoading();
+ cssFlag.value = true;
+ setTimeout(async () => {
+ try {
// 重置页码为第一页
const res = await getList(1, mescroll.size || upOption.page.size);
@@ -144,17 +155,21 @@ const downCallback = async (mescroll) => {
// 正确传递 total 参数
mescroll.endSuccess(res.list.length, res.total > (mescroll.size || upOption.page.size));
uni.hideLoading();
+
+ } catch (error) {
+ console.log(error)
+ mescroll.endErr();
+ } finally {
cssFlag.value = false;
- }, 500);
- } catch (error) {
- console.log(error)
- mescroll.endErr();
- }
+ }
+ }, 500);
+
}
// 上拉加载更多
const upCallback = async (mescroll) => {
- try {
- setTimeout(async () => {
+
+ setTimeout(async () => {
+ try {
// 使用 mescroll 提供的页码和大小参数
const res = await getList(mescroll.num, mescroll.size);
if (mescroll.num === 1) {
@@ -165,11 +180,11 @@ const upCallback = async (mescroll) => {
mescroll.endBySize(res.list.length, res.total);
// 正确判断是否还有更多数据
mescroll.endSuccess(res.list.length, res.total > mescroll.num * mescroll.size);
- }, 500);
- } catch (error) {
- console.log(error)
- mescroll.endErr();
- }
+ } catch (error) {
+ mescroll.endErr();
+ }
+ }, 500);
+
}
// 获取数据列表
@@ -180,12 +195,17 @@ const getList = (pageIndex, pageSize) => {
pageSize,
searchContent: searchValue.value
}
-
- let res = await getCusUserApprovalList(param);
- resolve({
- list: res.rows,
- total: res.total
- });
+ try {
+ let res = await getCusUserApprovalList(param);
+ resolve({
+ list: res.rows,
+ total: res.total
+ });
+ } catch (e) {
+ console.log(e, "客户人员审核任务列表获取失败");
+ } finally {
+ uni.hideLoading();
+ }
});
}
@@ -210,22 +230,17 @@ let handleDetail = (item) => {
\ No newline at end of file
diff --git a/src/pages/business/CRM/mainOwner/view/viewMainOwner.vue b/src/pages/business/CRM/mainOwner/view/viewMainOwner.vue
index 621d22f..05b7093 100644
--- a/src/pages/business/CRM/mainOwner/view/viewMainOwner.vue
+++ b/src/pages/business/CRM/mainOwner/view/viewMainOwner.vue
@@ -1,19 +1,17 @@
+
-
+
-
-
-
-
-
-
-
- 客户:{{ item.cusName }}
-
+ {{ item.cusName }}
{{ item.visistCode }}
-
-
-
- 查看
-
-
-
+ 查看
+
客户人员名称
- {{ item.userName}}
+ {{ item.userName }}
-
+
目前业务员
{{ item.belonger }}
@@ -68,7 +58,7 @@
-
diff --git a/src/pages/business/CRM/mainOwner/view/viewMainOwnerDetail.vue b/src/pages/business/CRM/mainOwner/view/viewMainOwnerDetail.vue
index 0d52803..a5c63dc 100644
--- a/src/pages/business/CRM/mainOwner/view/viewMainOwnerDetail.vue
+++ b/src/pages/business/CRM/mainOwner/view/viewMainOwnerDetail.vue
@@ -138,6 +138,18 @@ function getCrmCusUserNewChangeOwnerList() {
/* min-height: 100vh; */
}
+.all-body {
+ /* #ifdef APP-PLUS */
+ top: 160rpx;
+ height: calc(100vh - 160rpx);
+ /* #endif */
+ /* #ifndef APP-PLUS */
+ top: 116rpx;
+ height: calc(100vh - 116rpx);
+ /* #endif */
+ overflow-y: auto;
+}
+
.white-bg {
padding-bottom: 10rpx;
}
diff --git a/src/pages/business/CRM/map/checkInView.vue b/src/pages/business/CRM/map/checkInView.vue
index d1d874b..70d3636 100644
--- a/src/pages/business/CRM/map/checkInView.vue
+++ b/src/pages/business/CRM/map/checkInView.vue
@@ -1,164 +1,171 @@
-
-
-
-
+
+
+
+
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
- 类型:{{ item.mapType == 1 ? '签到' : '打卡' }}
-
- 开始签到时间
- {{ item.goVisistStartTime }}
-
-
-
- 开始签到地点
- {{ item.addressForStart }}
-
-
-
- 结束签到时间
- {{ item.goVisistEndTime }}
-
-
-
- 结束签到地点
- {{ item.addressForEnd }}
-
-
- 备注内容
- {{ item.remark }}
-
-
-
-
+
+
+
+ 类型:{{ MapType[item.mapType].label }}
+
+
+ 开始签到时间
+ {{ item.goVisistStartTime }}
+
+
+
+ 开始签到地点
+ {{ item.addressForStart }}
+
+
+
+ 结束签到时间
+ {{ item.goVisistEndTime }}
+
+
+
+ 结束签到地点
+ {{ item.addressForEnd }}
+
+
+ 备注内容
+ {{ item.remark }}
+
+
+
+
diff --git a/src/pages/business/CRM/map/dataMap.js b/src/pages/business/CRM/map/dataMap.js
new file mode 100644
index 0000000..8541f9a
--- /dev/null
+++ b/src/pages/business/CRM/map/dataMap.js
@@ -0,0 +1,9 @@
+/**
+ * 签到/打卡/出差
+ * @type {{"1": {label: 签到, bgc: string}, "2": {label: 打卡, bgc: string}, "3": {label: 出差, bgc: string}}}
+ */
+export const MapType = {
+ '1': {label:'签到', color:'#F5813A'},
+ '2': {label:'打卡', color:'#1989FA'},
+ '3': {label:'出差', color:'#42b883'}
+}
\ No newline at end of file
diff --git a/src/pages/business/CRM/map/vistorCheckin.vue b/src/pages/business/CRM/map/vistorCheckin.vue
index f5bd470..60a651c 100644
--- a/src/pages/business/CRM/map/vistorCheckin.vue
+++ b/src/pages/business/CRM/map/vistorCheckin.vue
@@ -1,109 +1,183 @@
-
-
-
-
+
+
+
+
-
-
+
+
-
-
-
-
-
- 业务人员可通过签到或打卡进行行为记录,该时间会和走访报告中的时间进行关联,便于查看。
-
+
+
+
+
+
+
+ 业务人员可通过
+ 签到
+ 或
+ 打卡
+
+ 进行行为记录,该时间会和走访报告中的时间进行关联,便于查看。
+
+
+
+
+
+
+
-
-
-
-
+