Explorar o código

小程序代码

chenchhuanbao hai 1 mes
pai
achega
a7b679d952
Modificáronse 100 ficheiros con 6081 adicións e 0 borrados
  1. 16 0
      .hbuilderx/launch.json
  2. 15 0
      .vscode/launch.json
  3. 54 0
      App.vue
  4. 40 0
      api/ffxc.js
  5. 136 0
      api/jfsc.js
  6. 11 0
      api/jwgk.js
  7. 42 0
      api/my.js
  8. 43 0
      api/system/dept.js
  9. 61 0
      api/system/dict.js
  10. 36 0
      api/system/post.js
  11. 69 0
      api/system/role.js
  12. 10 0
      api/system/tenant.js
  13. 229 0
      api/user.js
  14. 20 0
      common/setUserInfo.js
  15. 35 0
      common/setting.js
  16. 99 0
      http/api.js
  17. 44 0
      http/config.js
  18. 18 0
      http/install.js
  19. 22 0
      index.html
  20. 301 0
      jyzPage/jyz/csjl.vue
  21. 330 0
      jyzPage/jyz/jyzdj.vue
  22. 217 0
      jyzPage/jyz/personjl.vue
  23. 220 0
      jyzPage/jyz/qiyejl.vue
  24. 34 0
      main.js
  25. 117 0
      manifest.json
  26. 3 0
      package-lock.json
  27. 144 0
      pageA/my/login.vue
  28. 272 0
      pageA/my/profile.vue
  29. 9 0
      pageA/my/reg.vue
  30. 195 0
      pages.json
  31. 104 0
      pages/detail/content.vue
  32. 425 0
      pages/detail/index.vue
  33. 190 0
      pages/detail/searchResult.vue
  34. 278 0
      pages/index/index.vue
  35. 196 0
      pages/jfsc/index.vue
  36. 222 0
      pages/jfsc/jfmx.vue
  37. 184 0
      pages/jwgk/index.vue
  38. 149 0
      pages/my/index.vue
  39. 313 0
      product/order/dlq.vue
  40. 295 0
      product/order/historyOrder.vue
  41. 410 0
      product/product/card.vue
  42. 416 0
      product/product/detail.vue
  43. BIN=BIN
      static/bj_middle.png
  44. BIN=BIN
      static/btn_phone_blue@2x.png
  45. BIN=BIN
      static/icon_boy_16@2x.png
  46. BIN=BIN
      static/jf/bj_blue@2x.png
  47. BIN=BIN
      static/jf/bj_label_shadow@2x.png
  48. BIN=BIN
      static/jf/bj_points_long@2x.png
  49. BIN=BIN
      static/jf/btn_buy@2x.png
  50. BIN=BIN
      static/jf/btn_chevron_right_16@2x.png
  51. BIN=BIN
      static/jf/btn_notice_16@2x.png
  52. BIN=BIN
      static/jf/btn_select@2x.png
  53. BIN=BIN
      static/jf/btn_select_color@2x.png
  54. BIN=BIN
      static/jf/btn_top@2x.png
  55. BIN=BIN
      static/jf/car.png
  56. BIN=BIN
      static/jf/icon_address_small_16@2x.png
  57. BIN=BIN
      static/jf/icon_addresss_gray_16@2x.png
  58. BIN=BIN
      static/jf/icon_amount_gray_16@2x.png
  59. BIN=BIN
      static/jf/icon_oil_gray_16@2x.png
  60. BIN=BIN
      static/jf/icon_people_blue_24@2x.png
  61. BIN=BIN
      static/jf/icon_place_blue_24@2x.png
  62. BIN=BIN
      static/jf/icon_points_gray_16@2x.png
  63. BIN=BIN
      static/jf/icon_points_small_16@2x(1).png
  64. BIN=BIN
      static/jf/icon_points_small_16@2x(2).png
  65. BIN=BIN
      static/jf/icon_points_small_16@2x.png
  66. BIN=BIN
      static/jf/icon_time_gray_16@2x.png
  67. BIN=BIN
      static/jf/pic_oil_big@2x.png
  68. BIN=BIN
      static/jf/pic_points_right@2x.png
  69. BIN=BIN
      static/jf/pic_title_big@2x.png
  70. BIN=BIN
      static/logo.png
  71. BIN=BIN
      static/my/bj_label_shadow@2x.png
  72. BIN=BIN
      static/my/btn_next_gray@2x.png
  73. BIN=BIN
      static/my/btn_phone_blue_16@2x.png
  74. BIN=BIN
      static/my/icon_addresss_white_16@2x.png
  75. BIN=BIN
      static/my/icon_love_white_16@2x.png
  76. BIN=BIN
      static/my/icon_my_about@2x.png
  77. BIN=BIN
      static/my/icon_my_head_64@2x.png
  78. BIN=BIN
      static/my/icon_my_idea@2x.png
  79. BIN=BIN
      static/my/icon_my_service@2x.png
  80. BIN=BIN
      static/my/icon_my_set@2x.png
  81. BIN=BIN
      static/my/icon_order_history_48@2x.png
  82. BIN=BIN
      static/my/icon_order_waiting_48@2x.png
  83. BIN=BIN
      static/my/icon_police_white_16@2x.png
  84. BIN=BIN
      static/nav/bj_label_shadow@2x.png
  85. BIN=BIN
      static/nav/btn_play_64@2x.png
  86. BIN=BIN
      static/nav/btn_top@2x.png
  87. BIN=BIN
      static/nav/icon_search@2x.png
  88. BIN=BIN
      static/nav/label_home_color@2x.png
  89. BIN=BIN
      static/nav/label_home_color@2xd.png
  90. BIN=BIN
      static/nav/label_home_gray@2x.png
  91. BIN=BIN
      static/nav/label_my_color@2x.png
  92. BIN=BIN
      static/nav/label_my_gray@2x.png
  93. BIN=BIN
      static/nav/label_open_color@2x.png
  94. BIN=BIN
      static/nav/label_open_gray@2x.png
  95. BIN=BIN
      static/nav/label_points_gray@2x.png
  96. 25 0
      static/nav/nav_line.svg
  97. BIN=BIN
      static/nav/nav_line2.png
  98. BIN=BIN
      static/pic_points_big@2x.png
  99. BIN=BIN
      static/pic_quit_big@2x.png
  100. 32 0
      store/$u.mixin.js

+ 16 - 0
.hbuilderx/launch.json

@@ -0,0 +1,16 @@
+{ // launch.json 配置了启动调试时相关设置,configurations下节点名称可为 app-plus/h5/mp-weixin/mp-baidu/mp-alipay/mp-qq/mp-toutiao/mp-360/
+  // launchtype项可配置值为local或remote, local代表前端连本地云函数,remote代表前端连云端云函数
+    "version": "0.0",
+    "configurations": [{
+     	"default" : 
+     	{
+     		"launchtype" : "local"
+     	},
+     	"mp-weixin" : 
+     	{
+     		"launchtype" : "local"
+     	},
+     	"type" : "uniCloud"
+     }
+    ]
+}

+ 15 - 0
.vscode/launch.json

@@ -0,0 +1,15 @@
+{
+    // 使用 IntelliSense 了解相关属性。 
+    // 悬停以查看现有属性的描述。
+    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
+    "version": "0.2.0",
+    "configurations": [
+        {
+            "type": "uniapp-run",
+            "request": "launch",
+            "name": "Uniapp Run",
+            "platform": "mp-weixin",
+            "openDevTool": true  // 是否自动打开开发者工具
+        }
+    ]
+}

+ 54 - 0
App.vue

