瀏覽代碼

Signed-off-by: zhaobao <528046418@qq.com>

zhaobao 2 年之前
父節點
當前提交
23cb818eb5
共有 100 個文件被更改,包括 4359 次插入144 次删除
  1. 1 1
      App.vue
  2. 55 0
      api/checkRecord.js
  3. 90 0
      api/danger.js
  4. 42 0
      api/entRiskPoint.js
  5. 31 0
      api/index.js
  6. 84 0
      api/task.js
  7. 65 0
      api/user.js
  8. 91 0
      api/warning.js
  9. 14 0
      config/index.js
  10. 114 0
      libs/EPlatform.js
  11. 15 0
      libs/auth.js
  12. 181 0
      libs/enum.js
  13. 97 0
      libs/graceChecker.js
  14. 394 0
      libs/index.js
  15. 64 0
      libs/permission.js
  16. 83 0
      libs/request.js
  17. 21 0
      libs/router.js
  18. 40 0
      libs/tool.js
  19. 20 2
      pages.json
  20. 24 5
      pages/index/index.vue
  21. 5 6
      pages/login/login.vue
  22. 83 2
      pages/mine/mine.vue
  23. 99 0
      pages/mine/password/password.vue
  24. 144 0
      pages/task/form/form.vue
  25. 122 0
      pages/task/task.vue
  26. 二進制
      static/icon/add.png
  27. 二進制
      static/icon/empty.png
  28. 二進制
      static/icon/location.png
  29. 二進制
      static/icon/pass.png
  30. 二進制
      static/icon/reject.png
  31. 二進制
      static/icon/rt_icon.png
  32. 二進制
      static/icon/unlock.png
  33. 二進制
      static/icon/upload.png
  34. 二進制
      static/icon/user-group.png
  35. 二進制
      static/preview/1.png
  36. 二進制
      static/preview/2.png
  37. 二進制
      static/preview/3.png
  38. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/common/main.js.map
  39. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/common/runtime.js.map
  40. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/common/vendor.js.map
  41. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index.js.map
  42. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/login/login.js.map
  43. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/mine/mine.js.map
  44. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/mine/password/password.js.map
  45. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/risk/risk.js.map
  46. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/task/form/form.js.map
  47. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/task/task.js.map
  48. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-data-select/components/uni-data-select/uni-data-select.js.map
  49. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.js.map
  50. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.js.map
  51. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-forms/components/uni-forms/uni-forms.js.map
  52. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-icons/components/uni-icons/uni-icons.js.map
  53. 5 2
      unpackage/dist/dev/mp-weixin/app.json
  54. 1 1
      unpackage/dist/dev/mp-weixin/common/main.wxss
  55. 2 2
      unpackage/dist/dev/mp-weixin/common/runtime.js
  56. 767 30
      unpackage/dist/dev/mp-weixin/common/vendor.js
  57. 21 2
      unpackage/dist/dev/mp-weixin/pages/index/index.js
  58. 1 1
      unpackage/dist/dev/mp-weixin/pages/index/index.wxml
  59. 3 4
      unpackage/dist/dev/mp-weixin/pages/login/login.js
  60. 32 2
      unpackage/dist/dev/mp-weixin/pages/mine/mine.js
  61. 1 1
      unpackage/dist/dev/mp-weixin/pages/mine/mine.wxml
  62. 53 1
      unpackage/dist/dev/mp-weixin/pages/mine/mine.wxss
  63. 247 0
      unpackage/dist/dev/mp-weixin/pages/mine/password/password.js
  64. 8 0
      unpackage/dist/dev/mp-weixin/pages/mine/password/password.json
  65. 1 0
      unpackage/dist/dev/mp-weixin/pages/mine/password/password.wxml
  66. 30 0
      unpackage/dist/dev/mp-weixin/pages/mine/password/password.wxss
  67. 292 0
      unpackage/dist/dev/mp-weixin/pages/task/form/form.js
  68. 9 0
      unpackage/dist/dev/mp-weixin/pages/task/form/form.json
  69. 0 0
      unpackage/dist/dev/mp-weixin/pages/task/form/form.wxml
  70. 37 0
      unpackage/dist/dev/mp-weixin/pages/task/form/form.wxss
  71. 219 0
      unpackage/dist/dev/mp-weixin/pages/task/task.js
  72. 4 0
      unpackage/dist/dev/mp-weixin/pages/task/task.json
  73. 1 0
      unpackage/dist/dev/mp-weixin/pages/task/task.wxml
  74. 67 0
      unpackage/dist/dev/mp-weixin/pages/task/task.wxss
  75. 二進制
      unpackage/dist/dev/mp-weixin/static/icon/Group 169.png
  76. 二進制
      unpackage/dist/dev/mp-weixin/static/icon/add.png
  77. 二進制
      unpackage/dist/dev/mp-weixin/static/icon/empty.png
  78. 二進制
      unpackage/dist/dev/mp-weixin/static/icon/location.png
  79. 二進制
      unpackage/dist/dev/mp-weixin/static/icon/pass.png
  80. 二進制
      unpackage/dist/dev/mp-weixin/static/icon/reject.png
  81. 二進制
      unpackage/dist/dev/mp-weixin/static/icon/rt_icon.png
  82. 二進制
      unpackage/dist/dev/mp-weixin/static/icon/unlock.png
  83. 二進制
      unpackage/dist/dev/mp-weixin/static/icon/upload.png
  84. 二進制
      unpackage/dist/dev/mp-weixin/static/icon/user-group.png
  85. 二進制
      unpackage/dist/dev/mp-weixin/static/icon/上报按钮.png
  86. 二進制
      unpackage/dist/dev/mp-weixin/static/icon/不通过.png
  87. 二進制
      unpackage/dist/dev/mp-weixin/static/icon/缺省页_空白页-通用 1.png
  88. 二進制
      unpackage/dist/dev/mp-weixin/static/icon/通过.png
  89. 二進制
      unpackage/dist/dev/mp-weixin/static/preview/1.png
  90. 二進制
      unpackage/dist/dev/mp-weixin/static/preview/2.png
  91. 二進制
      unpackage/dist/dev/mp-weixin/static/preview/3.png
  92. 二進制
      unpackage/dist/dev/mp-weixin/static/preview/unsplash_-N2UXcPBIYI.png
  93. 二進制
      unpackage/dist/dev/mp-weixin/static/preview/unsplash_2GW4S08kd-8.png
  94. 二進制
      unpackage/dist/dev/mp-weixin/static/preview/unsplash_dV_Blc0bols.png
  95. 391 0
      unpackage/dist/dev/mp-weixin/uni_modules/uni-data-select/components/uni-data-select/uni-data-select.js
  96. 6 0
      unpackage/dist/dev/mp-weixin/uni_modules/uni-data-select/components/uni-data-select/uni-data-select.json
  97. 1 0
      unpackage/dist/dev/mp-weixin/uni_modules/uni-data-select/components/uni-data-select/uni-data-select.wxml
  98. 162 0
      unpackage/dist/dev/mp-weixin/uni_modules/uni-data-select/components/uni-data-select/uni-data-select.wxss
  99. 6 69
      unpackage/dist/dev/mp-weixin/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.js
  100. 13 13
      unpackage/dist/dev/mp-weixin/uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.js

+ 1 - 1
App.vue

