chenrui пре 4 година
родитељ
комит
84a60e39b3

+ 2 - 2
App.vue

@@ -1,7 +1,7 @@
 <script>
 	// const uat_URL = 'https://lese.test.sxzxyj.net/gc-driver/' // 预发布
-	const uat_URL = 'http://192.168.16.197:8304/gc-driver/' // 本地
-	const pro_URL = 'https://lese.sxzxyj.net/gc-driver/'  // 生产
+	const uat_URL = 'http://192.168.16.152:8304/gc-driver/' // 本地
+	// const pro_URL = 'https://lese.sxzxyj.net/gc-driver/'  // 生产
 	const buildType = 0 // 打包环境对应类型,1 生产 0 预发布
 	const buildURL = buildType ? pro_URL : uat_URL // 打包后实际对应的url
 	const envText = ['预发布环境','生产环境']

+ 38 - 5
api/cleared.js

@@ -1,4 +1,4 @@
-import axios from '@/libs/axios.js';
+import axios from '@/libs/axios.js'
 
 // 全部待清运网点列表
 export const waitToCleanList = params => {
@@ -10,11 +10,44 @@ export const waitToCleanList = params => {
 		method: 'post',
 		data: params
 	})
-};
+}
+
 // 网点设备列表信息
 export const stationDevice = params => {
   return axios.request({
-    url: `cleanDevice/getWaitToCleanDetailList/${params.stationNo}`,
-    method: 'post',
+    url: `device/findById/${params.stationNo}`,
+    method: 'get',
   })
-};
+}
+
+//  网点信息
+export const getWaitToCleanDetailHeader = params => {
+  return axios.request({
+    url: `station/findById/${params.stationNo}`,
+    method: 'get',
+  })
+}
+
+// 已清运列表
+export const getAlreadyCleanList = params => {
+	let url = `cleanLog/getAlreadyCleanList/${params.pageNo}/${params.pageSize}`
+	delete params.pageNo
+	delete params.pageSize
+	return axios.request({
+		url: url,
+		method: 'post',
+		data: params
+	})
+}
+
+// 已清运网点设备列表信息
+export const getAlreadyCleanDetails = params => {
+	let url = `cleanLog/getAlreadyCleanDetails/${params.pageNo}/${params.pageSize}`
+	delete params.pageNo
+	delete params.pageSize
+	return axios.request({
+		url: url,
+		method: 'post',
+		data: params
+	})
+}

+ 67 - 0
api/unclear.js

@@ -0,0 +1,67 @@
+import axios from '@/libs/axios.js'
+
+// 个人待清运列表
+export const getSelfCleanTaskList = params => {
+	let url = `cleanStation/getSelfCleanTaskList/${params.pageNo}/${params.pageSize}`
+	delete params.pageNo
+	delete params.pageSize
+	return axios.request({
+		url: url,
+		method: 'post',
+		data: params
+	})
+}
+
+// 个人待清运列表详情
+export const getSelfCleanTaskDetails = params => {
+  return axios.request({
+    url: `cleanDevice/getSelfCleanTaskDetails`,
+    method: 'post',
+	data: params
+  })
+}
+
+// 新增个人待清运
+export const cleanStationAdd = params => {
+  return axios.request({
+    url: `cleanStation/addCleanTask`,
+    method: 'post',
+	data: params
+  })
+}
+
+// 移除个人待清运
+export const cleanStationRemove = params => {
+  return axios.request({
+    url: `cleanStation/removeCleanTask/${params.stationNo}`,
+    method: 'post',
+	data: params
+  })
+}
+
+// 扫码清运
+export const cleanDevice = params => {
+  return axios.request({
+    url: `cleanDevice/clean`,
+    method: 'post',
+	data: params
+  })
+}
+
+// 清运路线
+export const getCleanWay = params => {
+  return axios.request({
+    url: `cleanStation/getCleanWay`,
+    method: 'post',
+	data: params
+  })
+}
+
+//  扫码获取网点信息
+export const getDeviceMsg = params => {
+  return axios.request({
+    url: `cleanDevice/getDeviceMsg`,
+    method: 'post',
+	data: params
+  })
+}

+ 9 - 1
api/user.js

@@ -2,7 +2,15 @@ import axios from '@/libs/axios.js'
 
 //  axios.request()  第二个参数若为true则表示不传token
 