@@ -0,0 +1,54 @@
+<script>
+	export default {
+		onLaunch: function() {
+			console.log('App Launch')
+			this.$u.func.checkLogin()
+			//this.refreshToken()
+		},
+		onShow: function() {
+			console.log('App Show')
+		},
+		onHide: function() {
+			console.log('App Hide')
+		},
+
+		onShareAppMessage(res) { //发送给朋友
+				return {
+					title: '警地融合小程序',
+					path:'/pages/index/index',
+					imageUrl: '',
+				}
+			},
+		onShareTimeline(res) { //分享到朋友圈
+			return {
+				title: '警地融合小程序',
+				imageUrl: '',
+			}
+		},
+		methods:{
+			// 检测token
+			refreshToken() {
+				const tokenValidPeriod = 20000; 
+			  // 如果token为空或者已经超过有效期,需要生成新的token
+			  
+			  if (this.token!=undefined  && Number(Date.now() - this.userInfo.tokenGeneratedTime) > Number(tokenValidPeriod)) {
+				console.log(this.token,Date.now() - this.userInfo.tokenGeneratedTime);  
+				this.$u.vuex('userInfo', {
+					avatar: '',
+					nick_name: '游客',
+					tenant_id: '暂无'
+				})
+				this.$u.vuex('accessToken', '')
+				this.$u.vuex('isLogin', false)
+			  }
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	/*每个页面公共css */
+		/* 注意要写在第一行,同时给style标签加入lang="scss"属性 */
+		@import "@/uni_modules/uview-ui/index.scss";
+	
+</style>

+ 40 - 0
api/ffxc.js

@@ -0,0 +1,40 @@
+import http from '@/http/api.js'
+
+export const getjwtdFfxc = (xclx,xcbt,current,size) => {
+	return http.request({
+		url: '/api/jwtdFfxc/page',
+		method: 'get',
+		params:{
+			xclx,xcbt,current,size
+		}
+	})
+}
+
+ 
+export const getDictList = () => {
+	return http.request({
+		url: '/api/blade-system/dept/getDictList',
+		method: 'get',
+		params:{}
+	})
+}
+
+
+export const detailApp = (id) => {
+	return http.request({
+		url: '/api/jwtdFfxc/detailApp',
+		method: 'get',
+		params:{
+			id
+		}
+	})
+}
+
+
+export const jfupdate = (row) => {
+	return http.request({
+		url: '/api/jwtdFfxcLlls/update',
+		method: 'post',
+		data: row
+	})
+}

+ 136 - 0
api/jfsc.js

@@ -0,0 +1,136 @@
+import http from '@/http/api.js'
+
+export const getjwtdSpgl = (current,size) => {
+	return http.request({
+		url: '/api/jwtdSpgl/pageApp',
+		method: 'get',
+		params:{
+			current,size
+		}
+	})
+}
+
+
+export const jwtdSpgldetail = (id) => {
+	return http.request({
+		url: '/api/jwtdSpgl/detail',
+		method: 'get',
+		params:{
+			id
+		}
+	})
+}
+
+
+// jwtdJfjl/getJlList  get  积分明细   传type(积分获取,积分兑换)不传为全部记录
+
+export const getJlList = (type) => {
+	return http.request({
+		url: '/api/jwtdJfjl/getJlList',
+		method: 'get',
+		params:{
+			type
+		}
+	})
+}
+
+// jwtdSpglDhjl/gwcjs  post  购物车结算  传list
+export const jwtdSpglDhjl = (row) => {
+	return http.request({
+		url: '/api/jwtdSpglDhjl/gwcjs',
+		method: 'post',
+		data:row
+	})
+}
+
+
+//jwtdSpglDhjl/getDdList我的订单  传type(待领取,历史)
+export const getDdList = (type,spmc,current) => {
+	return http.request({
+		url: '/api/jwtdSpglDhjl/getDdList',
+		method: 'get',
+		params:{
+			type,spmc,current
+		}
+	})
+}
+
+
+//    jwtdSzqyJyz/save   post   加油站登记
+export const jyzdjSave = (row) => {
+	return http.request({
+		url: '/api/jwtdSzqyJyz/save',
+		method: 'post',
+		data:row
+	})
+}
+
+//jwtdSzqyCsjl/page  get   出售记录
+export const jyzSellPage = (spmc,current) => {
+	return http.request({
+		url: '/api/jwtdSzqyCsjl/page',
+		method: 'get',
+		params:{
+			spmc,current
+		}
+	})
+}
+
+//jwtdSzqyCsjl/detail  get   出售记录详情   传id
+export const jyzSellDetail = (id) => {
+	return http.request({
+		url: '/api/jwtdSzqyCsjl/detail',
+		method: 'get',
+		params:{
+			id
+		}
+	})
+}
+
+//加入购物车   传spId商品id,userId用户id
+export const jwtdGwc = (row) => {
+	return http.request({
+		url: '/api/jwtdGwc/save',
+		method: 'post',
+		data:row
+	})
+}
+//jwtdGwc/page    get     购物车列表     传userId
+export const jwtdGwcList = (userId) => {
+	return http.request({
+		url: '/api/jwtdGwc/page',
+		method: 'get',
+		params:{
+			userId
+		}
+	})
+}
+
+
+export const jwtdGwcRemove = (row) => {
+	return http.request({
+		url: '/api/jwtdGwc/remove',
+		method: 'post',
+		data:row
+	})
+}
+
+export const jfsclqsp = (ddbh) => {
+	return http.request({
+		url: '/api/jwtdSpglDhjl/lqsp',
+		method: 'post',
+		params:{
+			ddbh
+		}
+	})
+}
+//获取当前登陆人积分
+export const getJf = () => {
+	return http.request({
+		url: '/api/blade-system/user/getJf',
+		method: 'get',
+		params:{
+			
+		}
+	})
+}

+ 11 - 0
api/jwgk.js

@@ -0,0 +1,11 @@
+import http from '@/http/api.js'
+
+export const getjwtdJwgk = (name,current,size) => {
+	return http.request({
+		url: '/api/jwtdJwgk/page',
+		method: 'get',
+		params:{
+			name,current,size
+		}
+	})
+}

+ 42 - 0
api/my.js

@@ -0,0 +1,42 @@
+import http from '@/http/api.js'
+
+export const getDeptList = (id) => {
+	return http.request({
+		url: '/api/blade-system/dept/getDeptList',
+		method: 'get',
+		params:{
+			id
+		}
+	})
+}
+
+export const getQxList = (row) => {
+	return http.request({
+		url: '/api/blade-system/dept/getQxList',
+		method: 'get',
+		params:row
+	})
+}
+
+export const putfiles = (row) => {
+	return http.request({
+		url: '/api/blade-resource/oss/endpoint/put-file',
+		header:{
+		'Content-Type': 'multipart/form-data'
+		},
+		method: 'post',
+		data:row
+	})
+}
+
+//blade-system/user/getQx
+
+export const getQx = (code) => {
+	return http.request({
+		url: '/api/blade-system/user/getQx',
+		method: 'get',
+		params:{
+			code
+		}
+	})
+}

+ 43 - 0
api/system/dept.js

@@ -0,0 +1,43 @@
+import http from '@/http/api.js'
+
+// 部门管理
+export const getList = (params) => {
+	return http.request({
+		url: '/api/blade-system/dept/lazy-list',
+		method: 'GET',
+		params
+	})
+}
+export const deptTree = (params) => {
+	return http.request({
+		url: '/api/blade-system/dept/tree',
+		method: 'GET',
+		params
+	})
+}
+
+export const remove = (ids) => {
+  return http.request({
+    url: '/api/blade-system/dept/remove',
+    method: 'post',
+    params: {
+      ids,
+    }
+  })
+}
+
+export const add = (row) => {
+  return http.request({
+    url: '/api/blade-system/dept/submit',
+    method: 'post',
+    data: row
+  })
+}
+
+export const update = (row) => {
+  return http.request({
+    url: '/api/blade-system/dept/submit',
+    method: 'post',
+    data: row
+  })
+}

+ 61 - 0
api/system/dict.js

@@ -0,0 +1,61 @@
+import http from '@/http/api.js'
+
+// 	
+export const dictionary = (params) => {
+	return http.request({
+		url: '/api/blade-system/dict/dictionary',
+		method: 'GET',
+		params
+	})
+}
+
+
+export const parentList = (params) => {
+	return http.request({
+		url: '/api/blade-system/dict/parent-list',
+		method: 'GET',
+		params
+	})
+}
+
+export const remove = (ids) => {
+  return http.request({
+    url: '/api/blade-system/dict/remove',
+    method: 'post',
+    params: {
+      ids,
+    }
+  })
+}
+
+export const add = (row) => {
+  return http.request({
+    url: '/api/blade-system/dict/submit',
+    method: 'post',
+    data: row
+  })
+}
+
+export const update = (row) => {
+  return http.request({
+    url: '/api/blade-system/dict/submit',
+    method: 'post',
+    data: row
+  })
+}
+
+export const dictTree = (params) => {
+	return http.request({
+		url: '/api/blade-system/dict/tree?code=DICT',
+		method: 'GET',
+		params
+	})
+}
+
+export const child = (params) => {
+	return http.request({
+		url: '/api/blade-system/dict/child-list',
+		method: 'GET',
+		params
+	})
+}

+ 36 - 0
api/system/post.js

@@ -0,0 +1,36 @@
+import http from '@/http/api.js'
+
+// 部门管理
+export const getList = (params) => {
+	return http.request({
+		url: '/api/blade-system/post/list',
+		method: 'GET',
+		params
+	})
+}
+
+export const remove = (ids) => {
+  return http.request({
+    url: '/api/blade-system/post/remove',
+    method: 'post',
+    params: {
+      ids,
+    }
+  })
+}
+
+export const add = (row) => {
+  return http.request({
+    url: '/api/blade-system/post/submit',
+    method: 'post',
+    data: row
+  })
+}
+
+export const update = (row) => {
+  return http.request({
+    url: '/api/blade-system/post/submit',
+    method: 'post',
+    data: row
+  })
+}

+ 69 - 0
api/system/role.js

@@ -0,0 +1,69 @@
+import http from '@/http/api.js'
+
+// 角色管理
+export const getList = (params) => {
+	return http.request({
+		url: '/api/blade-system/role/list',
+		method: 'GET',
+		params
+	})
+}
+
+export const remove = (ids) => {
+  return http.request({
+    url: '/api/blade-system/role/remove',
+    method: 'post',
+    params: {
+      ids,
+    }
+  })
+}
+
+export const add = (row) => {
+  return http.request({
+    url: '/api/blade-system/role/submit',
+    method: 'post',
+    data: row
+  })
+}
+
+export const update = (row) => {
+  return http.request({
+    url: '/api/blade-system/role/submit',
+    method: 'post',
+    data: row
+  })
+}
+
+
+export const roleTree = (params) => {
+	return http.request({
+		url: '/api/blade-system/role/tree-by-id',
+		method: 'GET',
+		params
+	})
+}
+
+export const menuTree = (params) => {
+	return http.request({
+		url: '/api/blade-system/menu/grant-tree',
+		method: 'GET',
+		params
+	})
+}
+
+export const menuTreeKey = (params) => {
+	return http.request({
+		url: '/api/blade-system/menu/role-tree-keys',
+		method: 'GET',
+		params
+	})
+}
+
+export const grant = (data) => {
+  return http.request({
+    url: '/api/blade-system/role/grant',
+    method: 'post',
+    data,
+  })
+}

+ 10 - 0
api/system/tenant.js

@@ -0,0 +1,10 @@
+import http from '@/http/api.js'
+
+// 租户
+export const tenantSelect= (params) => {
+	return http.request({
+		url: '/api/blade-system/tenant/select',
+		method: 'GET',
+		params
+	})
+}

+ 229 - 0
api/user.js

@@ -0,0 +1,229 @@
+import http from '@/http/api.js'
+
+// 获取token
+const token = (tenantId, username, password, type) => {
+	return http.request({
+		url: '/api/blade-auth/oauth/token',
+		method: 'POST',
+		header: {
+			'Tenant-Id': tenantId
+		},
+		params: {
+			tenantId,
+			username,
+			password,
+			grant_type: "password",
+			scope: "all",
+			type
+		}
+	})
+}
+export const getXqgk = () => {
+	return http.request({
+		url: '/blade-system/user/getXqgk',
+		method: 'get',
+	})
+}
+const refreshToken = (refresh_token, tenantId) => {
+	return http.request({
+		url: '/api/blade-auth/oauth/token',
+		method: 'post',
+		headers: {
+			'Tenant-Id': tenantId
+		},
+		params: {
+			tenantId,
+			refresh_token,
+			grant_type: "refresh_token",
+			scope: "all",
+		}
+	})
+}
+
+// 获取用户信息
+export const userInfo = () => {
+	 return http.request({
+	 	url: '/api/blade-system/user/getUserInfo',
+	 	method: 'GET',
+	})
+}
+
+// 获取用户信息
+export const getUser = (id) => {
+	 return http.request({
+	 	url: '/api/blade-system/user/detail',
+		method: 'GET',
+	 	params: { id }
+	})
+}
+// 获取用户信息
+export const wxlogin = (row) => {	
+	 return http.request({
+	 	url: '/api/blade-system/user/wxlogi_qs',
+	 	method: 'POST',
+	 	header: {
+				// 'Content-Type': 'application/x-www-form-urlencoded'
+	 			 'Content-Type': 'application/x-www-form-urlencoded'
+	 		},
+	 	data: row
+	 })
+}
+//blade-auth/oauth/token
+export const weblogin = (row) => {	
+	 return http.request({
+	 	url: '/api/blade-auth/oauth/token',
+	 	method: 'POST',
+	 	header: {
+				// 'Content-Type': 'application/x-www-form-urlencoded'
+	 			 'Content-Type': 'application/x-www-form-urlencoded'
+	 		},
+	 	data: row
+	 })
+}
+
+
+
+
+// 获取帐户信息
+export const getzhxx = (yhbh) => {
+
+		
+	 return http.request({
+	 	url: '/api/miaos/zhxx/detail',
+	 	method: 'GET',
+	 	params: { yhbh }
+	 })
+}
+
+
+//blade-system/user/registerUser
+
+// 用户注册
+export const registerUser = (row) => {
+	return wx.cloud.callContainer({
+		  "path": "/blade-system/user/registerUser_qs",
+		  "header": {
+			"X-WX-SERVICE": "msserver",
+			'Content-Type': 'application/x-www-form-urlencoded'
+		  },
+		  "method": "POST",
+		 "data":row
+		})
+	// return http.request({
+	// 	url: '/api/blade-system/user/registerUser_qs',
+	// 	method: 'POST',
+	// 	header: {
+	// 			// 'Content-Type': 'application/x-www-form-urlencoded'
+	// 			 'Content-Type': 'application/x-www-form-urlencoded'
+	// 		},
+	// 	data: row
+	// })
+}
+// 用户手机号码
+export const getPhoneNumbers = (row) => {
+	 return http.request({
+	 	url: '/api/blade-system/user/getPhoneNumber_qs',
+	 	method: 'POST',
+		header: {
+	 				// 'Content-Type': 'application/x-www-form-urlencoded'
+	 				 'Content-Type': 'application/x-www-form-urlencoded'
+	 			},
+	 	data: row
+	 })
+}
+
+
+export const updateinfo = (row) => {
+	return http.request({
+		url: '/api/blade-system/user/update-info',
+		method: 'POST',
+		data: row
+	})
+}
+//个人信息
+export const updateinfos = (row) => {
+	return http.request({
+		url: '/api/blade-system/user/update',
+		method: 'POST',
+		data: row
+	})
+}
+
+
+// 部门
+//1、学校列表
+
+export const university_list = () => {
+	return wx.cloud.callContainer({
+		  "path": "/blade-system/dept/university-list",
+		  "header": {
+			"X-WX-SERVICE": "msserver"
+		  },
+		  "method": "GET",
+		 "data":{}
+		})
+	// return http.request({
+	// 	url: '/api/blade-system/dept/university-list',
+	// 	method: 'GET'
+	// })
+}
+
+export const college_list = (deptId) => {
+	return wx.cloud.callContainer({
+		  "path": "/blade-system/dept/college-list",
+		  "header": {
+			"X-WX-SERVICE": "msserver"
+		  },
+		  "method": "GET",
+		 "data":{deptId}
+		})
+		
+	// return http.request({
+	// 	url: '/api/blade-system/dept/college-list',
+	// 	method: 'GET',
+	// 	params:{
+	// 		deptId
+	// 	}
+	// })
+}
+export const specialty_list = (deptId) => {
+	return wx.cloud.callContainer({
+		  "path": "/blade-system/dept/specialty-list",
+		  "header": {
+			"X-WX-SERVICE": "msserver"
+		  },
+		  "method": "GET",
+		 "data":{deptId}
+		})
+	// return http.request({
+	// 	url: '/api/blade-system/dept/specialty-list',
+	// 	method: 'GET',
+	// 	params:{
+	// 		deptId
+	// 	}
+	// })
+}
+export const grade_list = (deptId) => {
+	return wx.cloud.callContainer({
+		  "path": "/blade-system/dept/grade-list",
+		  "header": {
+			"X-WX-SERVICE": "msserver"
+		  },
+		  "method": "GET",
+		 "data":{deptId}
+		})
+	// return http.request({
+	// 	url: '/api/blade-system/dept/grade-list',
+	// 	method: 'GET',
+	// 	params:{
+	// 		deptId
+	// 	}
+	// })
+}
+export default {
+	token,
+	wxlogin,
+	userInfo,
+	updateinfos,
+	refreshToken
+}

+ 20 - 0
common/setUserInfo.js

@@ -0,0 +1,20 @@
+ export default() => {
+    return new Promise((resolve, reject) => {
+        uni.getUserProfile({
+            desc: '用于完善个人资料' // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写
+        })
+        .then((response) => {
+            if (response[1].errMsg === 'getUserProfile:ok') {
+                uni.setStorageSync('userInfo', response[1].userInfo); //存储用户信息
+                resolve(response[1]);//返回的信息 
+            }else {
+                uni.showToast({
+                    title: '授权失敗',
+                    icon: 'error'
+                });
+            }
+        }).catch((reject) => {
+             console.log('拒绝授权',reject)
+        })
+    })
+}

+ 35 - 0
common/setting.js

@@ -0,0 +1,35 @@
+/**
+ * 全局变量配置
+ */
+module.exports = {
+	// 应用名
+	name: 'Rider',
+	// 应用logo,支持本地路径和网络路径
+	logo: '/static/images/logo.png',
+	// 版本号
+	version: '2.0.1',
+	// 开发环境接口Url
+	// #ifdef H5
+	devUrl: 'http://192.168.0.13:2345',
+	// #endif
+	// #ifndef H5
+	devUrl: 'http://192.168.0.13:2345',
+	// #endif
+	// 线上环境接口Url
+	prodUrl: 'http://192.168.0.13:2345/api',
+	// 后端数据的接收方式application/json;charset=UTF-8或者application/x-www-form-urlencoded;charset=UTF-8
+	contentType: 'application/json;charset=UTF-8',
+	baseurl:'http://192.168.0.13:2345',
+	// 后端返回状态码
+	codeName: 'code',
+	// 操作正常code
+	successCode: 200,
+	// 登录失效code
+	invalidCode: 401,
+	// 客户端ID
+	clientId: 'saber',
+	// 客户端密钥
+	clientSecret: 'saber_secret',
+	// token过期时间
+	tokenTime: 3000,
+}

+ 99 - 0
http/api.js

@@ -0,0 +1,99 @@
+import {
+	clientId,
+	clientSecret
+} from '@/common/setting'
+import {
+	options
+} from '@/http/config.js';
+import {
+	Base64
+} from '@/utils/base64.js';
+// wx.cloud.init({
+//   resourceAppid: 'wxade26aebf348223e', // 环境所属的账号appid
+//   resourceEnv: 'prod-4gkkrcvs42a25d6a', // 微信云托管的环境ID
+//   env: 'prod-4gkkrcvs42a25d6a',
+// })
+import Request from '@/utils/luch-request/index.js';
+const http = new Request(options);
+
+http.interceptors.request.use((config) => { // 可使用async await 做异步操作
+	// 假设有token值需要在头部需要携带
+	let accessToken = uni.getStorageSync('accessToken');
+	if (accessToken) {
+		config.header['Blade-Auth'] = 'bearer ' + accessToken;
+	}
+	// 客户端认证参数
+	config.header['Authorization'] = 'Basic ' + Base64.encode(clientId + ':' + clientSecret);
+	
+	// #ifndef H5
+	let url = config.url
+	if (process.env.NODE_ENV == 'development' && !url.startsWith("http")) {
+		url = url.substring(url.indexOf('/api') + 4)
+		config.url = url
+	}
+	// #endif
+
+	// 额外参数
+	// config.data = config.data || {};
+	// config.data.pf = uni.getSystemInfoSync().platform;
+	// config.data.sys = uni.getSystemInfoSync().system;
+
+	// 演示custom 用处
+	// if (config.custom.auth) {
+	//   config.header.token = 'token'
+	// }
+	// if (config.custom.loading) {
+	//  uni.showLoading()
+	// }
+	/**
+	 /* 演示
+	 if (!token) { // 如果token不存在,return Promise.reject(config) 会取消本次请求
+	    return Promise.reject(config)
+	  }
+	 **/
+	return config
+}, config => { // 可使用async await 做异步操作
+	return Promise.reject(config)
+})
+http.interceptors.response.use((response) => {
+	// 若有数据返回则通过
+	if (response.data.access_token || response.data.key) {
+		return response.data
+	}
+	// 服务端返回的状态码不等于200,则reject()
+	if (response.data.code !== 200) {
+		uni.showToast({
+			title: response.data.msg,
+			icon: 'none'
+		});
+		//return Promise.reject(response);
+	}
+	if(response.data.code== 100){
+		return response.data;
+	}
+	if(response.data.code== 101){
+		return response.data;
+	}
+	if(response.data.code== 401){
+		return response.data;
+	}
+	if(response.data.code== 102){
+		return response.data;
+	}
+	return response.data;
+}, (response) => {
+	/*  对响应错误做点什么 (statusCode !== 200)*/
+	uni.showToast({
+		title: response.data.msg,
+		icon: 'none'
+	});
+	if (response.statusCode == 401) {
+		const pages = getCurrentPages()
+		const currentPage = pages[pages.length - 1]
+		uni.redirectTo({
+			url: `/pageA/my/login?redirect=/${currentPage.route}`
+		})
+	}
+	return Promise.reject(response)
+})
+export default http;

+ 44 - 0
http/config.js

@@ -0,0 +1,44 @@
+import {
+	devUrl,
+	prodUrl,
+	contentType
+} from '@/common/setting'
+
+var options = {
+	baseURL: process.env.NODE_ENV === 'development' ? devUrl : prodUrl,
+	header: {
+		'Content-Type': contentType
+	},
+	method: 'POST',
+	dataType: 'json',
+	// #ifndef MP-ALIPAY || APP-PLUS
+	responseType: 'text',
+	// #endif
+	// 注:如果局部custom与全局custom有同名属性,则后面的属性会覆盖前面的属性,相当于Object.assign(全局,局部)
+	custom: {}, // 全局自定义参数默认值
+	// #ifdef MP-ALIPAY || MP-WEIXIN
+	timeout: 30000,
+	// #endif
+	// #ifdef APP-PLUS
+	sslVerify: true,
+	// #endif
+	// #ifdef H5
+	// 跨域请求时是否携带凭证(cookies)仅H5支持(HBuilderX 2.6.15+)
+	//withCredentials: false,
+	// #endif
+	// #ifdef APP-PLUS
+	firstIpv4: false, // DNS解析时优先使用ipv4 仅 App-Android 支持 (HBuilderX 2.8.0+)
+	// #endif
+	// 局部优先级高于全局,返回当前请求的task,options。请勿在此处修改options。非必填
+	// getTask: (task, options) => {
+	// 相当于设置了请求超时时间500ms
+	//   setTimeout(() => {
+	//     task.abort()
+	//   }, 500)
+	// },
+	// 全局自定义验证器。参数为statusCode 且必存在,不用判断空情况。
+	// validateStatus: (statusCode) => { // statusCode 必存在。此处示例为全局默认配置
+	// 	return statusCode >= 200 && statusCode < 300
+	// }
+};
+export { options };

+ 18 - 0
http/install.js

@@ -0,0 +1,18 @@
+// 获取api目录所有js文件
+const files = require.context('@/api', false, /\.js$/)
+// 此处第二个参数vm,就是我们在页面使用的this,可以通过vm获取vuex等操作
+const install = (Vue, vm) => {
+	// 将各个定义的接口名称,统一放进对象挂载到vm.$u.api下(因为vm就是this,也即this.$u.api)
+	// 自动将所有api挂载到vm.$u.api中
+	vm.$u.api = {}
+	files.keys().forEach(key => {
+		const api = files(key).default
+		for (let item in api) {
+			vm.$u.api[item] = api[item]
+		}
+	})
+}
+
+export default {
+	install
+}

+ 22 - 0
index.html

@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <script>
+      var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') ||
+        CSS.supports('top: constant(a)'))
+      document.write(
+        '<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' +
+        (coverSupport ? ', viewport-fit=cover' : '') + '" />')
+    </script>
+    <title></title>
+    <!--preload-links-->
+    <!--app-context-->
+  </head>
+  <body>
+    <div id="app"><!--app-html--></div>
+    <script type="module" src="/main.js"></script>
+  </body>
+  
+
+</html>

+ 301 - 0
jyzPage/jyz/csjl.vue

@@ -0,0 +1,301 @@
+<template>
+	<view class="contaienr">
+	
+		<view class="searchbox">
+			<u-search @search="searchKyeword" @custom="searchKyeword" :showAction="true" actionText="搜索" :animation="true"></u-search>	
+		</view>		
+			 
+		 <view class="card_list">
+			 <view class="item" v-for="(row, index) in listData">
+				 <view class="box">
+				 	<view class="img">
+				 		<image style="width:48rpx" class="icon" mode="widthFix" src="../../static/jf/icon_place_blue_24@2x.png"></image>
+				 	</view>
+				 	<view>
+				 		<view class="smtitle" style="position: relative;">
+				 			{{row.gmfmc}}
+				 		</view>
+				 	</view>
+				 </view>
+				 
+				 <view class="info">
+				 	<view class="info_item">
+				 		<view class="icon">
+				 			<image class="icon_img" src="../../static/jf/icon_oil_gray_16@2x.png" mode=""></image>
+				 		</view>
+				 		<view class="title">
+				 			{{row.gmqyxh}}
+				 		</view>
+				 	</view>
+				 	
+				 	<view class="info_item">
+				 		<view class="icon">
+				 			<image class="icon_img" src="../../static/jf/icon_amount_gray_16@2x.png" mode=""></image>
+				 		</view>
+				 		<view class="title">
+				 			{{row.gmss}}
+				 		</view>
+				 	</view>
+				 	
+				 	<view class="info_item">
+				 		<view class="icon">
+				 			<image class="icon_img" src="../../static/jf/icon_time_gray_16@2x.png" mode=""></image>
+				 		</view>
+				 		<view class="title">
+				 			{{row.createTime}}
+				 		</view>
+				 	</view>
+				 	<u-line dashed></u-line>
+				 	
+				 	<view class="info_item"  style="text-align: right;padding: 24rpx 0 0;display: inline-block;width: 100%;">
+				 		<view class="button"  @click="goPage(row)">查看</view>
+				 	</view>
+				 </view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import { jyzSellPage } from '@/api/jfsc.js'
+	export default{
+		data(){
+			return{
+				keyword:'',
+				listData:[],
+				pages:{
+					size: 10,
+					total: 0,
+					current:1,
+				},
+				cartList:[
+				  {id:1,ishave:true,name:'吉林省玄武科技有限公司(经办人 周琦)',price:1000,count:1,img:''},
+				  {id:2,ishave:false,name:'李思思',price:800,count:1,img:'https://gw.alicdn.com/imgextra/O1CN01AQckRr1UNL8YJGGu0_!!2849252505.jpg'},
+				  {id:3,ishave:true,name:'吉林省玄武科技有限公司(经办人 周琦)',price:1200,count:1,img:'https://gw.alicdn.com/imgextra/O1CN01AQckRr1UNL8YJGGu0_!!2849252505.jpg'}
+				]
+			
+			}
+		},
+		onLoad() {
+			this.inits()
+		},
+		methods:{
+			searchKyeword(){
+				this.inits()
+			},
+			inits(){
+				uni.showLoading({
+					title: '加载中'
+				});
+				jyzSellPage(this.keyword,this.pages.current).then(res=>{
+					//this.pages.current++
+					this.listData = res.data.records
+					if(res.data.length<10 ) this.status = 'nomore';
+				}).finally(()=>{
+					uni.hideLoading()
+				})
+			},
+			back(){
+				uni.switchTab({
+					   url: "/pages/my/index", // 确保 url 是正确的
+					 });
+			},
+			
+			goPage(row){
+				if(row.gmflx==1){
+					uni.navigateTo({
+						url:`/jyzPage/jyz/personjl?id=${row.id}`
+					})
+				}else{
+					uni.navigateTo({
+						url:`/jyzPage/jyz/qiyejl?id=${row.id}`
+					})
+				}
+				
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	/deep/ .uni-navbar__content{
+		border-bottom: none !important;
+	}
+	.contaienr{
+		padding: 0 24rpx;
+		box-sizing: border-box;
+		background: #F8F8F8;
+		position: relative;
+		min-height: 100vh;
+		.searchbox{
+			padding: 24rpx 0;
+			box-sizing: border-box;
+		}
+		.card_list{
+			border-radius: 24rpx;
+			box-sizing: border-box;
+			.info{
+				padding: 24rpx 12rpx 0;
+				box-sizing: border-box;
+				.info_item{
+					padding: 8rpx 0;
+					box-sizing: border-box;
+					display: grid;
+					grid-template-columns:60rpx calc(100% - 60rpx);
+					.icon{
+						.icon_img{
+							width: 32rpx;
+							height: 32rpx;
+						}
+					}
+					.title{
+						height: 40rpx;
+						font-family: PingFangSC, PingFang SC;
+						font-weight: 400;
+						font-size: 28rpx;
+						color: #666666;
+						line-height: 40rpx;
+						text-align: left;
+						font-style: normal;
+					}
+					.button{
+						width: 160rpx;
+						height: 64rpx;
+						background: linear-gradient( to top, #65CBFF 0%, #0260FE 100%);
+						border-radius: 32rpx;
+						font-family: PingFangSC, PingFang SC;
+						font-weight: 500;
+						font-size: 32rpx;
+						color: #FFFFFF;
+						line-height: 64rpx;
+						text-align: center;
+						font-style: normal;
+						float: right;
+					}
+					.dlq{
+						background: #FFFFFF;
+						box-shadow: 0rpx 2rpx 16rpx 0rpx rgba(0,0,0,0.08);
+						border-radius: 16rpx;
+						font-family: PingFangSC, PingFang SC;
+						font-weight: 500;
+						font-size: 28rpx;
+						color: #106DFF;
+						line-height: 40rpx;
+						text-align: right;
+						font-style: normal;
+						float: right;
+					}
+				}
+			}
+			.item{
+				margin-bottom: 12rpx;
+				background: linear-gradient( 180deg, #F0F5FF 0%, #FFFFFF 100%);
+				border-radius: 16rpx;
+				border: 2rpx solid #FFFFFF;
+				padding: 24rpx;
+				box-sizing: border-box;
+				border-radius: 24rpx;
+				
+				.box{
+					display: grid;
+					grid-template-columns:  80rpx calc(100% - 80rpx);
+					.control{
+						display: grid;
+						grid-template-columns: 50% 50%;
+						.num{
+							height: 44rpx;
+							font-family: DIN, DIN;
+							font-weight: 500;
+							font-size: 36rpx;
+							color: #FF1D1D;
+							line-height: 44rpx;
+							text-align: left;
+							font-style: normal;
+							padding-left: 10rpx;
+							box-sizing: border-box;
+						}
+					}
+					.img{
+						text-align: center;
+						.icon{
+							height: 128rpx;
+							border-radius: 16rpx;
+							
+						}
+						
+					}
+					.smtitle{
+						height: 48rpx;
+						font-family: PingFangSC, PingFang SC;
+						font-weight: 500;
+						font-size: 32rpx;
+						color: #111111;
+						line-height: 48rpx;
+						text-align: left;
+						font-style: normal;
+						padding-left: 10rpx;
+						box-sizing: border-box;
+						display: -webkit-box;
+						  -webkit-box-orient: vertical;
+						  -webkit-line-clamp: 2;
+						  overflow: hidden;
+						  text-overflow: ellipsis;
+					}
+					.checkbox{
+						width: 32rpx;
+						height: 32rpx;
+						border-radius: 50%;
+						margin-top: 23px;
+						.cancel{
+							display: inline-block;
+							width: 88rpx;
+							height: 40rpx;
+							background: rgba(153,153,153,0.1);
+							border-radius: 8rpx;
+							height: 32rpx;
+							font-family: PingFangSC, PingFang SC;
+							font-weight: 500;
+							font-size: 24rpx;
+							color: #999999;
+							line-height: 40rpx;
+							text-align: center;
+							font-style: normal;
+						}
+						.have{
+							display: inline-block;
+							width: 88rpx;
+							height: 40rpx;
+							background: rgba(153,153,153,0.1);
+							border-radius: 8rpx;
+							height: 32rpx;
+							font-family: PingFangSC, PingFang SC;
+							font-weight: 500;
+							font-size: 24rpx;
+							color: #106DFF;
+							line-height: 32rpx;
+							text-align: center;
+							font-style: normal;
+						}
+						.num{
+							display: inline-block;
+							width: 88rpx;
+							height: 40rpx;
+							height: 32rpx;
+							font-family: DIN, DIN;
+							font-weight: 500;
+							font-size: 24rpx;
+							color: #999999;
+							line-height: 32rpx;
+							text-align: center;
+							font-style: normal;
+						}
+					}
+					.isSelect{
+						background: linear-gradient(to bottom,#0260FE,#61C6FF);
+					}
+				}
+			}
+		}
+	}
+	
+</style>

+ 330 - 0
jyzPage/jyz/jyzdj.vue

@@ -0,0 +1,330 @@
+<template>
+	<view class="container">
+
+			 <view class="forms">
+				 	<u--form :rules="rules"
+						labelPosition="left"
+						:model="yhxx" labelWidth="120"
+						ref="uForm">
+					<u-form-item
+							label="加油站名称"
+							prop="jyzmc"
+							borderBottom
+							ref="item1">
+						<u--input
+								v-model="yhxx.jyzmc"
+								placeholder="请输入加油站名称"
+								border="none"
+						></u--input>
+					</u-form-item>
+					
+					<u-form-item
+							label="统一社会信用代码"
+							prop="shtyxydm"
+							borderBottom
+							ref="item1">
+						<u--input
+								v-model="yhxx.shtyxydm"
+								placeholder="请输入统一社会信用代码"
+								border="none"
+						></u--input>
+					</u-form-item>
+					
+					<u-form-item
+							label="加油站照片"
+							prop="jyzzp"
+							borderBottom
+							placeholder=""
+							ref="item1">
+						<view class="zpbox" v-if="!yhxx.jyzzp" @click="uploadimg">
+							<uni-icons type="plusempty" size="30"></uni-icons>
+						</view>
+						<view v-else>
+							<image mode="widthFix" :src="yhxx.jyzzp" style="width: 120rpx;"></image>
+						</view>
+					</u-form-item>
+					
+					<u-form-item
+							label="法人姓名"
+							prop="frxm"
+							borderBottom
+							ref="item1">
+						<u--input
+								v-model="yhxx.frxm"
+								placeholder="请输入法人姓名"
+								border="none"
+						></u--input>
+					</u-form-item>
+					
+					<u-form-item
+							label="法人电话"
+							prop="frdh"
+							borderBottom
+							ref="item1">
+						<u--input
+								v-model="yhxx.frdh"
+								placeholder="请输入法人电话"
+								border="none"
+						></u--input>
+					</u-form-item>
+					
+					<u-form-item
+							label="负责人姓名"
+							prop="fzrxm"
+							borderBottom
+							ref="item1">
+						<u--input
+								v-model="yhxx.fzrxm"
+								placeholder="请输入负责人姓名"
+								border="none"
+						></u--input>
+					</u-form-item>
+					
+					<u-form-item
+							label="负责人电话"
+							prop="fzrdh"
+							borderBottom
+							ref="item1">
+						<u--input
+								v-model="yhxx.fzrdh"
+								placeholder="请输入负责人电话"
+								border="none"
+						></u--input>
+					</u-form-item>
+					
+					<u-form-item
+							label="加油站地址"
+							prop="jyzxz"
+							borderBottom
+							ref="item1">
+						<u--input
+								v-model="yhxx.jyzxz"
+								placeholder="请输入加油站地址"
+								border="none"
+						></u--input>
+					</u-form-item>
+					
+					<u-form-item
+							label="管辖地派出所"
+							prop="sspcs"
+							borderBottom
+							ref="item1">
+						<uni-data-picker  placeholder="请选择管辖地派出所" popup-title="请选择管辖地派出所" :localdata="dataTreepcs" v-model="yhxx.sspcs"
+							@change="onchange" @nodeclick="onnodeclick" @popupopened="onpopupopened" @popupclosed="onpopupclosed">
+						</uni-data-picker>
+					</u-form-item>
+					
+					
+					<u-form-item
+							label="管辖地社区"
+							prop="sssq"
+							borderBottom
+							ref="item1">
+						<uni-data-picker  placeholder="请选择社区" popup-title="请选择社区" :localdata="dataTree" v-model="yhxx.sssq"
+							@change="onchange" @nodeclick="onnodeclick2" @popupopened="onpopupopened" @popupclosed="onpopupclosed">
+						</uni-data-picker>
+					</u-form-item>
+				</u--form>
+				
+				<view @click="dengji" class="djbutton">登记</view>
+			 </view>
+	</view>
+</template>
+
+<script>
+	import { jyzdjSave } from "@/api/jfsc.js"
+	import { getDeptList,putfiles } from "@/api/my.js"
+	import { baseurl } from "../../common/setting"
+	export default{
+		data(){
+			return{
+				dataTree:[],
+				dataTreepcs:[],
+				show: true,
+				columns:[],
+				columnData: [],
+				fileList1: [],
+				yhxx:{
+					jyzmc:'',
+					shtyxydm:'',
+					frxm:'',
+				},
+				rules:{
+					'jyzmc': {
+						type: 'string',
+						required: true,
+						message: '请填写加油站名称',
+						trigger: ['blur', 'change']
+					},
+					'shtyxydm': {
+						type: 'string',
+						required: true,
+						message: '请填写社会统一信用代码',
+						trigger: ['blur', 'change']
+					},
+					'frxm': {
+						type: 'string',
+						required: true,
+						message: '请填写法人姓名',
+						trigger: ['blur', 'change']
+					}
+				}
+			}
+		},
+		
+		onLoad() {
+			uni.showLoading({
+				title: '加载中'
+			});
+			getDeptList().then(res=>{
+				res.data.forEach((vs,v)=>{
+					vs.text = vs.label
+				})
+			   this.dataTreepcs = res.data
+			   uni.hideLoading()
+			}).finally(()=>{
+				uni.hideLoading()
+			})
+		},
+		
+		methods:{
+			dengji(){
+				this.$refs.uForm.validate().then(res => {
+					uni.showLoading({
+						title: '加载中'
+					});
+					jyzdjSave(this.yhxx).then(res=>{
+						uni.showToast({
+							success:'登记成功'
+						})	
+					uni.switchTab({
+					   url: "/pages/my/index", // 确保 url 是正确的
+					 });	
+					this.$refs.uForm.resetFields()
+					}).finally(()=>{
+						uni.hideLoading()
+					})
+				}).catch(errors => {
+					
+				})
+			
+			},
+			back(){
+				uni.switchTab({
+				   url: "/pages/my/index", // 确保 url 是正确的
+				 });
+			},
+			goPage(url){
+				uni.navigateTo({
+					url:url
+				})
+			},
+			onnodeclick(e) {
+				getDeptList(e.value).then(res=>{
+					res.data.forEach((vs,v)=>{
+						vs.text = vs.label
+					})
+				   this.dataTree = res.data
+				}).finally(()=>{
+					uni.hideLoading()
+				})
+			},
+			onnodeclick2(e){
+				
+			},
+			onpopupopened(e) {
+				console.log('popupopened');
+			},
+			onpopupclosed(e) {
+				console.log('popupclosed');
+			},
+			onchange(e) {
+				console.log('onchange:', e);
+			},
+			// 删除图片
+			deletePic(event) {
+				this[`fileList${event.name}`].splice(event.index, 1)
+			},
+			
+			uploadimg(){
+				uni.chooseImage({
+					success: (chooseImageRes) => {
+						const tempFilePaths = chooseImageRes.tempFilePaths;
+						uni.uploadFile({
+							url: baseurl+'/blade-resource/oss/endpoint/put-file', //仅为示例,非真实的接口地址
+							filePath: tempFilePaths[0],
+							name: 'file',
+							// 客户端认证参数
+							header:{
+								Authorization:'Basic c2FiZXI6c2FiZXJfc2VjcmV0'
+							},
+							formData: {
+								'file': tempFilePaths[0]
+							},
+							success: (res) => {
+								let datalink = JSON.parse(res.data)
+								if(datalink.code == 200) {
+								this.$set(this.yhxx,'jyzzp',datalink.data.link)
+								  //this.yhxx.jyzzp = datalink.data.link
+								  this.$u.func.showToast({title:'图片上传成功'})
+								}
+							},
+							fail: (err) => {
+								console.log(err);
+							}
+							
+						});
+					}
+				});
+				//this.userInfo.jyzzp
+			},
+			
+		}
+	}
+</script>
+
+<style lang="scss">
+	/deep/ .uni-navbar__content{
+		border-bottom: none !important;
+	}
+	.container{
+		height: 100vh;
+		padding: 24rpx 24rpx 0;
+		box-sizing: border-box;
+		background: #F8F8F8;
+	}
+	.zpbox{
+		width: 120rpx;
+		height: 120rpx;
+		border: 1px dotted #ddd;
+		text-align: center;
+		line-height: 120rpx;
+		display: inline-block;
+		border-radius: 3px;
+	}
+	.forms{
+		width: calc(100% - 24rpx);
+		margin: auto;
+		background: #FFF;
+		border-radius: 15px;
+		padding:24rpx;
+		box-sizing: border-box;
+	}
+	.djbutton{
+		height: 88rpx;
+		background: linear-gradient( to top, #65CBFF 0%, #0260FE 100%);
+		border-radius: 44rpx;
+		opacity: 0.5;
+		font-family: PingFangSC, PingFang SC;
+		font-weight: 500;
+		font-size: 36rpx;
+		color: #FFFFFF;
+		line-height: 88rpx;
+		text-align: center;
+		font-style: normal;
+		margin-top: 48rpx;
+	}
+	/deep/ .input-value-border{
+	 border: 0 !important;
+}
+</style>

+ 217 - 0
jyzPage/jyz/personjl.vue

@@ -0,0 +1,217 @@
+<template>
+	<view class="contaienr">
+	
+		<view class="bg">
+			<image class="bgimg" src="../../static/jf/bj_blue@2x.png"></image>
+		</view>	 
+			 
+		<view class="content">
+			<view class="topbox">
+				<view class="con">
+					<view class="icon_con">
+						<image class="img" src="../../static/jf/icon_people_blue_24@2x.png"></image>
+					</view>
+					
+					<view class="info_con">
+						<view class="title">{{dataList.gmfmc}}</view>
+						<view class="stit">{{dataList.gmfzjh}}</view>
+					</view>
+				</view>
+			</view>
+			
+			<view class="cell_item" style="margin-top: 24rpx;">
+				<view class="title">购买方信息</view>
+				<view style="margin: 12rpx 0;height: 1rpx;background: #E7E7E7;"></view>
+				<view class="description">
+					<view class="name">购买方名称</view> <view class="other">{{dataList.gmfmc}}</view>
+					<view class="name">购买方证件号</view> <view class="other">{{dataList.gmfzjh}}</view>
+					<view class="name">购买方电话</view> <view class="other">{{dataList.gmflxdh}}</view>
+				</view>
+			</view>
+			
+			<view class="cell_item" style="margin-top: 24rpx;">
+				<view class="title">购买记录</view>
+				<view style="margin: 12rpx 0;height: 1rpx;background: #E7E7E7;"></view>
+				<view class="description">
+					<view class="name">汽油型号</view> <view class="other">{{dataList.gmqyxh}}</view>
+					<view class="name">汽油升数</view> <view class="other">{{dataList.gmss}}</view>
+					<view class="name">购买用途</view> <view class="other">{{dataList.gmyt}}</view>
+					<view class="name">购买时间</view> <view class="other">{{dataList.createTime}}</view>
+					<view class="name">是否合规购油</view> <view class="other">{{dataList.sfhggy==1?'是':'否'}}</view>
+					<view class="name">派出所文件</view> <view class="other">
+						 <view class="album">
+							<view class="album__content">
+								<u-album :urls="[dataList.jyzzp]" keyName="src2"></u-album>
+							</view>
+						</view>
+					</view>
+				</view>
+			</view>
+			
+		</view>
+	</view>
+</template>
+
+<script>
+	import { jyzSellDetail } from "@/api/jfsc.js"
+	export default{
+		data(){
+			return{
+				dataList:{},
+				urls1: [{
+					src2: 'https://cdn.uviewui.com/uview/album/1.jpg',
+				}]
+			}
+		},
+		onLoad(option) {
+			uni.showLoading({
+				title: '加载中'
+			});
+			jyzSellDetail(option.id).then(res=>{
+				this.dataList = res.data
+			}).finally(()=>{
+				uni.hideLoading()
+			})
+		},
+		methods:{
+		
+			back(){
+				uni.navigateBack({
+					delta: 1
+				  });
+			},
+			goPage(url){
+				uni.navigateTo({
+					url:url
+				})
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	/deep/ .uni-navbar__content{
+		border-bottom: none !important;
+	}
+	.contaienr{
+		box-sizing: border-box;
+		background: #F8F8F8;
+		position: relative;
+		min-height: 100vh;
+		
+		.cell_item{
+			background: #FFFFFF;
+			box-shadow: 0rpx 2rpx 16rpx 0rpx rgba(0,0,0,0.08);
+			border-radius: 16rpx;
+			padding: 24rpx;
+			box-sizing: border-box;
+			background: #FFF;
+			position: relative;
+			.description{
+				display: grid;
+				grid-template-columns: 33.3% 66.66%;
+				view{
+					padding: 6rpx 0;
+				}
+				.name{
+					height: 40rpx;
+					font-family: PingFangSC, PingFang SC;
+					font-weight: 400;
+					font-size: 28rpx;
+					color: #999999;
+					line-height: 40rpx;
+					text-align: left;
+					font-style: normal;
+				}
+				.other{
+					min-height: 40rpx;
+					font-family: PingFangSC, PingFang SC;
+					font-weight: 400;
+					font-size: 28rpx;
+					color: #111111;
+					line-height: 40rpx;
+					text-align: left;
+					font-style: normal;
+				}
+			}
+			.title{
+				height: 44rpx;
+				font-family: PingFangSC, PingFang SC;
+				font-weight: 500;
+				font-size: 32rpx;
+				color: #111111;
+				line-height: 44rpx;
+				text-align: left;
+				font-style: normal;
+			}
+		}
+		.bg{
+			position: absolute;
+			top: 0;
+			left: 0;
+			right: 0;
+			.bgimg{
+				width: 100%;
+			}
+		}
+		.content{
+			padding: 0 24rpx;
+			background: #F8F8F8;
+		}
+		.topbox{
+			height: 192rpx;
+			position: relative;
+			width: 100%;
+			.con{
+				height: 144rpx;
+				background: linear-gradient( 180deg, #F0F5FF 0%, #FFFFFF 100%);
+				box-shadow: 0rpx 2rpx 16rpx 0rpx rgba(0,0,0,0.08);
+				border-radius: 16rpx;
+				border: 2rpx solid #FFFFFF;
+				display: grid;
+				grid-template-columns: 130rpx calc(100% - 130rpx);
+				position: absolute;
+				width: 100%;
+				left:0;
+				bottom: 0;
+				.img{
+					width: 96rpx;
+					height: 96rpx;
+					margin-top: 24rpx;
+				}
+				.icon_con{
+					text-align: center;
+				}
+				.info_con{
+					.title{
+						height: 44rpx;
+						font-family: PingFangSC, PingFang SC;
+						font-weight: 500;
+						font-size: 32rpx;
+						color: #111111;
+						line-height: 44rpx;
+						text-align: left;
+						font-style: normal;
+						margin-top: 33rpx;
+						white-space: nowrap; /* 确保文本在一行内显示 */
+						  overflow: hidden; /* 隐藏溢出的内容 */
+						  text-overflow: ellipsis; /* 使用省略号表示文本溢出 */
+					}
+					.stit{
+						height: 34rpx;
+						font-family: PingFangSC, PingFang SC;
+						font-weight: 400;
+						font-size: 24rpx;
+						color: #111111;
+						line-height: 34rpx;
+						text-align: left;
+						font-style: normal;
+						white-space: nowrap; /* 确保文本在一行内显示 */
+						  overflow: hidden; /* 隐藏溢出的内容 */
+						  text-overflow: ellipsis; /* 使用省略号表示文本溢出 */
+					}
+				}
+			}
+		}
+	}
+</style>

+ 220 - 0
jyzPage/jyz/qiyejl.vue

@@ -0,0 +1,220 @@
+<template>
+	<view class="contaienr">
+		
+		<view class="bg">
+			<image class="bgimg" src="../../static/jf/bj_blue@2x.png"></image>
+		</view>	 
+			 
+		<view class="content">
+			<view class="topbox">
+				<view class="con">
+					<view class="icon_con">
+						<image class="img" src="../../static/jf/icon_place_blue_24@2x.png"></image>
+					</view>
+					
+					<view class="info_con">
+						<view class="title">{{dataList.gmfmc}}</view>
+						<view class="stit">{{dataList.shtyxydm}}</view>
+					</view>
+				</view>
+			</view>
+			
+			<view class="cell_item" style="margin-top: 24rpx;">
+				<view class="title">购买方信息</view>
+				<view style="margin: 12rpx 0;height: 1rpx;background: #E7E7E7;"></view>
+				<view class="description">
+					<view class="name">购买方名称</view> <view class="other">{{dataList.gmfmc}}</view>
+					<view class="name">社会统一编码</view> <view class="other">{{dataList.shtyxydm}}</view>
+					<view class="name">经办人姓名</view> <view class="other">{{dataList.jbrxm}}</view>
+					<view class="name">经办人证件号</view> <view class="other">{{dataList.gmfzjh}}</view>
+					<view class="name">经办人电话</view> <view class="other">{{dataList.gmflxdh}}</view>
+				</view>
+			</view>
+			
+			<view class="cell_item" style="margin-top: 24rpx;">
+				<view class="title">购买记录</view>
+				<view style="margin: 12rpx 0;height: 1rpx;background: #E7E7E7;"></view>
+				<view class="description">
+					<view class="name">汽油型号</view> <view class="other">{{dataList.gmqyxh}}</view>
+					<view class="name">汽油升数</view> <view class="other">{{dataList.gmss}}</view>
+					<view class="name">购买用途</view> <view class="other">{{dataList.gmyt}}</view>
+					<view class="name">购买时间</view> <view class="other">{{dataList.createTime}}</view>
+					<view class="name">是否合规购油</view> <view class="other">{{dataList.sfhggy==1?'是':'否'}}</view>
+					<view class="name">单位介绍信</view> <view class="other">
+						 <view class="album">
+							<view class="album__content">
+								<u-album :urls="[dataList.jyzzp]" keyName="src2"></u-album>
+							</view>
+						</view>
+					</view>
+				</view>
+			</view>
+			
+		</view>
+	</view>
+</template>
+
+<script>
+	import { jyzSellDetail } from "@/api/jfsc.js"
+	export default{
+		data(){
+			return{
+				dataList:{},
+				urls1: [{
+					src2: 'https://cdn.uviewui.com/uview/album/1.jpg',
+				}]
+			}
+		},
+		onLoad(option) {
+			uni.showLoading({
+				title: '加载中'
+			});
+			jyzSellDetail(option.id).then(res=>{
+				this.dataList = res.data
+			}).finally(()=>{
+				uni.hideLoading()
+			})
+		},
+		methods:{
+		
+			back(){
+				uni.navigateBack({
+					delta: 1
+				  });
+			},
+			goPage(url){
+				uni.navigateTo({
+					url:url
+				})
+			}
+		}
+	}
+</script>
+
+
+<style lang="scss">
+	/deep/ .uni-navbar__content{
+		border-bottom: none !important;
+	}
+	.contaienr{
+		box-sizing: border-box;
+		background: #F8F8F8;
+		position: relative;
+		min-height: 100vh;
+		
+		.cell_item{
+			background: #FFFFFF;
+			box-shadow: 0rpx 2rpx 16rpx 0rpx rgba(0,0,0,0.08);
+			border-radius: 16rpx;
+			padding: 24rpx;
+			box-sizing: border-box;
+			background: #FFF;
+			position: relative;
+			.description{
+				display: grid;
+				grid-template-columns: 33.3% 66.66%;
+				view{
+					padding: 6rpx 0;
+				}
+				.name{
+					height: 40rpx;
+					font-family: PingFangSC, PingFang SC;
+					font-weight: 400;
+					font-size: 28rpx;
+					color: #999999;
+					line-height: 40rpx;
+					text-align: left;
+					font-style: normal;
+				}
+				.other{
+					min-height: 40rpx;
+					font-family: PingFangSC, PingFang SC;
+					font-weight: 400;
+					font-size: 28rpx;
+					color: #111111;
+					line-height: 40rpx;
+					text-align: left;
+					font-style: normal;
+				}
+			}
+			.title{
+				height: 44rpx;
+				font-family: PingFangSC, PingFang SC;
+				font-weight: 500;
+				font-size: 32rpx;
+				color: #111111;
+				line-height: 44rpx;
+				text-align: left;
+				font-style: normal;
+			}
+		}
+		.bg{
+			position: absolute;
+			top: 0;
+			left: 0;
+			right: 0;
+			.bgimg{
+				width: 100%;
+			}
+		}
+		.content{
+			padding: 0 24rpx;
+			background: #F8F8F8;
+		}
+		.topbox{
+			height: 192rpx;
+			position: relative;
+			width: 100%;
+			.con{
+				height: 144rpx;
+				background: linear-gradient( 180deg, #F0F5FF 0%, #FFFFFF 100%);
+				box-shadow: 0rpx 2rpx 16rpx 0rpx rgba(0,0,0,0.08);
+				border-radius: 16rpx;
+				border: 2rpx solid #FFFFFF;
+				display: grid;
+				grid-template-columns: 130rpx calc(100% - 130rpx);
+				position: absolute;
+				width: 100%;
+				left:0;
+				bottom: 0;
+				.img{
+					width: 96rpx;
+					height: 96rpx;
+					margin-top: 24rpx;
+				}
+				.icon_con{
+					text-align: center;
+				}
+				.info_con{
+					.title{
+						height: 44rpx;
+						font-family: PingFangSC, PingFang SC;
+						font-weight: 500;
+						font-size: 32rpx;
+						color: #111111;
+						line-height: 44rpx;
+						text-align: left;
+						font-style: normal;
+						margin-top: 33rpx;
+						white-space: nowrap; /* 确保文本在一行内显示 */
+						  overflow: hidden; /* 隐藏溢出的内容 */
+						  text-overflow: ellipsis; /* 使用省略号表示文本溢出 */
+					}
+					.stit{
+						height: 34rpx;
+						font-family: PingFangSC, PingFang SC;
+						font-weight: 400;
+						font-size: 24rpx;
+						color: #111111;
+						line-height: 34rpx;
+						text-align: left;
+						font-style: normal;
+						white-space: nowrap; /* 确保文本在一行内显示 */
+						  overflow: hidden; /* 隐藏溢出的内容 */
+						  text-overflow: ellipsis; /* 使用省略号表示文本溢出 */
+					}
+				}
+			}
+		}
+	}
+</style>

+ 34 - 0
main.js

@@ -0,0 +1,34 @@
+import App from './App'
+import uView from '@/uni_modules/uview-ui'
+import store from '@/store';
+Vue.use(uView)
+// #ifndef VUE3
+import Vue from 'vue'
+// main.js
+
+import './uni.promisify.adaptor'
+
+Vue.config.productionTip = false
+App.mpType = 'app'
+import {mixin} from './utils/wxShare.js'
+Vue.mixin(mixin)
+// 引入vuex
+const vuexStore = require("@/store/$u.mixin.js");
+Vue.mixin(vuexStore);
+
+// 创建对象
+const app = new Vue({
+	store,
+    ...App
+});
+import httpInstall from '@/http/install.js'
+Vue.use(httpInstall, app)
+
+import http from '@/http/api.js'
+Vue.prototype.$http = http
+
+// 公共函数
+import globalFunc from '@/utils/func.js'
+Vue.use(globalFunc, app);
+app.$mount()
+// #endif

+ 117 - 0
manifest.json

@@ -0,0 +1,117 @@
+{
+    "name" : "xcx",
+    "appid" : "__UNI__56B53F4",
+    "description" : "",
+    "versionName" : "1.0.0",
+    "versionCode" : "100",
+    "transformPx" : false,
+    /* 5+App特有相关 */
+    "app-plus" : {
+        "usingComponents" : true,
+        "nvueStyleCompiler" : "uni-app",
+        "compilerVersion" : 3,
+        "splashscreen" : {
+            "alwaysShowBeforeRender" : true,
+            "waiting" : true,
+            "autoclose" : true,
+            "delay" : 0
+        },
+        /* 模块配置 */
+        "modules" : {
+            "Share" : {}
+        },
+        /* 应用发布信息 */
+        "distribute" : {
+            /* android打包配置 */
+            "android" : {
+                "permissions" : [
+                    "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
+                    "<uses-permission android:name=\"android.permission.VIBRATE\"/>",
+                    "<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
+                    "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
+                    "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
+                    "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.CAMERA\"/>",
+                    "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
+                    "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
+                    "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
+                    "<uses-feature android:name=\"android.hardware.camera\"/>",
+                    "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
+                ]
+            },
+            /* ios打包配置 */
+            "ios" : {},
+            /* SDK配置 */
+            "sdkConfigs" : {
+                "share" : {
+                    "weixin" : {
+                        "appid" : "wx09e21ed351e30a75",
+                        "UniversalLinks" : ""
+                    }
+                }
+            }
+        }
+    },
+    /* 快应用特有相关 */
+    "quickapp" : {},
+    /* 小程序特有相关 */
+    "mp-weixin" : {
+        "appid" : "wx09e21ed351e30a75",
+        "setting" : {
+            "urlCheck" : false
+        },
+        "usingComponents" : true,
+        "optimization" : {
+            "subPackages" : true
+        }
+    },
+    "mp-alipay" : {
+        "usingComponents" : true
+    },
+    "mp-baidu" : {
+        "usingComponents" : true
+    },
+    "mp-toutiao" : {
+        "usingComponents" : true
+    },
+    "h5" : {
+        "template" : "template.h5.html",
+        "router" : {
+            "mode" : "hash"
+        },
+        "optimization" : {
+            "treeShaking" : {
+                "enable" : true
+            }
+        },
+        "devServer" : {
+            "proxy" : {
+                "/api" : {
+                    "target" : "http://192.168.0.13:6543",
+                    //"target" : "https://rider.bladex.vip/api",
+                    "pathRewrite" : {
+                        "^/api" : "/"
+                    }
+                }
+            },
+            "port" : ""
+        },
+        "uniStatistics" : {
+            "enable" : false
+        },
+        "sdkConfigs" : {
+            "maps" : {
+                "qqmap" : {
+                    "key" : ""
+                }
+            }
+        }
+    },
+    "uniStatistics" : {
+        "enable" : false
+    },
+    "vueVersion" : "2"
+}

+ 3 - 0
package-lock.json

@@ -0,0 +1,3 @@
+{
+  "lockfileVersion": 1
+}

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 144 - 0
pageA/my/login.vue


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 272 - 0
pageA/my/profile.vue


+ 9 - 0
pageA/my/reg.vue

@@ -0,0 +1,9 @@
+<template>
+	<view></view>
+</template>
+
+<script>
+</script>
+
+<style>
+</style>

+ 195 - 0
pages.json

@@ -0,0 +1,195 @@
+{
+	"easycom": {
+			"^u-(.*)": "@/uni_modules/uview-ui/components/u-$1/u-$1.vue"
+		},
+	"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
+		{
+			"path": "pages/index/index",
+			"style": {
+				"navigationBarTitleText": "uni-app",
+				"navigationStyle": "custom",
+				"enablePullDownRefresh": true
+			}
+		},
+		{
+			"path": "pages/jwgk/index",
+			"style": {
+				"navigationBarTitleText": "uni-app",
+				"navigationStyle": "custom",
+				"enablePullDownRefresh": true
+			}
+		},
+		{
+			"path": "pages/jfsc/index",
+			"style": {
+				"navigationBarTitleText": "uni-app",
+				"navigationStyle": "custom",
+				"enablePullDownRefresh": true
+			}
+		},
+		{
+			"path": "pages/jfsc/jfmx",
+			"style": {
+				"navigationBarTitleText": "积分明细",
+				"navigationStyle": "custom",
+				"navigationBarBackgroundColor": "#fff"
+			}
+		},
+		{
+			"path": "pages/my/index",
+			"style": {
+				"navigationBarTitleText": "uni-app",
+				"navigationStyle": "custom"
+			}
+		},
+		{
+			"path": "pages/detail/index",
+			"style": {
+				"navigationBarTitleText": "",
+				"navigationBarBackgroundColor": "#FFFFFF",
+				"navigationStyle": "custom"
+			}
+		},
+		{
+			"path": "pages/detail/searchResult",
+			"style": {
+				"navigationBarTitleText": "搜索结果",
+				"navigationBarBackgroundColor": "#FFFFFF"
+			}
+		},
+		{
+			"path": "pages/detail/content",
+			"style": {
+				"navigationBarTitleText": "",
+				"navigationBarBackgroundColor": "#FFFFFF",
+				"navigationStyle": "custom"
+			}
+		}
+	],
+	"subPackages": [
+	    {
+	      "root": "pageA",
+	      "pages": [
+	        {
+	          "path": "my/login",
+			 "style": {
+			 	"navigationBarTitleText": "登录",
+			 	"navigationBarBackgroundColor": "#FFFFFF",
+				"navigationStyle": "custom"
+			 }
+	        },
+			{
+			  "path": "my/reg"
+			},
+			{
+			  "path": "my/profile",
+			  "style": {
+			  	"navigationBarTitleText": "完善个人资料",
+			  	"navigationBarBackgroundColor": "#FFFFFF"
+			  }
+			}
+	      ]
+	    },
+		{
+			"root": "jyzPage",
+			"pages":[
+				{
+				  "path": "jyz/jyzdj",
+				  "style": {
+				  	"navigationBarTitleText": "加油站登记",
+				  	"navigationBarBackgroundColor": "#FFFFFF"
+				  }
+				},
+				{
+				  "path": "jyz/csjl",
+				  "style": {
+				  	"navigationBarTitleText": "出售记录",
+				  	"navigationBarBackgroundColor": "#FFFFFF"
+				  }
+				},
+				{
+				  "path": "jyz/personjl",
+				  "style": {
+				  	"navigationBarTitleText": "出售个人记录",
+				  	"navigationBarBackgroundColor": "#FFFFFF"
+				  }
+				},
+				{
+				  "path": "jyz/qiyejl",
+				  "style": {
+				  	"navigationBarTitleText": "出售企业记录",
+				  	"navigationBarBackgroundColor": "#FFFFFF"
+				  }
+				}
+			] 	
+		},
+		{
+		  "root": "product",
+		  "pages": [
+			  {
+			    "path": "product/card",
+			    "style": {
+			    	"navigationBarTitleText": "购物车",
+			    	"navigationBarBackgroundColor": "#FFFFFF"
+			    }
+			  },
+			  {
+			    "path": "product/detail",
+			    "style": {
+			    	"navigationBarTitleText": "商品详情",
+			    	"navigationBarBackgroundColor": "#FFFFFF"
+			    }
+			  },
+				{
+					"path": "order/historyOrder",
+					"style": {
+						"navigationBarTitleText": "历史订单",
+						"navigationBarBackgroundColor": "#FFFFFF"
+					}
+				},
+				{
+					"path": "order/dlq",
+					"style": {
+						"navigationBarTitleText": "待领取",
+						"navigationBarBackgroundColor": "#FFFFFF"
+					}
+				}
+		  ]
+		}
+	  ],
+	  
+	"globalStyle": {
+		"navigationBarTextStyle": "black",
+		"navigationBarTitleText": "uni-app",
+		"navigationBarBackgroundColor": "#F8F8F8",
+		"backgroundColor": "#F8F8F8"
+	},
+	"tabBar": {
+		"color": "#999999",
+		"selectedColor": "#000000",
+		"borderStyle": "white",
+		"backgroundColor": "#ffffff",
+		"list": [{
+			"pagePath": "pages/index/index",
+			"iconPath": "static/nav/label_home_gray@2x.png",
+			"selectedIconPath":"static/nav/label_home_color@2x.png",
+			"text": "防范宣传"
+		}, {
+			"pagePath": "pages/jwgk/index",
+			"iconPath": "static/nav/label_open_gray@2x.png",
+			"selectedIconPath": "static/nav/label_open_color@2x.png",
+			"text": "警务公开"
+		}, {
+			"pagePath": "pages/jfsc/index",
+			"iconPath": "static/nav/label_points_gray@2x.png",
+			"selectedIconPath": "static/nav/label_home_color@2xd.png",
+			"text": "积分商城"
+		}, {
+			"pagePath": "pages/my/index",
+			"iconPath": "static/nav/label_my_gray@2x.png",
+			"selectedIconPath": "static/nav/label_my_color@2x.png",
+			"text": "我的"
+		}]
+	},
+	"uniIdRouter": {}
+}

+ 104 - 0
pages/detail/content.vue

@@ -0,0 +1,104 @@
+<template>
+	<view>
+		
+		   <view class="content"  @scroll="handleScroll">
+			
+				<view class="title" style="margin-top: 24rpx;">
+					<u-row justify="space-between" customStyle="margin-bottom: 10px;position:relative">
+						<view class="smtitle">{{listData.xcbt}}
+							<text class="classify" v-if="listData.xclx=='1'" :class="{'classify1':listData.xclx=='1'}">{{listData.xclxmc}}</text>
+							<text class="classify" v-else-if="listData.xclx=='2'" :class="{'classify2':listData.xclx=='2'}">{{listData.xclxmc}}</text>
+							<text class="classify" v-else-if="listData.xclx=='3'" :class="{'classify3':listData.xclx=='3'}">{{listData.xclxmc}}</text>
+							<text v-else></text>
+						</view>
+					</u-row>
+					
+				</view>
+				<view class="static">
+					<view class="left">
+						<u-row>
+							<view class="block">
+							{{listData.fbdw}}
+							</view>
+							<view class="block">
+							{{listData.createTime}}
+							</view>
+						</u-row>
+					</view>
+					
+					<view class="left">
+						<u-row>
+							<view class="block">
+								完成阅读获{{listData.jf}}积分 · {{listData.count?listData.count:0}}浏览
+							</view>
+						</u-row>
+					</view>
+				</view>
+				<view class="detail">
+					<mp-html :content="listData.xcnr|formatRichText" selectable="true"/>
+				</view>
+			
+		</view>
+			
+	</view>
+</template>
+
+<script>
+	import { detailApp} from '@/api/ffxc.js'
+	export default {
+		data(){
+			return{
+				scrollToView: '',
+			}
+		},
+		
+		props:{
+			listData:{
+				type:Object
+			}
+		},
+		filters:{
+			// 假设htmlContent是你的富文本内容
+			formatRichText(html) { //控制小程序中图片大小
+			if(html){
+				let newContent = html.replace(/<img[^>]*>/gi, function(match, capture) {
+					match = match.replace(/style="[^"]+"/gi, '').replace(/style='[^']+'/gi, '');
+					match = match.replace(/width="[^"]+"/gi, '').replace(/width='[^']+'/gi, '');
+					match = match.replace(/height="[^"]+"/gi, '').replace(/height='[^']+'/gi, '');
+					return match;
+				});
+				newContent = newContent.replace(/style="[^"]+"/gi, function(match, capture) {
+					match = match.replace(/width:[^;]+;/gi, 'max-width:100%;').replace(/width:[^;]+;/gi,
+						'max-width:100%;');
+					return match;
+				});
+				newContent = newContent.replace(/<br[^>]*\/>/gi, '');
+				newContent = newContent.replace(/\<img/gi,
+					// '<img style="max-width:100%;height:auto;display:inline-block;margin:10rpx auto;" src="https://syqdxs.sdeesp.com');
+					'<img style="max-width:calc(100vw - 96rpx);height:auto;display:inline-block;margin:10rpx auto;"');
+				return newContent;
+			}
+					
+				}
+		},
+		methods:{
+			
+
+		  
+		}
+	}
+</script>
+
+<style lang="scss">
+	.content{
+		text{
+			font-family: PingFangSC, PingFang SC;
+			font-weight: 400;
+			font-size: 28rpx;
+			color: #666666;
+			line-height: 44rpx;
+			text-align: left;
+			font-style: normal;
+		}
+	}
+</style>

+ 425 - 0
pages/detail/index.vue

@@ -0,0 +1,425 @@
+<template>
+	<view class="container"  @scroll="handleScroll">
+		<u-loading-page :loading="loading"></u-loading-page>
+		
+		
+		<page-container v-if="!loading" custom-style="" class="pcontainer" :show="isShow" @beforeleave="beforeleave" :position="top" :overlay="false">
+			<uni-nav-bar :fixed="true" title="文章详情" background-color="#ffffff" status-bar left-icon="left"
+						 @clickLeft="back" />
+			<scroll-view  style="height: 90vh;overflow-y:scroll" scroll-y="true" @scrolltolower="scrollToBottom">		 
+				<contentVue :listData="listData"/>
+			</scroll-view>	
+			<u-modal :show="show" @confirm="confirm" @cancel="cancel" :title="title" :showCancelButton="true"
+			 confirmText="继续阅读" cancelText="退出" confirmColor="#106DFF" cancelColor="#999999">
+				<view class="slot-content">
+					<view class="img">
+						<image src="../../static/pic_quit_big@2x.png" mode="widthFix" style="width: 120px;"></image>
+					</view>
+					<view class="backtip1">您还阅读完</view>
+					<view class="backtip2">中途退出观看不加积分</view>
+					
+				</view>
+			</u-modal>
+			
+			<u-modal :show="show2" @confirm="confirmok" @cancel="cancel" :title="title" :showCancelButton="true"
+			 confirmText="我知道了"  confirmColor="#106DFF" >
+				<view class="slot-content">
+					<view class="img">
+						<image src="../../static/pic_points_big@2x.png" mode="widthFix" style="width: 120px;"></image>
+					</view>
+					<view class="backtip1" style="color: #FF1D1D;">+ {{listData.jf}}</view>
+					<view class="backtip2">恭喜您完成阅读获得积分</view>
+					
+				</view>
+			</u-modal>
+		</page-container>
+		
+	</view>
+</template>
+
+<script>
+	import { detailApp,jfupdate} from '@/api/ffxc.js'
+	import contentVue from './content.vue';
+	export default {
+		components:{contentVue},
+		data() {
+			return {
+				loading:true,
+				isread:false,
+				scrollToView: '',
+				isReadFinished: false, // 是否阅读完毕的标志
+				isShow:true,
+				show:false,
+				show2:false,
+				listData:{},
+				item:{type:1,author:'测试'},
+				content: `<p>在北京航天飞行控制中心拍摄的天舟五号货运飞船与空间站组合体完成自主快速交会对接示意图。孙丰晓摄(新华社发)</p>
+				<p>北京时间2022年11月12日10时03分,在文昌航天发射场,搭载天舟五号货运飞船的长征七号遥六运载火箭点火发射,将天舟五号货运飞船送入预定轨道。随后,天舟五号货运飞船与在轨运行的空间站组合体进行自主快速交会对接,中国航天员首次在空间站迎接货运飞船来访。</p>
+				<p>朝着在距离地面约400公里轨道上运行的中国空间站组合体,天舟五号首次实现2小时自主快速交会对接,创造世界纪录。这一技术突破对于提升我国空间交会对接水平,提升空间站任务应急物资补给能力具有重要意义。</p>
+				<p>空间站阶段最快交会对接,让人类航天器交会对接用时进入“2小时”时代。</p>
+				<p>此次任务是中国空间站“T”字基本构型在轨组装完成后,“太空快递”首次送达,执行运输任务的仍是长七火箭。</p>`
+			};
+		},
+		onLoad(options) {
+			uni.showLoading({
+				title: '加载中'
+			});
+			detailApp(options.id).then(res=>{
+				this.listData = res.data
+				this.loading = false
+			}).finally(()=>{
+				uni.hideLoading()
+			})
+		},
+		methods:{
+			scrollToBottom: function() {
+			    // 在这里可以执行加载更多数据的操作,如果没读过提示加积分
+				if(this.listData.type!=1){
+					if(!this.isread){
+						this.show2 = true
+						this.addjf()
+					}
+				}else{
+					this.$u.func.showToast({ title: '该文章您已经领取过积分'})
+				}
+					
+			  },
+			  confirmok(){
+				  this.show2 = false
+			  },
+			addjf(){
+				jfupdate({ffxcId:this.listData.id,jf:this.listData.jf}).then(res=>{
+					this.isread = true
+				})
+			},
+			handleScroll(event) {
+			      const { scrollTop, scrollHeight, clientHeight } = event.detail;
+			      if (scrollTop + clientHeight >= scrollHeight) {
+			        // 已经滚动到底部
+			        console.log('已经滚动到底部');
+			      }
+			    },
+			beforeleave(){
+				if(this.listData.type==1){
+					uni.switchTab({
+						url: "/pages/index/index"
+					});
+					return
+				}
+				if(!this.isread){
+					this.isShow = false
+					uni.showModal({
+						confirmColor: '#bd3124',
+						title: "您还没阅读完",
+						content: '中途退出观看不加积分',
+						cancelText: "退出", // 取消按钮的文字  
+						confirmText: "继续阅读", // 确认按钮的文字  
+						confirmColor: '#106DFF',
+						cancelColor: '#999999',
+						success: (e) => {
+							if (e.confirm) {
+								this.isShow = true
+							}else{
+							 this.isShow = false
+							 // 返回上一页
+							 uni.switchTab({
+								url: "/pages/index/index"
+							 });
+							}
+						}
+				 })
+				}else{
+					uni.switchTab({
+					   url: "/pages/index/index", // 确保 url 是正确的
+					 });
+				}
+			},
+			back() {
+				if(!this.isread){
+					if(this.listData.type!=1){
+						this.show = true
+					}else{
+					uni.switchTab({
+					   url: "/pages/index/index", // 确保 url 是正确的
+					 });
+				}
+					
+				}else{
+					uni.switchTab({
+					   url: "/pages/index/index", // 确保 url 是正确的
+					 });
+				}
+			},
+			confirm(){
+				 this.show = false
+			},
+			cancel(){
+				this.isShow = false;	
+				 // 返回上一页
+				  uni.switchTab({
+					 url: "/pages/index/index", // 确保 url 是正确的
+				   });
+			},
+		}
+		
+
+	};
+</script>
+
+<style lang="scss">
+	.container {
+		padding: 0 0 150rpx;
+	}
+	.slot-content{
+		position: relative;
+		.img{
+			text-align: center;
+		}
+	}
+.classify{
+				font-weight: 500;
+				font-size: 24rpx;
+				line-height: 42rpx;
+				text-align: right;
+				font-style: normal;
+				border-radius: 8rpx;
+				text-align: center;
+				padding: 2px 5px;
+				margin-left: 6rpx;
+				position: relative;
+				top: -2px;
+			}
+			.classify1{
+				color: #00A870;
+				background: #D7F5EB;
+			}
+			.classify2{
+				color: #ED7B2F;
+				background: #FEECDF;
+			}
+			.classify3{
+				color: #E34D59;
+				background: #FEE4E7;
+			}
+	.right-nav {
+		display: flex;
+		align-items: center;
+		margin-right: 40rpx;
+
+		.icon {
+			height: auto;
+
+			&-search {
+				width: 40rpx;
+				margin-right: 40rpx;
+			}
+
+			&-menu {
+				width: 40rpx;
+			}
+		}
+	}
+    /deep/ .uni-navbar--border{
+		border-bottom: none !important;
+	}
+	.backtip1{
+		font-family: PingFangSC, PingFang SC;
+		font-weight: 500;
+		font-size: 36rpx;
+		color: #111111;
+		line-height: 52rpx;
+		text-align: center;
+		font-style: normal;
+		
+	}
+	.backtip2{
+		font-family: PingFangSC, PingFang SC;
+		font-weight: 400;
+		font-size: 28rpx;
+		color: #666666;
+		line-height: 40rpx;
+		text-align: center;
+		font-style: normal;
+	}
+	.header {
+		display: flex;
+		align-items: center;
+		padding: 44rpx;
+
+		.avatar {
+			flex-shrink: 0;
+			width: 69rpx;
+			height: 69rpx;
+			background: #ffffff;
+			border: 1px solid #69b0ff;
+			border-radius: 50%;
+		}
+
+		.info {
+			flex: 1;
+			margin-left: 14rpx;
+
+			.name {
+				display: flex;
+				align-items: center;
+				font-size: 28rpx;
+				font-family: PingFang SC;
+				font-weight: bold;
+				color: #000000;
+				line-height: 36rpx;
+
+				.tag {
+					margin-left: 10rpx;
+					display: inline-block;
+					padding: 8rpx 10rpx;
+					font-size: 14rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #4cbeca;
+					line-height: 21rpx;
+					border: 1px solid #0bb9c8;
+					border-radius: 6px;
+				}
+			}
+
+			.date {
+				font-size: 24rpx;
+				font-family: PingFang SC;
+				font-weight: 500;
+				color: #a3a3a3;
+				line-height: 36rpx;
+			}
+		}
+
+		.btn {
+			padding: 8rpx 19rpx;
+			background: #e6e6e6;
+			border-radius: 6rpx;
+			font-size: 20rpx;
+			font-family: PingFang SC;
+			font-weight: bold;
+			color: #4cbeca;
+			line-height: 1;
+		}
+	}
+
+	.content {
+		padding: 0 44rpx;
+        
+		.title {
+			font-size: 40rpx;
+			font-family: PingFang SC;
+			font-weight: bold;
+			color: #000000;
+			line-height: 47rpx;
+		}
+
+		.static {
+			margin-top: 34rpx;
+			justify-content: space-between;
+			align-items: center;
+
+			.left,
+			.right {
+				padding:3px 0;
+				align-items: center;
+
+				.block {
+					display: flex;
+					align-items: center;
+					margin-right: 10rpx;
+					font-family: PingFangSC, PingFang SC;
+					font-weight: 400;
+					font-size: 24rpx;
+					color: #999999;
+					line-height: 32rpx;
+					text-align: left;
+					font-style: normal;
+				}
+			}
+
+			.left {
+				font-size: 20rpx;
+				font-family: PingFang SC;
+				font-weight: bold;
+				color: #787878;
+				line-height: 1;
+				width:100%;
+				.gf {
+					width: 24rpx;
+					height: 24rpx;
+					margin-right: 8rpx;
+				}
+			}
+
+			
+		}
+
+		.detail {
+			font-family: PingFangSC, PingFang SC;
+			font-weight: 400;
+			font-size: 28rpx;
+			color: #666666;
+			line-height: 44rpx;
+			text-align: left;
+			font-style: normal;
+			margin-top: 50rpx;
+		}
+	}
+
+	.footer {
+		position: fixed;
+		bottom: 0;
+		left: 0;
+		right: 0;
+		z-index: 999;
+		height: 100rpx;
+		padding: 20rpx;
+		box-sizing: border-box;
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		background-color: #ffffff;
+
+		.ipt {
+			width: 380rpx;
+			height: 77rpx;
+			background: #f7f7f7;
+			border-radius: 38px;
+			padding: 0 37rpx;
+			box-sizing: border-box;
+			margin-right: 20rpx;
+		}
+
+		.control {
+			flex: 1;
+			display: flex;
+			align-items: center;
+			justify-content: space-around;
+
+			.block {
+				display: flex;
+				align-items: center;
+				justify-content: center;
+				flex: 1;
+			}
+
+			.icon {
+				height: auto;
+			}
+
+			.c {
+				width: 41rpx;
+				margin-right: 10rpx;
+			}
+
+			.s {
+				width: 36rpx;
+			}
+
+			.t {
+				width: 31rpx;
+			}
+		}
+	}
+</style>

+ 190 - 0
pages/detail/searchResult.vue

@@ -0,0 +1,190 @@
+<template>
+	<view class="container">
+		<view class="totalCount">共 {{pages.total}} 条数据</view>
+		<u-list>
+				<u-list-item
+					v-for="(item, index) in indexList"
+					:key="index">
+					<view class="cell_item" @click="goPage('/pages/detail/index?id='+item.id)">
+						 <u-row justify="space-between" customStyle="margin-bottom: 10px">
+								<u-col :span="8">
+									<view class="smtitle">{{item.fbdw}}发布</view>
+								</u-col>
+								<u-col :offset="1" :span="3" style="text-align: right;">
+									<text class="classify" v-if="item.xclx=='1'" :class="{'classify1':item.xclx=='1'}">{{item.xclxmc}}</text>
+									<text class="classify" v-if="item.xclx=='2'" :class="{'classify2':item.xclx=='2'}">{{item.xclxmc}}</text>
+									<text class="classify" v-if="item.xclx=='3'" :class="{'classify3':item.xclx=='3'}">{{item.xclxmc}}</text>
+								</u-col>
+						</u-row>
+						
+						<u-row>
+							<view class="bigtitle">{{item.xcbt}}</view>
+						</u-row>
+						
+						<u-row class="imagebox" justify="space-between" customStyle="margin-bottom: 10px">
+								<u-col  v-for="items in item.file" v-if="item.file&&item.file.length>=2&&item.file.length!=0" span="4">
+									<image class="image" :src="items"  mode="widthFix" style="width: 96%;border-radius: 5px;"></image>
+								</u-col>
+								
+								<u-col v-for="items in item.file" v-else span="12">
+									<image class="image" :src="items"  mode="widthFix" style="width: 100%;border-radius: 5px;"></image>
+								</u-col>
+								
+								
+								<!--<u-col v-for="items in item.file" v-else-if="item.file&&item.file.length==0&&item.video" span="12">
+									<image class="image" :src="items"  mode="widthFix" style="width: 100%;border-radius: 5px;"></image>
+									<video  class="xwlogo" :src='item.video'
+									    @error="videoErrorCallback"
+									    controls
+									></video>
+								</u-col>
+								-->
+						</u-row>
+						
+						<u-row>
+							<view class="otther">
+								完成阅读获 <text style="color: #FF1D1D;">{{item.count}}</text> 积分 · {{item.jf}}浏览
+							</view>
+						</u-row>
+					</view>
+				
+				</u-list-item>
+				<u-list-item>
+					<u-loadmore :status="status" />
+				</u-list-item>
+			</u-list>
+		
+	</view>
+</template>
+
+<script>
+	import { getjwtdFfxc} from '@/api/ffxc.js'
+	export default {
+		data(){
+			return{
+				status: 'loadmore',
+				xclx:'',
+				indexList:[],
+				pages:{
+					size: 10,
+					total: 0,
+					current:1,
+				},
+			}
+		},
+		onReachBottom() {
+			this.status = 'loading';
+			var _this = this;
+			this.init(v)
+		},
+		onLoad(v) {
+			this.init(v)
+		},
+		methods:{
+			init(v){
+				uni.showLoading({
+					title: '加载中'
+				});
+				getjwtdFfxc(this.xclx,v.key,this.pages.current).then(res=>{
+					this.pages.total = res.data.total
+					this.pages.current++
+					this.indexList = res.data.records
+					if(res.data.records.length<10 ) this.status = 'nomore';
+					uni.hideLoading()
+				}).finally(()=>{
+					uni.hideLoading()
+				})
+			},
+			goPage(url){
+				uni.navigateTo({
+					url:url
+				})
+			},
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.container{
+		padding:24rpx 24rpx 0 24rpx;box-sizing: border-box;
+		margin: auto;
+		background: #F8F8F8;
+		overflow-y: hidden;
+		height: 100vh;
+		.totalCount{
+			font-family: PingFangSC, PingFang SC;
+			font-weight: 400;
+			font-size: 24rpx;
+			color: #999999;
+			line-height: 32rpx;
+			margin: 24rpx 0;
+			text-align: center;
+		}
+			.cell_item{
+					width: 100%;
+					margin: auto;
+					padding: 24rpx;
+					box-sizing: border-box;
+					background: #FFFFFF;
+					border-radius: 24rpx;
+					margin-bottom: 15px;
+					.smtitle{
+						font-weight: 400;
+						font-size: 24rpx;
+						color: #111111;
+						line-height: 32rpx;
+						white-space: nowrap; /* 确保文本在一行内显示 */
+						  overflow: hidden; /* 隐藏溢出的内容 */
+						  text-overflow: ellipsis; /* 使用省略号表示文本溢出 */
+					}
+					.bigtitle{
+						font-family: PingFangSC, PingFang SC;
+						font-weight: 500;
+						font-size: 32rpx;
+						color: #111111;
+						line-height: 44rpx;
+						text-align: justify;
+						font-style: normal;
+						padding-bottom: 8px;
+					}
+					.classify{
+						font-weight: 500;
+						font-size: 24rpx;
+						line-height: 42rpx;
+						text-align: right;
+						font-style: normal;
+						border-radius: 8rpx;
+						text-align: center;
+						padding: 2px 5px;
+						position: relative;
+						top: -3px;
+						float: right;
+					}
+					.classify1{
+						color: #00A870;
+						background: #D7F5EB;
+					}
+					.classify2{
+						color: #ED7B2F;
+						background: #FEECDF;
+					}
+					.classify3{
+						color: #E34D59;
+						background: #FEE4E7;
+					}
+					.otther{
+						font-family: PingFangSC, PingFang SC;
+						font-weight: 400;
+						font-size: 24rpx;
+						color: #999999;
+						line-height: 30rpx;
+						text-align: left;
+						font-style: normal;
+						margin-top:0px;
+					}
+					
+					
+				}
+			
+		}
+</style>

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 278 - 0
pages/index/index.vue


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 196 - 0
pages/jfsc/index.vue


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 222 - 0
pages/jfsc/jfmx.vue


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 184 - 0
pages/jwgk/index.vue


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 149 - 0
pages/my/index.vue


+ 313 - 0
product/order/dlq.vue

@@ -0,0 +1,313 @@
+<template>
+	<view class="contaienr">
+		
+					 
+		<view class="searchbox">
+			<u-search @search="searchKyeword" @custom="searchKyeword" :showAction="true" actionText="搜索" v-model="keyword" :animation="true"></u-search>	
+		</view>		
+		 
+		 <view class="card_list" v-if="listData.length>0">
+		 	<view class="item" v-for="(row, index) in listData">
+		 		<view class="box">
+					<view class="img">
+						<u--image :showLoading="true" :src="row.spzp" width="128rpx" height="128rpx"></u--image>
+						<!--<image style="width:128rpx" class="icon" mode="widthFix" :src="row.img"></image>-->
+					</view>
+					<view>
+						<view class="smtitle" style="position: relative;">
+							{{row.spmc}}
+						</view>
+					</view>
+					
+					<view class="checkbox">
+						<text class="num">x 1</text>
+						
+					</view>
+				</view>
+				
+				<view class="info">	
+					<view class="info_item">
+						<view class="icon">
+							<image class="icon_img" src="../../static/jf/icon_points_gray_16@2x.png" mode=""></image>
+						</view>
+						<view class="title">
+							{{row.xhjf}}
+						</view>
+					</view>
+					
+					<view class="info_item">
+						<view class="icon">
+							<image class="icon_img" src="../../static/jf/icon_addresss_gray_16@2x.png" mode=""></image>
+						</view>
+						<view class="title">
+							{{row.lqdd}}
+						</view>
+					</view>
+					
+					<view class="info_item">
+						<view class="icon">
+							<image class="icon_img" src="../../static/jf/icon_time_gray_16@2x.png" mode=""></image>
+						</view>
+						<view class="title">
+							{{row.createTime}}
+						</view>
+					</view>
+					
+					<view style="padding: 12rpx 0;"><u-line dashed></u-line></view>
+					
+					<view class="info_item"  style="text-align: right;padding: 24rpx 0 0;display: inline-block;width: 100%;">
+						<view class="button" @click="$u.func.route('/product/product/detail?id='+row.spId)">查看</view>
+						<view @click="lqsp(row)" class="button dlq">领取</view>
+					</view>
+				</view>
+		 	</view>
+			<view class="item">
+				<u-loadmore :status="status" />
+			</view>
+		 </view>
+		 
+		 <u-empty v-else
+		         mode="data"
+		         icon="http://cdn.uviewui.com/uview/empty/car.png"
+		 >
+		 </u-empty>
+					 
+	</view>
+</template>
+
+<script>
+	import { getDdList ,jfsclqsp} from '@/api/jfsc.js'
+	export default{
+		data(){
+			return{
+				keyword:'',
+				showMore:true,
+				status: 'loadmore',
+				listData:[],
+				pages:{
+					size: 10,
+					total: 0,
+					current:1,
+				},
+				cartList:[]
+			}
+		},
+		onReachBottom() {
+		
+		},
+		onLoad() {
+			this.inits()
+		},
+		methods:{
+			searchKyeword(){
+				this.inits()
+			},
+			lqsp(row){
+				jfsclqsp(row.ddbh).then(res=>{
+					this.$u.func.showToast({title:'领取成功'})
+					this.inits()
+				})
+			},
+			inits(){
+				uni.showLoading({
+					title: '加载中'
+				});
+				getDdList('待领取',this.keyword,this.pages.current).then(res=>{
+					//this.pages.current++
+					this.listData = res.data
+					if(res.data.length<10 ) this.status = 'nomore';
+					uni.hideLoading()
+				}).finally(()=>{
+					uni.hideLoading()
+				})
+			},
+			back(){
+				uni.switchTab({
+				   url: "/pages/my/index", // 确保 url 是正确的
+				 });
+			},
+		}
+	}
+</script>
+
+<style lang="scss">
+	/deep/ .uni-navbar__content{
+		border-bottom: none !important;
+	}
+	.contaienr{
+		padding: 0 24rpx;
+		box-sizing: border-box;
+		background: #F8F8F8;
+		position: relative;
+		min-height: 100vh;
+		.searchbox{
+			padding: 24rpx 0;
+			box-sizing: border-box;
+		}
+		.card_list{
+			border-radius: 24rpx;
+			box-sizing: border-box;
+			.info{
+				padding: 24rpx 12rpx 0;
+				box-sizing: border-box;
+				.info_item{
+					padding: 6rpx 0;
+					box-sizing: border-box;
+					display: grid;
+					grid-template-columns: 60rpx calc(100% - 60rpx);
+					.icon{
+						.icon_img{
+							width: 32rpx;
+							height: 32rpx;
+						}
+					}
+					.title{
+						
+						font-family: PingFangSC, PingFang SC;
+						font-weight: 400;
+						font-size: 28rpx;
+						color: #666666;
+						line-height: 40rpx;
+						text-align: left;
+						font-style: normal;
+					}
+					.button{
+						width: 160rpx;
+						height: 64rpx;
+						background: linear-gradient( to top, #65CBFF 0%, #0260FE 100%);
+						border-radius: 32rpx;
+						font-family: PingFangSC, PingFang SC;
+						font-weight: 500;
+						font-size: 32rpx;
+						color: #FFFFFF;
+						line-height: 64rpx;
+						text-align: center;
+						font-style: normal;
+						float: right;
+					}
+					.dlq{
+						background: #FFFFFF;
+						box-shadow: 0rpx 2rpx 16rpx 0rpx rgba(0,0,0,0.08);
+						border-radius: 32rpx;
+						font-family: PingFangSC, PingFang SC;
+						font-weight: 500;
+						font-size: 32rpx;
+						color: #106DFF;
+						line-height: 64rpx;
+						text-align: center;
+						font-style: normal;
+						float: right;
+						margin-right:12rpx;
+					}
+				}
+			}
+			.item{
+				margin-bottom: 12rpx;
+				background: linear-gradient( 180deg, #F0F5FF 0%, #FFFFFF 100%);
+				border-radius: 16rpx;
+				border: 2rpx solid #FFFFFF;
+				padding: 24rpx;
+				box-sizing: border-box;
+				border-radius: 24rpx;
+				
+				.box{
+					display: grid;
+					grid-template-columns:  150rpx calc(100% - 250rpx) 100rpx;
+					.control{
+						display: grid;
+						grid-template-columns: 50% 50%;
+						.num{
+							height: 44rpx;
+							font-family: DIN, DIN;
+							font-weight: 500;
+							font-size: 36rpx;
+							color: #FF1D1D;
+							line-height: 44rpx;
+							text-align: left;
+							font-style: normal;
+							padding-left: 10rpx;
+							box-sizing: border-box;
+						}
+					}
+					.img{
+						text-align: center;
+						.icon{
+							height: 128rpx;
+							border-radius: 16rpx;
+							
+						}
+						
+					}
+					.smtitle{
+						height: 88rpx;
+						font-family: PingFangSC, PingFang SC;
+						font-weight: 500;
+						font-size: 32rpx;
+						color: #111111;
+						line-height: 44rpx;
+						text-align: left;
+						font-style: normal;
+						padding-left: 10rpx;
+						box-sizing: border-box;
+						margin-top: 10px;
+						display: -webkit-box;
+						  -webkit-box-orient: vertical;
+						  -webkit-line-clamp: 2;
+						  overflow: hidden;
+						  text-overflow: ellipsis;
+					}
+					.checkbox{
+						width: 32rpx;
+						height: 32rpx;
+						border-radius: 50%;
+						margin-top: 10px;
+						.cancel{
+							display: inline-block;
+							width: 88rpx;
+							height: 40rpx;
+							background: rgba(153,153,153,0.1);
+							border-radius: 8rpx;
+							font-family: PingFangSC, PingFang SC;
+							font-weight: 500;
+							font-size: 24rpx;
+							color: #999999;
+							line-height: 40rpx;
+							text-align: center;
+							font-style: normal;
+						}
+						.have{
+							display: inline-block;
+							width: 88rpx;
+							height: 40rpx;
+							background: rgba(153,153,153,0.1);
+							border-radius: 8rpx;
+							font-family: PingFangSC, PingFang SC;
+							font-weight: 500;
+							font-size: 24rpx;
+							color: #106DFF;
+							line-height: 40rpx;
+							text-align: center;
+							font-style: normal;
+						}
+						.num{
+							display: inline-block;
+							width: 88rpx;
+							height: 40rpx;
+							height: 32rpx;
+							font-family: DIN, DIN;
+							font-weight: 500;
+							font-size: 24rpx;
+							color: #999999;
+							line-height: 32rpx;
+							text-align: center;
+							font-style: normal;
+						}
+					}
+					.isSelect{
+						background: linear-gradient(to bottom,#0260FE,#61C6FF);
+					}
+				}
+			}
+		}
+	}
+</style>

+ 295 - 0
product/order/historyOrder.vue

@@ -0,0 +1,295 @@
+<template>
+	<view class="contaienr">
+				 
+					 
+		<view class="searchbox">
+			<u-search @search="searchKyeword"  @custom="searchKyeword" :showAction="true" v-model="keyword" actionText="搜索" :animation="true"></u-search>	
+		</view>		
+		 
+		 
+		 <view class="card_list" v-if="listData.length>0">
+		 	<view class="item" v-for="(row, index) in listData">
+		 		<view class="box">
+					<view class="img">
+						<image style="width:128rpx" class="icon" mode="widthFix" :src="row.spzp"></image>
+					</view>
+					<view>
+						<view class="smtitle" style="position: relative;">
+							{{row.spmc}}
+						</view>
+					</view>
+					
+					<view class="checkbox">
+						<text v-if="row.lqzt=='4'" class="cancel">已取消</text>
+						<text v-if="row.lqzt=='3'" class="have">已领取</text>
+						<text v-if="row.lqzt=='2'" class="have">待领取</text>
+						<text v-if="row.lqzt=='1'" class="have">待发送</text>
+						<text class="num">x 1</text>
+						
+					</view>
+				</view>
+				
+				<view class="info">	
+					<view class="info_item">
+						<view class="icon">
+							<image class="icon_img" src="../../static/jf/icon_points_gray_16@2x.png" mode=""></image>
+						</view>
+						<view class="title">
+								{{row.xhjf}}
+						</view>
+					</view>
+					
+					<view class="info_item">
+						<view class="icon">
+							<image class="icon_img" src="../../static/jf/icon_addresss_gray_16@2x.png" mode=""></image>
+						</view>
+						<view class="title">
+							{{row.lqdd}}
+						</view>
+					</view>
+					
+					<view class="info_item">
+						<view class="icon">
+							<image class="icon_img" src="../../static/jf/icon_time_gray_16@2x.png" mode=""></image>
+						</view>
+						<view class="title">
+							{{row.createTime}}
+						</view>
+					</view>
+					<view style="padding: 12rpx 0;"><u-line dashed></u-line></view>
+					
+					<view class="info_item"  style="text-align: right;padding: 24rpx 0 0;display: inline-block;width: 100%;">
+						<view class="button" @click="$u.func.route('/product/product/detail?id='+row.spId)">查看</view>
+					</view>
+				</view>
+		 	</view>
+		 </view>
+		 
+		 <u-empty v-else
+		         mode="data"
+		         icon="http://cdn.uviewui.com/uview/empty/car.png"
+		 >
+		 </u-empty>
+					 
+	</view>
+</template>
+
+<script>
+	import { getDdList } from '@/api/jfsc.js'
+	export default{
+		data(){
+			return{
+				keyword:'',
+				showMore:true,
+				status: 'loadmore',
+				listData:[],
+				pages:{
+					size: 10,
+					total: 0,
+					current:1,
+				},
+				cartList:[
+				  {id:1,ishave:true,name:'金号毛巾纯棉加厚吸水 成人家用洗脸巾柔软',price:1000,count:1,img:'https://gw.alicdn.com/imgextra/O1CN01AQckRr1UNL8YJGGu0_!!2849252505.jpg'},
+				  {id:2,ishave:false,name:'毛巾纯棉加厚吸水家用洗脸巾柔软',price:800,count:1,img:'https://gw.alicdn.com/imgextra/O1CN01AQckRr1UNL8YJGGu0_!!2849252505.jpg'},
+				  {id:3,ishave:true,name:'毛巾纯棉加厚吸水家用洗脸巾柔软',price:1200,count:1,img:'https://gw.alicdn.com/imgextra/O1CN01AQckRr1UNL8YJGGu0_!!2849252505.jpg'}
+				]
+			}
+		},
+		onLoad() {
+			this.inits()
+		},
+		methods:{
+			searchKyeword(){
+				this.inits()
+			},
+			inits(){
+				uni.showLoading({
+					title: '加载中'
+				});
+				getDdList('历史',this.keyword,this.pages.current).then(res=>{
+					//this.pages.current++
+					this.listData = res.data
+					if(res.data.length<10 ) this.status = 'nomore';
+					uni.hideLoading()
+				}).finally(()=>{
+					uni.hideLoading()
+				})
+			},
+			back(){
+				uni.switchTab({
+				   url: "/pages/my/index", // 确保 url 是正确的
+				 });
+			},
+		}
+	}
+</script>
+
+<style lang="scss">
+	/deep/ .uni-navbar__content{
+		border-bottom: none !important;
+	}
+	.contaienr{
+		padding: 0 24rpx;
+		box-sizing: border-box;
+		background: #F8F8F8;
+		position: relative;
+		min-height: 100vh;
+		.searchbox{
+			padding: 24rpx 0;
+			box-sizing: border-box;
+		}
+		.card_list{
+			border-radius: 24rpx;
+			box-sizing: border-box;
+			.info{
+				padding: 24rpx 12rpx 0;
+				box-sizing: border-box;
+				.info_item{
+					padding: 6rpx 0;
+					box-sizing: border-box;
+					display: grid;
+					grid-template-columns: 60rpx calc(100% - 60rpx);
+					.icon{
+						.icon_img{
+							width: 32rpx;
+							height: 32rpx;
+						}
+					}
+					.title{
+						
+						font-family: PingFangSC, PingFang SC;
+						font-weight: 400;
+						font-size: 28rpx;
+						color: #666666;
+						line-height: 40rpx;
+						text-align: left;
+						font-style: normal;
+					}
+					.button{
+						width: 160rpx;
+						height: 64rpx;
+						background: linear-gradient( to top, #65CBFF 0%, #0260FE 100%);
+						border-radius: 32rpx;
+						font-family: PingFangSC, PingFang SC;
+						font-weight: 500;
+						font-size: 32rpx;
+						color: #FFFFFF;
+						line-height: 64rpx;
+						text-align: center;
+						font-style: normal;
+						float: right;
+					}
+				}
+			}
+			.item{
+				margin-bottom: 12rpx;
+				background: linear-gradient( 180deg, #F0F5FF 0%, #FFFFFF 100%);
+				border-radius: 16rpx;
+				border: 2rpx solid #FFFFFF;
+				padding: 24rpx;
+				box-sizing: border-box;
+				border-radius: 24rpx;
+				
+				.box{
+					display: grid;
+					grid-template-columns:  150rpx calc(100% - 250rpx) 100rpx;
+					.control{
+						display: grid;
+						grid-template-columns: 50% 50%;
+						.num{
+							height: 44rpx;
+							font-family: DIN, DIN;
+							font-weight: 500;
+							font-size: 36rpx;
+							color: #FF1D1D;
+							line-height: 44rpx;
+							text-align: left;
+							font-style: normal;
+							padding-left: 10rpx;
+							box-sizing: border-box;
+						}
+					}
+					.img{
+						text-align: center;
+						.icon{
+							height: 128rpx;
+							border-radius: 16rpx;
+							
+						}
+						
+					}
+					.smtitle{
+						height: 88rpx;
+						font-family: PingFangSC, PingFang SC;
+						font-weight: 500;
+						font-size: 32rpx;
+						color: #111111;
+						line-height: 44rpx;
+						text-align: left;
+						font-style: normal;
+						padding-left: 10rpx;
+						box-sizing: border-box;
+						display: -webkit-box;
+						margin-top: 10px;
+						  -webkit-box-orient: vertical;
+						  -webkit-line-clamp: 2;
+						  overflow: hidden;
+						  text-overflow: ellipsis;
+					}
+					.checkbox{
+						width: 32rpx;
+						height: 32rpx;
+						border-radius: 50%;
+						margin-top: 10px;
+						.cancel{
+							display: inline-block;
+							width: 88rpx;
+							height: 40rpx;
+							background: rgba(153,153,153,0.1);
+							border-radius: 8rpx;
+							height: 32rpx;
+							font-family: PingFangSC, PingFang SC;
+							font-weight: 500;
+							font-size: 24rpx;
+							color: #999999;
+							line-height: 40rpx;
+							text-align: center;
+							font-style: normal;
+						}
+						.have{
+							display: inline-block;
+							width: 88rpx;
+							height: 40rpx;
+							background: rgba(153,153,153,0.1);
+							border-radius: 8rpx;
+							height: 32rpx;
+							font-family: PingFangSC, PingFang SC;
+							font-weight: 500;
+							font-size: 24rpx;
+							color: #106DFF;
+							line-height: 32rpx;
+							text-align: center;
+							font-style: normal;
+						}
+						.num{
+							display: inline-block;
+							width: 88rpx;
+							height: 40rpx;
+							height: 32rpx;
+							font-family: DIN, DIN;
+							font-weight: 500;
+							font-size: 24rpx;
+							color: #999999;
+							line-height: 32rpx;
+							text-align: center;
+							font-style: normal;
+						}
+					}
+					.isSelect{
+						background: linear-gradient(to bottom,#0260FE,#61C6FF);
+					}
+				}
+			}
+		}
+	}
+</style>

+ 410 - 0
product/product/card.vue

@@ -0,0 +1,410 @@
+<template>
+	<view class="cart">
+	
+	<!-- 购物车列表 -->
+		<view class="goods-list">
+			<view class="top" style="padding: 24rpx 0;">
+				<uni-row justify="space-between" customStyle="margin-bottom: 10px">
+					<uni-col :span="6">
+						全部({{cartList.length}})
+					</uni-col>
+					<uni-col :span="18" v-if="cartList.length>0">
+						<view @click="isManage=true" v-if="!isManage" class="smtitle" style="position: relative;top: -3px;text-align: right;">管理</view>
+						<view @click="isManage=false" v-else class="smtitle" style="position: relative;top: -3px;text-align: right;color: #106DFF;">退出管理</view>
+					</uni-col>
+				</uni-row>
+			</view>
+			
+			<view v-if="cartList.length>0" class="card_list">	   
+				<view class="item" v-for="(row, index) in cartList">
+					<view @click="selected(index, row)" class="checkbox">
+						<view v-if="row.checked==true"> <image src="../../static/jf/btn_select_color@2x.png" style="width: 32rpx;height: 32rpx;"></image></view>
+						<view v-else> <image src="../../static/jf/btn_select@2x.png" style="width: 32rpx;height: 32rpx;"></image></view>
+					</view>
+					<view class="img">
+						<image style="width:128rpx" class="icon" mode="widthFix" :src="row.spzp"></image>
+					</view>
+					<view>
+						<view class="smtitle" style="position: relative;top: -3px;">
+							{{row.spmc}}
+						</view>
+						<view class="control">
+							<view class="num">
+								<text class="count">{{row.dhsxjf}}</text>
+							</view>
+							<view><uni-number-box v-model="row.count" :min="1" @change="changeValue(row)" /></view>
+						</view>
+					</view>
+				</view>
+			</view>
+		
+			<u-empty v-else
+			        mode="car"
+			        icon="http://cdn.uviewui.com/uview/empty/car.png"
+			>
+			</u-empty>
+		
+	
+		</view>
+		
+		
+		<view v-if="cartList.length>0">
+			<view class="bottom">
+				<view class="select" @click="selectAll" v-if="checkAll!=true">
+					<view class="checkbox">
+						<view class="img" v-if="checkAll==true"> <image src="../../static/jf/btn_select_color@2x.png" style="width: 32rpx;height: 32rpx;top: 6px;"></image></view>
+						<view class="img" v-else><image src="../../static/jf/btn_select@2x.png" style="width: 32rpx;height: 32rpx;top: 3px;"></image></view>
+					</view> 全选
+				</view>
+				
+				
+			<view class="select" @click="noselectAll" v-else>
+				<view class="checkbox">
+					<view> <image class="img" src="../../static/jf/btn_select_color@2x.png" style="width: 32rpx;height: 32rpx;"></image></view>
+				</view> 取消全选
+			</view>
+				
+				
+				
+			<view class="info">
+					<view v-if="!isManage">已选 <text>{{allCount}}</text> 件 共<text>{{allMoney}}</text>元</view>
+				</view>
+				<view class="coustbottom" v-if="!isManage" @click="toBuy">
+					<view>结算</view>
+				</view>
+				<view class="coustbottom_del" v-else @click="deleteData">
+					<view>删除</view>
+				</view>
+			</view>
+		</view>
+		
+	</view>
+</template>
+
+<script>
+	import { resolve } from 'path';
+import { jwtdSpglDhjl,jwtdGwcList,jwtdGwcRemove} from '@/api/jfsc.js'
+import { userInfo } from 'os';
+	export default {
+		data() {
+			return {
+			  checkGroup: [],
+			  checkAll: false,
+			  isManage:false,
+			  allMoney:0,
+			  allCount:0,
+			  cartList:[]
+			};
+		},
+		mounted() {
+			
+		    this.inits()
+		},
+		watch:{
+			checkGroup: {
+			  handler(newVal, oldVal) {
+				 this.allMoney = 0
+				 this.allCount = 0
+				 this.cartList.forEach(v=>{
+				 if(v.checked==true){
+					this.allMoney += v.count * v.dhsxjf
+					this.allCount+=v.count
+					}
+				})
+				if(newVal.length == this.cartList.length){
+					this.checkAll = true
+				}else{
+					this.checkAll = false
+				}
+			  },
+			  deep: true
+			},
+			cartList: {
+			  handler(newVal, oldVal) {
+				   this.allMoney = 0
+				   this.allCount = 0
+					this.cartList.forEach(v=>{
+					if(v.checked==true){
+						this.allMoney += v.count * v.dhsxjf
+						this.allCount+=v.count
+					}
+				})
+			  },
+			  deep: true
+			}
+		},
+		methods:{
+			inits(){
+				jwtdGwcList(this.userInfo.user_id).then(res=>{
+					let dds = res.data.records
+					dds.forEach(v=>{
+						v.checked = false
+						v.count = 1
+					})
+					this.cartList = dds
+					
+				})
+			},
+			toBuy(){
+				let clist = []
+				let buyList =[]
+				let ids
+				if(this.checkGroup.length==0){
+					this.$u.func.showToast({title:'请选择结算商品'})
+					return
+				}
+				this.checkGroup.forEach(vv=>{
+					ids = this.cartList.filter(v=>v.spId==vv)
+					clist = clist.concat(ids)
+				})
+				
+				let pp = new Promise((resolve, reject)=>{
+					clist.forEach((v,k)=>{
+						buyList.push({spId:v.spId,spsl:v.count,xhjf:v.dhsxjf})
+					})
+					resolve('ok')
+				})
+				
+				pp.then(res=>{
+					jwtdSpglDhjl(buyList).then(res=>{
+						 this.$u.func.showToast({title:res.msg})
+						 this.$u.func.refreshPage()
+					})
+				})
+				
+	
+			},
+			deleteData(){
+				if(this.checkGroup.length==0){
+					this.$u.func.showToast({title:'请选择商品'})
+					return
+				}
+				let dlist = []
+				 //this.cartList = this.cartList.filter(item => item.checked);
+				 this.cartList.forEach(v=>{
+					 if(v.checked==true){
+						dlist.push({userId:this.userInfo.user_id,spId:v.spId}) 
+					 }
+				 })
+				 jwtdGwcRemove(dlist).then(res=>{
+					 this.$u.func.showToast({title:res.msg})
+					 this.$u.func.refreshPage()
+				 })
+				 
+			},
+			back(){
+				uni.navigateBack({
+				    delta: 1
+				  });
+			},
+			changeValue(row){
+				console.log(row);
+				this.allMoney = row.count * row.dhsxjf
+			},
+			async selected(index,row){
+				var _this = this
+				// 判断 checkGroup的长度,是否等于good_list长度
+				if (this.checkGroup.length == this.cartList.length) {
+					this.checkAll = true
+				} else {
+					this.checkAll = false
+				}
+				var spId = row.spId
+				var i = this.checkGroup.indexOf(spId)
+				if (i > -1) {
+					// 取消当前商品选中状态
+					_this.$set(_this.cartList[index], 'checked', false);
+					// 移除选中列表中的当前商品
+					return _this.checkGroup.splice(i,1)
+				}
+				// 选中
+				_this.$set(_this.cartList[index], 'checked', true);
+				_this.checkGroup.push(spId)
+				console.log(_this.checkGroup);
+			},
+			
+			  //全选
+			  selectAll(){
+				  /* 方法一 */
+				  this.checkGroup=[]/* 清空以前的全中的内容 */
+				  this.cartList.map(v=>{
+					  v.checked = true
+					  this.checkGroup.push(v.spId)
+				  }) 
+				  this.checkAll = true
+				  /* 方法二 */
+				   /* state.selectedAll = state.list.map(v=>{
+						v.checked = true
+						return v.id
+				   }) */
+			  },
+				//全不选
+			  noselectAll(){
+				  this.checkAll = false
+				  this.cartList.map(v=>{
+					   v.checked = false
+				  })
+				   this.checkGroup = []
+			  },
+		}
+	}
+</script>
+
+<style lang="scss">
+	/deep/ .uni-navbar__content{
+		border-bottom: none !important;
+	}
+	.bottom{
+		position: fixed;
+		background: #FFF;
+		padding: 12rpx 12rpx;
+		box-sizing: border-box;
+		left: 0;
+		bottom: 0;
+		right:0;
+		width: 100%;
+		display: grid;
+		grid-template-columns: 25% 45% 30%;
+		.select{
+			display: flex;
+			font-family: PingFangSC, PingFang SC;
+			font-weight: 400;
+			font-size: 28rpx;
+			color: #666666;
+			line-height: 80rpx;
+			text-align: left;
+			font-style: normal;
+			.checkbox{
+				width: 32rpx;
+				height: 32rpx;
+				border-radius: 50%;
+				margin-right: 12rpx;
+				.img{
+					position: relative;
+					top: 3px;
+				}
+			}
+			
+		
+		}
+		.info{
+			font-family: PingFangSC, PingFang SC;
+			font-weight: 400;
+			font-size: 28rpx;
+			color: #666666;
+			line-height: 80rpx;
+			text-align: left;
+			font-style: normal;
+			text{
+				color: #FF1D1D;
+			}
+		}
+		.coustbottom{
+			font-family: PingFangSC, PingFang SC;
+			font-weight: 500;
+			font-size: 32rpx;
+			color: #FFFFFF;
+			line-height:80rpx;
+			text-align: center;
+			font-style: normal;
+			background: linear-gradient( to top, #65CBFF 0%, #0260FE 100%);
+			border-radius: 64rpx;
+		}
+		.coustbottom_del{
+			font-family: PingFangSC, PingFang SC;
+			font-weight: 500;
+			font-size: 32rpx;
+			color: #FFFFFF;
+			line-height: 80rpx;
+			text-align: center;
+			font-style: normal;
+			background: linear-gradient( to top, #FFD452 0%, #FF9700 100%);
+			border-radius: 64rpx;
+		}
+	}
+	.cart{
+		padding: 0 24rpx;
+		box-sizing: border-box;
+		background: #F8F8F8;
+		position: relative;
+		min-height: 100vh;
+		.goods-list{
+			.card_list{	
+				border-radius: 24rpx;
+				box-sizing: border-box;
+				.item{
+					margin-bottom: 12rpx;
+					background: #FFF;
+					padding: 24rpx;
+					box-sizing: border-box;
+					border-radius: 24rpx;
+					display: grid;
+					grid-template-columns: 40rpx 150rpx calc(100% - 190rpx);
+					.control{
+						display: grid;
+						grid-template-columns: 50% 50%;
+						.num{
+							height: 44rpx;
+							font-family: DIN, DIN;
+							font-weight: 500;
+							font-size: 36rpx;
+							color: #FF1D1D;
+							line-height: 44rpx;
+							text-align: left;
+							font-style: normal;
+							padding-left: 10rpx;
+							box-sizing: border-box;
+						}
+					}
+					.img{
+						text-align: center;
+						.icon{
+							height: 128rpx;
+							border-radius: 16rpx;
+							
+						}
+						
+					}
+					.smtitle{
+						height: 80rpx;
+						font-family: PingFangSC, PingFang SC;
+						font-weight: 500;
+						font-size: 28rpx;
+						color: #111111;
+						line-height: 40rpx;
+						text-align: justify;
+						font-style: normal;
+						padding-left: 10rpx;
+						box-sizing: border-box;
+						display: -webkit-box;
+						  -webkit-box-orient: vertical;
+						  -webkit-line-clamp: 2;
+						  overflow: hidden;
+						  text-overflow: ellipsis;
+					}
+					.checkbox{
+						width: 32rpx;
+						height: 32rpx;
+						border-radius: 50%;
+						margin-top: 23px;
+					}
+					.isSelect{
+						background: linear-gradient(to bottom,#0260FE,#61C6FF);
+					}
+				}
+			}
+			.top{
+				view{
+					height: 40rpx;
+					font-family: PingFangSC, PingFang SC;
+					font-weight: 500;
+					font-size: 28rpx;
+					color: #111111;
+					line-height: 40rpx;
+					text-align: left;
+					font-style: normal;
+				}
+			}
+		}
+	}
+</style>

+ 416 - 0
product/product/detail.vue

@@ -0,0 +1,416 @@
+<template>
+	<view class="rf-product-detail">
+		<u-loading-page :loading="loading"></u-loading-page>
+		
+		<view class="detail" v-if="!loading">
+			<!--顶部商品轮播图-->
+			<view class="carousel">
+				<swiper indicator-dots circular="true" duration="400" controls touchable>
+					<!--
+					<swiper-item class="swiper-item" v-if="product.video_url">
+						<video muted :poster="product.covers[0]" object-fit="contain" :src="product.video_url"></video>
+					</swiper-item>
+					-->
+					<swiper-item
+						class="swiper-item"
+						v-for="(item, index) in covers"
+						:key="index">
+						<view class="image-wrapper">
+							<image :src="item" class="loaded" mode="aspectFill"></image>
+						</view>
+					</swiper-item>
+				</swiper>
+			</view>
+			
+			<!--商品信息-->
+			<view class="introduce-section">
+				<view class="jf">
+					<uni-row justify="space-between" customStyle="margin-bottom: 15px">
+						<uni-col :span="20">
+							<image class="icon" mode="widthFix" src="../../static/jf/icon_points_small_16@2x.png"></image>
+							<text class="count">{{listData.dhsxjf}}</text>
+						</uni-col>
+						<uni-col :span="4" style="text-align: right">
+							<view class="mxname">已兑 : {{listData.spydhsl}}</view>
+						</uni-col>
+					</uni-row>	
+					<uni-row justify="space-between" customStyle="margin-bottom: 10px">
+						<uni-col :span="24">
+							<image class="icon" mode="widthFix" src="../../static/jf/icon_address_small_16@2x.png"></image>
+							<text class="location">{{listData.xz}}</text>
+						</uni-col>
+					
+					</uni-row>	
+				</view>
+			
+				<view class="introduce-second-line">
+					<view class="title">
+						<text>{{listData.spmc}}</text>
+					</view>
+				</view>
+				
+				<view class="detail">	
+					<!--<uni-row justify="space-between" customStyle="margin-bottom: 10px">
+						<uni-col :span="6">
+							<text>品牌</text>
+						</uni-col>
+						<uni-col  :span="18" style="">
+							<text>金号</text>
+						</uni-col>
+					</uni-row>
+					
+					<uni-row justify="space-between" customStyle="margin-bottom: 10px">
+						<uni-col :span="6">
+							<text>类别</text>
+						</uni-col>
+						<uni-col  :span="18" style="">
+							<text>毛巾</text>
+						</uni-col>
+					</uni-row>
+					
+					<uni-row justify="space-between" customStyle="margin-bottom: 10px">
+						<uni-col :span="6">
+							<text>产品尺寸</text>
+						</uni-col>
+						<uni-col  :span="18" style="">
+							<text>毛巾</text>
+						</uni-col>
+					</uni-row>
+					
+					<uni-row justify="space-between" customStyle="margin-bottom: 10px">
+						<uni-col :span="6">
+							<text>产地</text>
+						</uni-col>
+						<uni-col  :span="18" style="">
+							<text>毛巾</text>
+						</uni-col>
+					</uni-row>
+					<uni-row justify="space-between" customStyle="margin-bottom: 10px">
+						<uni-col :span="6">
+							<text>适用人群</text>
+						</uni-col>
+						<uni-col  :span="18" style="">
+							<text>毛巾</text>
+						</uni-col>
+					</uni-row>
+					
+					<uni-row justify="space-between" customStyle="margin-bottom: 10px">
+						<uni-col :span="6">
+							<text>国产/进口</text>
+						</uni-col>
+						<uni-col  :span="18" style="">
+							<text>毛巾</text>
+						</uni-col>
+					</uni-row>
+					
+					<uni-row justify="space-between" customStyle="margin-bottom: 10px">
+						<uni-col :span="6">
+							<text>重量</text>
+						</uni-col>
+						<uni-col  :span="18" style="">
+							<text>毛巾</text>
+						</uni-col>
+					</uni-row>
+					
+					<uni-row justify="space-between" customStyle="margin-bottom: 10px">
+						<uni-col :span="6">
+							<text>规格</text>
+						</uni-col>
+						<uni-col  :span="18" style="">
+							<text>毛巾</text>
+						</uni-col>
+					</uni-row>
+					
+					<uni-row justify="space-between" customStyle="margin-bottom: 10px">
+						<uni-col :span="6">
+							<text>面料</text>
+						</uni-col>
+						<uni-col  :span="18" style="">
+							<text>毛巾</text>
+						</uni-col>
+					</uni-row>
+					
+					<uni-row justify="space-between" customStyle="margin-bottom: 10px">
+						<uni-col :span="6">
+							<text>产品等级</text>
+						</uni-col>
+						<uni-col  :span="18" style="">
+							<text>毛巾</text>
+						</uni-col>
+					</uni-row>-->
+					<uni-row>
+						<view v-html="listData.spms" class="description"></view>
+						<image v-for="(item, index) in covers" :src="item" mode="widthFix" style="width: 100%"></image>
+					</uni-row>
+				
+				</view>
+		
+			</view>
+			
+			
+			<view class="goods-carts">
+						<uni-goods-nav :options="options" :fill="true" :button-group="buttonGroup" @click="onClick"
+							@buttonClick="buttonClick" />
+			</view>
+
+		</view>
+		
+	</view>
+
+</template>
+
+<script>
+
+import {jwtdSpgldetail,jwtdGwc,jwtdGwcList,jwtdSpglDhjl} from '@/api/jfsc.js'
+	export default {
+		data(){
+			return{
+				loading:true,
+				listData:{},
+				covers:[],
+				product:{
+					covers:[
+					'https://gw.alicdn.com/imgextra/O1CN01AQckRr1UNL8YJGGu0_!!2849252505.jpg',
+					'https://gw.alicdn.com/imgextra/O1CNA12MNRp91UNL9KreI41_!!2849252505-0-psf.jpg'
+					],
+					video_url:'',
+					video_url:'',
+					name:'超亮吸顶灯客厅大灯主卧室吊灯具大全现代简约大气全屋家用中山',
+				},
+
+					options: [{
+						icon: 'cart',
+						text: '购物车',
+						info: 0
+					}],
+					buttonGroup: [{
+							text: '加入购物车',
+							backgroundColor: 'linear-gradient(0deg, #FFD452, #FF9700)',
+							color: '#fff'
+						},
+						{
+							text: '立即兑换',
+							backgroundColor: 'linear-gradient(0deg, #65CBFF, #0260FE)',
+							color: '#fff'
+						}
+					],
+				
+				
+			}
+		},
+		onLoad(options) {
+			jwtdSpgldetail(options.id).then(res=>{
+				this.listData = res.data
+				this.covers = res.data.spzp.split(',')
+				this.loading=false
+			}).finally(()=>{
+			})
+			
+			jwtdGwcList(this.userInfo.user_id).then(res=>{
+				this.options[0].info = res.data.records.length
+			})
+		},
+		methods:{
+			back(){
+				uni.switchTab({
+				   url: "/pages/jfsc/index", // 确保 url 是正确的
+				 });
+			},
+			onClick(e) {
+				uni.showToast({
+					title: `点击${e.content.text}`,
+					icon: 'none'
+				})
+				if(e.content.text=='购物车'){
+					uni.navigateTo({
+						url:'/product/product/card'
+					})
+				}
+			},
+			buttonClick(e) {
+				if(e.index==0){
+					jwtdGwc({
+						spId:this.listData.id,
+						userId:this.userInfo.user_id
+					}).then(res=>{
+						if(res.data=='购物车已有此物品'){
+							uni.showToast({
+								title:res.data,
+								icon:'error'
+							})
+						}else{
+							this.options[0].info++
+							uni.showToast({
+								title:'已添加到购物车',
+								icon:'success'
+							})
+						}
+						
+					}).finally(()=>{
+						
+					})
+				}else{
+					let buyList =[]
+					buyList.push({spId:this.listData.id,spsl:1,xhjf:this.listData.dhsxjf})
+					jwtdSpglDhjl(buyList).then(res=>{
+						uni.showToast({
+							title:'兑换成功',
+							icon:'success'
+						})
+					})
+				}
+				
+				
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	/deep/ .uni-navbar__content{
+		border-bottom: none !important;
+	}
+	.description{
+		font-size: 24rpx;
+		padding: 24rpx 0;
+		line-height: 36rpx;
+		color: #111111;
+	}
+	.goods-carts {
+			display: flex;
+			flex-direction: column;
+			position: fixed;
+			left: 0;
+			right: 0;
+			left: var(--window-left);
+			right: var(--window-right);
+			bottom: 0;
+		}
+	.rf-product-detail {
+		.back-btn {
+			position: fixed;
+			left: 40upx;
+			z-index: 9999;
+			padding-top: 10px;
+			top: 40upx;
+			font-size: 40upx;
+			color: transparent;
+		}
+		.carousel {
+			height: 722upx;
+			position: relative;
+			swiper {
+				height: 100%;
+			}
+			.image-wrapper {
+				width: 100%;
+				height: 100%;
+			}
+			.swiper-item {
+				display: flex;
+				justify-content: center;
+				align-content: center;
+				height: 750upx;
+				overflow: hidden;
+				border-bottom: 1upx solid rgba(0, 0, 0, 0.01);
+				image {
+					width: 100%;
+					height: 100%;
+				}
+				.content {
+					position: absolute;
+					right: 0;
+					bottom: 0;
+				}
+			}
+		}
+		.detail {
+			padding-bottom: 60upx;
+		}
+		.introduce-section{
+				padding:24rpx 24rpx;
+				.title{
+					height: 84rpx;
+					font-family: PingFangSC, PingFang SC;
+					font-weight: 500;
+					font-size: 30rpx;                                                       
+					color: #000000;
+					line-height: 42rpx;
+					text-align: justify;
+					font-style: normal;
+					margin-bottom: 12rpx;
+				}
+				.icon{
+					vertical-align: bottom;
+					margin-right: 5rpx;
+					position: relative;
+					top: -2px;
+					width: 32rpx;
+				}
+				.count{
+					height: 44rpx;
+					font-family: DIN, DIN;
+					font-weight: 500;
+					font-size: 36rpx;
+					color: #FF1D1D;
+					line-height: 44rpx;
+					text-align: left;
+					font-style: normal;
+				}
+				.location{
+					font-family: PingFangSC, PingFang SC;
+					font-weight: 400;
+					font-size: 24rpx;
+					color: #111111;
+					line-height: 32rpx;
+					text-align: left;
+					font-style: normal;
+					 white-space: nowrap; /* 确保文本在一行内显示 */
+					  overflow: hidden; /* 隐藏溢出的内容 */
+					  text-overflow: ellipsis; /* 使用省略号表示文本溢出 */
+				}
+				.mxname{
+					font-family: PingFangSC, PingFang SC;
+					font-weight: 400;
+					font-size: 24rpx;
+					color: #666666;
+					line-height: 32rpx;
+					text-align: center;
+					font-style: normal;
+			
+			}
+			.introduce-second-line{
+				padding: 24rpx 0 !important;
+				.title{
+					text{
+						height: 96rpx;
+						font-family: PingFangSC, PingFang SC;
+						font-weight: 500;
+						font-size: 34rpx;
+						color: #111111;
+						line-height: 48rpx;
+						text-align: left;
+						font-style: normal;
+						
+					}
+				}
+			}
+			.detail{
+				text{
+					font-family: PingFangSC, PingFang SC;
+					font-weight: 400;
+					font-size: 24rpx;
+					color: #111111;
+					line-height: 40rpx;
+					text-align: left;
+					font-style: normal;
+				}
+			}
+		}
+	}
+</style>
+
+
+<style lang="scss">
+	
+</style>

BIN=BIN
static/bj_middle.png


BIN=BIN
static/btn_phone_blue@2x.png


BIN=BIN
static/icon_boy_16@2x.png


BIN=BIN
static/jf/bj_blue@2x.png


BIN=BIN
static/jf/bj_label_shadow@2x.png


BIN=BIN
static/jf/bj_points_long@2x.png


BIN=BIN
static/jf/btn_buy@2x.png


BIN=BIN
static/jf/btn_chevron_right_16@2x.png


BIN=BIN
static/jf/btn_notice_16@2x.png


BIN=BIN
static/jf/btn_select@2x.png


BIN=BIN
static/jf/btn_select_color@2x.png


BIN=BIN
static/jf/btn_top@2x.png


BIN=BIN
static/jf/car.png


BIN=BIN
static/jf/icon_address_small_16@2x.png


BIN=BIN
static/jf/icon_addresss_gray_16@2x.png


BIN=BIN
static/jf/icon_amount_gray_16@2x.png


BIN=BIN
static/jf/icon_oil_gray_16@2x.png


BIN=BIN
static/jf/icon_people_blue_24@2x.png


BIN=BIN
static/jf/icon_place_blue_24@2x.png


BIN=BIN
static/jf/icon_points_gray_16@2x.png


BIN=BIN
static/jf/icon_points_small_16@2x(1).png


BIN=BIN
static/jf/icon_points_small_16@2x(2).png


BIN=BIN
static/jf/icon_points_small_16@2x.png


BIN=BIN
static/jf/icon_time_gray_16@2x.png


BIN=BIN
static/jf/pic_oil_big@2x.png


BIN=BIN
static/jf/pic_points_right@2x.png


BIN=BIN
static/jf/pic_title_big@2x.png


BIN=BIN
static/logo.png


BIN=BIN
static/my/bj_label_shadow@2x.png


BIN=BIN
static/my/btn_next_gray@2x.png


BIN=BIN
static/my/btn_phone_blue_16@2x.png


BIN=BIN
static/my/icon_addresss_white_16@2x.png


BIN=BIN
static/my/icon_love_white_16@2x.png


BIN=BIN
static/my/icon_my_about@2x.png


BIN=BIN
static/my/icon_my_head_64@2x.png


BIN=BIN
static/my/icon_my_idea@2x.png


BIN=BIN
static/my/icon_my_service@2x.png


BIN=BIN
static/my/icon_my_set@2x.png


BIN=BIN
static/my/icon_order_history_48@2x.png


BIN=BIN
static/my/icon_order_waiting_48@2x.png


BIN=BIN
static/my/icon_police_white_16@2x.png


BIN=BIN
static/nav/bj_label_shadow@2x.png


BIN=BIN
static/nav/btn_play_64@2x.png


BIN=BIN
static/nav/btn_top@2x.png


BIN=BIN
static/nav/icon_search@2x.png


BIN=BIN
static/nav/label_home_color@2x.png


BIN=BIN
static/nav/label_home_color@2xd.png


BIN=BIN
static/nav/label_home_gray@2x.png


BIN=BIN
static/nav/label_my_color@2x.png


BIN=BIN
static/nav/label_my_gray@2x.png


BIN=BIN
static/nav/label_open_color@2x.png


BIN=BIN
static/nav/label_open_gray@2x.png


BIN=BIN
static/nav/label_points_gray@2x.png


+ 25 - 0
static/nav/nav_line.svg

@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="20px" height="5px" viewBox="0 0 20 5" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <title>mipmap-mdpi/nav_line</title>
+    <defs>
+        <linearGradient x1="0%" y1="50%" x2="114.121324%" y2="50%" id="linearGradient-1">
+            <stop stop-color="#0260FE" offset="0%"></stop>
+            <stop stop-color="#65CBFF" offset="100%"></stop>
+        </linearGradient>
+        <path d="M13.9857532,27 C17.7449202,27 20.5225269,26.4088521 23.4149971,24.5853112 C24.2921361,24.0342411 24.0728513,23.0623539 23.4776499,22.4611865 C22.8824484,21.8600192 22.2663627,21.8700386 21.2639182,22.4110892 C19.2903555,23.4531126 16.9617604,23.9941633 13.9857532,23.9941633 C11.009746,23.9941633 8.22169717,23.4531126 6.70758825,22.4110892 C5.91398633,21.8499997 5.08905801,21.8600192 4.49385657,22.4611865 C3.89865513,23.0623539 3.7524653,24.0342411 4.55650936,24.5853112 C7.17748412,26.4088521 10.2265862,27 13.9857532,27 Z" id="path-2"></path>
+        <filter x="-15.0%" y="-60.0%" width="130.0%" height="220.0%" filterUnits="objectBoundingBox" id="filter-3">
+            <feGaussianBlur stdDeviation="1.5" in="SourceAlpha" result="shadowBlurInner1"></feGaussianBlur>
+            <feOffset dx="0" dy="3" in="shadowBlurInner1" result="shadowOffsetInner1"></feOffset>
+            <feComposite in="shadowOffsetInner1" in2="SourceAlpha" operator="arithmetic" k2="-1" k3="1" result="shadowInnerInner1"></feComposite>
+            <feColorMatrix values="0 0 0 0 0.0632411067   0 0 0 0 0.42687747   0 0 0 0 1  0 0 0 0.44364449 0" type="matrix" in="shadowInnerInner1"></feColorMatrix>
+        </filter>
+    </defs>
+    <g id="移动端" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="宣传" transform="translate(-20.000000, -122.000000)">
+            <g id="nav_line" transform="translate(16.000000, 100.000000)">
+                <use fill="url(#linearGradient-1)" fill-rule="evenodd" xlink:href="#path-2"></use>
+                <use fill="black" fill-opacity="1" filter="url(#filter-3)" xlink:href="#path-2"></use>
+            </g>
+        </g>
+    </g>
+</svg>

BIN=BIN
static/nav/nav_line2.png


BIN=BIN
static/pic_points_big@2x.png


BIN=BIN
static/pic_quit_big@2x.png


+ 32 - 0
store/$u.mixin.js

@@ -0,0 +1,32 @@
+// $u.mixin.js
+
+import {
+	mapState
+} from 'vuex'
+import store from "@/store"
+
+// 尝试将用户在根目录中的store/index.js的vuex的state变量,全部加载到全局变量中
+let $uStoreKey = [];
+try {
+	$uStoreKey = store.state ? Object.keys(store.state) : [];
+} catch (e) {
+
+}
+
+module.exports = {
+	mounted() {
+		// 将vuex方法挂在到$u中
+		// 使用方法为:如果要修改vuex的state中的user.name变量为"史诗" => this.$u.vuex('user.name', '史诗')
+		// 如果要修改vuex的state的version变量为1.0.1 => this.$u.vuex('version', '1.0.1')
+		this.$u.vuex = (name, value) => {
+			this.$store.commit('$uStore', {
+				name,
+				value
+			})
+		}
+	},
+	computed: {
+		// 将vuex的state中的所有变量,解构到全局混入的mixin中
+		...mapState($uStoreKey)
+	}
+}

Algúns arquivos non se mostraron porque demasiados arquivos cambiaron neste cambio