@@ -20,7 +20,7 @@
 	@import '@/static/customicons.css';
 	// 设置整个项目的背景色
 	page {
-		background-color: #f5f5f5;
+		background-color: #fff;
 	}
 	/* #endif */
 	.status_bar{

+ 55 - 0
api/checkRecord.js

@@ -0,0 +1,55 @@
+import {
+	request
+} from '../libs/request.js'
+
+// 保存单个管控措施巡检记录
+export function updateCheckTaskDoingRecord(data) {
+	return request({
+		url: '/check/task/doing/item/update',
+		method: 'PUT',
+		data
+	})
+}
+/**
+ * 添加CheckTask
+ * @param data
+ * @returns {AxiosPromise}
+ */
+export function createCheckTask(data) {
+	return request({
+		url: `/check/task/quick/add`,
+		method: 'POST',
+		data
+	})
+}
+
+/**
+ * 校验当前任务是否全部巡检完成
+ */
+export function verifyCheckTaskDoingIsComplete(taskId) {
+	return request({
+		url: `/check/task/doing/item/verifyCheckTaskDoingIsComplete/` + taskId
+	})
+}
+
+//检查表全部通过
+export function batchUpdateCheckTaskDoingRecord(taskId) {
+	return request({
+		url: '/check/task/doing/item/batchUpdate/' + taskId + "/1",
+		method: 'PUT'
+	})
+}
+//完成任务
+export function completeCheckTaskDoingRecord(taskId) {
+	return request({
+		url: '/check/task/complete/' + taskId,
+		method: 'PUT'
+	})
+}
+//获取检查记录分页列表
+export function getCheckRecordByPage(data) {
+	return request({
+		url: '/check/record/page/',
+		data
+	})
+}

+ 90 - 0
api/danger.js

@@ -0,0 +1,90 @@
+import { request } from '../libs/request.js'
+
+//获取组织架构
+export function getGroupTree() {
+	return request({
+		url: '/group/treeView'
+	})
+}
+//获取隐患类别
+export function getDangerCatList() {
+	return request({
+		url: '/ent/danger/cat'
+	})
+}
+
+/**
+ * 获取用户列表
+ */
+export function getUserList() {
+	return request({
+		url: '/user/selectUserByOcId'
+	})
+}
+
+/**
+ * 添加隐患
+ * @param data
+ * @returns {AxiosPromise}
+ */
+export function add(data) {
+	return request({
+		url: `/ent/danger/trigger`,
+		method: 'PUT',
+		data
+	})
+}
+
+/**
+ * 创建Danger Ins
+ * @param data
+ * @returns {AxiosPromise}
+ */
+export function createDangerIns(wfDefId) {
+	return request({
+		url: `/ent/danger/create/` + wfDefId,
+		method: 'POST'
+	})
+}
+/**
+ * 我处理的隐患分页列表
+ * @param {Object} data
+ */
+export function getMyHandlingDangerInsByPage(data) {
+	return request({
+		// url: `/ent/danger/myHandling/page`,
+		url: "/ent/danger/page",
+		data
+	})
+}
+/**
+ * 获取详细流程信息
+ * @param {Object} dangerId
+ * 废弃
+ */
+export function getDangerInsById(dangerId) {
+	return request({
+		// url: `/ent/danger/ins/` + dangerId,
+		url: "/ent/danger/" + dangerId,
+	})
+}
+/**
+ * 创建Danger Ins
+ * @param data
+ * @returns {AxiosPromise}
+ */
+export function triggerDangerIns(data) {
+	return request({
+		url: `/ent/danger/trigger`,
+		method: 'PUT',
+		data
+	})
+}
+/*
+	获取隐患详情
+*/
+export function getDangerDetailsById(dangerId) {
+	return request({
+		url: `/ent/danger/${dangerId}` ,
+	})
+}

+ 42 - 0
api/entRiskPoint.js

@@ -0,0 +1,42 @@
+import {
+	request
+} from '../libs/request.js'
+
+export function getEntRiskPointInfo(data) {
+	return request({
+		url: '/ent/riskPoint/page',
+		data
+	})
+}
+//获取风险点详情基本信息
+export function getEntRiskPointDetails(riskPointId) {
+	return request({
+		url: '/ent/riskPoint/' + riskPointId
+	})
+}
+// 获取风险点危险源
+export function getEntRiskPointHazard(riskPointId) {
+	
+	// return request({
+	// 	url: '/entRiskPointHazard/getRpHazard?riskPointId=' + riskPointId
+	// })
+	return request({
+		url: '/ent/riskPoint/hazard/view?riskPointId=' + riskPointId
+	})	
+}
+// 根据风险点ID获取检查清单分页列表
+export function getCheckList(data) {
+	return request({
+		url: '/ent/riskPoint/checklist/page',
+		header: {
+			'content-type': "application/x-www-form-urlencoded"
+		},
+		data
+	})
+}
+// 根据风险点ID获取检查清单分页列表
+export function getCheckTaskView(taskId) {
+	return request({
+		url: '/check/task/view/' + taskId
+	})
+}

+ 31 - 0
api/index.js

@@ -0,0 +1,31 @@
+import {getToken} from '@/libs/auth.js';
+import config from "@/config/index.js"
+const baseUrl = process.env.NODE_ENV === 'development' ? config.uploadFile.dev : config.uploadFile.pro;	
+/*
+opCode	
+0 上传
+1删除
+*/
+export const upload=({formData,filePath,callback})=>{
+	return new Promise(function(resolve,reject){
+		const uploadTask=uni.uploadFile({
+			url: baseUrl+'/admin/uploadFile',
+			filePath,
+			header:{
+				[config.TokenKey]:getToken()
+			},
+			name: 'file',
+			formData,
+			success: (uploadFileRes) => {
+				resolve(uploadFileRes.data)
+			},
+			fail({errMsg}){
+				reject(errMsg)
+			}
+		});	
+		if(callback){
+			callback(uploadTask);
+		}
+				
+	})
+}	

+ 84 - 0
api/task.js

@@ -0,0 +1,84 @@
+import { request } from '../libs/request.js'
+/**
+ * 获取分页任务列表
+ * @param {Object} data
+ */
+export function getCheckTaskByPage(data) {
+	return request({
+		url: '/check/task/page',
+		header: {
+			'content-type': "application/x-www-form-urlencoded"
+		},
+		data
+	})
+}
+/**
+ * 通过id获取详情
+ * @param id
+ */
+export function getTaskDetailById(id) {
+	return request({
+		url: '/check/task/view/'+id
+	})
+}
+/**
+ * 通过id进行任务的处理操作
+ * @param id
+ */
+export function manageTaskById(id) {
+	return request({
+		url: '/check/task/handle/'+id,
+		method: 'PUT'
+	})
+}
+
+/**
+ * Transfer CheckTask
+ * 转交任务
+ * @param data
+ * @returns {AxiosPromise}
+ */
+export function transferCheckTask(data) {
+  return request({
+    url: `/check/task/transfer`,
+    method: 'PUT',
+    data
+  })
+}
+
+/**
+ * Cancel CheckTask
+ *  取消任务
+ * @param data
+ * @returns {AxiosPromise}
+ */
+export function cancelCheckTask(checkTaskId) {
+  return request({
+    url: `/check/task/cancel/${checkTaskId}`,
+    method: 'PUT'
+  })
+}
+
+/**
+ * Complete CheckTask
+ * @param data
+ * @returns {AxiosPromise}
+ *  完成任务
+ */
+export function completeCheckTask(checkTaskId) {
+  return request({
+    url: `/check/task/complete/${checkTaskId}`,
+    method: 'PUT'
+  })
+}
+/**
+ * 批量更新CheckTaskDoing Item
+ * @param data
+ * @returns {AxiosPromise}
+ */
+export function batchUpdateCheckTaskDoingItem(taskId, checkResult) {
+  return request({
+    url: `/check/task/doing/item/batchUpdate/${taskId}/${checkResult}`,
+    method: 'PUT'
+  })
+}

+ 65 - 0
api/user.js

@@ -0,0 +1,65 @@
+import {
+	request
+} from '../libs/request.js'
+
+export function login(data) {
+	return request({
+		url: '/login',
+		method: 'post',
+		header:{
+			'content-type':"application/x-www-form-urlencoded"
+		},
+		data
+	})
+}
+export function getUserInfo() {
+	return request({
+		url: '/user/profile'
+	})
+}
+
+export function logout() {
+	return request({
+		url: '/user/logout',
+		method: 'post'
+	})
+}
+export function register(data) {
+	return request({
+		url: '/user/register',
+		method: 'post',
+		data: data
+	})
+}
+/**公用上传接口 */
+export function uploadFile(data) {
+	return request({
+		url: '/upload/file',
+		method: "post",
+		headers: {
+			'Content-Type': 'multipart/form-data'
+		},
+		data
+	})
+}
+export function updatePwd(data) {
+	return request({
+		url: '/user/updatePwd',
+		method: "post",
+		data
+	})
+}
+//查询用户的带岗位
+export function getUserList() {
+  return request({
+    url: '/user/select',
+    method: 'get'
+  })
+}
+//企业微信登录
+export function wxWorkLogin({userId,code}) {
+  return request({
+    url: `/user/updateWxUserId/${userId}/${code}`,
+    method: 'post'
+  })
+}

+ 91 - 0
api/warning.js

@@ -0,0 +1,91 @@
+import {
+	request
+} from '../libs/request.js'
+
+/**
+ * 获取分页
+ * @param data
+ * @returns {AxiosPromise}
+ */
+export function getAlertByPage(data) {
+  return request({
+    url: '/alert/page',
+    method: 'GET',
+    data
+  })
+}
+
+/**
+ * 获取列表
+ * @param data
+ * @returns {AxiosPromise}
+ */
+export function getAlertByList(data) {
+  return request({
+    url: '/alert',
+    method: 'GET',
+    data
+  })
+}
+
+/**
+ * 根据Id获取
+ * @param data
+ * @returns {AxiosPromise}
+ */
+export function getAlertById(id) {
+  return request({
+    url: `/alert/${id}`,
+    method: 'GET'
+  })
+}
+
+/**
+ * 开始
+ * @param data
+ * @returns {AxiosPromise}
+ */
+export function startAlert(data) {
+  return request({
+    url: `/alert/start`,
+    method: 'post',
+    data
+  })
+}
+
+/**
+ * 处理
+ * @param data
+ * @returns {AxiosPromise}
+ */
+export function handleAlert(data) {
+  return request({
+    url: `/alert/handle`,
+    method: 'POST',
+    data
+  })
+}
+
+/**
+ * 删除
+ * @param data
+ * @returns {AxiosPromise}
+ */
+export function deleteAlertById(id) {
+  return request({
+    url: `/alert/${id}`,
+    method: 'DELETE'
+  })
+}
+
+/**
+ * 查询统计结果
+ * @param data
+ * @returns {AxiosPromise}
+ */
+export function getAlertCounter() {
+  return request({
+    url: '/alert/statis/getCounter',
+    method: 'GET'
+  })
+}

+ 14 - 0
config/index.js

@@ -0,0 +1,14 @@
+export default {
+    base: {
+      dev: 'https://zhycapi.58yunkang.com',
+      // dev: 'http://localhost:8899',
+      // dev: 'http://192.168.0.97:8080',
+	  // dev:"http://192.168.3.221:8080",
+      pro: 'https://zhycapi.58yunkang.com'
+    },
+	TokenKey:"Authorization",
+	uploadFile:{//上传图片地址
+		dev: "https://zhycapi.58yunkang.com",
+		pro: "https://zhycapi.58yunkang.com"		
+	}
+}

+ 114 - 0
libs/EPlatform.js

@@ -0,0 +1,114 @@
+/**枚举EPlatform*/
+export enum EPlatform {
+  /**App*/
+  AppPlus = 'APP-PLUS',
+  /**App nvue*/
+  AppPlusNvue = 'APP-PLUS-NVUE',
+  /**H5*/
+  H5 = 'H5',
+  /**微信小程序*/
+  MpWeixin = 'MP-WEIXIN',
+  /**支付宝小程序*/
+  MpAlipay = 'MP-ALIPAY',
+  /**百度小程序*/
+  MpBaidu = 'MP-BAIDU',
+  /**字节跳动小程序*/
+  MpToutiao = 'MP-TOUTIAO',
+  /**QQ小程序*/
+  MpQq = 'MP-QQ',
+  /**360小程序*/
+  Mp360 = 'MP-360',
+  /**微信小程序/支付宝小程序/百度小程序/字节跳动小程序/QQ小程序/360小程序*/
+  Mp = 'MP',
+  /**快应用通用(包含联盟、华为)*/
+  QuickappWebview = 'quickapp-webview',
+  /**快应用联盟*/
+  QuickappWebviewUnion = 'quickapp-webview-union',
+  /**快应用华为*/
+  QuickappWebviewHuawei = 'quickapp-webview-huawei',
+}
+
+/**使用条件编译获取平台信息*/
+export function ifDefPlatform(): EPlatform {
+  let platform: EPlatform
+  //#ifdef APP-PLUS
+  platform = EPlatform.AppPlus;
+  //#endif
+  //#ifdef APP-PLUS-NVUE
+  platform = EPlatform.AppPlusNvue;
+  //#endif
+  //#ifdef H5
+  platform = EPlatform.H5;
+  //#endif
+  //#ifdef MP-WEIXIN
+  platform = EPlatform.MpWeixin;
+  //#endif
+  //#ifdef MP-ALIPAY
+  platform = EPlatform.MpAlipay;
+  //#endif
+  //#ifdef MP-BAIDU
+  platform = EPlatform.MpBaidu;
+  //#endif
+  //#ifdef MP-TOUTIAO
+  platform = EPlatform.MpToutiao;
+  //#endif
+  //#ifdef MP-QQ
+  platform = EPlatform.MpQq;
+  //#endif
+  //#ifdef MP-360
+  platform = EPlatform.Mp360;
+  //#endif
+  //#ifdef MP
+  platform = EPlatform.Mp;
+  //#endif
+  //#ifdef quickapp-webview
+  platform = EPlatform.QuickappWebview;
+  //#endif
+  //#ifdef quickapp-webview-union
+  platform = EPlatform.QuickappWebviewUnion;
+  //#endif
+  //#ifdef quickapp-webview-huawei
+  platform = EPlatform.QuickappWebviewHuawei;
+  //#endif
+  return platform
+}
+
+/**平台类型*/
+export const Platform: EPlatform = ifDefPlatform()
+/**默认导出平台类型*/
+export default Platform
+
+/**App*/
+export const isAppPlus = Platform == EPlatform.AppPlus
+/**App nvue*/
+export const isAppPlusNvue = Platform == EPlatform.AppPlusNvue
+/**H5*/
+export const isH5 = Platform == EPlatform.H5
+/**微信小程序*/
+export const isMpWeixin = Platform == EPlatform.MpWeixin
+/**支付宝小程序*/
+export const isMpAlipay = Platform == EPlatform.MpAlipay
+/**百度小程序*/
+export const isMpBaidu = Platform == EPlatform.MpBaidu
+/**字节跳动小程序*/
+export const isMpToutiao = Platform == EPlatform.MpToutiao
+/**QQ小程序*/
+export const isMpQq = Platform == EPlatform.MpQq
+/**360小程序*/
+export const isMp360 = Platform == EPlatform.Mp360
+/**微信小程序/支付宝小程序/百度小程序/字节跳动小程序/QQ小程序/360小程序*/
+export const isMp = Platform == EPlatform.Mp
+/**快应用通用(包含联盟、华为)*/
+export const isQuickappWebview = Platform == EPlatform.QuickappWebview
+/**快应用联盟*/
+export const isQuickappWebviewUnion = Platform == EPlatform.QuickappWebviewUnion
+/**快应用华为*/
+export const isQuickappWebviewHuawei = Platform == EPlatform.QuickappWebviewHuawei
+/**是否开发环境*/
+export const isDevelopment = process.env.NODE_ENV == 'development'
+/**是否线上环境*/
+export const isProduction = process.env.NODE_ENV == 'production'
+/**抖音小程序*/
+export const isMpDouyinApp = uni.getSystemInfoSync().appName == 'Douyin'
+/**头条小程序*/
+export const isMpToutiaoApp = uni.getSystemInfoSync().appName == 'Toutiao'

+ 15 - 0
libs/auth.js

@@ -0,0 +1,15 @@
+
+import config from "../config/index.js"
+const TokenKey = config.TokenKey;
+
+export function getToken() {
+  return uni.getStorageSync(TokenKey);
+}
+
+export function setToken(token) {
+  return uni.setStorageSync(TokenKey, token);
+}
+
+export function removeToken() {
+  return uni.removeStorageSync(TokenKey);
+}

+ 181 - 0
libs/enum.js

@@ -0,0 +1,181 @@
+// 风险类型
+export function riskType(val) {
+  const strs = [
+    '默认',
+    '人',
+    '物',
+    '管'
+  ]
+  return strs[val]
+}
+
+// 风险等级
+export function riskLevel(val) {
+  const strs = [
+    '默认',
+    '重大',
+    '较大',
+    '一般',
+    '较小'
+  ]
+  return strs[val]
+}
+
+// 风险等级
+export function riskPointStatus(val) {
+  const strs = [
+    '未知',
+    '安全受控',
+    '失控'
+  ]
+  return strs[val]
+}
+
+// 风险点等级
+export function riskPointLevel(val) {
+  const strs = [
+    '默认',
+    '重大',
+    '较大',
+    '一般',
+    '较小'
+  ]
+  return strs[val]
+}
+
+export function taskPriority(i) {
+  const strs = [
+    '未知',
+    '较低',
+    '普通',
+    '紧急',
+    '非常紧急'
+  ]
+  return strs[i]
+}
+
+export function taskType(i) {
+  const strs = [
+    '未知',
+    '常规',
+    '临时',
+    '立即'
+  ]
+  return strs[i]
+}
+
+export function taskStatus(i) {
+  const strs = [
+    '未开始',
+    '处理中',
+    '已取消',
+    '已完成'
+  ]
+  return strs[i]
+}
+
+export function checkResult(i) {
+  const strs = [
+    '没执行',
+    '通过',
+    '没通过',
+    '有隐患',
+    '已完成'
+  ]
+  return strs[i]
+}
+
+export function dangerStatus(i) {
+  if (i >= 0) {
+    const strs = [
+      '未开始',
+      '处理中',
+      '已完成'
+    ]
+    return strs[i]
+  } else {
+    return '已撤销'
+  }
+}
+
+export function dangerLevel(i) {
+  const strs = [
+    '未知',
+    '一般隐患',
+    '重大隐患'
+  ]
+  return strs[i]
+}
+
+export function dangerSource(i) {
+  const strs = [
+    '自查',
+    '内部反馈',
+    '上级抽查',
+    '政府执法'
+  ]
+  return strs[i]
+}
+
+export function rectifyCat(i) {
+  const strs = [
+    '自行整改',
+    '外协整改'
+  ]
+  return strs[i]
+}
+
+export function wfInsStatus(i) {
+  if (i >= 0) {
+    const strs = [
+      '未开始',
+      '执行中',
+      '已完成'
+    ]
+    return strs[i]
+  } else {
+    return '已撤销'
+  }
+}
+
+export function wfTaskInsStatus(i) {
+  const strs = [
+    '未开始',
+    '已完成'
+  ]
+  return strs[i]
+}
+
+export function dangerRectifyCat(i) {
+  const strs = [
+    '自行整改',
+    '外协整改'
+  ]
+  return strs[i]
+}
+
+export function alertLevel(i) {
+  const strs = [
+    '未知',
+    '1级',
+    '2级',
+    '3级',
+    '4级',
+    '5级',
+    '6级'
+  ]
+  return strs[i]
+}
+
+export function alertStatus(i) {
+  if (i >= 0) {
+    const strs = [
+      '未知',
+      '待处理',
+      '已处理'
+    ]
+    return strs[i]
+  } else {
+    return '已撤销'
+  }
+}

+ 97 - 0
libs/graceChecker.js

@@ -0,0 +1,97 @@
+/**
+数据验证(表单验证)
+来自 grace.hcoder.net 
+作者 hcoder 深海
+*/
+export default {
+	error:'',
+	check : function (data, rule){
+		for(var i = 0; i < rule.length; i++){
+			if (!rule[i].checkType){return true;}
+			if (!rule[i].name) {return true;}
+			if (!rule[i].errorMsg) {return true;}
+			if (!data[rule[i].name]) {this.error = rule[i].errorMsg; return false;}
+			switch (rule[i].checkType){
+				case 'string':
+					var reg = new RegExp('^.{' + rule[i].checkRule + '}$');
+					if(!reg.test(data[rule[i].name])) {this.error = rule[i].errorMsg; return false;}
+				break;
+				case 'int':
+					var reg = new RegExp('^(-[1-9]|[1-9])[0-9]{' + rule[i].checkRule + '}$');
+					if(!reg.test(data[rule[i].name])) {this.error = rule[i].errorMsg; return false;}
+					break;
+				break;
+				case 'between':
+					if (!this.isNumber(data[rule[i].name])){
+						this.error = rule[i].errorMsg;
+						return false;
+					}
+					var minMax = rule[i].checkRule.split(',');
+					minMax[0] = Number(minMax[0]);
+					minMax[1] = Number(minMax[1]);
+					if (data[rule[i].name] > minMax[1] || data[rule[i].name] < minMax[0]) {
+						this.error = rule[i].errorMsg;
+						return false;
+					}
+				break;
+				case 'betweenD':
+					var reg = /^-?[1-9][0-9]?$/;
+					if (!reg.test(data[rule[i].name])) { this.error = rule[i].errorMsg; return false; }
+					var minMax = rule[i].checkRule.split(',');
+					minMax[0] = Number(minMax[0]);
+					minMax[1] = Number(minMax[1]);
+					if (data[rule[i].name] > minMax[1] || data[rule[i].name] < minMax[0]) {
+						this.error = rule[i].errorMsg;
+						return false;
+					}
+				break;
+				case 'betweenF': 
+					var reg = /^-?[0-9][0-9]?.+[0-9]+$/;
+					if (!reg.test(data[rule[i].name])){this.error = rule[i].errorMsg; return false;}
+					var minMax = rule[i].checkRule.split(',');
+					minMax[0] = Number(minMax[0]);
+					minMax[1] = Number(minMax[1]);
+					if (data[rule[i].name] > minMax[1] || data[rule[i].name] < minMax[0]) {
+						this.error = rule[i].errorMsg;
+						return false;
+					}
+				break;
+				case 'same':
+					if (data[rule[i].name] != rule[i].checkRule) { this.error = rule[i].errorMsg; return false;}
+				break;
+				case 'notsame':
+					if (data[rule[i].name] == rule[i].checkRule) { this.error = rule[i].errorMsg; return false; }
+				break;
+				case 'email':
+					var reg = /^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
+					if (!reg.test(data[rule[i].name])) { this.error = rule[i].errorMsg; return false; }
+				break;
+				case 'phoneno':
+					var reg = /^1[0-9]{10,10}$/;
+					if (!reg.test(data[rule[i].name])) { this.error = rule[i].errorMsg; return false; }
+				break;
+				case 'zipcode':
+					var reg = /^[0-9]{6}$/;
+					if (!reg.test(data[rule[i].name])) { this.error = rule[i].errorMsg; return false; }
+				break;
+				case 'reg':
+					var reg = new RegExp(rule[i].checkRule);
+					if (!reg.test(data[rule[i].name])) { this.error = rule[i].errorMsg; return false; }
+				break;
+				case 'in':
+					if(rule[i].checkRule.indexOf(data[rule[i].name]) == -1){
+						this.error = rule[i].errorMsg; return false;
+					}
+				break;
+				case 'notnull':
+					if(data[rule[i].name] == null || data[rule[i].name].length < 1){this.error = rule[i].errorMsg; return false;}
+				break;
+			}
+		}
+		return true;
+	},
+	isNumber : function (checkVal){
+		var reg = /^-?[1-9][0-9]?.?[0-9]*$/;
+		return reg.test(checkVal);
+	}
+}

+ 394 - 0
libs/index.js

@@ -0,0 +1,394 @@
+/**
+ * Parse the time to string
+ * @param {(Object|string|number)} time
+ * @param {string} cFormat
+ * @returns {string | null}
+ */
+export function parseTime(time, cFormat) {
+  if (arguments.length === 0 || !time) {
+    return null
+  }
+  const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'
+  let date
+  if (typeof time === 'object') {
+    date = time
+  } else {
+    if ((typeof time === 'string')) {
+      if ((/^[0-9]+$/.test(time))) {
+        // support "1548221490638"
+        time = parseInt(time)
+      } else {
+        // support safari
+        // https://stackoverflow.com/questions/4310953/invalid-date-in-safari
+        time = time.replace(new RegExp(/-/gm), '/')
+      }
+    }
+
+    if ((typeof time === 'number') && (time.toString().length === 10)) {
+      time = time * 1000
+    }
+    date = new Date(time)
+  }
+  const formatObj = {
+    y: date.getFullYear(),
+    m: date.getMonth() + 1,
+    d: date.getDate(),
+    h: date.getHours(),
+    i: date.getMinutes(),
+    s: date.getSeconds(),
+    a: date.getDay()
+  }
+  const time_str = format.replace(/{([ymdhisa])+}/g, (result, key) => {
+    const value = formatObj[key]
+    // Note: getDay() returns 0 on Sunday
+    if (key === 'a') { return ['日', '一', '二', '三', '四', '五', '六'][value ] }
+    return value.toString().padStart(2, '0')
+  })
+  return time_str
+}
+
+/**
+ * @param {number} time
+ * @param {string} option
+ * @returns {string}
+ */
+export function formatTime(time, option) {
+  if (('' + time).length === 10) {
+    time = parseInt(time) * 1000
+  } else {
+    time = +time
+  }
+  const d = new Date(time)
+  const now = Date.now()
+
+  const diff = (now - d) / 1000
+
+  if (diff < 30) {
+    return '刚刚'
+  } else if (diff < 3600) {
+    // less 1 hour
+    return Math.ceil(diff / 60) + '分钟前'
+  } else if (diff < 3600 * 24) {
+    return Math.ceil(diff / 3600) + '小时前'
+  } else if (diff < 3600 * 24 * 2) {
+    return '1天前'
+  }
+  if (option) {
+    return parseTime(time, option)
+  } else {
+    return (
+      d.getMonth() +
+      1 +
+      '月' +
+      d.getDate() +
+      '日' +
+      d.getHours() +
+      '时' +
+      d.getMinutes() +
+      '分'
+    )
+  }
+}
+
+/**
+ * @param {string} url
+ * @returns {Object}
+ */
+export function getQueryObject(url) {
+  url = url == null ? window.location.href : url
+  const search = url.substring(url.lastIndexOf('?') + 1)
+  const obj = {}
+  const reg = /([^?&=]+)=([^?&=]*)/g
+  search.replace(reg, (rs, $1, $2) => {
+    const name = decodeURIComponent($1)
+    let val = decodeURIComponent($2)
+    val = String(val)
+    obj[name] = val
+    return rs
+  })
+  return obj
+}
+
+/**
+ * @param {string} input value
+ * @returns {number} output value
+ */
+export function byteLength(str) {
+  // returns the byte length of an utf8 string
+  let s = str.length
+  for (var i = str.length - 1; i >= 0; i--) {
+    const code = str.charCodeAt(i)
+    if (code > 0x7f && code <= 0x7ff) s++
+    else if (code > 0x7ff && code <= 0xffff) s += 2
+    if (code >= 0xDC00 && code <= 0xDFFF) i--
+  }
+  return s
+}
+
+/**
+ * @param {Array} actual
+ * @returns {Array}
+ */
+export function cleanArray(actual) {
+  const newArray = []
+  for (let i = 0; i < actual.length; i++) {
+    if (actual[i]) {
+      newArray.push(actual[i])
+    }
+  }
+  return newArray
+}
+
+/**
+ * @param {Object} json
+ * @returns {Array}
+ */
+export function param(json) {
+  if (!json) return ''
+  return cleanArray(
+    Object.keys(json).map(key => {
+      if (json[key] === undefined) return ''
+      return encodeURIComponent(key) + '=' + encodeURIComponent(json[key])
+    })
+  ).join('&')
+}
+
+/**
+ * @param {string} url
+ * @returns {Object}
+ */
+export function param2Obj(url) {
+  const search = decodeURIComponent(url.split('?')[1]).replace(/\+/g, ' ')
+  if (!search) {
+    return {}
+  }
+  const obj = {}
+  const searchArr = search.split('&')
+  searchArr.forEach(v => {
+    const index = v.indexOf('=')
+    if (index !== -1) {
+      const name = v.substring(0, index)
+      const val = v.substring(index + 1, v.length)
+      obj[name] = val
+    }
+  })
+  return obj
+}
+
+/**
+ * @param {string} val
+ * @returns {string}
+ */
+export function html2Text(val) {
+  const div = document.createElement('div')
+  div.innerHTML = val
+  return div.textContent || div.innerText
+}
+
+/**
+ * Merges two objects, giving the last one precedence
+ * @param {Object} target
+ * @param {(Object|Array)} source
+ * @returns {Object}
+ */
+export function objectMerge(target, source) {
+  if (typeof target !== 'object') {
+    target = {}
+  }
+  if (Array.isArray(source)) {
+    return source.slice()
+  }
+  Object.keys(source).forEach(property => {
+    const sourceProperty = source[property]
+    if (typeof sourceProperty === 'object') {
+      target[property] = objectMerge(target[property], sourceProperty)
+    } else {
+      target[property] = sourceProperty
+    }
+  })
+  return target
+}
+
+/**
+ * @param {HTMLElement} element
+ * @param {string} className
+ */
+export function toggleClass(element, className) {
+  if (!element || !className) {
+    return
+  }
+  let classString = element.className
+  const nameIndex = classString.indexOf(className)
+  if (nameIndex === -1) {
+    classString += '' + className
+  } else {
+    classString =
+      classString.substr(0, nameIndex) +
+      classString.substr(nameIndex + className.length)
+  }
+  element.className = classString
+}
+
+/**
+ * @param {string} type
+ * @returns {Date}
+ */
+export function getTime(type) {
+  if (type === 'start') {
+    return new Date().getTime() - 3600 * 1000 * 24 * 90
+  } else {
+    return new Date(new Date().toDateString())
+  }
+}
+
+/**
+ * @param {Function} func
+ * @param {number} wait
+ * @param {boolean} immediate
+ * @return {*}
+ */
+export function debounce(func, wait, immediate) {
+  let timeout, args, context, timestamp, result
+
+  const later = function() {
+    // 据上一次触发时间间隔
+    const last = +new Date() - timestamp
+
+    // 上次被包装函数被调用时间间隔 last 小于设定时间间隔 wait
+    if (last < wait && last > 0) {
+      timeout = setTimeout(later, wait - last)
+    } else {
+      timeout = null
+      // 如果设定为immediate===true,因为开始边界已经调用过了此处无需调用
+      if (!immediate) {
+        result = func.apply(context, args)
+        if (!timeout) context = args = null
+      }
+    }
+  }
+
+  return function(...args) {
+    context = this
+    timestamp = +new Date()
+    const callNow = immediate && !timeout
+    // 如果延时不存在,重新设定延时
+    if (!timeout) timeout = setTimeout(later, wait)
+    if (callNow) {
+      result = func.apply(context, args)
+      context = args = null
+    }
+
+    return result
+  }
+}
+
+/**
+ * This is just a simple version of deep copy
+ * Has a lot of edge cases bug
+ * If you want to use a perfect deep copy, use lodash's _.cloneDeep
+ * @param {Object} source
+ * @returns {Object}
+ */
+export function deepClone(source) {
+  if (!source && typeof source !== 'object') {
+    throw new Error('error arguments', 'deepClone')
+  }
+  const targetObj = source.constructor === Array ? [] : {}
+  Object.keys(source).forEach(keys => {
+    if (source[keys] && typeof source[keys] === 'object') {
+      targetObj[keys] = deepClone(source[keys])
+    } else {
+      targetObj[keys] = source[keys]
+    }
+  })
+  return targetObj
+}
+
+/**
+ * @param {Array} arr
+ * @returns {Array}
+ */
+export function uniqueArr(arr) {
+  return Array.from(new Set(arr))
+}
+
+/**
+ * @returns {string}
+ */
+export function createUniqueString() {
+  const timestamp = +new Date() + ''
+  const randomNum = parseInt((1 + Math.random()) * 65536) + ''
+  return (+(randomNum + timestamp)).toString(32)
+}
+
+/**
+ * Check if an element has a class
+ * @param {HTMLElement} elm
+ * @param {string} cls
+ * @returns {boolean}
+ */
+export function hasClass(ele, cls) {
+  return !!ele.className.match(new RegExp('(\\s|^)' + cls + '(\\s|$)'))
+}
+
+/**
+ * Add class to element
+ * @param {HTMLElement} elm
+ * @param {string} cls
+ */
+export function addClass(ele, cls) {
+  if (!hasClass(ele, cls)) ele.className += ' ' + cls
+}
+
+/**
+ * Remove class from element
+ * @param {HTMLElement} elm
+ * @param {string} cls
+ */
+export function removeClass(ele, cls) {
+  if (hasClass(ele, cls)) {
+    const reg = new RegExp('(\\s|^)' + cls + '(\\s|$)')
+    ele.className = ele.className.replace(reg, ' ')
+  }
+}
+ export function distanceTime(time) {
+		//获取当前时间   
+		var date = new Date();
+		var now = date.getTime();
+	   //设置截止时间
+	   var endDate = new Date();
+	   if(time)
+	   {
+		  endDate = new Date(time);
+	   }            
+		var end = endDate.getTime();
+		//获取截止时间和当前时间的时间差
+		if(now>=end){
+			return '已过期';
+		}
+		var leftTime = end-now;
+		//定义变量 d,h,m,s分别保存天数,小时,分钟,秒
+		var d,h,m,s;
+		//判断剩余天数,时,分,秒
+		if (leftTime>=0) {
+			d = Math.floor(leftTime/1000/60/60/24);
+			h = Math.floor(leftTime/1000/60/60%24);
+			m = Math.floor(leftTime/1000/60%60);
+			s = Math.floor(leftTime/1000%60);                  
+		}
+		if(d>0){
+			return `${d}天${h}小时${m}分钟`;
+		}else {
+			if(h>0){
+				return `${h}小时${m}分钟`;
+			}else{
+				return `${m}分钟`;
+			}
+		}	
+}
+export function isEmpty(value){
+	if(value===undefined||value==="undefined"||value===""||value===null){
+		return true;
+	}
+	return false;
+}

+ 64 - 0
libs/permission.js

@@ -0,0 +1,64 @@
+import store from '@/store/index.js';
+import {Router} from '@/libs/router';
+
+// 页面白名单
+const whiteList = [
+    '/pages/login/index',
+    '/pages/index/index'
+];
+/*设置白名单后台可以返回权限,然后再匹配路由地址*/
+let permission=['icon'];//权限数组示例---可以通过store登录的时候缓存
+	for(let i=0;i<permission.length;i++){
+		let permitName=permission[i];
+		let path=Router[permitName].path;
+		if(path){
+			if(!whiteList.includes(path)){
+				whiteList.push(path)
+			}
+		}
+	}
+function hasPermission (url) {
+    // 在白名单中或有token,直接跳转
+	//whiteList.indexOf(url) !== -1 //使用白名单校验页面的时候使用
+    if(store.state.access_token) {
+        return true
+    }
+    return false
+}
+ 
+uni.addInterceptor('navigateTo', {
+    // 页面跳转前进行拦截, invoke根据返回值进行判断是否继续执行跳转
+    invoke (e) {
+        if(!hasPermission(e.url)){
+            uni.reLaunch({
+                url: '/pages/login/index'
+            })
+            return false
+        }
+		return true
+    },
+    success (e) {
+        console.log(e)
+    },
+	fail(e) {
+		 console.log(e)
+	}
+}) 
+uni.addInterceptor('switchTab', {
+    // tabbar页面跳转前进行拦截
+    invoke (e) {
+        if(!hasPermission(e.url)){
+            uni.reLaunch({
+                url: '/pages/login/index'
+            })
+            return false
+        }
+		return true
+    },
+    success (e) {
+         console.log(e)
+    },
+	fail(e) {
+		 console.log(e)
+	}	
+})

+ 83 - 0
libs/request.js

@@ -0,0 +1,83 @@
+import config from "../config/index.js"
+const baseUrl = process.env.NODE_ENV === 'development' ? config.base.dev : config.base.pro;
+import {
+	getToken
+} from '../libs/auth.js';
+export async function request(parmas) {
+	return new Promise(function(resolve, reject) {
+		try {
+			uni.showLoading({
+				title: '加载中',
+				mask: true
+			});
+			uni.request({
+				...formatRequestBody(parmas),
+				success(response) {
+					let data = response.data;
+					let code = data.code;
+					let msg = data.msg
+					if (code === 0) {
+						resolve(data)
+					} else {
+						if (code === 401) {
+							uni.showToast({
+								title: msg || "登录失效!",
+								mask: true,
+								icon: "none",
+								complete() {
+									uni.navigateTo({
+										url: '/pages/login/index'
+									})
+								}
+							})
+
+						} else {
+							reject(data)
+							uni.showToast({
+								title: msg,
+								mask: true,
+								icon: "none"
+							})
+						}
+					}
+				},
+				fail(res) {
+					uni.showToast({
+						title: res,
+						mask: true,
+						icon: "none"
+					})
+					reject(res)
+				},
+				complete(res) {
+					uni.hideLoading();
+				}
+			})
+		} catch (err) {
+			console.log(err)
+			reject(err)
+		}
+	})
+}
+
+function formatRequestBody(parmas) {
+	let url = parmas.url;
+	url = baseUrl + url;
+	let data = {
+		...parmas.data
+	};
+	let header = {
+		...parmas.header
+	};
+	header[config.TokenKey]=getToken();
+	let method = parmas.method || "get";
+	let dataType = parmas.dataType || "json";
+	let requestBody = {
+		url,
+		data,
+		header,
+		method,
+		dataType
+	};
+	return requestBody;
+};

+ 21 - 0
libs/router.js

@@ -0,0 +1,21 @@
+/*根路径写法*/
+export const Router={
+	"login":{
+		"path": "/pages/login/index"
+	},		
+	"index":{
+		"path": "/pages/index/index"
+	},
+	"record":{
+		"path" : "/views/record/index",	
+	},
+	"myCenter":{
+		"path" : "/pages/myCenter/index" 
+	},
+	"views-login":{
+		"path": "/views/login/index"
+	},
+	"icon":{
+		"path": "/pages/icon/index"
+	}		
+}

+ 40 - 0
libs/tool.js

@@ -0,0 +1,40 @@
+/**
+ * 隐患等级、风险等级、风险点等级、危险源等级、级别转换
+ */
+export function levelConversion(level) {
+	let levelStr;
+	if (level == 1) {
+		levelStr = '重大'
+	} else if (level == 2) {
+		levelStr = '较大'
+	} else if (level == 3) {
+		levelStr = '一般'
+	} else if (level == 4) {
+		levelStr = '低'
+	} else {
+		levelStr = '暂无'
+	}
+	return levelStr;
+}
+
+/**
+ * 构建树JS
+ * @param {Object} data
+ */
+export function toTreeText(data) {
+	var val = []
+	data.forEach(function(item) {
+		var items = {}
+		items.value = item.groupId
+		items.text = item.groupName
+		if (item.children) {
+			items.children = toTreeText(item.children)
+			val.push(items)
+		} else {
+			val.push(items)
+		}
+	})
+	return val
+}
+
+

+ 20 - 2
pages.json

@@ -27,7 +27,25 @@
 			"style": {
 				"navigationBarTitleText": "登录"
 			}
-	   } 
+	   },
+		{
+			"path": "pages/mine/password/password",
+			"style": {
+				"navigationBarTitleText": "修改密码"
+			}
+		} ,
+		{
+			"path": "pages/task/task",
+			"style": {
+				"navigationBarTitleText": "预警处置"
+			}
+		},
+		{
+			"path": "pages/task/form/form",
+			"style": {
+				"navigationBarTitleText": "处置"
+			}
+		}
     ],
 	"tabBar": {
 		"color": "#999999",
@@ -58,7 +76,7 @@
 	"globalStyle": {
 		"navigationBarTextStyle": "black",
 		"navigationBarTitleText": "uni-app",
-		"navigationBarBackgroundColor": "#F8F8F8",
+		"navigationBarBackgroundColor": "#F3F5FB",
 		"backgroundColor": "#F8F8F8",
 		"app-plus": {
 			"background": "#efeff4"

+ 24 - 5
pages/index/index.vue

@@ -24,9 +24,9 @@
 		</div>
 		<div class="task-list">
 			<div class="head">待办任务</div>
-			<div class="item" v-for="(item,index) in 10" :key="index">
-				<div class="task-title">{2号-770-32002}:采空区封堵完好,无渗水情况。</div>
-				<div class="time">2022-02-03 09:00</div>
+			<div class="item" v-for="(item,index) in items" :key="index" @click="linkTo(item)">
+				<div class="task-title">{{item.title}}</div>
+				<div class="time">{{item.time}}</div>
 			</div>
 		</div>
 	</view>
@@ -41,16 +41,35 @@
 					wait:3,
 					expire:2,
 					complete:10
-				}
+				},
+				items:[]			
 			}
 		},
 		onLoad(){
 			this.initStatusBarHeight()
 		},