-// 登录
+// 手机号登录
+export const loginPhone = (params) => {
+  return axios.request({
+    url: 'loginPhone',
+    data: params,
+    method: 'post'
+  }, true)
+}
+// 微信授权登录
 export const login = (params) => {
   return axios.request({
     url: 'login',

+ 8 - 29
libs/axios.js

@@ -21,9 +21,7 @@ const request = (opts, hasToken) => {
 	let promise = new Promise(function(resolve, reject) {
 		uni.request(DefaultOpts).then(
 			(res) => {
-				console.log(res)
-				// 是否超时已跳转
-				let loginTimeOut = uni.getStorageSync('loginTimeOut');
+				console.log(res,'pppp')
 				if(res[0]&&res[0].errMsg.indexOf('request:fail')>=0){
 					resolve({
 						status: 6000,
@@ -39,32 +37,13 @@ const request = (opts, hasToken) => {
 				if(ret.status == '200'){
 					resolve(ret)
 				}else{
-					if(ret.status == '401'){  //  未登录或登录过期
-					    // 除过查询未完成订单的请求
-						if(opts.url.indexOf("order/unFinishedOrderRunStatus")<0){
-							uni.showToast({
-								icon:'none',
-								title: '未登录或登录已过期,请重新登录',
-								duration: 5000 
-							})
-							setTimeout(function() {
-							  const currentRoute = getRoutePath();
-							  const url = `/pages/login/login?lanuch=${currentRoute.lanuch}&path=` + encodeURIComponent(currentRoute.url);
-							  uni.redirectTo({ url });
-							}, 1000);
-						}
-					}
-					else{
-						if(ret.status == 500){
-							if(opts.url.indexOf("store/validateStoreAndDevice")<0&&opts.url.indexOf("couponReceives/findUsableCoupon")<0){
-								uni.showToast({
-									icon:'none',
-									title: ret.message,
-									mask: true,
-									duration: 3000 
-								})
-							}
-						}
+					if(ret.status != '401'){
+						uni.showToast({
+							icon:'none',
+							title: ret.message,
+							mask: true,
+							duration: 5000 
+						})
 					}
 					resolve(ret)
 				}

+ 14 - 21
libs/tools.js

@@ -9,27 +9,20 @@ export function objToUrl(obj) {
 
   return uri;
 }
-//  微信扫码
-export function scanCode () {
-  return new Promise((resolve, reject) => {
-    wx.scanCode({
-      success: (res) => {
-        if (res.errMsg === 'scanCode:ok') {
-          resolve(res);
-        } else {
-          wx.showToast({
-            title: res.errMsg,
-            icon: 'none',
-            duration: 2500
-          });
-          reject(res);
-        }
-      },
-      fail: (err) => {
-        reject(err);
-      }
-    });
-  });
+
+export function parseQueryString(url) {
+    var obj = {};
+    var keyvalue = [];
+    var key = "",
+        value = "";
+    var paraString = url.substring(url.indexOf("?") + 1, url.length).split("&");
+    for (var i in paraString) {
+        keyvalue = paraString[i].split("=");
+        key = keyvalue[0];
+        value = keyvalue[1];
+        obj[key] = value;
+    }
+    return obj;
 }
 
 

+ 3 - 3
manifest.json

@@ -1,7 +1,7 @@
 {
-    "name" : "乐色助手",
+    "name" : "乐色管家清运端",
     "appid" : "__UNI__D3A9765",
-    "description" : "乐色助手合作商小程序",
+    "description" : "乐色管家清运端小程序",
     "versionName" : "1.0.0",
     "versionCode" : "100",
     "transformPx" : false,
@@ -57,7 +57,7 @@
     "quickapp" : {},
     /* 小程序特有相关 */
     "mp-weixin" : {
-        "appid" : "wx0ac42ab03487bbae",
+        "appid" : "wxd38fd339f957b425",
         "setting" : {
             "urlCheck" : false,
             "es6" : true,

+ 6 - 7
pages.json

@@ -3,12 +3,6 @@
 		"^u-(.*)": "uview-ui/components/u-$1/u-$1.vue"
 	},
 	"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
-		{
-			"path": "pages/cleared/chooseNetwork",
-			"style": {
-				"navigationBarTitleText": "待清运网点"
-			}
-		},
 		{
 			"path": "pages/login/login",
 			"style": {
@@ -35,7 +29,12 @@
 				"navigationBarTitleText": "配送地图"
 			}
 		},
-		
+		{
+			"path": "pages/cleared/chooseNetwork",
+			"style": {
+				"navigationBarTitleText": "待清运网点"
+			}
+		},
 		{
 			"path": "pages/cleared/network",
 			"style": {

+ 49 - 44
pages/agreement/agreement.vue

@@ -2,34 +2,34 @@
 	<view class="content">
 		<view class="page-content">
 			<view class="page-care agreement">
-				<view class="title">-乐色助手商户服务协议(声明)-</view>
+				<view class="title">-乐色管家清运端用户服务协议(声明)-</view>
 				<view class="xy-cons">
 					<view class="MsoNormal">
-						“乐色助手商户小程序”(以下简称“商户小程序”)由陕西智享亿家环保科技有限公司(以下简称“本公司”)提供。商户在登录商户小程序时,均被视为已经仔细阅读本条款并完全同意。凡以任何方式登录本商户小程序,包括但不限于接受商户小程序服务、直接或间接使用本商户小程序资料、第三方链接等,均被视为自愿接受本商户小程序相关声明和商户服务协议的约束。
+						“乐色管家清运端用户小程序”(以下简称“用户小程序”)由陕西智享亿家环保科技有限公司(以下简称“本公司”)提供。用户在登录用户小程序时,均被视为已经仔细阅读本条款并完全同意。凡以任何方式登录本用户小程序,包括但不限于接受用户小程序服务、直接或间接使用本用户小程序资料、第三方链接等,均被视为自愿接受本用户小程序相关声明和用户服务协议的约束。
 					</view>
 					<view class="MsoNormal">
-						一、户小程序使用
+						一、户小程序使用
 					</view>
 					<view class="MsoNormal">
-						本户小程序之设计、信息内容等任何组成部分均不得被复制、抄袭或被任何未经本公司允许的任何商业目的所使用。若本公司怀疑或确定户行为违法或有损本公司利益,则本公司保留采取相关法律措施的权利,包括但不限于拒绝提供服务、冻结或删除户帐户等。
+						本户小程序之设计、信息内容等任何组成部分均不得被复制、抄袭或被任何未经本公司允许的任何商业目的所使用。若本公司怀疑或确定户行为违法或有损本公司利益,则本公司保留采取相关法律措施的权利,包括但不限于拒绝提供服务、冻结或删除户帐户等。
 					</view>
 					<view class="MsoNormal">
 						二、链接
 					</view>
-						<view class="MsoNormal">(一) 本小程序对第三方网站的链接</view>
+						<view class="MsoNormal">(一) 本用户小程序对第三方网站的链接</view>
 						<view class="MsoNormal">
-							本小程序必要时将提供第三方经营的其他网站的超级链接或指引服务,或者通过帧联及其他方式在本小程序上提供第三方网站相关内容,此“内容”包括但不限于本户小程序上包含或可获得的任何软件、资料、音频、信息以及本小程序上提供的其他任何信息
+							本用户小程序必要时将提供第三方经营的其他网站的超级链接或指引服务,或者通过帧联及其他方式在本用户小程序上提供第三方网站相关内容,此“内容”包括但不限于本户小程序上包含或可获得的任何软件、资料、音频、信息以及本用户小程序上提供的其他任何信息
 						</view>
 						<view class="MsoNormal">
 							对于第三方网站的超级链接或指引服务,仅限于方便之用。本公司保留任何时段终止对第三方网站超级链接的权利。所链接的网站、网站之内容及其网站所提供的产品与服务均不受本公司的控制,因此本公司不对任何该等网站及其内容、产品或服务(包括对第三方网站的进一步链接)负责,并且不对其作出任何认可、建议、批准或介绍。若您一旦登录或使用任何所链接网站,请仔细阅读该网站免责条款,同时自行采取防护措施。由于您自行登录或使用所链接的第三方网站所产生的任何风险和损失,责任自担 ; 除非本公司另行明确规定或同意,否则,本公司将不是您和任何所链网站提供者之间达成的任何协议的当事方。
 						</view>
 					<view class="MsoNormal">
-						本商户小程序上出现对第三方网站的链接并不表示本公司或本商户小程序与其相关联,或已获得合法授权使用,包括但不限于被链接网站中显示的或可通过其链接到的任何商标、商号、标识或著作权等
+						本用户小程序上出现对第三方网站的链接并不表示本公司或本用户小程序与其相关联,或已获得合法授权使用,包括但不限于被链接网站中显示的或可通过其链接到的任何商标、商号、标识或著作权等
 					</view>
 					<view class="MsoNormal">
-						<view class="MsoNormal">(二) 第三方网站对本户小程序的链接</view>
+						<view class="MsoNormal">(二) 第三方网站对本户小程序的链接</view>
 						<view class="MsoNormal">
-							第三方网站对本户小程序的链接,并不必然表示本公司对第三方作出了某种认可、授权、赞助,或表明其属于本公司的关联企业、合资企业、合作企业或业务伙伴。多数情况下,本公司并未意识到或授权第三方提供对本户小程序的链接。
+							第三方网站对本户小程序的链接,并不必然表示本公司对第三方作出了某种认可、授权、赞助,或表明其属于本公司的关联企业、合资企业、合作企业或业务伙伴。多数情况下,本公司并未意识到或授权第三方提供对本户小程序的链接。
 						</view>
 						
 					</view>
@@ -37,117 +37,117 @@
 						三、前瞻性陈述
 					</view>
 					<view class="MsoNormal">
-						本户小程序可能包含某些前瞻性陈述。这类前瞻性陈述包括但不限于:关于本公司业务经营策略的陈述;关于供应链服务网络扩建计划(包括与之有关的拟作出的资本投资)的陈述;关于计划发展的供应链服务及其相关应用的陈述;关于费用变动对本公司经营业绩的预期影响的陈述;关于竞争对本公司经营业绩的影响的陈述;关于供应链行业未来发展(包括行业结构调整及政府政策的变化)的陈述;以及与本公司未来业务发展、经营及业绩有关的其他陈述。本公司在使用“预期”、“相信”、“预测”、“期望”、“打算”及其他类似词语进行陈述时,旨在表明相关陈述属于前瞻性陈述
+						本户小程序可能包含某些前瞻性陈述。这类前瞻性陈述包括但不限于:关于本公司业务经营策略的陈述;关于供应链服务网络扩建计划(包括与之有关的拟作出的资本投资)的陈述;关于计划发展的供应链服务及其相关应用的陈述;关于费用变动对本公司经营业绩的预期影响的陈述;关于竞争对本公司经营业绩的影响的陈述;关于供应链行业未来发展(包括行业结构调整及政府政策的变化)的陈述;以及与本公司未来业务发展、经营及业绩有关的其他陈述。本公司在使用“预期”、“相信”、“预测”、“期望”、“打算”及其他类似词语进行陈述时,旨在表明相关陈述属于前瞻性陈述
 					</view>
 					<view class="MsoNormal">
-						这些前瞻性陈述本质上具有相当风险和不确定性。本公司不能保证会及时或不断地更新这类前瞻性陈述。这类前瞻性陈述反映的是本公司当前状态下对未来事件的预见或规划,并不属于对未来本公司经营和业务的保证。未来本公司的实际经营和业务很有可能会因诸多客观因素而与某些前瞻性陈述有重大差异,这些因素包括但不限于:供应链行业结构的进一步调整;所需政府批准及许可条件、政策、资本投资的优先程度等监管政策的变化;行业竞争对本公司服务的需求或价格的影响;以及中国内地的政治、经济、文化、法律以及社会各方面情况的变化(包括经济增长、通货膨胀、外汇及可动用的信用额度等政策的变化)
+						这些前瞻性陈述本质上具有相当风险和不确定性。本公司不能保证会及时或不断地更新这类前瞻性陈述。这类前瞻性陈述反映的是本公司当前状态下对未来事件的预见或规划,并不属于对未来本公司经营和业务的保证。未来本公司的实际经营和业务很有可能会因诸多客观因素而与某些前瞻性陈述有重大差异,这些因素包括但不限于:供应链行业结构的进一步调整;所需政府批准及许可条件、政策、资本投资的优先程度等监管政策的变化;行业竞争对本公司服务的需求或价格的影响;以及中国内地的政治、经济、文化、法律以及社会各方面情况的变化(包括经济增长、通货膨胀、外汇及可动用的信用额度等政策的变化)
 					</view>
 					<view class="MsoNormal">
-						此外,本公司未来往来供应链的扩建或收缩、资金投资、发展计划和规划,均取决于诸多种因素,包括但不限于是否能以可接受的条款获得足够融资;我们的发展和获得新技术及其应用的能力;是否有合格的管理及技术人员等诸多因素
+						此外,本公司未来往来供应链的扩建或收缩、资金投资、发展计划和规划,均取决于诸多种因素,包括但不限于是否能以可接受的条款获得足够融资;我们的发展和获得新技术及其应用的能力;是否有合格的管理及技术人员等诸多因素
 					</view>
 					<view class="MsoNormal">
-						四、户隐私权的保护
+						四、户隐私权的保护
 					</view>
-						<view class="MsoNormal">(一) 户资料的收集</view>
+						<view class="MsoNormal">(一) 户资料的收集</view>
 						<view class="MsoNormal">
-							本商户小程序商户在匿名的状态下即可访问并获取相关信息,本商户小程序请求商户提供相关商户信息之前,本商户小程序会释明商户相关信息用途。本公司承诺仅在与本公司经营活动和经营业务有关的合法目的下,并经商户同意以合法的方式收集必要的商户信息。
+							本用户小程序用户在匿名的状态下即可访问并获取相关信息,本用户小程序请求用户提供相关用户信息之前,本用户小程序会释明用户相关信息用途。本公司承诺仅在与本公司经营活动和经营业务有关的合法目的下,并经用户同意以合法的方式收集必要的用户信息。
 						</view>
 						<view class="MsoNormal">
-							商户使用本商户小程序需注册后方提供的服务,商户需同意以下事项:依本商户小程序注册表之提示提供商户本人真实有效、正确、完整及最新的商户信息,并保证个人信息和资料的适时更新;本企业因商户所提供的不准确、不完整或未及时更新的商户信息给商户造成的任何损害,本公司不承担任何法律和赔偿责任。本公司因商户提供的不准确、不完整或未及时更新的商户信息给本公司造成损害的,本公司保留法律追责权利。
+							用户使用本用户小程序需注册后方提供的服务,用户需同意以下事项:依本用户小程序注册表之提示提供用户本人真实有效、正确、完整及最新的用户信息,并保证个人信息和资料的适时更新;本企业因用户所提供的不准确、不完整或未及时更新的用户信息给用户造成的任何损害,本公司不承担任何法律和赔偿责任。本公司因用户提供的不准确、不完整或未及时更新的用户信息给本公司造成损害的,本公司保留法律追责权利。
 						</view>
-						<view class="MsoNormal">(二) 户资料的使用</view>
+						<view class="MsoNormal">(二) 户资料的使用</view>
 						<view class="MsoNormal">
-							本公司有权为内部业务目的使用由您提供的户信息,这类内部业务目的包括但不限于:促进本公司业务或本公司提供给客户的服务、产品的日常管理和运营;监测本户小程序的使用及安全情况,实施内部控制、制备数据统计、进行规划和研究等;优化设计、服务和产品;市场调研和推广;记录、核对、确认及维护户或其他相关人员的联络名单;解决争议、排除问题和执行本法律声明;服务本公司所涉及的任何经营活动或日常业务;或与上述任何一项目的直接相关的其它目的
+							本公司有权为内部业务目的使用由您提供的户信息,这类内部业务目的包括但不限于:促进本公司业务或本公司提供给客户的服务、产品的日常管理和运营;监测本户小程序的使用及安全情况,实施内部控制、制备数据统计、进行规划和研究等;优化设计、服务和产品;市场调研和推广;记录、核对、确认及维护户或其他相关人员的联络名单;解决争议、排除问题和执行本法律声明;服务本公司所涉及的任何经营活动或日常业务;或与上述任何一项目的直接相关的其它目的
 						</view>
 						<view class="MsoNormal">
-							基于以上目的,对户信息有使用权的人,除本公司外,还包括经本公司合法授权、与本公司业务和经营活动有关的本公司的任何附属公司、联营公司、业务伙伴和专业顾问,以及向本公司提供或与本公司业务和经营活动有关的行政管理、电信服务、收付款服务、计算机信息服务或其它服务的任何代理人、承包商或第三方服务提供者。
+							基于以上目的,对户信息有使用权的人,除本公司外,还包括经本公司合法授权、与本公司业务和经营活动有关的本公司的任何附属公司、联营公司、业务伙伴和专业顾问,以及向本公司提供或与本公司业务和经营活动有关的行政管理、电信服务、收付款服务、计算机信息服务或其它服务的任何代理人、承包商或第三方服务提供者。
 						</view>
 						<view class="MsoNormal">(三) 用户资料的披露</view>
-						<view class="MsoNormal">本户小程序将采取合理有效的安全手段保护用户所提供的用户信息,在未经得用户许可前,本公司承诺并保证绝不将用户的任何个人信息和资料提供给任何无关第三方,但有下列情形之一的除外:</view>
+						<view class="MsoNormal">本户小程序将采取合理有效的安全手段保护用户所提供的用户信息,在未经得用户许可前,本公司承诺并保证绝不将用户的任何个人信息和资料提供给任何无关第三方,但有下列情形之一的除外:</view>
 						<view class="MsoNormal">
-							<text>(</text>1<text>)根据法律、行政法规的规定,有权机关要求提供的</text>
+							<text>(</text>1<text>)根据法律、行政法规的规定,有权机关要求提供的</text>
 						</view>
 						<view class="MsoNormal">
-							<text>(</text>2<text>)由于用户对自身信息保密不当,导致商户非公开信息泄露的。</text>
+							<text>(</text>2<text>)由于用户对自身信息保密不当,导致用户非公开信息泄露的</text>
 						</view>
 						<view class="MsoNormal">
-							<text>(</text>3<text>)由于网络线路、黑客攻击、计算机病毒等原因造成的用户信息和资料泄露、丢失、被盗用或被篡改的</text>
+							<text>(</text>3<text>)由于网络线路、黑客攻击、计算机病毒等原因造成的用户信息和资料泄露、丢失、被盗用或被篡改的</text>
 						</view>
 						<view class="MsoNormal">
-							<text>(</text>4<text>)为了保护本商户小程序用户的权利或财产。</text>
+							<text>(</text>4<text>)为了保护本用户小程序用户的权利或财产</text>
 						</view>
 						<view class="MsoNormal">
-							<text>(</text>5<text>)在紧急的情况下,为了保护本商户小程序及其用户本人或公众安全的。</text>
+							<text>(</text>5<text>)在紧急的情况下,为了保护本用户小程序及其用户本人或公众安全的</text>
 						</view>
 						<view class="MsoNormal">
-							<text>(</text>6<text>)其他特殊或紧急情况</text>
+							<text>(</text>6<text>)其他特殊或紧急情况</text>
 						</view>
 					<view class="MsoNormal">
 						五、知识产权保护
 					</view>
 					<view class="MsoNormal">
-						本商户小程序所载述的域名、商标、商号、信息、文字、图形、图像、声音、链接、软件及所有其它内容或组成部分均由本公司、内容或组成部分提供商或第三方许可人提供。上述内容的知识产权依具体情况分别为本公司、内容或组成部分提供商或第三方许可人所拥有。
+						【本用户小程序所载述的域名、商标、商号、信息、文字、图形、图像、声音、链接、软件及所有其它内容或组成部分均由本公司、内容或组成部分提供商或第三方许可人提供。上述内容的知识产权依具体情况分别为本公司、内容或组成部分提供商或第三方许可人所拥有。
 					</view>
 					<view class="MsoNormal">
-						未经本公司或商标权人事先书面许可,任何单位或个人不得以任何方式或理由对本户小程序的商标、商号或标识的任何部分进行使用、复制、修改、传播或与其它产品捆绑使用
+						未经本公司或商标权人事先书面许可,任何单位或个人不得以任何方式或理由对本户小程序的商标、商号或标识的任何部分进行使用、复制、修改、传播或与其它产品捆绑使用
 					</view>
 					<view class="MsoNormal">
-						除法律另有规定或双方另有约定外,未经本公司和/或其他权利人事先书面许可,任何人不得以任何形式通过任何方式(包括但不限于电子、机械复印或录制等方式)复制、展示、修改、转让、分发、重新发布、下载、张贴或传输本户小程序的内容。
+						除法律另有规定或双方另有约定外,未经本公司和/或其他权利人事先书面许可,任何人不得以任何形式通过任何方式(包括但不限于电子、机械复印或录制等方式)复制、展示、修改、转让、分发、重新发布、下载、张贴或传输本户小程序的内容。
 					</view>
 					<view class="MsoNormal">
 						六、免责声明
 					</view>
 					<view class="MsoNormal">
-						本商户小程序所提供的信息,仅供参考之用,不宜用于任何研究或商业用途。本商户小程序并不保证该等信息的准确性、有效性、及时性或完整性。本公司及其员工无需以任何方式就任何信息传递或传送的失误、不准确或错误对商户或任何其他人士负任何直接或间接责任。在法律和本商户小程序允许的范围内,本公司不承担商户或任何第三方就使用或未能使用本商户小程序所提供的信息或任何链接所引致的任何直接、间接的损害赔偿(包括但不限于收益、预期利润的损失或失去的业务、未实现预期的节减)。本公司保留自行决定及修改、更正本户小程序中任何内容和组成部分的权利(包括任何遗漏或错误的信息和内容)。本公司可以在任何时间对本商户小程序、本商户小程序上所描述的内容、产品、项目、服务或价格作出任何修改,而无需事前通知和事后说明,有需要的情况除外
+						本用户小程序所提供的信息,仅供参考之用,不宜用于任何研究或商业用途。本用户小程序并不保证该等信息的准确性、有效性、及时性或完整性。本公司及其员工无需以任何方式就任何信息传递或传送的失误、不准确或错误对用户或任何其他人士负任何直接或间接责任。在法律和本用户小程序允许的范围内,本公司不承担用户或任何第三方就使用或未能使用本用户小程序所提供的信息或任何链接所引致的任何直接、间接的损害赔偿(包括但不限于收益、预期利润的损失或失去的业务、未实现预期的节减)。本公司保留自行决定及修改、更正本户小程序中任何内容和组成部分的权利(包括任何遗漏或错误的信息和内容)。本公司可以在任何时间对本用户小程序、本用户小程序上所描述的内容、产品、项目、服务或价格作出任何修改,而无需事前通知和事后说明,有需要的情况除外
 					</view>
 					<view class="MsoNormal">
-						本商户小程序、本商户小程序所述的内容、信息和材料以及在本商户小程序上可获得的软件等均“依原样”提供,不包含任何明示或暗示性质的陈述或保证。在法律许可或不禁止范围内,本公司承诺不作出任何明示或暗示性质的陈述和保证,包括但不限于有关安全性、准确性、完整性、适销性、无侵权、适合某项特别目的或没有计算机病毒的保证。您应为使用本户小程序承担全部责任和风险。
+						本用户小程序、本用户小程序所述的内容、信息和材料以及在本用户小程序上可获得的软件等均“依原样”提供,不包含任何明示或暗示性质的陈述或保证。在法律许可或不禁止范围内,本公司承诺不作出任何明示或暗示性质的陈述和保证,包括但不限于有关安全性、准确性、完整性、适销性、无侵权、适合某项特别目的或没有计算机病毒的保证。您应为使用本户小程序承担全部责任和风险。
 					</view>
-					<view class="MsoNormal">如发生以下情况,本户小程序不对用户的直接或间接损失承担法律责任:</view>
+					<view class="MsoNormal">如发生以下情况,本户小程序不对用户的直接或间接损失承担法律责任:</view>
 					<view class="MsoNormal">
-						<text>(</text>1<text>)营业中断</text>
+						<text>(</text>1<text>)营业中断</text>
 					</view>
 					<view class="MsoNormal">
-						<text>(</text>2<text>)无法登录本商户小程序,或登录本商户小程序延迟或中断。</text>
+						<text>(</text>2<text>)无法登录本用户小程序,或登录本用户小程序延迟或中断</text>
 					</view>
 					<view class="MsoNormal">
-						<text>(</text>3<text>)数据无法传送、错误传送、毁损、灭失或其他修改</text>
+						<text>(</text>3<text>)数据无法传送、错误传送、毁损、灭失或其他修改</text>
 					</view>
 					<view class="MsoNormal">
-						<text>(</text>4<text>)因处理本商户小程序上对其它用户小程序的链接或本商户小程序上存在对其它用户小程序的链接所遭受的任何种类的损失或损害</text>
+						<text>(</text>4<text>)因处理本用户小程序上对其它用户小程序的链接或本用户小程序上存在对其它用户小程序的链接所遭受的任何种类的损失或损害</text>
 					</view>
 					<view class="MsoNormal">
-						<text>(</text>5<text>)就客户使用本商户小程序(包括链接到第三方小程序或自第三方小程序链接)而可能产生的计算机病毒、系统失灵或功能紊乱</text>
+						<text>(</text>5<text>)就客户使用本用户小程序(包括链接到第三方用户小程序或自第三方用户小程序链接)而可能产生的计算机病毒、系统失灵或功能紊乱</text>
 					</view>
 					<view class="MsoNormal">
-						<text>(</text>6<text>)本法律声明第四条第三项中规定的六种情形所引起的商户个人资料的披露或泄露。</text>
+						<text>(</text>6<text>)本法律声明第四条第三项中规定的六种情形所引起的用户个人资料的披露或泄露</text>
 					</view>
 					<view class="MsoNormal">
-						<text>(</text>7<text>)因不可抗力或本公司无法合理控制的其他原因所导致的用户损失</text>
+						<text>(</text>7<text>)因不可抗力或本公司无法合理控制的其他原因所导致的用户损失</text>
 					</view>
 					<view class="MsoNormal">
 						七、服务变更、暂停、中断或终止
 					</view>
 					<view class="MsoNormal">
-						如因系统升级或维护需要而暂停本商户小程序网络服务时,本商户小程序将尽可能事先通告。
+						如因系统升级或维护需要而暂停本用户小程序网络服务时,本用户小程序将尽可能事先通告。
 					</view>
 					<view class="MsoNormal">
-						如发生下列情形之一,本商户小程序有权随时暂停、中断或终止向用户提供本商户小程序商户服务而无需通知,并有权拒绝商户于当前、未来某时段或永久使用本商户小程序所提供服务之全部或任何部分:(1)用户提供任何错误、不实、过时、不完整或具有误导性的信息和资料,或本户小程序有理由或有依据怀疑前述信息和资料为错误、不实、过时、不完整或具误导性的;(2)用户违反本法律声明或相关使用协议中规定的任何使用规则。
+						如发生下列情形之一,本用户小程序有权随时暂停、中断或终止向用户提供本用户小程序用户服务而无需通知,并有权拒绝用户于当前、未来某时段或永久使用本用户小程序所提供服务之全部或任何部分:(1)用户提供任何错误、不实、过时、不完整或具有误导性的信息和资料,或本户小程序有理由或有依据怀疑前述信息和资料为错误、不实、过时、不完整或具误导性的;(2)用户违反本法律声明或相关使用协议中规定的任何使用规则。
 					</view>
 					<view class="MsoNormal">
-						除上述情形外,本商户小程序同时保留在不事先通知商户的情况下随时暂停、中断或终止部分或全部网络服务的权利,对于所有服务的暂停、中断或终止而造成的任何损失,除法律另有规定或双方另有约定外,本公司不对用户或任何第三方承担任何法律责任。
+						除上述情形外,本用户小程序同时保留在不事先通知用户的情况下随时暂停、中断或终止部分或全部网络服务的权利,对于所有服务的暂停、中断或终止而造成的任何损失,除法律另有规定或双方另有约定外,本公司不对用户或任何第三方承担任何法律责任。
 					</view>
 					<view class="MsoNormal">
 						八、条款修改
 					</view>
 					<view class="MsoNormal">
-						本公司保留在任何时间自行修改、增删本法律声明中的任何内容和条款的权利。您每次登录或使用本商户小程序时,均视为同意接受当时已生效的商户声明条款的制约。因此,建议您每次登录或使用本商户小程序时查看本法律声明是否修订或增删及修订或增删的情况
+						本公司保留在任何时间自行修改、增删本法律声明中的任何内容和条款的权利。您每次登录或使用本用户小程序时,均视为同意接受当时已生效的用户声明条款的制约。因此,建议您每次登录或使用本用户小程序时查看本法律声明是否修订或增删及修订或增删的情况
 					</view>
 					<view class="MsoNormal">
 						九、法律适用与司法管辖
 					</view>
 					<view class="MsoNormal">
-						本法律声明的制定、执行、解释及争议问题的解决和处理均适用中华人民共和国法律、法规。双方因使用本户小程序所产生的争议,若协商不成,任何一方可向本公司所在地人民法院提起诉讼。
+						本法律声明的制定、执行、解释及争议问题的解决和处理均适用中华人民共和国法律、法规。双方因使用本户小程序所产生的争议,若协商不成,任何一方可向本公司所在地人民法院提起诉讼。
 					</view>
 				</view>
 			</view>
@@ -167,6 +167,11 @@
 			uni.setNavigationBarTitle({
 				title: "服务协议"
 			})
+			// 开启分享
+			uni.showShareMenu({
+				withShareTicket: true,
+				menus: ['shareAppMessage', 'shareTimeline']
+			})
 		},
 		methods: {
 		}

+ 33 - 9
pages/cleared/chooseNetwork.vue

@@ -52,7 +52,7 @@
 				</view>
 			</u-checkbox-group>
 			<u-empty class="nodata" :text="noDataText" v-if="listdata.length==0 && status!='loading'" mode="list"></u-empty>
-			<view class="loadmore">
+			<view class="loadmore" v-if="listdata.length!=0">
 				<u-loadmore v-if="total>pageSize || status=='loading'" :status="status" />
 			</view>
 		</scroll-view>
@@ -67,13 +67,14 @@
 <script>
 	import searchModal from '@/pages/cleared/searchModal.vue'
 	import { waitToCleanList } from '@/api/cleared.js'
+	import { cleanStationAdd } from '@/api/unclear.js'
 	export default{
 		components: { searchModal },
 		data(){
 			return{
-				listdata: [{id:1},{id:2}],
+				listdata: [],
 				pageNo: 1,  //  当前页码
-				pageSize: 10,  //  每页条数
+				pageSize: 40,  //  每页条数
 				total: 0,  //  数据总条数
 				noDataText: '暂无数据',  //  列表请求状态提示语
 				status: 'loadmore',  //  加载中状态
@@ -101,7 +102,25 @@
 		methods: {
 			//  加入清运单
 			handleAdd(){
-				
+				if(this.checkedList.length > 0){
+					uni.showLoading({
+						mask: true,
+					    title: '加载中'
+					})
+					cleanStationAdd({ stationNoList: this.checkedList }).then(res => {
+						uni.hideLoading()
+						if(res.status == 200){
+							uni.showToast({ icon:'none', title: res.message })
+							setTimeout(()=>{
+								uni.navigateBack()
+							}, 1000)
+						}else{
+							uni.showToast({ icon:'none', title: res.message })
+						}
+					})
+				}else{
+					uni.showToast({ icon:'none', title: '暂无需加入待清运清单的网点' })
+				}
 			},
 			// 选中某个复选框时,由checkbox时触发
 			checkboxChange(e,ind) {
@@ -111,7 +130,7 @@
 				this.listdata.map(item => {
 					if(item.checked){
 						len++
-						this.checkedList.push(item.id)
+						this.checkedList.push(item.stationNo)
 					}
 				})
 				this.checkedNum = len
@@ -125,7 +144,7 @@
 					val.checked = e.value ? true : false
 					if(val.checked){
 						len++
-						this.checkedList.push(val.id)
+						this.checkedList.push(val.stationNo)
 					}
 				})
 				this.checkedNum = len
@@ -135,6 +154,8 @@
 				this.searchForm = params
 				this.listdata = []
 				this.total = 0
+				this.isCheckedAll = false
+				this.checkedList = []
 				this.searchHandle(1)
 			},
 			// 搜索查询
@@ -168,14 +189,14 @@
 				})
 			},
 			//  查看详情
-			goPage(row){
+			goPage(record){
 				uni.navigateTo({
-				    url: '/pages/cleared/network?stationNo=' + item.stationNo
+				    url: '/pages/cleared/network?stationNo=' + record.stationNo
 				})
 			},
 			// scroll-view到底部加载更多
 			onreachBottom() {
-				if(this.listdata.length < this.total){
+				if(this.listdata.length!=0 && this.listdata.length < this.total){
 					this.pageNo += 1
 					this.searchHandle()
 				}else{
@@ -305,5 +326,8 @@
 				margin-bottom: 20rpx;
 			}
 		}
+		.nodata{
+			padding-top: 400rpx;
+		}
 	}
 </style>

+ 123 - 49
pages/cleared/details.vue

@@ -1,62 +1,135 @@
 <template>
 	<view class="cleared-details-container">
-		<!-- 列表数据 -->
-		<view class="cell-item-con">
-			<view class="cell-item" v-for="(item, index) in listdata" :key="index">
-				<view class="cell-item-c">
-					<u-image class="cell-item-pic" src="/static/logo.jpg" width="140rpx" height="140rpx"></u-image>
-					<view class="cell-item-info">
-						<view class="cell-item-info-network">咸阳市秦都区文彩舫东区</view>
-						<view class="cell-item-info-weight">清运总重量:<text>2568kg</text></view>
+		<scroll-view class="scroll-con" scroll-y :scroll-top="scrollTop" @scrolltolower="onreachBottom">
+			<!-- 列表数据 -->
+			<view class="cell-item-con">
+				<view class="cell-item" v-for="(item, index) in listdata" :key="index">
+					<view class="cell-item-c">
+						<view class="cell-item-info">
+							<view class="cell-item-info-network">{{item.stationName}}</view>
+							<view class="cell-item-info-weight">清运总重量:<text>{{item.totalWeight}}kg</text></view>
+						</view>
 					</view>
+					<u-grid :col="3" :hover-class="none">
+						<u-grid-item>
+							<view class="cell-item-main">
+								<text class="cell-item-number blue">{{item.clothes}}</text>
+								<text class="cell-item-unit">个</text>
+							</view>
+							<view class="cell-item-exp">废旧衣物</view>
+						</u-grid-item>
+						<u-grid-item>
+							<view class="cell-item-main">
+								<text class="cell-item-number green">{{item.paper}}</text>
+								<text class="cell-item-unit">个</text>
+							</view>
+							<view class="cell-item-exp">废旧纸张</view>
+						</u-grid-item>
+						<u-grid-item>
+							<view class="cell-item-main">
+								<text class="cell-item-number red">{{item.plastic}}</text>
+								<text class="cell-item-unit">kg</text>
+							</view>
+							<view class="cell-item-exp">废旧塑料</view>
+						</u-grid-item>
+						<u-grid-item>
+							<view class="cell-item-main">
+								<text class="cell-item-number yellow">{{item.metal}}</text>
+								<text class="cell-item-unit">kg</text>
+							</view>
+							<view class="cell-item-exp">废旧金属</view>
+						</u-grid-item>
+						<u-grid-item>
+							<view class="cell-item-main">
+								<text class="cell-item-number yellow">{{item.plaMet}}</text>
+								<text class="cell-item-unit">kg</text>
+							</view>
+							<view class="cell-item-exp">废旧金属/塑料</view>
+						</u-grid-item>
+						<u-grid-item>
+							<view class="cell-item-main">
+								<text class="cell-item-number yellow">{{item.glass}}</text>
+								<text class="cell-item-unit">kg</text>
+							</view>
+							<view class="cell-item-exp">废旧玻璃</view>
+						</u-grid-item>
+						<u-grid-item>
+							<view class="cell-item-main">
+								<text class="cell-item-number yellow">{{item.recycling}}</text>
+								<text class="cell-item-unit">kg</text>
+							</view>
+							<view class="cell-item-exp">可回收物</view>
+						</u-grid-item>
+					</u-grid>
 				</view>
-				<u-grid :col="4" :hover-class="none">
-					<u-grid-item>
-						<view class="cell-item-main">
-							<text class="cell-item-number blue">26</text>
-							<text class="cell-item-unit">个</text>
-						</view>
-						<view class="cell-item-exp">废旧衣物</view>
-					</u-grid-item>
-					<u-grid-item>
-						<view class="cell-item-main">
-							<text class="cell-item-number green">26</text>
-							<text class="cell-item-unit">个</text>
-						</view>
-						<view class="cell-item-exp">废旧纸张</view>
-					</u-grid-item>
-					<u-grid-item>
-						<view class="cell-item-main">
-							<text class="cell-item-number red">26</text>
-							<text class="cell-item-unit">kg</text>
-						</view>
-						<view class="cell-item-exp">废旧金属</view>
-					</u-grid-item>
-					<u-grid-item>
-						<view class="cell-item-main">
-							<text class="cell-item-number yellow">26</text>
-							<text class="cell-item-unit">kg</text>
-						</view>
-						<view class="cell-item-exp">废旧玻璃</view>
-					</u-grid-item>
-				</u-grid>
 			</view>
-		</view>
-		<u-empty class="nodata" :text="noDataText" v-if="listdata.length==0 && status!='loading'" mode="list"></u-empty>
+			<u-empty class="nodata" :text="noDataText" v-if="listdata.length==0 && status!='loading'" mode="list"></u-empty>
+			<view class="loadmore" v-if="listdata.length!=0">
+				<u-loadmore v-if="total>pageSize || status=='loading'" :status="status" />
+			</view>
+		</scroll-view>
 	</view>
 </template>
 
 <script>
+	import { getAlreadyCleanDetails } from '@/api/cleared.js'
 	export default{
 		data(){
 			return{
-				listdata: [{},{}],
+				listdata: [],
+				pageNo: 1,  //  当前页码
+				pageSize: 10,  //  每页条数
+				total: 0,  //  数据总条数
 				noDataText: '暂无数据',  //  列表请求状态提示语
 				status: 'loadmore',  //  加载中状态
+				scrollTop: 0,  //  滚动条位置
 			}
 		},
+		onShow() {
+			this.refresh()
+		},
 		methods: {
-			
+			// 获取查询参数 刷新列表
+			refresh(){
+				this.listdata = []
+				this.total = 0
+				this.searchHandle(1)
+			},
+			// 搜索查询
+			searchHandle (pageNo) {
+				this.status = "loading"
+				pageNo ? this.pageNo = pageNo : null
+				getAlreadyCleanDetails({
+					pageNo: this.pageNo,
+					pageSize: this.pageSize,
+				}).then(res => {
+					if (res.status == 200) {
+						if(this.pageNo>1){
+							this.listdata = this.listdata.concat(res.data.list || [])
+						}else{
+							this.listdata = res.data.list || []
+							this.scrollTop = 0
+						}
+						this.total = res.data.count || 0
+						this.noDataText = '暂无数据'
+					} else {
+						this.noDataText = res.message
+						this.listdata = []
+						this.total = 0
+					}
+					this.status = "loadmore"
+				})
+			},
+			// scroll-view到底部加载更多
+			onreachBottom() {
+				if(this.listdata.length!=0 && this.listdata.length < this.total){
+					this.pageNo++
+					this.searchHandle()
+				}else{
+					uni.showToast({ title: '已经到底了', icon: 'none' })
+					this.status = "nomore"
+				}
+			}
 		}
 	}
 </script>
@@ -64,6 +137,11 @@
 <style lang="scss" scoped>
 	.cleared-details-container{
 		width: 100%;
+		//  列表
+		.scroll-con{
+			overflow: auto;
+			height: 100vh;
+		}
 		.cell-item-con{
 			.cell-item{
 				margin: $uni-spacing-col-base $uni-spacing-row-base;
@@ -73,15 +151,8 @@
 				font-size: $uni-font-size-base;
 				box-shadow: 3rpx 3rpx 5rpx #eee;
 				.cell-item-c{
-					display: flex;
-					align-items: center;
 					padding: $uni-spacing-col-base $uni-spacing-row-base;
-					.cell-item-pic{
-						flex-shrink: 0;
-						margin-right: 10rpx;
-					}
 					.cell-item-info{
-						flex-grow: 1;
 						.cell-item-info-network{
 							word-break: break-all;
 							margin-bottom: 10rpx;
@@ -117,5 +188,8 @@
 				}
 			}
 		}
+		.nodata{
+			padding-top: 400rpx;
+		}
 	}
 </style>

+ 34 - 56
pages/cleared/index.vue

@@ -5,30 +5,29 @@
 			<view class="cell-item-con">
 				<view class="cell-item" v-for="(item, index) in listdata" :key="index" @tap="goPage(item)">
 					<view class="cell-item-c">
-						<view class="cell-item-date">{{item.createDate}}</view>
+						<view class="cell-item-date">{{item.cleanDate}}</view>
 						<view class="cell-item-orderNum">
-							{{item.createDate}}
 							<u-icon name="arrow-right" :size="28" color="#999"></u-icon>
 						</view>
 					</view>
 					<u-grid :col="3" :hover-class="none">
 						<u-grid-item>
 							<view class="cell-item-main">
-								<text class="cell-item-number blue">26</text>
+								<text class="cell-item-number blue">{{item.stationNum}}</text>
 								<text class="cell-item-unit">个</text>
 							</view>
 							<view class="cell-item-exp">清运网点数</view>
 						</u-grid-item>
 						<u-grid-item>
 							<view class="cell-item-main">
-								<text class="cell-item-number green">26</text>
+								<text class="cell-item-number green">{{item.boxNum}}</text>
 								<text class="cell-item-unit">个</text>
 							</view>
 							<view class="cell-item-exp">清运箱体数</view>
 						</u-grid-item>
 						<u-grid-item>
 							<view class="cell-item-main">
-								<text class="cell-item-number red">26</text>
+								<text class="cell-item-number red">{{item.totalWeight}}</text>
 								<text class="cell-item-unit">kg</text>
 							</view>
 							<view class="cell-item-exp">清运总重量</view>
@@ -37,33 +36,28 @@
 				</view>
 			</view>
 			<u-empty class="nodata" :text="noDataText" v-if="listdata.length==0 && status!='loading'" mode="list"></u-empty>
-			<view class="loadmore">
+			<view class="loadmore" v-if="listdata.length!=0">
 				<u-loadmore v-if="total>pageSize || status=='loading'" :status="status" />
 			</view>
 		</scroll-view>
 	</view>
 </template>
 <script>
-	// import { getGoldLogList, GoldLogCancel, GoldLogTotal } from '@/api/officialPartnerGoldLog.js'
+	import { getAlreadyCleanList } from '@/api/cleared.js'
 	export default {
 		data() {
 			return {
-				listdata: [{},{}],
+				listdata: [],
 				pageNo: 1,  //  当前页码
 				pageSize: 10,  //  每页条数
 				total: 0,  //  数据总条数
 				noDataText: '暂无数据',  //  列表请求状态提示语
 				status: 'loadmore',  //  加载中状态
-				customBtnStyle: {  //  撤销单据  自定义按钮样式
-					borderColor: '#01c9b2',
-					backgroundColor: '#01c9b2',
-					color: '#fff'
-				},
 				scrollTop: 0,  //  滚动条位置
 			}
 		},
 		onShow() {
-			// this.refresh({})
+			this.refresh()
 		},
 		methods:{
 			// 获取查询参数 刷新列表
@@ -72,49 +66,30 @@
 				this.total = 0
 				this.searchHandle(1)
 			},
-			//  撤销单据
-			revokeFun(row){
-				const _this = this
-				uni.showModal({
-				  title: '提示',
-				  content: '撤销单据后乐豆将全部退回给原支付账号,确认撤销吗?',
-				  success(res) {
-				    if (res.confirm) {
-				   //    GoldLogCancel({ id: row.id }).then(ret => {
-						 //  if(ret.status == 200){
-							//   uni.showToast({ title: ret.message, icon: 'none' })
-							//   _this.searchHandle(1)
-						 //  }
-					  // })
-				    }
-				  }
-				})
-			},
 			// 搜索查询
 			searchHandle (pageNo) {
 				this.status = "loading"
 				pageNo ? this.pageNo = pageNo : null
-				// getGoldLogList({
-				// 	pageNo: this.pageNo,
-				// 	pageSize: this.pageSize,
-				// 	customerMobile: ''
-				// }).then(res => {
-				// 	if (res.status == 200) {
-				// 		if(this.pageNo>1){
-				// 			this.listdata = this.listdata.concat(res.data.list || [])
-				// 		}else{
-				// 			this.listdata = res.data.list || []
-				// 			this.scrollTop = 0
-				// 		}
-				// 		this.total = res.data.count || 0
-				// 		this.noDataText = '暂无数据'
-				// 	} else {
-				// 		this.noDataText = res.message
-				// 		this.listdata = []
-				// 		this.total = 0
-				// 	}
-				// 	this.status = "loadmore"
-				// })
+				getAlreadyCleanList({
+					pageNo: this.pageNo,
+					pageSize: this.pageSize,
+				}).then(res => {
+					if (res.status == 200) {
+						if(this.pageNo>1){
+							this.listdata = this.listdata.concat(res.data.list || [])
+						}else{
+							this.listdata = res.data.list || []
+							this.scrollTop = 0
+						}
+						this.total = res.data.count || 0
+						this.noDataText = '暂无数据'
+					} else {
+						this.noDataText = res.message
+						this.listdata = []
+						this.total = 0
+					}
+					this.status = "loadmore"
+				})
 			},
 			//  查看详情
 			goPage(row){
@@ -124,8 +99,8 @@
 			},
 			// scroll-view到底部加载更多
 			onreachBottom() {
-				if(this.listdata.length < this.total){
-					this.pageNo += 1
+				if(this.listdata.length!=0 && this.listdata.length < this.total){
+					this.pageNo++
 					this.searchHandle()
 				}else{
 					uni.showToast({ title: '已经到底了', icon: 'none' })
@@ -162,7 +137,7 @@
 				.cell-item-c{
 					display: flex;
 					justify-content: space-between;
-					padding: $uni-spacing-col-base $uni-spacing-row-base;
+					padding: 24rpx $uni-spacing-row-base;
 					.cell-item-date{
 						color: $uni-text-color-grey;
 					}
@@ -188,5 +163,8 @@
 				}
 			}
 		}
+		.nodata{
+			padding-top: 400rpx;
+		}
 	}
 </style>

+ 21 - 23
pages/cleared/network.vue

@@ -55,11 +55,10 @@
 </template>
 
 <script>
-	import { stationDevice } from '@/api/cleared.js'
+	import { stationDevice, getWaitToCleanDetailHeader } from '@/api/cleared.js'
 	export default {
 		data() {
 			return {
-				stationId: '',  //  网点id
 				stationNo: '',  //  网点编号
 				lat: '',
 				lng: '',
@@ -70,7 +69,6 @@
 			};
 		},
 		onLoad(options) {
-			this.stationId = options.id
 			this.stationNo = options.stationNo
 			this.getStation()  //  网点信息
 			this.getDevice()  //  设备信息
@@ -83,26 +81,26 @@
 		methods: {
 			//  网点信息
 			getStation(){
-				// stationDetail({ id: this.stationId }).then(res => {
-				// 	if(res.status == 200){
-				// 		this.stationData = res.data
-				// 		this.markers = []
-				// 		this.markers.push({
-				// 			latitude: res.data.lat,
-				// 			longitude: res.data.lng,
-				// 			width: 30,
-				// 			height: 30,
-				// 			iconPath: "/static/store.png"
-				// 		})
-				// 		this.lng = res.data.lng
-				// 		this.lat = res.data.lat
-				// 	}else{
-				// 		this.stationData = null
-				// 		this.markers = []
-				// 		this.lng = ''
-				// 		this.lat = ''
-				// 	}
-				// })
+				getWaitToCleanDetailHeader({ stationNo: this.stationNo }).then(res => {
+					if(res.status == 200){
+						this.stationData = res.data
+						this.markers = []
+						this.markers.push({
+							latitude: res.data.lat,
+							longitude: res.data.lng,
+							width: 30,
+							height: 30,
+							iconPath: "/static/store.png"
+						})
+						this.lng = res.data.lng
+						this.lat = res.data.lat
+					}else{
+						this.stationData = null
+						this.markers = []
+						this.lng = ''
+						this.lat = ''
+					}
+				})
 			},
 			//  设备信息
 			getDevice(){

+ 21 - 10
pages/cleared/searchModal.vue

@@ -14,11 +14,12 @@
 				<u-button class="handle-btn" size="medium" hover-class="none" @click="resetForm">重置</u-button>
 			</view>
 		</u-popup>
-		<u-picker mode="selector" v-model="openSort" :default-selector="selectDefault" :range="list" range-key="label" @confirm="confirm"></u-picker>
+		<u-picker mode="selector" v-model="openSort" :default-selector="selectDefault" :range="list" range-key="dispName" @confirm="confirm"></u-picker>
 	</div>
 </template>
 
 <script>
+import { getLookUpDatas } from '@/api/data.js'
 export default {
 	props: {
 		visible: {
@@ -58,10 +59,7 @@ export default {
 				stationName: '',  //  套餐名称
 				orderType: '', // 客户手机
 			},
-			list: [
-				{ label: '按内置单箱体最大投放量降序', value: 'max' },
-				{ label: '按网点可回收物投放总量降序', value: 'total' }
-			],
+			list: [],
 			openSort: false,  //  选择
 			orderTypeName: '请选择',
 			selectDefault: [0],  //  下拉默认选中项
@@ -70,15 +68,28 @@ export default {
 	mounted() {
 		this.init()
 	},
+	created() {
+		this.getLookUpDatas()
+	},
 	methods: {
+		//  获取数据字典
+		getLookUpDatas(){
+			getLookUpDatas({ type: 'WAIT_CLEAN_SORT_RULE' }).then(res => {
+				if(res.status == 200){
+					this.list = res.data || []
+				}else{
+					this.list = []
+				}
+			})
+		},
 		//  初始化数据
 		init(){
 			this.form.stationName = this.defaultParams.stationName ? this.defaultParams.stationName : ''
 			this.form.orderType = this.defaultParams.orderType ? this.defaultParams.orderType : ''
 			if(this.defaultParams.orderType){
 				this.list.map((item, index) => {
-					if(item.value == this.form.orderType){
-						this.orderTypeName = this.list[index].label
+					if(item.code == this.form.orderType){
+						this.orderTypeName = this.list[index].dispName
 						this.selectDefault[0] = index
 					}
 				})
@@ -101,14 +112,14 @@ export default {
 		// 重置
 		resetForm() {
 			this.$refs.uForm.resetFields()
-			this.$emit('refresh', {})
+			this.$emit('refresh', {orderType: 'max'})
 			this.isShow = false
 		},
 		//  确定
 		confirm(v){
 			this.selectDefault = v
-			this.form.orderType = this.list[v[0]].value
-			this.orderTypeName = this.list[v[0]].label
+			this.form.orderType = this.list[v[0]].code
+			this.orderTypeName = this.list[v[0]].dispName
 		}
 	}
 };

+ 162 - 69
pages/index/index.vue

@@ -5,20 +5,19 @@
 			<!-- 列表数据 -->
 			<view class="cell-item-con">
 				<view class="cell-item" v-for="(item, index) in listdata" :key="index">
-					<u-image class="cell-item-pic" src="/static/logo.jpg" width="140rpx" height="140rpx"></u-image>
 					<view class="cell-item-c" @tap="goPage(item)">
 						<view class="cell-item-info">
 							<view class="cell-item-info-network">
-								咸阳市秦都区文彩舫东区
-								<u-badge type="success" bgColor="#c90101" :count="8" :offset="[-10,-32]" size="mini"></u-badge>
+								{{item.stationName}}
+								<u-badge type="success" bgColor="#c90101" :count="item.unCleanNum" :offset="[-10,-32]" size="mini"></u-badge>
 							</view>
 							<view class="cell-item-info-weight">
 								<view class="cell-item-weight-bar">
-									15.25kg
+									{{item.totalWeight}}kg
 									<u-badge class="badge" type="primary" bgColor="#01c9b2" count="总" :offset="[0,0]"></u-badge>
 								</view>
 								<view class="cell-item-weight-bar">
-									15.25kg
+									{{item.maxWeight}}kg
 									<u-badge class="badge" type="warning" bgColor="#05695d" count="最大" :offset="[0,0]"></u-badge>
 								</view>
 							</view>
@@ -29,7 +28,7 @@
 				</view>
 			</view>
 			<u-empty class="nodata" :text="noDataText" v-if="listdata.length==0 && status!='loading'" mode="list"></u-empty>
-			<view class="loadmore">
+			<view class="loadmore" v-if="listdata.length!=0">
 				<u-loadmore v-if="total>pageSize || status=='loading'" :status="status" />
 			</view>
 		</scroll-view>
@@ -44,17 +43,39 @@
 				<text>增加清运网点</text>
 			</u-button>
 		</view>
+		<!-- 确认清运 -->
+		<u-popup v-model="messagePop" mode="center" class="custom-pop" length="80%" border-radius="14" :mask-close-able="false">
+			<view class="custom-con">
+				<view class="pop-title">提示</view>
+				<view class="pop-con">
+					<view class="pop-item">确认清运以下网点-设备内的可回收物?</view>
+					<view class="pop-item">{{networkData.stationName || ''}}</view>
+					<view class="pop-item">{{networkData.srcDeviceCode || ''}}</view>
+					<view class="form-con">
+						<u-form :model="form" ref="uForm">
+							<u-form-item label="备注" :border-bottom="false">
+								<u-input v-model="form.remarks" type="textarea" border />
+							</u-form-item>
+						</u-form>
+					</view>
+				</view>
+				<view class="btn-con">
+					<view class="handle-pop-btn cancel-btn" @click="cancelFun">取消</view>
+					<view class="handle-pop-btn submit-btn" @click="submitFun">确定</view>
+				</view>
+			</view>
+		</u-popup>
 	</view>
 </template>
 <script>
-	// import { getGoldLogList, GoldLogCancel, GoldLogTotal } from '@/api/officialPartnerGoldLog.js'
-	import { scanCode } from '@/libs/tools.js'
+	import { getSelfCleanTaskList, cleanDevice, cleanStationRemove, getDeviceMsg } from '@/api/unclear.js'
+	import { parseQueryString } from '@/libs/tools.js'
 	export default {
 		data() {
 			return {
-				listdata: [{},{}],
+				listdata: [],
 				pageNo: 1,  //  当前页码
-				pageSize: 40,  //  每页条数
+				pageSize: 10,  //  每页条数
 				total: 0,  //  数据总条数
 				noDataText: '暂无数据',  //  列表请求状态提示语
 				status: 'loadmore',  //  加载中状态
@@ -71,13 +92,21 @@
 				},
 				btnStyle: {  //  自定义按钮样式
 					width: '100%'
-				}
+				},
+				form: {
+					remarks: ''  //  备注
+				},
+				boxData: null,  //  箱体二维码数据
+				messagePop: false,  //  确认清运
+				networkData: null  //  网点详情
 			}
 		},
 		onShow() {
-			// this.refresh({})
+			this.pageNo = 1
+			this.refresh()
 		},
 		methods:{
+			//  是否可清运
 			clearingOutlets(){
 				if(this.listdata.length==0){
 					uni.showToast({ title: '请先选择待清运网点,再进行扫码清运', icon: 'none' })
@@ -87,23 +116,53 @@
 			},
 			//  扫码清运
 			openScan(){
-				//  调起微信扫码
-				scanCode().then(res => {
-				  this.code = res.result
-				  //  请求接口
-				  // return verShow(res.result)
-				}).then(res => {
-				  if (res.status == 200) {
-				    this.info = res.data
-				    this.showInfo = true
-				    this.carNum = ''
-				  } else {
-				    wx.showToast({
-				      title: res.message,
-				      icon: 'none',
-				      duration: 2500
-				    })
-				  }
+				const _this = this
+				uni.scanCode({
+					success(e) {
+						console.log(e)
+						// 普通二维码,用户扫箱体的二维码
+						if(e.scanType == 'QR_CODE'){
+							//  将箱体二维码数据转换为json
+							_this.boxData = parseQueryString(e.result)
+							_this.getNetworkInfo()
+						}
+					},
+					fail(err) {
+						console.log(err)
+					}
+				})
+			},
+			//  扫码获取网点信息
+			getNetworkInfo(){
+				const _this = this
+				getDeviceMsg(_this.boxData).then(res => {
+					if(res.status == 200){
+						_this.networkData = res.data
+						_this.messagePop = true
+					}else{
+						_this.messagePop = false
+					}
+				})
+			},
+			//  取消清运
+			cancelFun(){
+				this.messagePop = false
+			},
+			//  确定清运
+			submitFun(){
+				uni.showLoading({
+					mask: true,
+				    title: '加载中'
+				})
+				cleanDevice({ remarks: this.form.remarks }).then(res => {
+					uni.hideLoading()
+					if(res.status == 200){
+						this.refresh()
+						this.messagePop = false
+						uni.showToast({ icon:'none', title: res.message })
+					}else{
+						uni.showToast({ icon:'none', title: res.message })
+					}
 				})
 			},
 			//  增加清运网点
@@ -113,7 +172,7 @@
 				})
 			},
 			// 获取查询参数 刷新列表
-			refresh(params){
+			refresh(){
 				this.listdata = []
 				this.total = 0
 				this.searchHandle(1)
@@ -122,26 +181,26 @@
 			searchHandle (pageNo) {
 				this.status = "loading"
 				pageNo ? this.pageNo = pageNo : null
-				// getGoldLogList({
-				// 	pageNo: this.pageNo,
-				// 	pageSize: this.pageSize
-				// }).then(res => {
-				// 	if (res.status == 200) {
-				// 		if(this.pageNo>1){
-				// 			this.listdata = this.listdata.concat(res.data.list || [])
-				// 		}else{
-				// 			this.listdata = res.data.list || []
-				// 			this.scrollTop = 0
-				// 		}
-				// 		this.total = res.data.count || 0
-				// 		this.noDataText = '暂无数据'
-				// 	} else {
-				// 		this.noDataText = res.message
-				// 		this.listdata = []
-				// 		this.total = 0
-				// 	}
-				// 	this.status = "loadmore"
-				// })
+				getSelfCleanTaskList({
+					pageNo: this.pageNo,
+					pageSize: this.pageSize
+				}).then(res => {
+					if (res.status == 200) {
+						if(this.pageNo>1){
+							this.listdata = this.listdata.concat(res.data.list || [])
+						}else{
+							this.listdata = res.data.list || []
+							this.scrollTop = 0
+						}
+						this.total = res.data.count || 0
+						this.noDataText = '暂无数据'
+					} else {
+						this.noDataText = res.message
+						this.listdata = []
+						this.total = 0
+					}
+					this.status = "loadmore"
+				})
 			},
 			//  移除
 			removeFun(row){
@@ -151,12 +210,12 @@
 				  content: '确认移除该网点的清运单?',
 				  success(res) {
 				    if (res.confirm) {
-				   //    GoldLogCancel({ id: row.id }).then(ret => {
-						 //  if(ret.status == 200){
-							//   uni.showToast({ title: ret.message, icon: 'none' })
-							//   _this.searchHandle(1)
-						 //  }
-					  // })
+						cleanStationRemove({ stationNo: row.stationNo }).then(ret => {
+							if(ret.status == 200){
+								uni.showToast({ title: ret.message, icon: 'none' })
+								_this.searchHandle(1)
+							}
+						})
 				    }
 				  }
 				})
@@ -164,13 +223,13 @@
 			//  查看详情
 			goPage(row){
 				uni.navigateTo({
-				    url: '/pages/cleared/details'
+				    url: '/pages/cleared/network?stationNo='+row.stationNo
 				})
 			},
 			// scroll-view到底部加载更多
 			onreachBottom() {
-				if(this.listdata.length < this.total){
-					this.pageNo += 1
+				if(this.listdata.length!=0 && this.listdata.length < this.total){
+					this.pageNo++
 					this.searchHandle()
 				}else{
 					uni.showToast({ title: '已经到底了', icon: 'none' })
@@ -205,17 +264,9 @@
 				color: $uni-text-color;
 				font-size: $uni-font-size-base;
 				box-shadow: 3rpx 3rpx 5rpx #eee;
-				display: flex;
-				justify-content: space-between;
-				align-items: center;
-				padding: $uni-spacing-col-base $uni-spacing-row-base;
+				padding: 30rpx 20rpx;
 				position: relative;
-				.cell-item-pic{
-					flex-shrink: 0;
-					margin-right: 10rpx;
-				}
 				.cell-item-c{
-					flex-grow: 1;
 					display: flex;
 					justify-content: space-around;
 					align-items: center;
@@ -223,7 +274,7 @@
 						flex-grow: 1;
 						.cell-item-info-network{
 							word-break: break-all;
-							margin-bottom: $uni-spacing-col-base;
+							margin-bottom: 26rpx;
 							display: inline-block;
 							position: relative;
 						}
@@ -273,5 +324,47 @@
 				margin-bottom: 20rpx;
 			}
 		}
+		// 弹框样式
+		.custom-pop{
+			.custom-con{
+				text-align: center;
+				background: url(/static/pop-bg.png) no-repeat;
+				background-size: 100% 100%;
+				font-size: 30rpx;
+				color: #5a5a5a;
+				line-height: 54rpx;
+				.pop-title{
+					padding: 20rpx 0;
+					color: #fff;
+					font-weight: bold;
+				}
+				.pop-con{
+					padding: 80rpx 0 40rpx;
+					.pop-item{
+						padding: 0 20rpx;
+					}
+					.form-con{
+						padding: 10rpx 30rpx;
+					}
+				}
+				.btn-con{
+					border-top: 1rpx solid rgba(213,213,213,0.8);
+					.handle-pop-btn{
+						padding: 20rpx 0;
+						width: 50%;
+						display: inline-block;
+					}
+					.cancel-btn{
+						border-right: 1rpx solid rgba(213,213,213,0.8);
+					}
+					.submit-btn{
+						color: #16d1bc;
+					}
+				}
+			}
+		}
+		.nodata{
+			padding-top: 400rpx;
+		}
 	}
 </style>

+ 69 - 37
pages/index/map.vue

@@ -7,7 +7,7 @@
 			scale="12" 
 			show-compass 
 			show-location 
-			:markers="covers"
+			:markers="markers"
 			:polyline="polyline"
 			style="width: 100%; height:100%;">
 		</map>
@@ -15,42 +15,51 @@
 </template>
 
 <script>
+	import { getCleanWay } from '@/api/unclear.js'
 	export default{
 		data(){
 			return{
 				latitude: null,  //  纬度
 				longitude: null,  //  经度
-				covers: [
-					{
-						latitude: 34.211901,  // 雁塔区
-						longitude: 108.995039,
-						width: '72rpx',
-						height: '72rpx',
-						title: '21',
-						iconPath: '/static/logo.jpg'
-					}, {
-						latitude: 34.296789,
-						longitude: 108.971456,
-						width: '72rpx',
-						height: '72rpx',
-						title: '22',
-						label: {content:'文本1', color: '#ff0000'},
-						iconPath: '/static/logo.jpg'
-					}, {
-						latitude: 34.293145,  //  未央区政府
-						longitude: 108.946715,
-						width: '72rpx',
-						height: '72rpx',
-						title: '23',
-						iconPath: '/static/logo.jpg'
-					}, {
-						latitude: 34.313445,  //  灞桥区
-						longitude: 109.018233,
-						width: '72rpx',
-						height: '72rpx',
-						title: '24',
-						iconPath: '/static/logo.jpg'
-					}
+				markers: [
+					// {
+					// 	latitude: 34.211901,  // 雁塔区
+					// 	longitude: 108.995039,
+					// 	width: '60rpx',
+					// 	height: '60rpx',
+					// 	iconPath: '/static/store.png',
+					// 	label: {
+					// 		content: '文本111',
+					// 		bgColor: '#fff'
+					// 	}
+					// }, {
+					// 	latitude: 34.296789,
+					// 	longitude: 108.971456,
+					// 	width: '60rpx',
+					// 	height: '60rpx',
+					// 	iconPath: '/static/store.png',
+					// 	label: {content:'文本1', bgColor: '#fff'}
+					// }, {
+					// 	latitude: 34.293145,  //  未央区政府
+					// 	longitude: 108.946715,
+					// 	width: '60rpx',
+					// 	height: '60rpx',
+					// 	iconPath: '/static/store-s.png',
+					// 	label: {
+					// 		content: '文本111',
+					// 		bgColor: '#fff'
+					// 	}
+					// }, {
+					// 	latitude: 34.313445,  //  灞桥区
+					// 	longitude: 109.018233,
+					// 	width: '60rpx',
+					// 	height: '60rpx',
+					// 	iconPath: '/static/store.png',
+					// 	label: {
+					// 		content: '文本111',
+					// 		bgColor: '#fff'
+					// 	}
+					// }
 				],
 				polyline: null  //  路线
 			}
@@ -68,17 +77,40 @@
 						console.log(res.latitude,res.longitude)
 						_this.latitude = res.latitude  //  纬度
 						_this.longitude = res.longitude  //  经度
-						_this.onPolyline()
+						_this.getCleanWay()  //  获取个人待清运清单
+						// _this.onPolyline()
 				    }
 				})
 			},
+			// 
+			getCleanWay(){
+				getCleanWay({ lng: this.longitude, lat: this.latitude }).then(res => {
+					if(res.status == 200){
+						this.markers = []
+						res.data.map(item => {
+							this.markers.push({
+								latitude: item.lat,
+								longitude: item.lng,
+								width: '60rpx',
+								height: '60rpx',
+								iconPath: '/static/store.png',
+								label: {
+									content: item.stationName,
+									bgColor: '#fff',
+								}
+							})
+						})
+						this.onPolyline()
+					}
+				})
+			},
 			//  连线
 			onPolyline(){
 				const _this = this
 				//  连线需至少两个点
-				if(_this.covers.length>0){
+				if(_this.markers.length>0){
 					_this.polyline = []
-					_this.covers.map((item,index) => {
+					_this.markers.map((item,index) => {
 						_this.polyline.push({
 							points: [
 								{latitude: null, longitude: null},
@@ -93,8 +125,8 @@
 							_this.polyline[index].points[1].latitude = item.latitude
 							_this.polyline[index].points[1].longitude = item.longitude
 						}else{
-							_this.polyline[index].points[0].latitude = _this.covers[index-1].latitude
-							_this.polyline[index].points[0].longitude = _this.covers[index-1].longitude
+							_this.polyline[index].points[0].latitude = _this.markers[index-1].latitude
+							_this.polyline[index].points[0].longitude = _this.markers[index-1].longitude
 							_this.polyline[index].points[1].latitude = item.latitude
 							_this.polyline[index].points[1].longitude = item.longitude
 						}

+ 1 - 3
pages/login/login.vue

@@ -21,9 +21,7 @@
 </template>
 
 <script>
-	import {
-		login
-	} from "@/api/login"
+	import { login } from "@/api/login"
 	export default {
 		components: {},
 		data() {

+ 2 - 6
pages/login/pwLogin.vue

@@ -27,7 +27,7 @@
 import market from "@/js_sdk/dc-market/market.js"
 import { checkVersionToLoadUpdate, setStorageForAppVersion,clzConfirm } from '@/libs/tools'
 import { isvalidPhone } from '@/libs/validate.js';
-import { login } from '@/api/user.js';
+import { loginPhone } from '@/api/user.js';
 import { getSysVersion } from '@/api/data.js'
 export default {
 	data() {
@@ -73,10 +73,6 @@ export default {
 				uni.showToast({ icon: 'none', title: '请输入用户名' });
 				return;
 			}
-			// if (!isvalidPhone(_this.form.loginName)) {
-			// 	uni.showToast({ icon: 'none', title: '请输入正确的手机号码' });
-			// 	return;
-			// }
 			if (_this.form.password == '') {
 				uni.showToast({ icon: 'none', title: '请输入密码' });
 				return;
@@ -99,7 +95,7 @@ export default {
 		submitForm(formData){
 			const _this = this;
 			//  登录
-			login(formData).then(res => {
+			loginPhone(formData).then(res => {
 				uni.hideLoading();
 				if (res.status == 200) {
 					_this.$u.vuex('vuex_token', res.data);

+ 0 - 2
pages/userCenter/index.vue

@@ -92,8 +92,6 @@
 				      logout({}).then(res => {
 				       getApp().globalData.token = ''
 				       _this.$u.vuex('vuex_token','')
-					   // 关闭socket
-					   // _this.$store.commit("$closeWebsocket")
 				        uni.reLaunch({
 				        	url: '/pages/login/login'
 				        })

BIN
static/pop-bg.png


BIN
static/store-s.png