+		onShow() {
+			this.init()
+		},
 		methods: {
 			initStatusBarHeight(){
-				console.log(uni.getSystemInfoSync())
 				this.statusBarHeight=uni.getSystemInfoSync().statusBarHeight
+			},
+			init(){
+				const items=[]
+				for(let i=0;i<10;i++){
+					items.push({
+						title:'{2号-770-32002}:采空区封堵完好,无渗水情况。'	,
+						time:'2022-02-03 09:00'
+					})
+				}
+				this.items=items
+			},
+			linkTo(item){
+				uni.setStorageSync('task-item',item)
+				uni.navigateTo({
+					url:'/pages/task/task'
+				})
 			}
 		}
 	}

+ 5 - 6
pages/login/login.vue

@@ -49,12 +49,11 @@
 		},
 		methods: {
 			submit(){
-				const form=this.form
-					this.$refs.form.validate().then(res=>{
-						console.log('表单数据信息:', res);
-					}).catch(err =>{
-						console.log('表单错误信息:', err);
-					})
+				this.$refs.form.validate().then(res=>{
+					console.log('表单数据信息:', res);
+				}).catch(err =>{
+					console.log('表单错误信息:', err);
+				})
 			}
 		}
 	}

+ 83 - 2
pages/mine/mine.vue

@@ -8,6 +8,29 @@
 					<text class="name">李飞翔</text>
 				</div>
 		</view>
+		<div class="form">
+			<div class="item">
+				<div class="item-title">
+					<image class="icon" src="/static/icon/location.png" mode="widthFix"></image>
+					<div class="namme">行政区划</div>
+				</div>
+				<div class="cont">行政区划</div>
+			</div>
+			<div class="item">
+				<div class="item-title">
+					<image class="icon" src="/static/icon/user-group.png" mode="widthFix"></image>
+					<div class="namme">所属部门</div>
+				</div>
+				<div class="cont">所属部门</div>
+			</div>
+			<div class="item"  @click="linkTo">
+				<div class="item-title">
+					<image class="icon" src="/static/icon/unlock.png" mode="widthFix"></image>
+					<div class="name">修改密码</div>
+				</div>
+				<div class="cont"><image class="rt-icon" src="/static/icon/rt_icon.png" mode="widthFix"></image></div>
+			</div>
+		</div>
 		<button type="default" class="btn-submit">退出登陆</button>
 	</view>
 </template>
@@ -20,7 +43,11 @@
 			}
 		},
 		methods: {
-			
+			linkTo(){
+				uni.navigateTo({
+					url:'/pages/mine/password/password'
+				})
+			}
 		}
 	}
 </script>
@@ -29,6 +56,13 @@
 .page-mine{
 	background-size: 100% 504rpx;
 	background-repeat: no-repeat;
+	background-color: #fff;
+		height: 100vh;
+	/* #ifdef H5 */
+	height: calc(100vh - 50px);
+	/* #endif */
+	box-sizing: border-box;
+	position: relative;
 	.user-info{
 		padding-left:30upx;
 		.user{
@@ -51,6 +85,50 @@
 			}
 		}
 	}
+	.form{
+		padding: 0 48upx 0 36upx;
+		background-color: #fff;
+		.item{
+			height: 120upx;
+			display: flex;
+			justify-content: space-between;
+			align-items: center;
+			.item-title{
+				display: flex;
+				align-items: center;
+				.icon{
+					display: block;
+					width: 48upx;
+					height: 48upx;
+				}
+				.name{
+					font-family: 'Abhaya Libre';
+					font-style: normal;
+					font-weight: 400;
+					font-size: 32upx;
+					line-height:48upx;
+					text-align: center;
+					color: #151515;					
+					margin-left: 10upx;
+				}
+			}
+			.cont{
+					font-family: 'Abhaya Libre';
+					font-style: normal;
+					font-weight: 400;
+					font-size: 32upx;
+					line-height:48upx;
+					text-align: center;
+					color: #151515;					
+					margin-left: 10upx;	
+				    .rt-icon{
+						display: block;
+						width: 15upx;
+						height: 15upx;
+					}
+			}
+		}
+	}
 	.title{
 		font-family: 'Abhaya Libre';
 		font-style: normal;
@@ -72,7 +150,10 @@
 		background: #F2F2F2;
 		border-radius: 4px;
 		text-align: center;
-		margin-top: 48vh;
+		position: absolute;
+		bottom: 150upx;
+		margin-left: 50%;
+		transform: translateX(-50%);
 	}
 }
 </style>

+ 99 - 0
pages/mine/password/password.vue

@@ -0,0 +1,99 @@
+<template>
+	<view class="password-page">
+		<view class="form">
+			<uni-forms ref="form" :rules="rules" :model="form" :label-width="80">
+				<uni-forms-item label="原密码" name="original_password" required>
+					<uni-easyinput v-model="form.original_password" type="password" placeholder="请输入原密码"></uni-easyinput>
+				</uni-forms-item>
+				<uni-forms-item label="新密码" name="new_password" required>
+					<uni-easyinput v-model="form.new_password" type="password" placeholder="请输入新密码"></uni-easyinput>
+				</uni-forms-item>
+				<uni-forms-item label="再次确认" name="password" required>
+					<uni-easyinput v-model="form.password" type="password" placeholder="请再次输入新密码"></uni-easyinput>
+				</uni-forms-item>
+			</uni-forms>	
+			<footer @click="onSubmit">提交</footer>
+		</view>		
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				rules:{
+					original_password:{
+						rules:[
+							{
+								required: true,
+								errorMessage: '请输入原密码'
+							}					
+						],
+						validateTrigger:'submit'
+					},
+					new_password:{
+						rules:[
+							{
+								required: true,
+								errorMessage: '请输入新密码'
+							}					
+						],
+						validateTrigger:'submit'
+					},
+					password:{
+						rules:[
+							{
+								required: true,
+								errorMessage: '请再次输入新密码'
+							}					
+						],
+						validateTrigger:'submit'
+					},
+				},
+				form:{
+					original_password:"",
+					new_password:"",
+					password:""					
+				}
+			}
+		},
+		methods: {
+			onSubmit(){
+				this.$refs.form.validate().then(res=>{
+					console.log('表单数据信息:', res);
+				}).catch(err =>{
+					console.log('表单错误信息:', err);
+				})				
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+.password-page{
+	background: #F3F5FB;
+	height: 100vh;
+	.form{
+		width: 686upx;
+		background-color: #fff;
+		margin: 0 auto;
+		padding:40upx 36upx 2upx 36upx;
+		box-sizing: border-box;
+		border-radius: 20upx;
+	}
+	footer{
+		width: 100%;
+		height: 136upx;
+		background: #FFFFFF;
+		border-radius: 16upx 16upx 0px 0px;
+		position: fixed;
+		left: 0;
+		bottom: 0;
+		text-align: center;
+		color: #168DEC;
+		font-size: 32upx;
+		padding-top: 20upx;
+		letter-spacing: 2px;
+	}
+}
+</style>

+ 144 - 0
pages/task/form/form.vue

@@ -0,0 +1,144 @@
+<template>
+	<div class="body">		
+		<uni-forms ref="form" label-position="top" :rules="rules" :model="form">
+			<uni-forms-item label="是否异常" name="status" required>
+				<uni-data-select
+					v-model="form.status"
+					:localdata="status"
+				></uni-data-select>
+			</uni-forms-item>
+			<uni-forms-item label="评审人" name="user" required v-if="form.status===1">
+				<uni-data-select
+					v-model="form.user"
+					:localdata="users"
+				></uni-data-select>
+			</uni-forms-item>
+			<uni-forms-item label="描述" name="desc" required>
+				<uni-easyinput type="textarea" autoHeight v-model="form.desc" placeholder="请输入描述"></uni-easyinput>
+			</uni-forms-item>
+			<uni-forms-item label="附件">
+				<div class="upload-container">
+					<image @click="upload" class="upload" src="/static/icon/upload.png" mode="widthFix"></image>
+					<p class="tip">注:单个附件上传不超过10M,附件累计不超过20M</p>					
+				</div>
+			</uni-forms-item>
+		</uni-forms>	
+		<view class="footer" @click="onSubmit">提交</view>
+	</div>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				status: [
+				  { value: 0, text: "否" },
+				  { value: 1, text: "是" }
+				],
+				users:[
+				  { value: 0, text: "张三" },
+				  { value: 1, text: "李四" }					
+				],
+				rules:{
+					status:{
+						rules:[
+							{
+								required: true,
+								errorMessage: '请选择是否异常'
+							}					
+						],
+						validateTrigger:'submit'
+					},
+					user:{
+						rules:[
+							{
+								required: true,
+								errorMessage: '请选择评审人',
+							},						
+						],
+					},
+					desc:{
+						rules:[
+							{
+								required: true,
+								errorMessage: '请填写描述',
+							},						
+						]						
+					}
+				},
+				form:{
+					status:"",
+					password:"",
+					desc:""
+				}
+			}
+		},
+		methods: {
+			upload(){
+				uni.chooseFile({
+					success: (files) => {
+						const tempFilePaths = files.tempFilePaths;
+						uni.uploadFile({
+							url: 'https://www.example.com/upload', //仅为示例,非真实的接口地址
+							filePath: tempFilePaths[0],
+							name: 'file',
+							formData: {
+								'user': 'test'
+							},
+							success: (uploadFileRes) => {
+								console.log(uploadFileRes.data);
+							}
+						});
+					}
+				});
+			},
+			onSubmit(){
+				this.$refs.form.validate().then(res=>{
+					console.log('表单数据信息:', res);
+				}).catch(err =>{
+					console.log('表单错误信息:', err);
+				})
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+.body{
+	height: 100vh;
+	box-sizing: border-box;
+	padding:21rpx 16rpx;
+	background-color: #F3F5FB;
+	::v-deep .uni-forms-item__content{
+		.uni-easyinput,.uni-select{
+			background-color: #fff;
+		}	
+	}
+	.upload-container{
+		.upload{
+			width: 216rpx;
+			display: block;
+		}
+		.tip{
+			font-size: 24rpx;
+			line-height: 28rpx;
+			color: #999999;
+			padding-top: 20rpx;
+		}
+	}
+	.footer{
+		width: 100%;
+		height: 136upx;
+		background: #FFFFFF;
+		border-radius: 16upx 16upx 0px 0px;
+		position: fixed;
+		left: 0;
+		bottom: 0;
+		text-align: center;
+		color: #168DEC;
+		font-size: 32upx;
+		padding-top: 20upx;
+		letter-spacing: 2px;
+	}
+}
+</style>

+ 122 - 0
pages/task/task.vue

@@ -0,0 +1,122 @@
+<template>
+	<view class="task-page">
+		<div class="title">{{item.title}}</div>
+		<div class="info">
+			<div class="item">
+				<view class="name">执行人</view>
+				<view class="cont">执行人</view>	
+			</div>
+			<div class="item">
+				<view class="name">执行部门</view>
+				<view class="cont">执行部门</view>	
+			</div>
+			<div class="item">
+				<view class="name">发布时间</view>
+				<view class="cont">{{parseTime(new Date())}}</view>	
+			</div>
+		</div>
+		<div class="status">
+			<div class="head">处置过程</div>
+			<image class="icon-empty" src="/static/icon/empty.png" mode="widthFix"></image>
+			<p>暂无处置信息</p>
+		</div>
+		<image class="add" @click="add" src="/static/icon/add.png" mode="widthFix"></image>
+	</view>
+</template>
+
+<script>
+	import {parseTime} from '@/libs/index.js'
+	export default {
+		data() {
+			return {
+				item:{
+					title:"水位预{2号-770-32002}:采空区封堵完好,无渗水情况。"
+				}
+			}
+		},
+		onLoad() {
+			// this.getTask()
+		},
+		methods: {
+			parseTime,
+			getTask(){
+				this.item=uni.getStorageSync('task-item')
+			},
+			add(){
+				uni.navigateTo({
+					url:'/pages/task/form/form'
+				})
+			}
+		},
+		destroyed() {
+			uni.removeStorageSync('task-item')
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.task-page{
+		background-color: #F3F5FB;
+		.title{
+			font-family: 'Source Han Sans CN';
+			font-style: normal;
+			font-weight: 700;
+			font-size: 36rpx;
+			line-height: 54rpx;
+			color: #212121;
+			padding:0 32rpx;
+		}
+		.info{
+			padding: 0 32rpx;
+			margin: 40rpx 0;
+			background: #FFFFFF;
+			border-radius: 32rpx 32rpx 0px 0px;	
+			.item{
+				border-bottom: 1rpx solid #EFF1F3;	
+				padding: 40rpx 32rpx;
+				.name{
+					font-size: 28rpx;
+					color: #999999;
+					line-height: 1;
+				}
+				.cont{
+					font-size: 30rpx;
+					color: #212121;
+					line-height: 1.5;
+					padding-top: 12rpx;
+				}
+				&:last-child{
+					border-bottom:none;
+				}
+			}
+		}
+		.status{
+			background: #FFFFFF;
+			border-radius: 32rpx 32rpx 0px 0px;
+			padding: 48rpx 32rpx;
+			color: #212121;
+			font-size: 34rpx;
+			line-height:1;
+			font-weight: 700;
+			.icon-empty{
+				display: block;
+				width: 160rpx;
+				margin: 64rpx auto 0;
+			}
+			p{
+				font-size: 24rpx;
+				line-height: 28rpx;
+				color: #D5D5D5;
+				text-align: center;
+			}
+		}
+		.add{
+			display: block;
+			width: 96rpx;	
+			position: fixed;
+			bottom: 186rpx;
+			right: 32rpx;
+		}
+	}
+
+</style>

二進制
static/icon/add.png


二進制
static/icon/empty.png


二進制
static/icon/location.png


二進制
static/icon/pass.png


二進制
static/icon/reject.png


二進制
static/icon/rt_icon.png


二進制
static/icon/unlock.png


二進制
static/icon/upload.png


二進制
static/icon/user-group.png


二進制
static/preview/1.png


二進制
static/preview/2.png


二進制
static/preview/3.png


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/common/main.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/common/runtime.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/common/vendor.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/login/login.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/mine/mine.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/mine/password/password.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/risk/risk.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/task/form/form.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/task/task.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-data-select/components/uni-data-select/uni-data-select.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-forms/components/uni-forms/uni-forms.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-icons/components/uni-icons/uni-icons.js.map


+ 5 - 2
unpackage/dist/dev/mp-weixin/app.json

@@ -3,13 +3,16 @@
     "pages/index/index",
     "pages/risk/risk",
     "pages/mine/mine",
-    "pages/login/login"
+    "pages/login/login",
+    "pages/mine/password/password",
+    "pages/task/task",
+    "pages/task/form/form"
   ],
   "subPackages": [],
   "window": {
     "navigationBarTextStyle": "black",
     "navigationBarTitleText": "uni-app",
-    "navigationBarBackgroundColor": "#F8F8F8",
+    "navigationBarBackgroundColor": "#F3F5FB",
     "backgroundColor": "#F8F8F8"
   },
   "tabBar": {

+ 1 - 1
unpackage/dist/dev/mp-weixin/common/main.wxss

@@ -2354,7 +2354,7 @@
   border-color: #e9e9eb;
 }
 page {
-  background-color: #f5f5f5;
+  background-color: #fff;
 }
 .status_bar {
   height: 25px;

+ 2 - 2
unpackage/dist/dev/mp-weixin/common/runtime.js

@@ -105,11 +105,11 @@
 /******/
 /******/
 /******/ 		// mini-css-extract-plugin CSS loading
-/******/ 		var cssChunks = {"uni_modules/uni-forms/components/uni-forms-item/uni-forms-item":1,"uni_modules/uni-forms/components/uni-forms/uni-forms":1,"uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput":1,"uni_modules/uni-icons/components/uni-icons/uni-icons":1};
+/******/ 		var cssChunks = {"uni_modules/uni-forms/components/uni-forms-item/uni-forms-item":1,"uni_modules/uni-forms/components/uni-forms/uni-forms":1,"uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput":1,"uni_modules/uni-data-select/components/uni-data-select/uni-data-select":1,"uni_modules/uni-icons/components/uni-icons/uni-icons":1};
 /******/ 		if(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);
 /******/ 		else if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {
 /******/ 			promises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {
-/******/ 				var href = "" + ({"uni_modules/uni-forms/components/uni-forms-item/uni-forms-item":"uni_modules/uni-forms/components/uni-forms-item/uni-forms-item","uni_modules/uni-forms/components/uni-forms/uni-forms":"uni_modules/uni-forms/components/uni-forms/uni-forms","uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput":"uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput","uni_modules/uni-icons/components/uni-icons/uni-icons":"uni_modules/uni-icons/components/uni-icons/uni-icons"}[chunkId]||chunkId) + ".wxss";
+/******/ 				var href = "" + ({"uni_modules/uni-forms/components/uni-forms-item/uni-forms-item":"uni_modules/uni-forms/components/uni-forms-item/uni-forms-item","uni_modules/uni-forms/components/uni-forms/uni-forms":"uni_modules/uni-forms/components/uni-forms/uni-forms","uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput":"uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput","uni_modules/uni-data-select/components/uni-data-select/uni-data-select":"uni_modules/uni-data-select/components/uni-data-select/uni-data-select","uni_modules/uni-icons/components/uni-icons/uni-icons":"uni_modules/uni-icons/components/uni-icons/uni-icons"}[chunkId]||chunkId) + ".wxss";
 /******/ 				var fullhref = __webpack_require__.p + href;
 /******/ 				var existingLinkTags = document.getElementsByTagName("link");
 /******/ 				for(var i = 0; i < existingLinkTags.length; i++) {

File diff suppressed because it is too large
+ 767 - 30
unpackage/dist/dev/mp-weixin/common/vendor.js


+ 21 - 2
unpackage/dist/dev/mp-weixin/pages/index/index.js

@@ -183,16 +183,35 @@ var _default = {
         wait: 3,
         expire: 2,
         complete: 10
-      }
+      },
+      items: []
     };
   },
   onLoad: function onLoad() {
     this.initStatusBarHeight();
   },
+  onShow: function onShow() {
+    this.init();
+  },
   methods: {
     initStatusBarHeight: function initStatusBarHeight() {
-      console.log(uni.getSystemInfoSync());
       this.statusBarHeight = uni.getSystemInfoSync().statusBarHeight;
+    },
+    init: function init() {
+      var items = [];
+      for (var i = 0; i < 10; i++) {
+        items.push({
+          title: '{2号-770-32002}:采空区封堵完好,无渗水情况。',
+          time: '2022-02-03 09:00'
+        });
+      }
+      this.items = items;
+    },
+    linkTo: function linkTo(item) {
+      uni.setStorageSync('task-item', item);
+      uni.navigateTo({
+        url: '/pages/task/task'
+      });
     }
   }
 };

+ 1 - 1
unpackage/dist/dev/mp-weixin/pages/index/index.wxml

@@ -1 +1 @@
-<view class="page-index data-v-57280228"><view class="status_bar data-v-57280228"></view><view class="title _div data-v-57280228"><text class="tab data-v-57280228">我的</text><text class="tab active data-v-57280228">部门</text></view><view class="statistics _div data-v-57280228"><view class="head _div data-v-57280228">任务统计</view><view class="container _div data-v-57280228"><view class="item _div data-v-57280228"><image class="icon _img data-v-57280228" src="/static/index/wait.png" alt></image><text class="data-v-57280228">{{"待巡检"+statistics.wait+"个"}}</text></view><view class="item _div data-v-57280228"><image class="icon _img data-v-57280228" src="/static/index/expire.png" alt></image><text class="data-v-57280228">{{"已逾期"+statistics.expire+"个"}}</text></view><view class="item _div data-v-57280228"><image class="icon _img data-v-57280228" src="/static/index/complete.png" alt></image><text class="data-v-57280228">{{"已完成"+statistics.complete+"个"}}</text></view></view></view><view class="task-list _div data-v-57280228"><view class="head _div data-v-57280228">待办任务</view><block wx:for="{{10}}" wx:for-item="item" wx:for-index="index" wx:key="index"><view class="item _div data-v-57280228"><view class="task-title _div data-v-57280228">{2号-770-32002}:采空区封堵完好,无渗水情况。</view><view class="time _div data-v-57280228">2022-02-03 09:00</view></view></block></view></view>
+<view class="page-index data-v-57280228"><view class="status_bar data-v-57280228"></view><view class="title _div data-v-57280228"><text class="tab data-v-57280228">我的</text><text class="tab active data-v-57280228">部门</text></view><view class="statistics _div data-v-57280228"><view class="head _div data-v-57280228">任务统计</view><view class="container _div data-v-57280228"><view class="item _div data-v-57280228"><image class="icon _img data-v-57280228" src="/static/index/wait.png" alt></image><text class="data-v-57280228">{{"待巡检"+statistics.wait+"个"}}</text></view><view class="item _div data-v-57280228"><image class="icon _img data-v-57280228" src="/static/index/expire.png" alt></image><text class="data-v-57280228">{{"已逾期"+statistics.expire+"个"}}</text></view><view class="item _div data-v-57280228"><image class="icon _img data-v-57280228" src="/static/index/complete.png" alt></image><text class="data-v-57280228">{{"已完成"+statistics.complete+"个"}}</text></view></view></view><view class="task-list _div data-v-57280228"><view class="head _div data-v-57280228">待办任务</view><block wx:for="{{items}}" wx:for-item="item" wx:for-index="index" wx:key="index"><view data-event-opts="{{[['tap',[['linkTo',['$0'],[[['items','',index]]]]]]]}}" class="item _div data-v-57280228" bindtap="__e"><view class="task-title _div data-v-57280228">{{item.title}}</view><view class="time _div data-v-57280228">{{item.time}}</view></view></block></view></view>

+ 3 - 4
unpackage/dist/dev/mp-weixin/pages/login/login.js

@@ -101,13 +101,13 @@ var components
 try {
   components = {
     uniForms: function () {
-      return Promise.all(/*! import() | uni_modules/uni-forms/components/uni-forms/uni-forms */[__webpack_require__.e("common/vendor"), __webpack_require__.e("uni_modules/uni-forms/components/uni-forms/uni-forms")]).then(__webpack_require__.bind(null, /*! @/uni_modules/uni-forms/components/uni-forms/uni-forms.vue */ 67))
+      return Promise.all(/*! import() | uni_modules/uni-forms/components/uni-forms/uni-forms */[__webpack_require__.e("common/vendor"), __webpack_require__.e("uni_modules/uni-forms/components/uni-forms/uni-forms")]).then(__webpack_require__.bind(null, /*! @/uni_modules/uni-forms/components/uni-forms/uni-forms.vue */ 75))
     },
     uniFormsItem: function () {
-      return Promise.all(/*! import() | uni_modules/uni-forms/components/uni-forms-item/uni-forms-item */[__webpack_require__.e("common/vendor"), __webpack_require__.e("uni_modules/uni-forms/components/uni-forms-item/uni-forms-item")]).then(__webpack_require__.bind(null, /*! @/uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.vue */ 83))
+      return Promise.all(/*! import() | uni_modules/uni-forms/components/uni-forms-item/uni-forms-item */[__webpack_require__.e("common/vendor"), __webpack_require__.e("uni_modules/uni-forms/components/uni-forms-item/uni-forms-item")]).then(__webpack_require__.bind(null, /*! @/uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.vue */ 91))
     },
     uniEasyinput: function () {
-      return __webpack_require__.e(/*! import() | uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput */ "uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput").then(__webpack_require__.bind(null, /*! @/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.vue */ 90))
+      return __webpack_require__.e(/*! import() | uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput */ "uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput").then(__webpack_require__.bind(null, /*! @/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.vue */ 98))
     },
   }
 } catch (e) {
@@ -215,7 +215,6 @@ var _default = {
   },
   methods: {
     submit: function submit() {
-      var form = this.form;
       this.$refs.form.validate().then(function (res) {
         console.log('表单数据信息:', res);
       }).catch(function (err) {

+ 32 - 2
unpackage/dist/dev/mp-weixin/pages/mine/mine.js

@@ -144,7 +144,7 @@ __webpack_require__.r(__webpack_exports__);
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
-
+/* WEBPACK VAR INJECTION */(function(uni) {
 
 Object.defineProperty(exports, "__esModule", {
   value: true
@@ -164,15 +164,45 @@ exports.default = void 0;
 //
 //
 //
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
 var _default = {
   data: function data() {
     return {
       bg: __webpack_require__(/*! ./image/bg.png */ 56)
     };
   },
-  methods: {}
+  methods: {
+    linkTo: function linkTo() {
+      uni.navigateTo({
+        url: '/pages/mine/password/password'
+      });
+    }
+  }
 };
 exports.default = _default;
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-weixin/dist/index.js */ 2)["default"]))
 
 /***/ }),
 

+ 1 - 1
unpackage/dist/dev/mp-weixin/pages/mine/mine.wxml

@@ -1 +1 @@
-<view class="page-mine data-v-dcbcfe34" style="{{'background-image:'+('url('+bg+')')+';'}}"><view class="status_bar data-v-dcbcfe34"></view><view class="user-info data-v-dcbcfe34"><view class="title data-v-dcbcfe34">个人中心</view><view class="user _div data-v-dcbcfe34"><image class="head _img data-v-dcbcfe34" src="{{$root.m0}}" alt></image><text class="name data-v-dcbcfe34">李飞翔</text></view></view><button class="btn-submit data-v-dcbcfe34" type="default">退出登陆</button></view>
+<view class="page-mine data-v-dcbcfe34" style="{{'background-image:'+('url('+bg+')')+';'}}"><view class="status_bar data-v-dcbcfe34"></view><view class="user-info data-v-dcbcfe34"><view class="title data-v-dcbcfe34">个人中心</view><view class="user _div data-v-dcbcfe34"><image class="head _img data-v-dcbcfe34" src="{{$root.m0}}" alt></image><text class="name data-v-dcbcfe34">李飞翔</text></view></view><view class="form _div data-v-dcbcfe34"><view class="item _div data-v-dcbcfe34"><view class="item-title _div data-v-dcbcfe34"><image class="icon data-v-dcbcfe34" src="/static/icon/location.png" mode="widthFix"></image><view class="namme _div data-v-dcbcfe34">行政区划</view></view><view class="cont _div data-v-dcbcfe34">行政区划</view></view><view class="item _div data-v-dcbcfe34"><view class="item-title _div data-v-dcbcfe34"><image class="icon data-v-dcbcfe34" src="/static/icon/user-group.png" mode="widthFix"></image><view class="namme _div data-v-dcbcfe34">所属部门</view></view><view class="cont _div data-v-dcbcfe34">所属部门</view></view><view data-event-opts="{{[['tap',[['linkTo',['$event']]]]]}}" class="item _div data-v-dcbcfe34" bindtap="__e"><view class="item-title _div data-v-dcbcfe34"><image class="icon data-v-dcbcfe34" src="/static/icon/unlock.png" mode="widthFix"></image><view class="name _div data-v-dcbcfe34">修改密码</view></view><view class="cont _div data-v-dcbcfe34"><image class="rt-icon data-v-dcbcfe34" src="/static/icon/rt_icon.png" mode="widthFix"></image></view></view></view><button class="btn-submit data-v-dcbcfe34" type="default">退出登陆</button></view>

+ 53 - 1
unpackage/dist/dev/mp-weixin/pages/mine/mine.wxss

@@ -4,6 +4,10 @@
 .page-mine.data-v-dcbcfe34 {
   background-size: 100% 504rpx;
   background-repeat: no-repeat;
+  background-color: #fff;
+  height: 100vh;
+  box-sizing: border-box;
+  position: relative;
 }
 .page-mine .user-info.data-v-dcbcfe34 {
   padding-left: 30rpx;
@@ -27,6 +31,50 @@
   color: #151515;
   padding-left: 30rpx;
 }
+.page-mine .form.data-v-dcbcfe34 {
+  padding: 0 48rpx 0 36rpx;
+  background-color: #fff;
+}
+.page-mine .form .item.data-v-dcbcfe34 {
+  height: 120rpx;
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+}
+.page-mine .form .item .item-title.data-v-dcbcfe34 {
+  display: flex;
+  align-items: center;
+}
+.page-mine .form .item .item-title .icon.data-v-dcbcfe34 {
+  display: block;
+  width: 48rpx;
+  height: 48rpx;
+}
+.page-mine .form .item .item-title .name.data-v-dcbcfe34 {
+  font-family: 'Abhaya Libre';
+  font-style: normal;
+  font-weight: 400;
+  font-size: 32rpx;
+  line-height: 48rpx;
+  text-align: center;
+  color: #151515;
+  margin-left: 10rpx;
+}
+.page-mine .form .item .cont.data-v-dcbcfe34 {
+  font-family: 'Abhaya Libre';
+  font-style: normal;
+  font-weight: 400;
+  font-size: 32rpx;
+  line-height: 48rpx;
+  text-align: center;
+  color: #151515;
+  margin-left: 10rpx;
+}
+.page-mine .form .item .cont .rt-icon.data-v-dcbcfe34 {
+  display: block;
+  width: 15rpx;
+  height: 15rpx;
+}
 .page-mine .title.data-v-dcbcfe34 {
   font-family: 'Abhaya Libre';
   font-style: normal;
@@ -48,6 +96,10 @@
   background: #F2F2F2;
   border-radius: 4px;
   text-align: center;
-  margin-top: 48vh;
+  position: absolute;
+  bottom: 150rpx;
+  margin-left: 50%;
+  -webkit-transform: translateX(-50%);
+          transform: translateX(-50%);
 }
 

File diff suppressed because it is too large
+ 247 - 0
unpackage/dist/dev/mp-weixin/pages/mine/password/password.js


+ 8 - 0
unpackage/dist/dev/mp-weixin/pages/mine/password/password.json

@@ -0,0 +1,8 @@
+{
+  "navigationBarTitleText": "修改密码",
+  "usingComponents": {
+    "uni-forms": "/uni_modules/uni-forms/components/uni-forms/uni-forms",
+    "uni-forms-item": "/uni_modules/uni-forms/components/uni-forms-item/uni-forms-item",
+    "uni-easyinput": "/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput"
+  }
+}

+ 1 - 0
unpackage/dist/dev/mp-weixin/pages/mine/password/password.wxml

@@ -0,0 +1 @@
+<view class="password-page data-v-2ce9270c"><view class="form data-v-2ce9270c"><uni-forms vue-id="703c3b7a-1" rules="{{rules}}" model="{{form}}" label-width="{{80}}" data-ref="form" class="data-v-2ce9270c vue-ref" bind:__l="__l" vue-slots="{{['default']}}"><uni-forms-item vue-id="{{('703c3b7a-2')+','+('703c3b7a-1')}}" label="原密码" name="original_password" required="{{true}}" class="data-v-2ce9270c" bind:__l="__l" vue-slots="{{['default']}}"><uni-easyinput bind:input="__e" vue-id="{{('703c3b7a-3')+','+('703c3b7a-2')}}" type="password" placeholder="请输入原密码" value="{{form.original_password}}" data-event-opts="{{[['^input',[['__set_model',['$0','original_password','$event',[]],['form']]]]]}}" class="data-v-2ce9270c" bind:__l="__l"></uni-easyinput></uni-forms-item><uni-forms-item vue-id="{{('703c3b7a-4')+','+('703c3b7a-1')}}" label="新密码" name="new_password" required="{{true}}" class="data-v-2ce9270c" bind:__l="__l" vue-slots="{{['default']}}"><uni-easyinput bind:input="__e" vue-id="{{('703c3b7a-5')+','+('703c3b7a-4')}}" type="password" placeholder="请输入新密码" value="{{form.new_password}}" data-event-opts="{{[['^input',[['__set_model',['$0','new_password','$event',[]],['form']]]]]}}" class="data-v-2ce9270c" bind:__l="__l"></uni-easyinput></uni-forms-item><uni-forms-item vue-id="{{('703c3b7a-6')+','+('703c3b7a-1')}}" label="再次确认" name="password" required="{{true}}" class="data-v-2ce9270c" bind:__l="__l" vue-slots="{{['default']}}"><uni-easyinput bind:input="__e" vue-id="{{('703c3b7a-7')+','+('703c3b7a-6')}}" type="password" placeholder="请再次输入新密码" value="{{form.password}}" data-event-opts="{{[['^input',[['__set_model',['$0','password','$event',[]],['form']]]]]}}" class="data-v-2ce9270c" bind:__l="__l"></uni-easyinput></uni-forms-item></uni-forms><view data-event-opts="{{[['tap',[['onSubmit',['$event']]]]]}}" bindtap="__e" class="_footer data-v-2ce9270c">提交</view></view></view>

+ 30 - 0
unpackage/dist/dev/mp-weixin/pages/mine/password/password.wxss

@@ -0,0 +1,30 @@
+@charset "UTF-8";
+/* 水平间距 */
+/* 水平间距 */
+.password-page.data-v-2ce9270c {
+  background: #F3F5FB;
+  height: 100vh;
+}
+.password-page .form.data-v-2ce9270c {
+  width: 686rpx;
+  background-color: #fff;
+  margin: 0 auto;
+  padding: 40rpx 36rpx 2rpx 36rpx;
+  box-sizing: border-box;
+  border-radius: 20rpx;
+}
+.password-page ._footer.data-v-2ce9270c {
+  width: 100%;
+  height: 136rpx;
+  background: #FFFFFF;
+  border-radius: 16rpx 16rpx 0px 0px;
+  position: fixed;
+  left: 0;
+  bottom: 0;
+  text-align: center;
+  color: #168DEC;
+  font-size: 32rpx;
+  padding-top: 20rpx;
+  letter-spacing: 2px;
+}
+

File diff suppressed because it is too large
+ 292 - 0
unpackage/dist/dev/mp-weixin/pages/task/form/form.js


+ 9 - 0
unpackage/dist/dev/mp-weixin/pages/task/form/form.json

@@ -0,0 +1,9 @@
+{
+  "navigationBarTitleText": "处置",
+  "usingComponents": {
+    "uni-forms": "/uni_modules/uni-forms/components/uni-forms/uni-forms",
+    "uni-forms-item": "/uni_modules/uni-forms/components/uni-forms-item/uni-forms-item",
+    "uni-data-select": "/uni_modules/uni-data-select/components/uni-data-select/uni-data-select",
+    "uni-easyinput": "/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput"
+  }
+}

File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/mp-weixin/pages/task/form/form.wxml


+ 37 - 0
unpackage/dist/dev/mp-weixin/pages/task/form/form.wxss

@@ -0,0 +1,37 @@
+@charset "UTF-8";
+/* 水平间距 */
+/* 水平间距 */
+.body.data-v-30fa295e {
+  height: 100vh;
+  box-sizing: border-box;
+  padding: 21rpx 16rpx;
+  background-color: #F3F5FB;
+}
+.body.data-v-30fa295e  .uni-forms-item__content .uni-easyinput, .body.data-v-30fa295e  .uni-forms-item__content .uni-select {
+  background-color: #fff;
+}
+.body .upload-container .upload.data-v-30fa295e {
+  width: 216rpx;
+  display: block;
+}
+.body .upload-container .tip.data-v-30fa295e {
+  font-size: 24rpx;
+  line-height: 28rpx;
+  color: #999999;
+  padding-top: 20rpx;
+}
+.body .footer.data-v-30fa295e {
+  width: 100%;
+  height: 136rpx;
+  background: #FFFFFF;
+  border-radius: 16rpx 16rpx 0px 0px;
+  position: fixed;
+  left: 0;
+  bottom: 0;
+  text-align: center;
+  color: #168DEC;
+  font-size: 32rpx;
+  padding-top: 20rpx;
+  letter-spacing: 2px;
+}
+

File diff suppressed because it is too large
+ 219 - 0
unpackage/dist/dev/mp-weixin/pages/task/task.js


+ 4 - 0
unpackage/dist/dev/mp-weixin/pages/task/task.json

@@ -0,0 +1,4 @@
+{
+  "navigationBarTitleText": "预警处置",
+  "usingComponents": {}
+}

+ 1 - 0
unpackage/dist/dev/mp-weixin/pages/task/task.wxml

@@ -0,0 +1 @@
+<view class="task-page data-v-96a65fb4"><view class="title _div data-v-96a65fb4">{{item.title}}</view><view class="info _div data-v-96a65fb4"><view class="item _div data-v-96a65fb4"><view class="name data-v-96a65fb4">执行人</view><view class="cont data-v-96a65fb4">执行人</view></view><view class="item _div data-v-96a65fb4"><view class="name data-v-96a65fb4">执行部门</view><view class="cont data-v-96a65fb4">执行部门</view></view><view class="item _div data-v-96a65fb4"><view class="name data-v-96a65fb4">发布时间</view><view class="cont data-v-96a65fb4">{{$root.m0}}</view></view></view><view class="status _div data-v-96a65fb4"><view class="head _div data-v-96a65fb4">处置过程</view><image class="icon-empty data-v-96a65fb4" src="/static/icon/empty.png" mode="widthFix"></image><view class="_p data-v-96a65fb4">暂无处置信息</view></view><image class="add data-v-96a65fb4" src="/static/icon/add.png" mode="widthFix" data-event-opts="{{[['tap',[['add',['$event']]]]]}}" bindtap="__e"></image></view>

+ 67 - 0
unpackage/dist/dev/mp-weixin/pages/task/task.wxss

@@ -0,0 +1,67 @@
+@charset "UTF-8";
+/* 水平间距 */
+/* 水平间距 */
+.task-page.data-v-96a65fb4 {
+  background-color: #F3F5FB;
+}
+.task-page .title.data-v-96a65fb4 {
+  font-family: 'Source Han Sans CN';
+  font-style: normal;
+  font-weight: 700;
+  font-size: 36rpx;
+  line-height: 54rpx;
+  color: #212121;
+  padding: 0 32rpx;
+}
+.task-page .info.data-v-96a65fb4 {
+  padding: 0 32rpx;
+  margin: 40rpx 0;
+  background: #FFFFFF;
+  border-radius: 32rpx 32rpx 0px 0px;
+}
+.task-page .info .item.data-v-96a65fb4 {
+  border-bottom: 1rpx solid #EFF1F3;
+  padding: 40rpx 32rpx;
+}
+.task-page .info .item .name.data-v-96a65fb4 {
+  font-size: 28rpx;
+  color: #999999;
+  line-height: 1;
+}
+.task-page .info .item .cont.data-v-96a65fb4 {
+  font-size: 30rpx;
+  color: #212121;
+  line-height: 1.5;
+  padding-top: 12rpx;
+}
+.task-page .info .item.data-v-96a65fb4:last-child {
+  border-bottom: none;
+}
+.task-page .status.data-v-96a65fb4 {
+  background: #FFFFFF;
+  border-radius: 32rpx 32rpx 0px 0px;
+  padding: 48rpx 32rpx;
+  color: #212121;
+  font-size: 34rpx;
+  line-height: 1;
+  font-weight: 700;
+}
+.task-page .status .icon-empty.data-v-96a65fb4 {
+  display: block;
+  width: 160rpx;
+  margin: 64rpx auto 0;
+}
+.task-page .status ._p.data-v-96a65fb4 {
+  font-size: 24rpx;
+  line-height: 28rpx;
+  color: #D5D5D5;
+  text-align: center;
+}
+.task-page .add.data-v-96a65fb4 {
+  display: block;
+  width: 96rpx;
+  position: fixed;
+  bottom: 186rpx;
+  right: 32rpx;
+}
+

二進制
unpackage/dist/dev/mp-weixin/static/icon/Group 169.png


二進制
unpackage/dist/dev/mp-weixin/static/icon/add.png


二進制
unpackage/dist/dev/mp-weixin/static/icon/empty.png


二進制
unpackage/dist/dev/mp-weixin/static/icon/location.png


二進制
unpackage/dist/dev/mp-weixin/static/icon/pass.png


二進制
unpackage/dist/dev/mp-weixin/static/icon/reject.png


二進制
unpackage/dist/dev/mp-weixin/static/icon/rt_icon.png


二進制
unpackage/dist/dev/mp-weixin/static/icon/unlock.png


二進制
unpackage/dist/dev/mp-weixin/static/icon/upload.png


二進制
unpackage/dist/dev/mp-weixin/static/icon/user-group.png


二進制
unpackage/dist/dev/mp-weixin/static/icon/上报按钮.png


二進制
unpackage/dist/dev/mp-weixin/static/icon/不通过.png


二進制
unpackage/dist/dev/mp-weixin/static/icon/缺省页_空白页-通用 1.png


二進制
unpackage/dist/dev/mp-weixin/static/icon/通过.png


二進制
unpackage/dist/dev/mp-weixin/static/preview/1.png


二進制
unpackage/dist/dev/mp-weixin/static/preview/2.png


二進制
unpackage/dist/dev/mp-weixin/static/preview/3.png


二進制
unpackage/dist/dev/mp-weixin/static/preview/unsplash_-N2UXcPBIYI.png


二進制
unpackage/dist/dev/mp-weixin/static/preview/unsplash_2GW4S08kd-8.png


二進制
unpackage/dist/dev/mp-weixin/static/preview/unsplash_dV_Blc0bols.png


File diff suppressed because it is too large
+ 391 - 0
unpackage/dist/dev/mp-weixin/uni_modules/uni-data-select/components/uni-data-select/uni-data-select.js


+ 6 - 0
unpackage/dist/dev/mp-weixin/uni_modules/uni-data-select/components/uni-data-select/uni-data-select.json

@@ -0,0 +1,6 @@
+{
+  "usingComponents": {
+    "uni-icons": "/uni_modules/uni-icons/components/uni-icons/uni-icons"
+  },
+  "component": true
+}

+ 1 - 0
unpackage/dist/dev/mp-weixin/uni_modules/uni-data-select/components/uni-data-select/uni-data-select.wxml

@@ -0,0 +1 @@
+<view class="uni-stat__select"><block wx:if="{{label}}"><label class="uni-label-text hide-on-phone _span">{{label+':'}}</label></block><view class="{{['uni-stat-box',(current)?'uni-stat__actived':'']}}"><view class="{{['uni-select',(disabled)?'uni-select--disabled':'']}}"><view data-event-opts="{{[['tap',[['toggleSelector',['$event']]]]]}}" class="uni-select__input-box" bindtap="__e"><block wx:if="{{current}}"><view class="uni-select__input-text">{{current}}</view></block><block wx:else><view class="uni-select__input-text uni-select__input-placeholder">{{typePlaceholder}}</view></block><block wx:if="{{current&&clear}}"><uni-icons vue-id="011c9238-1" type="clear" color="#c0c4cc" size="24" data-event-opts="{{[['^click',[['clearVal']]]]}}" bind:click="__e" bind:__l="__l"></uni-icons></block><block wx:else><uni-icons vue-id="011c9238-2" type="{{showSelector?'top':'bottom'}}" size="14" color="#999" bind:__l="__l"></uni-icons></block></view><block wx:if="{{showSelector}}"><view data-event-opts="{{[['tap',[['toggleSelector',['$event']]]]]}}" class="uni-select--mask" bindtap="__e"></view></block><block wx:if="{{showSelector}}"><view class="uni-select__selector"><view class="uni-popper__arrow"></view><scroll-view class="uni-select__selector-scroll" scroll-y="true"><block wx:if="{{$root.g0===0}}"><view class="uni-select__selector-empty"><text>{{emptyTips}}</text></view></block><block wx:else><block wx:for="{{$root.l0}}" wx:for-item="item" wx:for-index="index" wx:key="index"><view data-event-opts="{{[['tap',[['change',['$0'],[[['mixinDatacomResData','',index]]]]]]]}}" class="uni-select__selector-item" bindtap="__e"><text class="{{[(item.$orig.disable)?'uni-select__selector__disabled':'']}}">{{item.m0}}</text></view></block></block></scroll-view></view></block></view></view></view>

+ 162 - 0
unpackage/dist/dev/mp-weixin/uni_modules/uni-data-select/components/uni-data-select/uni-data-select.wxss

@@ -0,0 +1,162 @@
+@charset "UTF-8";
+/* 水平间距 */
+/* 水平间距 */
+@media screen and (max-width: 500px) {
+.hide-on-phone {
+    display: none;
+}
+}
+.uni-stat__select {
+  display: flex;
+  align-items: center;
+  cursor: pointer;
+  width: 100%;
+  flex: 1;
+  box-sizing: border-box;
+}
+.uni-stat-box {
+  width: 100%;
+  flex: 1;
+}
+.uni-stat__actived {
+  width: 100%;
+  flex: 1;
+}
+.uni-label-text {
+  font-size: 14px;
+  font-weight: bold;
+  color: #6a6a6a;
+  margin: auto 0;
+  margin-right: 5px;
+}
+.uni-select {
+  font-size: 14px;
+  border: 1px solid #e5e5e5;
+  box-sizing: border-box;
+  border-radius: 4px;
+  padding: 0 5px;
+  padding-left: 10px;
+  position: relative;
+  display: flex;
+  -webkit-user-select: none;
+          user-select: none;
+  flex-direction: row;
+  align-items: center;
+  border-bottom: solid 1px #e5e5e5;
+  width: 100%;
+  flex: 1;
+  height: 35px;
+}
+.uni-select--disabled {
+  background-color: #f5f7fa;
+  cursor: not-allowed;
+}
+.uni-select__label {
+  font-size: 16px;
+  height: 35px;
+  padding-right: 10px;
+  color: #909399;
+}
+.uni-select__input-box {
+  height: 35px;
+  position: relative;
+  display: flex;
+  flex: 1;
+  flex-direction: row;
+  align-items: center;
+}
+.uni-select__input {
+  flex: 1;
+  font-size: 14px;
+  height: 22px;
+  line-height: 22px;
+}
+.uni-select__input-plac {
+  font-size: 14px;
+  color: #909399;
+}
+.uni-select__selector {
+  box-sizing: border-box;
+  position: absolute;
+  top: calc(100% + 12px);
+  left: 0;
+  width: 100%;
+  background-color: #FFFFFF;
+  border: 1px solid #EBEEF5;
+  border-radius: 6px;
+  box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
+  z-index: 3;
+  padding: 4px 0;
+}
+.uni-select__selector-scroll {
+  max-height: 200px;
+  box-sizing: border-box;
+}
+.uni-select__selector-empty,
+.uni-select__selector-item {
+  display: flex;
+  cursor: pointer;
+  line-height: 35px;
+  font-size: 14px;
+  text-align: center;
+  /* border-bottom: solid 1px $uni-border-3; */
+  padding: 0px 10px;
+}
+.uni-select__selector-item:hover {
+  background-color: #f9f9f9;
+}
+.uni-select__selector-empty:last-child,
+.uni-select__selector-item:last-child {
+  border-bottom: none;
+}
+.uni-select__selector__disabled {
+  opacity: 0.4;
+  cursor: default;
+}
+/* picker 弹出层通用的指示小三角 */
+.uni-popper__arrow,
+.uni-popper__arrow::after {
+  position: absolute;
+  display: block;
+  width: 0;
+  height: 0;
+  border-color: transparent;
+  border-style: solid;
+  border-width: 6px;
+}
+.uni-popper__arrow {
+  -webkit-filter: drop-shadow(0 2px 12px rgba(0, 0, 0, 0.03));
+          filter: drop-shadow(0 2px 12px rgba(0, 0, 0, 0.03));
+  top: -6px;
+  left: 10%;
+  margin-right: 3px;
+  border-top-width: 0;
+  border-bottom-color: #EBEEF5;
+}
+.uni-popper__arrow::after {
+  content: " ";
+  top: 1px;
+  margin-left: -6px;
+  border-top-width: 0;
+  border-bottom-color: #fff;
+}
+.uni-select__input-text {
+  width: 100%;
+  color: #3a3a3a;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+  -o-text-overflow: ellipsis;
+  overflow: hidden;
+}
+.uni-select__input-placeholder {
+  color: #6a6a6a;
+  font-size: 12px;
+}
+.uni-select--mask {
+  position: fixed;
+  top: 0;
+  bottom: 0;
+  right: 0;
+  left: 0;
+}
+

File diff suppressed because it is too large
+ 6 - 69
unpackage/dist/dev/mp-weixin/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.js


File diff suppressed because it is too large
+ 13 - 13
unpackage/dist/dev/mp-weixin/uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.js


Some files were not shown because too many files changed in this diff