浏览代码

feature:核查业务结束

梦辉 1 年之前
父节点
当前提交
a362131057
共有 35 个文件被更改,包括 1544 次插入785 次删除
  1. 1 1
      package.json
  2. 18 0
      src/api/commitment.js
  3. 19 1
      src/api/system.js
  4. 44 34
      src/api/zlbApi.js
  5. 56 47
      src/common/js/baseUrl.js
  6. 1 0
      src/components/bussinessComponents/READEME.md
  7. 142 0
      src/components/bussinessComponents/remind-list/index.vue
  8. 61 29
      src/pages.json
  9. 246 222
      src/pages/blank/blank.vue
  10. 86 27
      src/pages/home/home.vue
  11. 28 0
      src/pages/message/message.vue
  12. 0 40
      src/pages/my/my.vue
  13. 二进制
      src/static/images/barIcon/message-selected.png
  14. 二进制
      src/static/images/barIcon/message.png
  15. 二进制
      src/static/images/commitment/template.png
  16. 二进制
      src/static/images/home/cwgk.png
  17. 0 0
      src/static/images/home/right-easy.png
  18. 4 3
      src/store/modules/template.js
  19. 13 117
      src/subPages/pages/commitment/commitmentDetail/components/IndicatorComponents.vue
  20. 106 7
      src/subPages/pages/commitment/commitmentDetail/index.vue
  21. 6 0
      src/subPages/pages/commitment/components/commitmentConfirmForm/READEME.md
  22. 175 0
      src/subPages/pages/commitment/components/commitmentConfirmForm/index.vue
  23. 208 0
      src/subPages/pages/commitment/components/promiseList/index.vue
  24. 2 0
      src/subPages/pages/commitment/enterpriseCommitment/READEME.md
  25. 3 3
      src/subPages/pages/commitment/enterpriseCommitment/components/score-list/index.vue
  26. 30 63
      src/subPages/pages/commitment/enterpriseCommitment/index.vue
  27. 9 0
      src/subPages/pages/commitment/home/components/enterpriseList/index.vue
  28. 0 152
      src/subPages/pages/commitment/home/components/promiseList/index.vue
  29. 17 2
      src/subPages/pages/commitment/home/components/templateList/index.vue
  30. 1 1
      src/subPages/pages/commitment/home/index.vue
  31. 0 1
      src/subPages/pages/commitment/indicatorConfirm/index.vue
  32. 198 0
      src/subPages/pages/commitment/remindDetail/index.vue
  33. 1 0
      src/utils/fetch/index.js
  34. 64 31
      src/utils/fetch/requestHandler.js
  35. 5 4
      src/utils/fetch/responseHandler.js

+ 1 - 1
package.json

@@ -4,7 +4,7 @@
   "private": true,
   "private": true,
   "scripts": {
   "scripts": {
     "serve": "npm run dev:h5",
     "serve": "npm run dev:h5",
-    "build": "npm run build",
+    "build": "npm run build:h5",
     "build:app-plus": "cross-env NODE_ENV=production UNI_PLATFORM=app-plus vue-cli-service uni-build",
     "build:app-plus": "cross-env NODE_ENV=production UNI_PLATFORM=app-plus vue-cli-service uni-build",
     "build:custom": "cross-env NODE_ENV=production uniapp-cli custom",
     "build:custom": "cross-env NODE_ENV=production uniapp-cli custom",
     "build:h5": "cross-env UNI_OUTPUT_DIR='build' NODE_ENV=production UNI_PLATFORM=h5 vue-cli-service uni-build",
     "build:h5": "cross-env UNI_OUTPUT_DIR='build' NODE_ENV=production UNI_PLATFORM=h5 vue-cli-service uni-build",

+ 18 - 0
src/api/commitment.js

@@ -139,3 +139,21 @@ export function editVerifyTask (data) {
     const url = zlbApi.editVerifyTask;
     const url = zlbApi.editVerifyTask;
     return myFetch(url, 'post', data, 'json');
     return myFetch(url, 'post', data, 'json');
 }
 }
+
+/**
+ * 提醒列表
+ * /promise/reminder/getReminderList
+ */
+export function getReminderList (data) {
+    const url = zlbApi.getReminderList;
+    return myFetch(url, 'get', data, 'json');
+}
+
+/**
+ * 提醒详情
+ * /promise/reminder/reminderDetails
+ */
+export function reminderDetails (data) {
+    const url = zlbApi.reminderDetails;
+    return myFetch(url, 'get', data, 'json');
+}

+ 19 - 1
src/api/system.js

@@ -38,5 +38,23 @@ export function downloadFile(data) {
  */
  */
 export function ZzdLogin(data) {
 export function ZzdLogin(data) {
   const url = zlbApi.ZzdLogin;
   const url = zlbApi.ZzdLogin;
-    return myFetch(url, "get", data, "json");
+    return myFetch(url, "post", data, "json");
+}
+
+/**
+ * 浙政钉 获取用户信息
+ * /system/exemption
+ */
+export function exemption(data) {
+  const url = zlbApi.exemption;
+  return myFetch(url, "post", data, "json");
+}
+
+/**
+ * 获取村社链接
+ * /business/address/getVillageLink
+ */
+export const getVillageLink=(data)=>{
+  const url = zlbApi.getVillageLink
+  return myFetch(url, 'get', data, 'json');
 }
 }

+ 44 - 34
src/api/zlbApi.js

@@ -68,45 +68,51 @@
 
 
 
 
 const zlbApi = {
 const zlbApi = {
-    "callingPoliceSave": "/callingPolice/save", // 保存反映信息的API路径
-    "callingPolicePageData": "/callingPolice/selectPageData", // 查询反映记录的API路径
-    "callingPoliceDetail": "/callingPolice/detail", // 查询反映详情的API路径
-    "searchDoorplateOrIntegrationAppList": "/doorplateInfoApp/searchDoorplateOrIntegrationAppList", // 服务和门牌搜索的API路径
-    "doorplateBindWxAndValid": "/doorplateInfoApp/doorplateBindWxAndValid", // 门牌绑定微信的API路径
-    "getAllIntegrationAppList": "/doorplateInfoApp/getAllIntegrationAppList", // 所有门牌服务列表的API路径
-    "getHomePageOneDoorplateFullInfo": "/doorplateInfoApp/getHomePageOneDoorplateFullInfo", // 获取门牌信息的API路径
-    "getCorpCfSxYcListByDoorplateAndTyshxydm": "/doorplateInfoApp/getCorpCfSxYcListByDoorplateAndTyshxydm", // 获取企业门牌的处罚、失信、经营异常列表的API路径
-    "hzInfoApply": "/doorplateInfoApp/hzInfoApply", // 门牌户主信息申请的API路径
-    "getDoorplateFamilyMemberList": "/doorplateFamilyMember/getDoorplateFamilyMemberList", // 家庭成员列表查询的API路径
-    "doorplateFamilyMemberGetOneById": "/doorplateFamilyMember/getOneById", // 获取单个成员详情数据的API路径
-    "doorplateFamilyMemberAdd": "/doorplateFamilyMember/add", // 添加家庭成员的API路径
-    "doorplateFamilyMemberEditById": "/doorplateFamilyMember/editById", // 编辑家庭成员的API路径
-    "doorplateFamilyMemberDeleteById": "/doorplateFamilyMember/deleteById", // 删除家庭成员的API路径
-    "callingHelpSave": "/callingHelp/save", // 保存求助信息的API路径
-    "callingHelpPageData": "/callingHelp/selectPageData", // 查询求助记录的API路径
-    "callingHelpDetail": "/callingHelp/detail", // 查询求助详情的API路径
-    "getRelateInfo": "/callingHelp/getRelateInfo", // 查询门牌关联事件的API路径
-    "noticePage": "/notice/page", // 查询公告列表的API路径
-    "noticeDetail": "/notice/detail", // 查询公告详情的API路径
-    "getNamesCultureByCode": "/namesCulture/getByCode", // 获取地名文化信息的API路径
-    "getNamesCultureByName": "/namesCulture/page", // 通过名称查询地名文化信息的API路径
-    "fwzlRentOutAdd": "/fwzlRentOut/add", // 发布房屋的API路径
-    "getFwzlRentOutListOfMy": "/fwzlRentOut/getFwzlRentOutListOfMy", // 查询发布记录的API路径
-    "fwzlRentOutEditById": "/fwzlRentOut/editById", // 修改发布记录的API路径
-    "fwzlRentOutGetOneById": "/fwzlRentOut/getOneById", // 查询发布房屋详情的API路径
-    "fwzlRentOutDeleteById": "/fwzlRentOut/deleteById", // 删除发布记录的API路径
-    "getFwzlRentList": "/fwzlRent/getFwzlRentList", // 我要租房列表的API路径
-    "getDictionaryByName": "/system/getDictionaryByName", // 字典查询接口的API路径
-    "getDicByNameList": "/system/getDicByNameList", // 批量查询字典内容的API路径
-    "listArea": "/system/listArea", // 查询地区的API路径
-    "uploadBase64": "/file/upload", // 上传文件的API路径
-    "fileDownload": "/file/download?fileUuid", // 下载文件的API路径
+    "callingPoliceSave": "/digital-doorplate/callingPolice/save", // 保存反映信息的API路径
+    "callingPolicePageData": "/digital-doorplate/callingPolice/selectPageData", // 查询反映记录的API路径
+    "callingPoliceDetail": "/digital-doorplate/callingPolice/detail", // 查询反映详情的API路径
+    "searchDoorplateOrIntegrationAppList": "/digital-doorplate/doorplateInfoApp/searchDoorplateOrIntegrationAppList", // 服务和门牌搜索的API路径
+    "doorplateBindWxAndValid": "/digital-doorplate/doorplateInfoApp/doorplateBindWxAndValid", // 门牌绑定微信的API路径
+    "getAllIntegrationAppList": "/digital-doorplate/doorplateInfoApp/getAllIntegrationAppList", // 所有门牌服务列表的API路径
+    "getHomePageOneDoorplateFullInfo": "/digital-doorplate/doorplateInfoApp/getHomePageOneDoorplateFullInfo", // 获取门牌信息的API路径
+    "getCorpCfSxYcListByDoorplateAndTyshxydm": "/digital-doorplate/doorplateInfoApp/getCorpCfSxYcListByDoorplateAndTyshxydm", // 获取企业门牌的处罚、失信、经营异常列表的API路径
+    "hzInfoApply": "/digital-doorplate/doorplateInfoApp/hzInfoApply", // 门牌户主信息申请的API路径
+    "getDoorplateFamilyMemberList": "/digital-doorplate/doorplateFamilyMember/getDoorplateFamilyMemberList", // 家庭成员列表查询的API路径
+    "doorplateFamilyMemberGetOneById": "/digital-doorplate/doorplateFamilyMember/getOneById", // 获取单个成员详情数据的API路径
+    "doorplateFamilyMemberAdd": "/digital-doorplate/doorplateFamilyMember/add", // 添加家庭成员的API路径
+    "doorplateFamilyMemberEditById": "/digital-doorplate/doorplateFamilyMember/editById", // 编辑家庭成员的API路径
+    "doorplateFamilyMemberDeleteById": "/digital-doorplate/doorplateFamilyMember/deleteById", // 删除家庭成员的API路径
+    "callingHelpSave": "/digital-doorplate/callingHelp/save", // 保存求助信息的API路径
+    "callingHelpPageData": "/digital-doorplate/callingHelp/selectPageData", // 查询求助记录的API路径
+    "callingHelpDetail": "/digital-doorplate/callingHelp/detail", // 查询求助详情的API路径
+    "getRelateInfo": "/digital-doorplate/callingHelp/getRelateInfo", // 查询门牌关联事件的API路径
+    "noticePage": "/digital-doorplate/notice/page", // 查询公告列表的API路径
+    "noticeDetail": "/digital-doorplate/notice/detail", // 查询公告详情的API路径
+    "getNamesCultureByCode": "/digital-doorplate/namesCulture/getByCode", // 获取地名文化信息的API路径
+    "getNamesCultureByName": "/digital-doorplate/namesCulture/page", // 通过名称查询地名文化信息的API路径
+    "fwzlRentOutAdd": "/digital-doorplate/fwzlRentOut/add", // 发布房屋的API路径
+    "getFwzlRentOutListOfMy": "/digital-doorplate/fwzlRentOut/getFwzlRentOutListOfMy", // 查询发布记录的API路径
+    "fwzlRentOutEditById": "/digital-doorplate/fwzlRentOut/editById", // 修改发布记录的API路径
+    "fwzlRentOutGetOneById": "/digital-doorplate/fwzlRentOut/getOneById", // 查询发布房屋详情的API路径
+    "fwzlRentOutDeleteById": "/digital-doorplate/fwzlRentOut/deleteById", // 删除发布记录的API路径
+    "getFwzlRentList": "/digital-doorplate/fwzlRent/getFwzlRentList", // 我要租房列表的API路径
+    "getDictionaryByName": "/digital-doorplate/system/getDictionaryByName", // 字典查询接口的API路径
+    "getDicByNameList": "/digital-doorplate/system/getDicByNameList", // 批量查询字典内容的API路径
+    "listArea": "/digital-doorplate/system/listArea", // 查询地区的API路径
+    "uploadBase64": "/digital-doorplate/file/upload", // 上传文件的API路径
+    "fileDownload": "/digital-doorplate/file/download?fileUuid", // 下载文件的API路径
     "newDownFile": "", // 新下载文件的API路径(暂无httpApi对应项)
     "newDownFile": "", // 新下载文件的API路径(暂无httpApi对应项)
-    "getMyDoorplateAll": "/userCenter/getMyDoorplateAll", // 获取已经绑定的门派列表的API路径(暂无httpApi对应项)
+    "getMyDoorplateAll": "/digital-doorplate/userCenter/getMyDoorplateAll", // 获取已经绑定的门派列表的API路径(暂无httpApi对应项)
     "getDoorplateInfoNew": "/business/applet-house-number/getPersonalHouseNumber",
     "getDoorplateInfoNew": "/business/applet-house-number/getPersonalHouseNumber",
     "getTemplateList": "/promise/template/getTemplateList", // 获取模板列表的API路径
     "getTemplateList": "/promise/template/getTemplateList", // 获取模板列表的API路径
     "getPromiseDetail": "/promise/manage/getDetail", // 获取承诺详情的API路径
     "getPromiseDetail": "/promise/manage/getDetail", // 获取承诺详情的API路径
     "templateDetails": "/promise/template/templateDetails", // 获取模板详情的API路径
     "templateDetails": "/promise/template/templateDetails", // 获取模板详情的API路径
+    "getUserInfo": "/digital-doorplate/userCenter/getUserInfo", // 获取个人身份信息的API路径
+    "updateUserInfoIdentity": "/digital-doorplate/userCenter/updateUserInfoIdentity", // 更新个人身份信息的API路径
+    "changeMyPriorityDoorplate": "/digital-doorplate/userCenter/changeMyPriorityDoorplate", // 变更用户当前门牌地址的API路径
+    "personSsoUserInfo": "/digital-doorplate/zlbCallback/personSsoUserInfo", // 获取浙里办单点登录后用户信息的API路径
+    "getDoorplatePicUrl": "/digital-doorplate/doorplateInfoApp/getDoorplatePicUrl", // 获取门牌照片地址的API路径
+    "personSsoUserInfoZlbUnify": "/digital-doorplate/personSsoUserInfoZlbUnify", // 同一单点登录用户信息的API路径
 
 
     "createPromise": "/promise/manage/createPromise", // 创建承诺的API路径
     "createPromise": "/promise/manage/createPromise", // 创建承诺的API路径
     "getPromiseList": "/promise/manage/getList", //获取承诺列表
     "getPromiseList": "/promise/manage/getList", //获取承诺列表
@@ -121,6 +127,10 @@ const zlbApi = {
     "uploadFile": '/promise/Indicator/uploadFile', // 上传文件
     "uploadFile": '/promise/Indicator/uploadFile', // 上传文件
     "downFileBase64": '/promise/Indicator/downFileBase64', // 下载文件
     "downFileBase64": '/promise/Indicator/downFileBase64', // 下载文件
     "editVerifyTask":'/promise/verify/editVerifyTask', // 编辑核查/批量编辑
     "editVerifyTask":'/promise/verify/editVerifyTask', // 编辑核查/批量编辑
+    "getReminderList":'/promise/reminder/getReminderList', // 获取提醒列表
+    "reminderDetails":'/promise/reminder/reminderDetails', // 获取提醒详情"
+    "exemption":'/system/exemption', // 浙政钉 获取用户信息
+    "getVillageLink":'/business/address/getVillageLink', // 获取村社链接
 }
 }
 
 
 export default zlbApi;
 export default zlbApi;

+ 56 - 47
src/common/js/baseUrl.js

@@ -2,58 +2,67 @@ let httpApi = ""; // 基础服务
 let doorplateImgUrl='';//  门牌二维码图片地址
 let doorplateImgUrl='';//  门牌二维码图片地址
 //根据运行时版本设置请求url
 //根据运行时版本设置请求url
 function setFetchUrlByEnv(env) {
 function setFetchUrlByEnv(env) {
-  console.log("当前运行", env);
-  switch (env) {
-    case "develop":
-      httpApi = "http://172.18.50.88:8070/digital-doorplate";
-      doorplateImgUrl='https://fhszmp.fh.gov.cn:8090/digital-doorplateAddrUrl'
-      // 微信小程序开发环境在真机上连接外网体验版地址
-      // #ifdef MP-WEIXIN
-      if (__wxConfig && __wxConfig.platform !== "devtools") {
-        httpApi = "http://60.191.98.34:8072/digital-doorplate";
-      }
-      // #endif
-      break;
-    case "trial":
-      // 体验版
-      // #ifdef MP-WEIXIN
-      // httpApi = "http://60.191.98.34:8072/digital-doorplate"; // 基础服务
-      httpApi = "https://zlszmp.fh.gov.cn:8088/digital-doorplate"; // 基础服务
-      // #endif
-      // #ifdef MP-ALIPAY
-      httpApi = "https://zlszmp.fh.gov.cn:8088/digital-doorplate"; // 基础服务
-      // #endif
-      doorplateImgUrl='https://fhszmp.fh.gov.cn:8090/digital-doorplateAddrUrl'
-      break;
-    case "release":
-      // 正式
-      httpApi = "'https://fhszmp.fh.gov.cn:8090/digital-doorplate"; // 基础服务
-      doorplateImgUrl='https://fhszmp.fh.gov.cn:8090/digital-doorplateAddrUrl'
-      break;
-    default:
-      // httpApi = "http://172.18.50.92:8888/digital-doorplate";
-      if (env === "development") {
-//        发版的时候恢复过来
-//         httpApi = window.location.origin + "/digital-doorplate"; //"http://172.18.50.92:8888/digital-doorplate";
-//         doorplateImgUrl='https://zlszmp.fh.gov.cn:8088/digital-doorplateAddrUrl'
+//  httpApi = "http://192.168.31.51:9080"; //公司测试
+  httpApi = "http://122.247.77.37:9080"; //线上测试
+//  httpApi = "https://fhszmp.fh.gov.cn:8080"; //线上正式
+  doorplateImgUrl='https://fhszmp.fh.gov.cn:8090/digital-doorplateAddrUrl'
 
 
-        httpApi = "http://192.168.31.51:9080";
-        doorplateImgUrl='https://fhszmp.fh.gov.cn:8090/digital-doorplateAddrUrl'
-      } else {
-        httpApi = "https://zlszmp.fh.gov.cn:8088/digital-doorplate";
-        doorplateImgUrl='https://zlszmp.fh.gov.cn:8088/digital-doorplateAddrUrl'
-      }
-      break;
-  }
+//  console.log("当前运行", env);
+//  if (env === "development") {
+////        httpApi = "http://192.168.31.51:9080";
+//    httpApi = "http://122.247.77.37:9080";
+//    doorplateImgUrl='https://fhszmp.fh.gov.cn:8090/digital-doorplateAddrUrl'
+//  } else {
+//    httpApi = "https://zlszmp.fh.gov.cn:8088/digital-doorplate";
+//    doorplateImgUrl='https://zlszmp.fh.gov.cn:8088/digital-doorplateAddrUrl'
+//  }
+//  switch (env) {
+//    case "develop":
+//      httpApi = "http://172.18.50.88:8070/digital-doorplate";
+//      doorplateImgUrl='https://fhszmp.fh.gov.cn:8090/digital-doorplateAddrUrl'
+//      // 微信小程序开发环境在真机上连接外网体验版地址
+//      // #ifdef MP-WEIXIN
+//      if (__wxConfig && __wxConfig.platform !== "devtools") {
+//        httpApi = "http://60.191.98.34:8072/digital-doorplate";
+//      }
+//      // #endif
+//      break;
+//    case "trial":
+//      // 体验版
+//      // #ifdef MP-WEIXIN
+//      // httpApi = "http://60.191.98.34:8072/digital-doorplate"; // 基础服务
+//      httpApi = "https://zlszmp.fh.gov.cn:8088/digital-doorplate"; // 基础服务
+//      // #endif
+//      // #ifdef MP-ALIPAY
+//      httpApi = "https://zlszmp.fh.gov.cn:8088/digital-doorplate"; // 基础服务
+//      // #endif
+//      doorplateImgUrl='https://fhszmp.fh.gov.cn:8090/digital-doorplateAddrUrl'
+//      break;
+//    case "release":
+//      // 正式
+//      httpApi = "'https://fhszmp.fh.gov.cn:8090/digital-doorplate"; // 基础服务
+//      doorplateImgUrl='https://fhszmp.fh.gov.cn:8090/digital-doorplateAddrUrl'
+//      break;
+//    default:
+//      // httpApi = "http://172.18.50.92:8888/digital-doorplate";
+//      if (env === "development") {
+////        发版的时候恢复过来
+////         httpApi = window.location.origin + "/digital-doorplate"; //"http://172.18.50.92:8888/digital-doorplate";
+////         doorplateImgUrl='https://zlszmp.fh.gov.cn:8088/digital-doorplateAddrUrl'
+//
+////        httpApi = "http://192.168.31.51:9080";
+//        httpApi = "http://122.247.77.37:9080";
+//        doorplateImgUrl='https://fhszmp.fh.gov.cn:8090/digital-doorplateAddrUrl'
+//      } else {
+//        httpApi = "https://zlszmp.fh.gov.cn:8088/digital-doorplate";
+//        doorplateImgUrl='https://zlszmp.fh.gov.cn:8088/digital-doorplateAddrUrl'
+//      }
+//      break;
+//  }
 }
 }
 
 
 uni.getEnvVersion = () => {
 uni.getEnvVersion = () => {
-  // #ifdef H5
   return process.env.NODE_ENV === "production" ? "production" : "development";
   return process.env.NODE_ENV === "production" ? "production" : "development";
-  // #endif
-  // #ifdef MP-WEIXIN || MP-ALIPAY
-  return uni.getAccountInfoSync().miniProgram.envVersion;
-  // #endif
 };
 };
 const envVersion = uni.getEnvVersion();
 const envVersion = uni.getEnvVersion();
 
 

+ 1 - 0
src/components/bussinessComponents/READEME.md

@@ -0,0 +1 @@
+# 业务组件

+ 142 - 0
src/components/bussinessComponents/remind-list/index.vue

@@ -0,0 +1,142 @@
+<script>
+import { getReminderList } from "@/api/commitment";
+
+export default {
+  props: {
+    /* 是系统提醒(1)还是整改提醒(0) */
+    type: {
+      type: Number
+    },
+    companyId: {
+      type: String
+    }
+  },
+  data() {
+    return {
+      loading: false,
+      finished: false,
+      remindList: [],
+      current: 0
+    };
+  },
+  methods: {
+    async handleGetRemindList() {
+      try {
+        this.loading = true;
+        const res = await getReminderList({
+          company: this.companyId,
+          type: this.type,
+          current: this.current + 1,
+          size: 10
+        });
+        if (res.code === 0) {
+          this.remindList = this.remindList.concat(res.data.records || []);
+          this.current++;
+          this.finished = res.data.records.length < 10;
+        }
+        this.loading = false;
+      } catch (e) {
+        console.log(e);
+        this.finished = true;
+        this.$toast('获取提醒列表失败');
+        this.loading = false;
+      }
+    },
+    /* 跳转提醒详情 */
+    handleRemindClick(item) {
+      this.$router.push({
+        path: '/pages/commitment/remindDetail/index',
+        query: {
+          uuid: item.uuid
+        }
+      })
+    }
+  }
+};
+</script>
+
+<template>
+  <van-list
+      v-model="loading"
+      @load="handleGetRemindList"
+      :finished="finished"
+      finished-text="没有更多数据了"
+  >
+    <van-cell
+        v-for="(item, index) in remindList"
+        :key="index"
+        class="box"
+        @click="handleRemindClick(item)"
+    >
+      <template #default>
+        <view class="top">
+          <view class="title">{{ type ? '承诺条款提醒' : '整改提醒' }}</view>
+          <view class="status">
+            <span v-if="type === 0" style="color: #D9001B">红灯提醒</span>
+            <span v-if="type === 0" style="color: #F59A23">黄灯提醒</span>
+          </view>
+        </view>
+        <view class="content">
+          <view class="form-item">
+            <view class="form-label">提醒时间:</view>
+            <view class="form-value">{{ item.time | date('YYYY-MM-DD HH:mm:ss') }}</view>
+          </view>
+          <view class="form-item">
+            <view class="form-label">关联承诺:</view>
+            <view class="form-value">{{ item.name}}</view>
+          </view>
+        </view>
+      </template>
+    </van-cell>
+  </van-list>
+</template>
+
+<style scoped lang="scss">
+.top {
+  display: flex;
+  justify-content: space-between;
+  padding: 10px 20px;
+}
+.title {
+  font-size: 16px;
+  font-weight: bold;
+  flex: 1;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+}
+.status {
+  font-size: 14px;
+  color: #999;
+  width: 60px;
+  text-align: right;
+}
+
+.content {
+  padding: 10px 20px;
+  border-top: 1px solid #f1f1f1;
+}
+.form-item {
+  display: flex;
+  justify-content: space-between;
+  padding: 5px 0;
+}
+.form-label {
+  font-size: 14px;
+  color: #666;
+  width: 100px;
+}
+.form-value {
+  font-size: 14px;
+  color: #333;
+  flex: 1;
+  text-align: right;
+}
+.box {
+  margin-bottom: 10px;
+  border: 1px solid #f1f1f1;
+  border-radius: 5px;
+  background-color: #fff;
+  overflow: hidden;
+}
+</style>

+ 61 - 29
src/pages.json

@@ -9,7 +9,13 @@
     {
     {
       "path": "pages/blank/blank",
       "path": "pages/blank/blank",
       "style": {
       "style": {
-        "navigationBarTitleText": "登录中"
+        "navigationBarTitleText": "奉化数字门牌"
+      }
+    },
+    {
+      "path": "pages/message/message",
+      "style": {
+        "navigationBarTitleText": "消息"
       }
       }
     },
     },
     {
     {
@@ -37,13 +43,15 @@
       }
       }
     }
     }
   ],
   ],
-	"preloadRule": {
+  "preloadRule": {
     "pages/home/home": {
     "pages/home/home": {
       "network": "all",
       "network": "all",
-      "packages": ["subPages"]
+      "packages": [
+        "subPages"
+      ]
     }
     }
   },
   },
-	"subPackages": [
+  "subPackages": [
     {
     {
       "root": "subPages",
       "root": "subPages",
       "pages": [
       "pages": [
@@ -252,12 +260,6 @@
           }
           }
         },
         },
         {
         {
-          "path": "pages/commitment/commitmentDetail/index",
-            "style": {
-                "navigationBarTitleText": "经营承诺详情"
-            }
-        },
-        {
           "path": "pages/commitment/enterpriseCommitment/index",
           "path": "pages/commitment/enterpriseCommitment/index",
           "style": {
           "style": {
             "navigationBarTitleText": "企业经营承诺"
             "navigationBarTitleText": "企业经营承诺"
@@ -268,35 +270,65 @@
           "style": {
           "style": {
             "navigationBarTitleText": "经营承诺"
             "navigationBarTitleText": "经营承诺"
           }
           }
+        },
+        {
+          "path": "pages/commitment/enterpriseCommitment/index",
+          "style": {
+            "navigationBarTitleText": "企业经营承诺"
+          }
+        },
+        {
+          "path": "pages/commitment/commitmentDetail/index",
+          "style": {
+            "navigationBarTitleText": "经营承诺详情"
+          }
+        },
+        {
+          "path": "pages/commitment/remindDetail/index",
+          "style": {
+            "navigationBarTitleText": "提醒详情"
+          }
         }
         }
       ]
       ]
     }
     }
-   ],
+  ],
   "globalStyle": {
   "globalStyle": {
     "navigationBarTextStyle": "white",
     "navigationBarTextStyle": "white",
     "navigationBarTitleText": "uni-app",
     "navigationBarTitleText": "uni-app",
     "navigationBarBackgroundColor": "#356eed",
     "navigationBarBackgroundColor": "#356eed",
     "backgroundColor": "#F8F8F8",
     "backgroundColor": "#F8F8F8",
-    "navigationStyle":"custom",
+    "navigationStyle": "custom",
     "usingComponents": {}
     "usingComponents": {}
   },
   },
   "tabBar": {
   "tabBar": {
-		"color": "#7A7E83",
-		"selectedColor": "#1676fe",
-		"borderStyle": "black",
-		"backgroundColor": "#ffffff",
-		"list": [{
-			"pagePath": "pages/home/home",
-			"text": "首页",
-      "iconPath": "/static/images/barIcon/home.png",
-      "selectedIconPath": "/static/images/barIcon/home-selected.png"
-		}, {
-			"pagePath": "pages/my/my",
-			"iconPath": "/static/images/barIcon/user.png",
-			"selectedIconPath": "/static/images/barIcon/user-selected.png",
-			"text": "我的"
-		}]
-	},
-  "requiredPrivateInfos": ["chooseLocation", "getLocation"]
+    "color": "#7A7E83",
+    "selectedColor": "#1676fe",
+    "borderStyle": "black",
+    "backgroundColor": "#ffffff",
+    "list": [
+      {
+        "pagePath": "pages/home/home",
+        "text": "首页",
+        "iconPath": "/static/images/barIcon/home.png",
+        "selectedIconPath": "/static/images/barIcon/home-selected.png"
+      },
+      {
+        "pagePath": "pages/message/message",
+        "text": "消息",
+        "iconPath": "/static/images/barIcon/message.png",
+        "selectedIconPath": "/static/images/barIcon/message-selected.png"
+      },
+      {
+        "pagePath": "pages/my/my",
+        "iconPath": "/static/images/barIcon/user.png",
+        "selectedIconPath": "/static/images/barIcon/user-selected.png",
+        "text": "我的"
+      }
+    ]
+  },
+  "requiredPrivateInfos": [
+    "chooseLocation",
+    "getLocation"
+  ]
 }
 }
 
 

+ 246 - 222
src/pages/blank/blank.vue

@@ -1,5 +1,5 @@
 <template>
 <template>
-  <view class="blank-page"> 空白页</view>
+  <view class="blank-page"></view>
 </template>
 </template>
 
 
 <script>
 <script>
@@ -10,7 +10,8 @@ import { storageUserInfo } from "@/utils/index";
 import Track from "@/common/js/track";
 import Track from "@/common/js/track";
 import Vconsole from "vconsole";
 import Vconsole from "vconsole";
 import dd from "gdt-jsapi";
 import dd from "gdt-jsapi";
-import {ZzdLogin} from "@/api/system";
+import {exemption, ZzdLogin, ZzdLogin1} from "@/api/system";
+import zlbApi from "@/api/zlbApi";
 const app = getApp();
 const app = getApp();
 export default {
 export default {
   name: "blank",
   name: "blank",
@@ -23,222 +24,222 @@ export default {
     this.handleLogin()
     this.handleLogin()
   },
   },
   methods: {
   methods: {
-    async getNewSsoUserInfo(ticket) {  
-      const res = await getSsoUserInfoUnity({ ticketId: ticket });    
-      const userInfo = res.data;
-      storageUserInfo({
-        nickName: userInfo.name,
-        avatarUrl: userInfo.headPicture,
-        phoneNumber: userInfo.phoneWx,
-        phoneWx: userInfo.phoneWx,
-        username: userInfo.name,
-        openId: userInfo.userIdZlb,
-        uuid: userInfo.uuid,
-      });
-      app.globalData.openid = userInfo.uuid;
-      // 开始埋点上报
-      this.startTrack();
-      if (app.globalData.options.code) {
-        uni.switchTab({
-          url: "/pages/home/home",
-        });
-      } else {
-        if (
-          userInfo.doorplateCount
-        ) {
-          uni.switchTab({
-            url: "/pages/home/home",
-          });
-        } else {
-          uni.reLaunch({
-            url: "/subPages/pages/scanCode/scanCode",
-          });
-        }
-      }
-    },
-    resolveParams(){
-      const params = this.getQuery(window.location.search);
-      if (params.qjw_debug) {
-        localStorage.setItem("debug", "true");
-        new Vconsole();
-      } else {
-        localStorage.setItem("debug", "false");
-      }
-      if (params.sp) {
-          console.error("sp", params.sp);
-          const spParams = this.getQuery(decodeURIComponent(params.sp));
-          console.error("spParams", spParams);
-          app.globalData.options = {
-            code: spParams.code,
-          };
-        }
-        //门牌code直接在链接上的话,说明从微信小程序过来
-        if (params.code) {
-          console.log("应该为微信环境,链接地址:", window.location.href);
-          console.error("code:", params.code);
-          app.globalData.options = {
-            code: params.code,
-          };
-        }
-    },
-    async unityLogin() {
-      this.resolveParams()
-      if (ZWJSBridge.ssoTicket) {
-        const ssoFlag = await ZWJSBridge.ssoTicket({});
-        if (ssoFlag && ssoFlag.result === true) {
-          //使用 IRS“浙里办”统一单点登录组件
-          if (ssoFlag.ticketId) {
-            // TODO 应用方服务端单点登录接口
-            app.globalData.isLogin = true;
-            this.getNewSsoUserInfo(ssoFlag.ticketId);
-          } else {
-            //当“浙里办”单点登录失败或登录态失效时调用 ZWJSBridge.openLink 方法重新获取ticketId。
-            this.login()
-          }
-        } else {
-          console.log('当前环境不支持 “浙里办”统一单点登录 ')
-          this.login()
-        }
-      } else {
-        console.log('ZWJSBridge 加载异常')
-        //异常情况:ZWJSBridge 加载异常
-      }
-    },
-    ssoLogin() {
-      const platformEnv = getPlatformEnv();
-      const params = this.getQuery(window.location.search);
-      let ssoUrl = "";
-      // 登录
-      if (platformEnv.bIsAlipayMini) {
-        console.log("支付宝环境单点登录");
-        ssoUrl = zlbConfig.alipaySsoUrl;
-      } else if (platformEnv.bIsDtDreamApp) {
-        console.log("浙里办环境单点登录");
-        ssoUrl = zlbConfig.zlbSsoUrl;
-      } else {
-        //为了h5测试
-        ssoUrl = zlbConfig.zlbSsoUrl;
-      }
-      if (params.code) {
-        ssoUrl += `&goto=${window.location.href.split("#")[0]}`;
-      }
-      console.log(ssoUrl);
-      window.location.replace(ssoUrl);
-    },
-    login() {
-      console.log("应用所处地址", window.location.href);
-      console.log("useragent", window.navigator.userAgent.toLowerCase());
-      const platformEnv = getPlatformEnv();
-      const params = this.getQuery(window.location.search);
-      if (params.qjw_debug) {
-        localStorage.setItem("debug", "true");
-      } else {
-        localStorage.setItem("debug", "false");
-      }
-      if (!params.ticket && !platformEnv.bIsWxMini) {
-        this.ssoLogin();
-      } else {
-        app.globalData.isLogin = true;
-        console.log(
-          "登录成功后回调地址和参数解析:",
-          window.location.href,
-          params
-        );
-        // 跳转回来的参数解析
-        if (params.sp) {
-          console.error("sp", params.sp);
-          const spParams = this.getQuery(decodeURIComponent(params.sp));
-          console.error("spParams", spParams);
-          app.globalData.options = {
-            code: spParams.code,
-          };
-        }
-        //门牌code直接在链接上的话,说明从微信小程序过来
-        if (params.code) {
-          console.log("应该为微信环境,链接地址:", window.location.href);
-          console.error("code:", params.code);
-          app.globalData.options = {
-            code: params.code,
-          };
-        }
-        let ticket = "";
-        //浙里办微信是获取ticketId
-        if (platformEnv.bIsWxMini) {
-          ticket = params.ticketId;
-        } else {
-          ticket = params.ticket;
-        }
-        console.log("获取的ticket", ticket);
-        this.getSsoUserInfo(ticket);
-      }
-    },
-    async getSsoUserInfo(ticket) {
-      let res = "";
-      try {
-        res = await getSsoUserInfo({ ticketId: ticket });
-      } catch (err) {
-        uni.setStorageSync("testErr", err);
-        if (uni.getStorageSync("errNum")) {
-          let errNum = Number(uni.getStorageSync("errNum"));
-          if (errNum + 1 < 3) {
-            uni.setStorageSync("errNum", errNum + 1);
-          } else {
-            uni.removeStorageSync("errNum");
-            return;
-          }
-        } else {
-          uni.setStorageSync("errNum", 1);
-        }
-         this.ssoLogin();
-      }
-      const userInfo = res.data;
-      // console.log("单点登录后用户信息", userInfo);
-      storageUserInfo({
-        nickName: userInfo.name,
-        avatarUrl: userInfo.headPicture,
-        phoneNumber: userInfo.phoneWx,
-        phoneWx: userInfo.phoneWx,
-        username: userInfo.name,
-        openId: userInfo.userIdZlb,
-        uuid: userInfo.uuid,
-      });
-      app.globalData.openid = userInfo.uuid;
-
-      // 开始埋点上报
-      this.startTrack();
-      history.pushState(null, null, document.URL);
-      uni.removeStorageSync("errNum");
-      if (app.globalData.options.code) {
-        uni.switchTab({
-          url: "/pages/home/home",
-        });
-      } else {
-        if (
-          userInfo.doorplateCount
-        ) {
-          uni.switchTab({
-            url: "/pages/home/home",
-          });
-        } else {
-          uni.reLaunch({
-            url: "/subPages/pages/scanCode/scanCode",
-          });
-        }
-      }
-    },
-    startTrack() {
-      app.globalData.trackIns = new Track();
-    },
-    getQuery(url) {
-      const str = url.substr(url.indexOf("?") + 1);
-      const arr = str.split("&");
-      const result = {};
-      for (let i = 0; i < arr.length; i++) {
-        const item = arr[i].split("=");
-        result[item[0]] = item[1];
-      }
-      return result;
-    },
+//    async getNewSsoUserInfo(ticket) {
+//      const res = await getSsoUserInfoUnity({ ticketId: ticket });
+//      const userInfo = res.data;
+//      storageUserInfo({
+//        nickName: userInfo.name,
+//        avatarUrl: userInfo.headPicture,
+//        phoneNumber: userInfo.phoneWx,
+//        phoneWx: userInfo.phoneWx,
+//        username: userInfo.name,
+//        openId: userInfo.userIdZlb,
+//        uuid: userInfo.uuid,
+//      });
+//      app.globalData.openid = userInfo.uuid;
+//      // 开始埋点上报
+//      this.startTrack();
+//      if (app.globalData.options.code) {
+//        uni.switchTab({
+//          url: "/pages/home/home",
+//        });
+//      } else {
+//        if (
+//          userInfo.doorplateCount
+//        ) {
+//          uni.switchTab({
+//            url: "/pages/home/home",
+//          });
+//        } else {
+//          uni.reLaunch({
+//            url: "/subPages/pages/scanCode/scanCode",
+//          });
+//        }
+//      }
+//    },
+//    resolveParams(){
+//      const params = this.getQuery(window.location.search);
+//      if (params.qjw_debug) {
+//        localStorage.setItem("debug", "true");
+//        new Vconsole();
+//      } else {
+//        localStorage.setItem("debug", "false");
+//      }
+//      if (params.sp) {
+//          console.error("sp", params.sp);
+//          const spParams = this.getQuery(decodeURIComponent(params.sp));
+//          console.error("spParams", spParams);
+//          app.globalData.options = {
+//            code: spParams.code,
+//          };
+//        }
+//        //门牌code直接在链接上的话,说明从微信小程序过来
+//        if (params.code) {
+//          console.log("应该为微信环境,链接地址:", window.location.href);
+//          console.error("code:", params.code);
+//          app.globalData.options = {
+//            code: params.code,
+//          };
+//        }
+//    },
+//    async unityLogin() {
+//      this.resolveParams()
+//      if (ZWJSBridge.ssoTicket) {
+//        const ssoFlag = await ZWJSBridge.ssoTicket({});
+//        if (ssoFlag && ssoFlag.result === true) {
+//          //使用 IRS“浙里办”统一单点登录组件
+//          if (ssoFlag.ticketId) {
+//            // TODO 应用方服务端单点登录接口
+//            app.globalData.isLogin = true;
+//            this.getNewSsoUserInfo(ssoFlag.ticketId);
+//          } else {
+//            //当“浙里办”单点登录失败或登录态失效时调用 ZWJSBridge.openLink 方法重新获取ticketId。
+//            this.login()
+//          }
+//        } else {
+//          console.log('当前环境不支持 “浙里办”统一单点登录 ')
+//          this.login()
+//        }
+//      } else {
+//        console.log('ZWJSBridge 加载异常')
+//        //异常情况:ZWJSBridge 加载异常
+//      }
+//    },
+//    ssoLogin() {
+//      const platformEnv = getPlatformEnv();
+//      const params = this.getQuery(window.location.search);
+//      let ssoUrl = "";
+//      // 登录
+//      if (platformEnv.bIsAlipayMini) {
+//        console.log("支付宝环境单点登录");
+//        ssoUrl = zlbConfig.alipaySsoUrl;
+//      } else if (platformEnv.bIsDtDreamApp) {
+//        console.log("浙里办环境单点登录");
+//        ssoUrl = zlbConfig.zlbSsoUrl;
+//      } else {
+//        //为了h5测试
+//        ssoUrl = zlbConfig.zlbSsoUrl;
+//      }
+//      if (params.code) {
+//        ssoUrl += `&goto=${window.location.href.split("#")[0]}`;
+//      }
+//      console.log(ssoUrl);
+//      window.location.replace(ssoUrl);
+//    },
+//    login() {
+//      console.log("应用所处地址", window.location.href);
+//      console.log("useragent", window.navigator.userAgent.toLowerCase());
+//      const platformEnv = getPlatformEnv();
+//      const params = this.getQuery(window.location.search);
+//      if (params.qjw_debug) {
+//        localStorage.setItem("debug", "true");
+//      } else {
+//        localStorage.setItem("debug", "false");
+//      }
+//      if (!params.ticket && !platformEnv.bIsWxMini) {
+//        this.ssoLogin();
+//      } else {
+//        app.globalData.isLogin = true;
+//        console.log(
+//          "登录成功后回调地址和参数解析:",
+//          window.location.href,
+//          params
+//        );
+//        // 跳转回来的参数解析
+//        if (params.sp) {
+//          console.error("sp", params.sp);
+//          const spParams = this.getQuery(decodeURIComponent(params.sp));
+//          console.error("spParams", spParams);
+//          app.globalData.options = {
+//            code: spParams.code,
+//          };
+//        }
+//        //门牌code直接在链接上的话,说明从微信小程序过来
+//        if (params.code) {
+//          console.log("应该为微信环境,链接地址:", window.location.href);
+//          console.error("code:", params.code);
+//          app.globalData.options = {
+//            code: params.code,
+//          };
+//        }
+//        let ticket = "";
+//        //浙里办微信是获取ticketId
+//        if (platformEnv.bIsWxMini) {
+//          ticket = params.ticketId;
+//        } else {
+//          ticket = params.ticket;
+//        }
+//        console.log("获取的ticket", ticket);
+//        this.getSsoUserInfo(ticket);
+//      }
+//    },
+//    async getSsoUserInfo(ticket) {
+//      let res = "";
+//      try {
+//        res = await getSsoUserInfo({ ticketId: ticket });
+//      } catch (err) {
+//        uni.setStorageSync("testErr", err);
+//        if (uni.getStorageSync("errNum")) {
+//          let errNum = Number(uni.getStorageSync("errNum"));
+//          if (errNum + 1 < 3) {
+//            uni.setStorageSync("errNum", errNum + 1);
+//          } else {
+//            uni.removeStorageSync("errNum");
+//            return;
+//          }
+//        } else {
+//          uni.setStorageSync("errNum", 1);
+//        }
+//         this.ssoLogin();
+//      }
+//      const userInfo = res.data;
+//      // console.log("单点登录后用户信息", userInfo);
+//      storageUserInfo({
+//        nickName: userInfo.name,
+//        avatarUrl: userInfo.headPicture,
+//        phoneNumber: userInfo.phoneWx,
+//        phoneWx: userInfo.phoneWx,
+//        username: userInfo.name,
+//        openId: userInfo.userIdZlb,
+//        uuid: userInfo.uuid,
+//      });
+//      app.globalData.openid = userInfo.uuid;
+//
+//      // 开始埋点上报
+//      this.startTrack();
+//      history.pushState(null, null, document.URL);
+//      uni.removeStorageSync("errNum");
+//      if (app.globalData.options.code) {
+//        uni.switchTab({
+//          url: "/pages/home/home",
+//        });
+//      } else {
+//        if (
+//          userInfo.doorplateCount
+//        ) {
+//          uni.switchTab({
+//            url: "/pages/home/home",
+//          });
+//        } else {
+//          uni.reLaunch({
+//            url: "/subPages/pages/scanCode/scanCode",
+//          });
+//        }
+//      }
+//    },
+//    startTrack() {
+//      app.globalData.trackIns = new Track();
+//    },
+//    getQuery(url) {
+//      const str = url.substr(url.indexOf("?") + 1);
+//      const arr = str.split("&");
+//      const result = {};
+//      for (let i = 0; i < arr.length; i++) {
+//        const item = arr[i].split("=");
+//        result[item[0]] = item[1];
+//      }
+//      return result;
+//    },
 
 
 
 
     /* 获取用户信息,免登 */
     /* 获取用户信息,免登 */
@@ -246,11 +247,34 @@ export default {
       const res = await dd.getAuthCode({
       const res = await dd.getAuthCode({
         corpId: '50329019'
         corpId: '50329019'
       })
       })
+      console.log("免登",res)
       if(res) {
       if(res) {
-        const loginRes  =  await ZzdLogin({
-          code: res.code
-        })
-        console.log('loginRes',loginRes)
+        try{
+          const exemptionRes  =  await exemption({
+            code: res.code
+          })
+          console.log('exemption',res)
+          if(exemptionRes.success) {
+            const userInfo = exemptionRes.userInfo
+            storageUserInfo({
+              nickName: userInfo.realName,
+              avatarUrl: userInfo.headUrl,
+              phoneNumber: userInfo.mobile,
+              phoneWx: userInfo.mobile,
+              username: userInfo.username,
+              uuid: userInfo.id,
+            });
+            app.globalData.openid = userInfo.id;
+            uni.reLaunch({
+              url: "/subPages/pages/scanCode/scanCode",
+            });
+          }else {
+            this.$toast('获取用户信息失败')
+          }
+        }catch (e) {
+          this.$toast('获取用户信息失败')
+          console.log('error',e)
+        }
       }
       }
     }
     }
   },
   },

+ 86 - 27
src/pages/home/home.vue

@@ -2,7 +2,7 @@
   <view class="home-page home-page--h5" :class="{ 'home-page--elder': $uiStyle === 'elder' }" v-if="isBinded">
   <view class="home-page home-page--h5" :class="{ 'home-page--elder': $uiStyle === 'elder' }" v-if="isBinded">
     <image class="home-bg" :src="homeBg"></image>
     <image class="home-bg" :src="homeBg"></image>
     <uni-search-bar class="custom-search" v-model="searchValue" radius="20" maxlength="200" cancelButton="none"
     <uni-search-bar class="custom-search" v-model="searchValue" radius="20" maxlength="200" cancelButton="none"
-      bgColor="rgba(255,255,255,0.2)" placeholder="搜服务、搜门牌" @focus="handleSearchFocus"></uni-search-bar>
+                    bgColor="rgba(255,255,255,0.2)" placeholder="搜服务、搜门牌" @focus="handleSearchFocus"></uni-search-bar>
     <view class="info">
     <view class="info">
       <view class="user">
       <view class="user">
         <!-- <view class="user-avatar" @click="handleAvatarClick">
         <!-- <view class="user-avatar" @click="handleAvatarClick">
@@ -66,6 +66,13 @@
         </view>
         </view>
       </view>
       </view>
     </view>
     </view>
+    <view class="right-easy" @tap="handleJumpRightLink">
+      <view>
+        基层小微权力监督一点通
+      </view>
+      <image src="/static/images/home/right-easy.png" />
+
+    </view>
     <view class="help">
     <view class="help">
       <!--   <view class="help-item custom-gray">
       <!--   <view class="help-item custom-gray">
         <image src="/static/images/home/help.png" />
         <image src="/static/images/home/help.png" />
@@ -109,7 +116,7 @@
         <view class="map-head__more" @tap="handleToLife">更多></view>
         <view class="map-head__more" @tap="handleToLife">更多></view>
       </view>
       </view>
       <map class="map" :markers="markers" :latitude="latitude" :longitude="longitude" title="啦啦啦"
       <map class="map" :markers="markers" :latitude="latitude" :longitude="longitude" title="啦啦啦"
-        @markertap="handleMarkerTap">
+           @markertap="handleMarkerTap">
         <cover-view class="map-cover">
         <cover-view class="map-cover">
           <view class="address">
           <view class="address">
             <text class="address__detail">{{ addressInfo.title }}</text>
             <text class="address__detail">{{ addressInfo.title }}</text>
@@ -149,7 +156,7 @@
     <!-- #endif -->
     <!-- #endif -->
     <!-- #ifdef MP-ALIPAY -->
     <!-- #ifdef MP-ALIPAY -->
     <button v-if="!hasBaseInfo" class="auth-mask" open-type="getAuthorize" scope="userInfo" hover-class="none"
     <button v-if="!hasBaseInfo" class="auth-mask" open-type="getAuthorize" scope="userInfo" hover-class="none"
-      @getAuthorize="handleAuthProfile" @error="onAuthError"></button>
+            @getAuthorize="handleAuthProfile" @error="onAuthError"></button>
     <!-- #endif -->
     <!-- #endif -->
     <auth-dialog ref="authDialogRef" class="custom-auth-popup" @close="authDialogClose"></auth-dialog>
     <auth-dialog ref="authDialogRef" class="custom-auth-popup" @close="authDialogClose"></auth-dialog>
     <uni-popup ref="popupQrCode" type="center">
     <uni-popup ref="popupQrCode" type="center">
@@ -181,6 +188,7 @@ import { getUserInfo, updateUserInfo, getDoorplatePicUrl } from "@/api/user";
 import { storageUserInfo } from "@/utils/index";
 import { storageUserInfo } from "@/utils/index";
 import { splitArr, getPlatformEnv } from "@/utils";
 import { splitArr, getPlatformEnv } from "@/utils";
 import { maskPhoneCall, getPointResByLabel } from "@/utils";
 import { maskPhoneCall, getPointResByLabel } from "@/utils";
+import {getVillageLink} from "@/api/system";
 
 
 const app = getApp();
 const app = getApp();
 export default {
 export default {
@@ -275,8 +283,8 @@ export default {
       this.hasBaseInfo = true;
       this.hasBaseInfo = true;
     }
     }
     if (
     if (
-      app.globalData.doorplateInfo.code &&
-      app.globalData.doorplateInfo.code !== app.globalData.options.code
+        app.globalData.doorplateInfo.code &&
+        app.globalData.doorplateInfo.code !== app.globalData.options.code
     ) {
     ) {
       app.globalData.options.code = app.globalData.doorplateInfo.code;
       app.globalData.options.code = app.globalData.doorplateInfo.code;
     }
     }
@@ -451,6 +459,7 @@ export default {
           };
           };
         }
         }
         this.setDoorInfo();
         this.setDoorInfo();
+        this.handleVillageJump()
       } else {
       } else {
         console.error('scancode1')
         console.error('scancode1')
         uni.showToast({
         uni.showToast({
@@ -501,15 +510,15 @@ export default {
         address: app.globalData.doorInfo.baseInfo.bzdz1,
         address: app.globalData.doorInfo.baseInfo.bzdz1,
       };
       };
       if (
       if (
-        app.globalData.doorInfo.baseInfo.x1 &&
-        app.globalData.doorInfo.baseInfo.y1
+          app.globalData.doorInfo.baseInfo.x1 &&
+          app.globalData.doorInfo.baseInfo.y1
       ) {
       ) {
         this.longitude = app.globalData.doorInfo.baseInfo.x1;
         this.longitude = app.globalData.doorInfo.baseInfo.x1;
         this.latitude = app.globalData.doorInfo.baseInfo.y1;
         this.latitude = app.globalData.doorInfo.baseInfo.y1;
       } else {
       } else {
         address = app.globalData.doorInfo.baseInfo.bzdz1;
         address = app.globalData.doorInfo.baseInfo.bzdz1;
         if (
         if (
-          app.globalData.doorInfo.baseInfo.bzdz1.indexOf("宁波市奉化区") === -1
+            app.globalData.doorInfo.baseInfo.bzdz1.indexOf("宁波市奉化区") === -1
         ) {
         ) {
           address = "宁波市奉化区" + app.globalData.doorInfo.baseInfo.bzdz1;
           address = "宁波市奉化区" + app.globalData.doorInfo.baseInfo.bzdz1;
         } else {
         } else {
@@ -605,11 +614,11 @@ export default {
           item2.picUrl = "/static/images/home/" + item2.picUrl + ".png";
           item2.picUrl = "/static/images/home/" + item2.picUrl + ".png";
         });
         });
         item.appList = item.appList.filter(
         item.appList = item.appList.filter(
-          (serviceItem) =>
-            serviceItem.jumpType != JUMP_TYPE.WX_APP.VALUE &&
-            serviceItem.name !== "为老服务" &&
-            serviceItem.name !== "流动人口" &&
-            serviceItem.name !== "家门口"
+            (serviceItem) =>
+                serviceItem.jumpType != JUMP_TYPE.WX_APP.VALUE &&
+                serviceItem.name !== "为老服务" &&
+                serviceItem.name !== "流动人口" &&
+                serviceItem.name !== "家门口"
         ); //zlb过滤掉微信跳转相关服务
         ); //zlb过滤掉微信跳转相关服务
         const appListLen = item.appList.length;
         const appListLen = item.appList.length;
         // #ifdef MP-WEIXIN || MP-ALIPAY
         // #ifdef MP-WEIXIN || MP-ALIPAY
@@ -716,12 +725,12 @@ export default {
       ZWJSBridge.saveImage({
       ZWJSBridge.saveImage({
         url: this.qrCodePath,
         url: this.qrCodePath,
       })
       })
-        .then((result) => {
-          console.log(result);
-        })
-        .catch((error) => {
-          console.log(error);
-        });
+          .then((result) => {
+            console.log(result);
+          })
+          .catch((error) => {
+            console.log(error);
+          });
       // #endif
       // #endif
     },
     },
     handleDoor() {
     handleDoor() {
@@ -755,15 +764,38 @@ export default {
       console.log("activeTab", this.activeTab);
       console.log("activeTab", this.activeTab);
       this.nearbySearch();
       this.nearbySearch();
     },
     },
-
+    /* 单独处理村务公开的逻辑跳转 */
+    async handleVillageJump() {
+      try {
+        const res = await getVillageLink({
+          code:app.globalData.doorInfo.doorplateCode
+        })
+        if(res.code === 0) {
+          this.serviceList.map(item => {
+            item.cleanAppList.map(item2 => {
+              item2.map(item3 => {
+                if(item3.name === '村务公开') {
+                  item3.jumpUrl = res.data
+                }
+              })
+            })
+          })
+        }
+      }catch (e) {
+        console.log('12',e)
+      }
+    },
     handleModule(item) {
     handleModule(item) {
+      if(item.name === '村务公开') {
+        this.handleVillageJump(item)
+      }
       const platformEnv = getPlatformEnv();
       const platformEnv = getPlatformEnv();
       switch (item.jumpType) {
       switch (item.jumpType) {
         case JUMP_TYPE.H5.VALUE:
         case JUMP_TYPE.H5.VALUE:
           app.globalData.jumpUrl = item.jumpUrl;
           app.globalData.jumpUrl = item.jumpUrl;
           if (item.name === "户籍管理") {
           if (item.name === "户籍管理") {
             app.globalData.jumpUrl =
             app.globalData.jumpUrl =
-              "http://portal.zjzwfw.gov.cn/download/?_aaid=4&preferredContainer=zlb&goto=zwfw%3A%2F%2Fwebview%3Fh5Url%3Dhttps%3A%2F%2Fportal.zjzwfw.gov.cn%2Fportal%2Fpage%2Fathena-view.html%3FpageId%3D11276%26_tesseract_%3Dtrue";
+                "http://portal.zjzwfw.gov.cn/download/?_aaid=4&preferredContainer=zlb&goto=zwfw%3A%2F%2Fwebview%3Fh5Url%3Dhttps%3A%2F%2Fportal.zjzwfw.gov.cn%2Fportal%2Fpage%2Fathena-view.html%3FpageId%3D11276%26_tesseract_%3Dtrue";
           }
           }
           // #ifdef MP-WEIXIN || H5
           // #ifdef MP-WEIXIN || H5
           if (platformEnv.bIsWxMini) {
           if (platformEnv.bIsWxMini) {
@@ -774,12 +806,12 @@ export default {
             ZWJSBridge.openLink({
             ZWJSBridge.openLink({
               url: app.globalData.jumpUrl,
               url: app.globalData.jumpUrl,
             })
             })
-              .then((result) => {
-                console.log("打开新页面成功", result);
-              })
-              .catch((error) => {
-                console.log("打开新页面失败", error);
-              });
+                .then((result) => {
+                  console.log("打开新页面成功", result);
+                })
+                .catch((error) => {
+                  console.log("打开新页面失败", error);
+                });
           }
           }
 
 
           // #endif
           // #endif
@@ -967,6 +999,13 @@ export default {
         this.addressList = this.sourceAddressList.filter(item => item.title.includes(this.searchMapValue))
         this.addressList = this.sourceAddressList.filter(item => item.title.includes(this.searchMapValue))
       }
       }
     },
     },
+    /* 跳转基层权利一点通 */
+    handleJumpRightLink() {
+      app.globalData.jumpUrl = "https://jdydt.jhjw.jinhua.gov.cn/#/wbmh/home";
+      uni.navigateTo({
+        url: "/pages/home/webView",
+      });
+    },
   },
   },
 };
 };
 </script>
 </script>
@@ -1142,4 +1181,24 @@ export default {
 .custom-footer--elder {
 .custom-footer--elder {
   font-size: calc(12px * $zlb-elder-font-scale);
   font-size: calc(12px * $zlb-elder-font-scale);
 }
 }
+.right-easy {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  padding: 0 20px;
+  background: rgba(50, 89, 206, 0.349019607843137);
+  color: #fff;
+  font-size: 20px;
+  height: 93px;
+  border-radius: 10px;
+  margin-top: 20px;
+  view{
+    flex: 1;
+  }
+
+  image {
+    width: 50px;
+    height: 50px;
+  }
+}
 </style>
 </style>

+ 28 - 0
src/pages/message/message.vue

@@ -0,0 +1,28 @@
+<script>
+import RemindList from '@/components/bussinessComponents/remind-list/index.vue'
+export default {
+  data() {
+    return {
+      active: 0
+    }
+  },
+  components: {
+    RemindList
+  }
+}
+</script>
+
+<template>
+  <van-tabs v-model="active" color="#1492FF" line-width="50%">
+    <van-tab title="系统提醒">
+      <RemindList :type="1"></RemindList>
+    </van-tab>
+    <van-tab title="整改提醒">
+      <RemindList :type="0"></RemindList>
+    </van-tab>
+  </van-tabs>
+</template>
+
+<style scoped lang="scss">
+
+</style>

+ 0 - 40
src/pages/my/my.vue

@@ -60,38 +60,6 @@
           src="/static/images/common/arrow.png"
           src="/static/images/common/arrow.png"
         />
         />
       </view>
       </view>
-      <!--我的承诺-->
-      <view class="button" @click="checkDetail('commitment')">
-        <view class="left">
-          <image
-            class="icon"
-            mode="aspectFit"
-            src="/static/images/commitment/myPromise.png"
-          />
-          <view class="text">我的承诺</view>
-        </view>
-        <image
-          style="width: 20px; height: 20px"
-          mode="scaleToFill"
-          src="/static/images/common/arrow.png"
-        />
-      </view>
-      <!--承诺提醒-->
-      <view class="button" @click="checkDetail('commitmentRemind')">
-        <view class="left">
-          <image
-            class="icon"
-            mode="aspectFit"
-            src="/static/images/commitment/promiseRemind.png"
-          />
-          <view class="text">承诺提醒</view>
-        </view>
-        <image
-          style="width: 20px; height: 20px"
-          mode="scaleToFill"
-          src="/static/images/common/arrow.png"
-        />
-      </view>
       <view class="button" @click="checkDetail('alarm')">
       <view class="button" @click="checkDetail('alarm')">
         <view class="left">
         <view class="left">
           <image
           <image
@@ -401,14 +369,6 @@ export default {
             url: "/subPages/pages/familyMember/familyMember",
             url: "/subPages/pages/familyMember/familyMember",
           });
           });
         }
         }
-      } else if(val === 'commitment') {
-        uni.navigateTo({
-          url: '/subPages/pages/commitment/myCommitment/index'
-        })
-      } else if(val === 'commitmentRemind') {
-        uni.navigateTo({
-          url: '/subPages/pages/commitment/myCommitmentRemind/index'
-        })
       }
       }
     },
     },
   },
   },

二进制
src/static/images/barIcon/message-selected.png


二进制
src/static/images/barIcon/message.png


二进制
src/static/images/commitment/template.png


二进制
src/static/images/home/cwgk.png


+ 0 - 0
src/static/images/home/right-easy.png


+ 4 - 3
src/store/modules/template.js

@@ -11,7 +11,7 @@ const state = {
 
 
 const mutations = {
 const mutations = {
     setTemplateComponents(state, data) {
     setTemplateComponents(state, data) {
-        Vue.set(state.templateJson,'components',data)
+        Vue.set(state,'templateJson',data)
     },
     },
     setIndicatorList(state, data) {
     setIndicatorList(state, data) {
         Vue.set(state, 'indicatorList', data)
         Vue.set(state, 'indicatorList', data)
@@ -26,9 +26,10 @@ const actions = {
                 uuid
                 uuid
             })
             })
             if (result.data && result.data.promiseBody) {
             if (result.data && result.data.promiseBody) {
-                commit('setTemplateComponents', JSON.parse(result.data.promiseBody))
+                let promiseBody = JSON.parse(result.data.promiseBody)
+                commit('setTemplateComponents',promiseBody )
             } else {
             } else {
-                commit('setTemplateComponents', [])
+                commit('setTemplateComponents', {})
             }
             }
             if(result.data && result.data.list) {
             if(result.data && result.data.list) {
                 commit('setIndicatorList', result.data.list.records)
                 commit('setIndicatorList', result.data.list.records)

+ 13 - 117
src/subPages/pages/commitment/commitmentDetail/components/IndicatorComponents.vue

@@ -1,9 +1,11 @@
 <script>
 <script>
 import {downFileBase64, editVerifyTask, uploadFile} from "@/api/commitment";
 import {downFileBase64, editVerifyTask, uploadFile} from "@/api/commitment";
 import {v4 as uuidv4} from "uuid";
 import {v4 as uuidv4} from "uuid";
+import CommitmentConfirmForm from "@/subPages/pages/commitment/components/commitmentConfirmForm/index.vue";
 
 
 export default {
 export default {
   name: "IndicatorComponents",
   name: "IndicatorComponents",
+  components: {CommitmentConfirmForm},
   computed: {
   computed: {
     indicatorList() {
     indicatorList() {
       return this.$store.state.template.indicatorList.map(item => {
       return this.$store.state.template.indicatorList.map(item => {
@@ -70,7 +72,6 @@ export default {
   },
   },
   methods: {
   methods: {
     onCheckResultSubmit(indicateItem) {
     onCheckResultSubmit(indicateItem) {
-      console.log(this.formStates)
       editVerifyTask([
       editVerifyTask([
         {
         {
           uuid: indicateItem.uuid,
           uuid: indicateItem.uuid,
@@ -92,38 +93,6 @@ export default {
         }
         }
       })
       })
     },
     },
-    handleCheckResultConfirm(value, uuid) {
-      this.formStates[uuid].auditResult = value.text
-      this.checkResultPopupVisible = false
-    },
-    handleCheckGoalConfirm(value, uuid) {
-      this.formStates[uuid].auditScore = value.text
-      this.checkScorePopupVisible = false
-    },
-    beforeUpload(file) {
-      const isLt50M = file.size / 1024 / 1024 < 50;
-      if (!isLt50M) {
-        this.$toast('上传的图片大小不能超过 50MB!');
-        return false;
-      }
-      return true;
-    },
-    afterRead(file, uuid) {
-      const formData = new FormData()
-
-      uploadFile({
-        uuid: uuidv4(),
-        file: formData
-      }).then(res => {
-        if (res.code === 0) {
-          this.formStates[uuid].fileList.push({
-            uuid: res.data,
-            url: URL.createObjectURL(file.file)
-          })
-          console.log('上传成功', this.formStates)
-        }
-      })
-    },
     /* 附件下载 */
     /* 附件下载 */
     handleFileDown(item) {
     handleFileDown(item) {
       downFileBase64({
       downFileBase64({
@@ -147,91 +116,18 @@ export default {
       <view class="indicator-body">
       <view class="indicator-body">
         {{ item.indicatorInputBody }}
         {{ item.indicatorInputBody }}
       </view>
       </view>
-      <view v-if="!item.approvalStatus && item.approvalStatus !== 0">
-        <view class="title">监管核查
-          <view>涉及整改、整改扣分结果,需要走审批二次确认</view>
-        </view>
-        <van-divider/>
-        <van-form v-if="formStates[item.uuid]" @submit="onCheckResultSubmit(item)">
-          <!--核查结果-->
-          <van-field
-              readonly
-              clickable
-              name="auditResult"
-              :value="formStates[item.uuid].auditResult"
-              label="核查结果"
-              placeholder="请选择核查结果"
-              @click="checkResultPopupVisible = true"
-          />
-          <van-popup v-model="checkResultPopupVisible" position="bottom">
-            <van-picker
-                show-toolbar
-                value-key="text"
-                :columns="checkResultColumns"
-                @confirm="(value)=>handleCheckResultConfirm(value,item.uuid)"
-                @cancel="checkResultPopupVisible = false"
-            />
-          </van-popup>
-          <!--核查得分-->
-          <van-field
-              readonly
-              clickable
-              name="auditScore"
-              :value="formStates[item.uuid].auditScore"
-              label="核查得分"
-              placeholder="请选择核查得分"
-              @click="checkScorePopupVisible = true"
-          />
-          <van-popup v-model="checkScorePopupVisible" position="bottom">
-            <van-picker
-                show-toolbar
-                value-key="text"
-                :columns="checkGoalColumns"
-                @confirm="(value)=>handleCheckGoalConfirm(value,item.uuid)"
-                @cancel="checkScorePopupVisible = false"
-            />
-          </van-popup>
-          <!--核查说明-->
-          <van-field
-              clickable
-              name="auditRemark"
-              v-model="formStates[item.uuid].auditRemark"
-              label="核查说明"
-              type="textarea"
-              placeholder="请输入核查说明"
-          />
-          <!--附件上传-->
-          <van-field label="文件上传">
-            <template #input>
-              <view class="upload-files">
-                <view
-                    v-for="item in formStates[item.uuid].fileList"
-                >
-                  <img :src="item.url" style="width: 80px; height: 80px;"/>
-                </view>
-                <van-uploader v-if="formStates[item.uuid].fileList.length < 3"
-                              :before-upload="beforeUpload"
-                              accept="image/*,pdf"
-                              :after-read="(file)=>afterRead(file,item.uuid)"
-                >
-                </van-uploader>
-              </view>
-              <view class="upload-description">
-                <view>
-                  支持png、jpg、pdf,最大50M
-                </view>
-                <view>
-                  最多3个附件
-                </view>
-              </view>
-            </template>
-          </van-field>
-
+      <view class="title">监管核查
+        <view>涉及整改、整改扣分结果,需要走审批二次确认</view>
+      </view>
+      <van-divider/>
+      <CommitmentConfirmForm v-if="!item.approvalStatus && item.approvalStatus !== 0"
+                             v-model="formStates[item.uuid]">
+        <template #footer>
           <view style="margin: 16px;">
           <view style="margin: 16px;">
-            <van-button round block type="info" native-type="submit">核查确认</van-button>
+            <van-button round block type="info" @click="onCheckResultSubmit(item)">核查确认</van-button>
           </view>
           </view>
-        </van-form>
-      </view>
+        </template>
+      </CommitmentConfirmForm>
       <view v-else>
       <view v-else>
         <view class="other-title">
         <view class="other-title">
           监管核查
           监管核查
@@ -283,7 +179,7 @@ export default {
           >
           >
             <template #input>
             <template #input>
               <view class="file-style">
               <view class="file-style">
-                <view v-for="(item,index) in item.expandStr.split(',')" @click="handleFileDown(item)">
+                <view v-for="(item,index) in item.expandStr.split(',')" @click="handleFileDown(item)" :key="index">
                   附件{{ index + 1 }}
                   附件{{ index + 1 }}
                 </view>
                 </view>
               </view>
               </view>

+ 106 - 7
src/subPages/pages/commitment/commitmentDetail/index.vue

@@ -1,14 +1,18 @@
 <script>
 <script>
-import {createPromise, templateDetails} from "@/api/commitment";
 import DescriptionText from "@/subPages/pages/commitment/commitmentDetail/components/DescriptionText.vue";
 import DescriptionText from "@/subPages/pages/commitment/commitmentDetail/components/DescriptionText.vue";
 import InputComponents from "@/subPages/pages/commitment/commitmentDetail/components/InputComponents.vue";
 import InputComponents from "@/subPages/pages/commitment/commitmentDetail/components/InputComponents.vue";
 import DividerComponents from "@/subPages/pages/commitment/commitmentDetail/components/DividerComponents.vue";
 import DividerComponents from "@/subPages/pages/commitment/commitmentDetail/components/DividerComponents.vue";
 import IndicatorComponents from "@/subPages/pages/commitment/commitmentDetail/components/IndicatorComponents.vue";
 import IndicatorComponents from "@/subPages/pages/commitment/commitmentDetail/components/IndicatorComponents.vue";
+import {downFileBase64, editVerifyTask} from "@/api/commitment";
+import CommitmentConfirmForm from "@/subPages/pages/commitment/components/commitmentConfirmForm/index.vue";
 
 
 export default {
 export default {
-  components: {IndicatorComponents, DividerComponents, InputComponents, DescriptionText},
+  components: {CommitmentConfirmForm, IndicatorComponents, DividerComponents, InputComponents, DescriptionText},
   data() {
   data() {
     return {
     return {
+      actionSheetShow: false,
+      currentStep: 0,
+      batchCheckForm:{}
     };
     };
   },
   },
   computed: {
   computed: {
@@ -19,9 +23,29 @@ export default {
       set(value) {
       set(value) {
         this.$store.commit('template/setTemplateComponents', value)
         this.$store.commit('template/setTemplateComponents', value)
       }
       }
+    },
+    noDownload() {
+      return this.$route.query.noDownload
+    },
+    indicatorList:{
+      get() {
+        return this.$store.state.template.indicatorList.map(item => {
+          if (item.indicatorInputBody) {
+            item.indicatorInputBody = item.indicatorInputBody.replace('&', item.inputBody + item.inputSegment)
+          }
+          return {
+            ...item,
+            selectValue: item.selectValue || 0
+          }
+        })
+      },
+      set(value) {
+        this.$store.commit('template/setIndicatorList', value)
+      }
     }
     }
   },
   },
   mounted() {
   mounted() {
+    this.currentStep = 0
     this.$store.dispatch('template/getPromiseDetail', this.$route.query.uuid)
     this.$store.dispatch('template/getPromiseDetail', this.$route.query.uuid)
   },
   },
   methods: {
   methods: {
@@ -29,7 +53,47 @@ export default {
       window.history.go(-1)
       window.history.go(-1)
     },
     },
     handleDownPdf() {
     handleDownPdf() {
-      this.$router.push({path: '/commitment'})
+     if(!this.templateJson.attmentId){
+       this.$toast('暂无承诺书')
+     }else {
+       downFileBase64({
+         uuid:this.templateJson.attmentId
+       }).then(res => {
+         if (res.code === 0) {
+           const a = document.createElement('a')
+           a.href = res.data
+           a.download = '承诺书.pdf'
+           a.click()
+         }
+       })
+     }
+    },
+    /* 批量核查显示 */
+    handleBatchCommitment() {
+      this.actionSheetShow = true
+    },
+    /* 批量核查下一步 */
+    handleNextStep() {
+      this.currentStep = 1
+    },
+    handlePrevStep() {
+      this.currentStep = 0
+    },
+    onCheckResultSubmit(){
+      const result = []
+      this.indicatorList.forEach(item => {
+        result.push({
+          ...item,
+          ...this.batchCheckForm
+        })
+      })
+      editVerifyTask(result).then(res => {
+        if (res.code === 0) {
+          this.$toast('核查成功')
+          this.actionSheetShow = false
+          this.$store.dispatch('template/getPromiseDetail', this.$route.query.uuid)
+        }
+      })
     }
     }
   }
   }
 }
 }
@@ -39,18 +103,48 @@ export default {
   <view class="h5-page">
   <view class="h5-page">
     <view class="page-content">
     <view class="page-content">
       <view
       <view
-          v-for="(item,index) in templateJson.components.slice(0,6)" :key="index"
+          v-for="(item,index) in templateJson.components" :key="index"
       >
       >
         <DescriptionText v-if="item.base.moduleName === 'InstructionsText'" :index="index"></DescriptionText>
         <DescriptionText v-if="item.base.moduleName === 'InstructionsText'" :index="index"></DescriptionText>
         <InputComponents v-else-if="item.base.moduleName === 'Input'" :index="index"></InputComponents>
         <InputComponents v-else-if="item.base.moduleName === 'Input'" :index="index"></InputComponents>
         <DividerComponents v-else-if="item.base.moduleName === 'divider'" :index="index"></DividerComponents>
         <DividerComponents v-else-if="item.base.moduleName === 'divider'" :index="index"></DividerComponents>
       </view>
       </view>
+      <view class="commit-title" @click="handleBatchCommitment">批量核查</view>
       <IndicatorComponents></IndicatorComponents>
       <IndicatorComponents></IndicatorComponents>
     </view>
     </view>
     <view class="page-bottom">
     <view class="page-bottom">
       <van-button plain type="primary" @click="handleClose">关闭</van-button>
       <van-button plain type="primary" @click="handleClose">关闭</van-button>
-      <van-button type="info" @click="handleDownPdf">下载PDF</van-button>
+      <van-button v-if="!noDownload" type="info" @click="handleDownPdf">下载PDF</van-button>
     </view>
     </view>
+    <van-action-sheet v-model="actionSheetShow" title="标题">
+      <div class="content">
+        <view v-show="currentStep === 0" class="first-step">
+          <van-checkbox
+              shape="square"
+              v-for="(item,index) in indicatorList" :key="index" :name="index"
+              v-model="indicatorList[index].selectValue">
+            {{ item.indicatorInputBody }}
+          </van-checkbox>
+
+          <van-button round block type="info" style="margin-top: 20px"
+                      @click="handleNextStep">下一步</van-button>
+        </view>
+        <view
+          v-show="currentStep === 1"
+          class="second-step"
+        >
+          <CommitmentConfirmForm
+                                 v-model="batchCheckForm">
+            <template #footer>
+              <view style="margin: 16px;">
+                <van-button round block type="info" @click="handlePrevStep">上一步</van-button>
+                <van-button round block type="info" @click="onCheckResultSubmit">核查确认</van-button>
+              </view>
+            </template>
+          </CommitmentConfirmForm>
+        </view>
+      </div>
+    </van-action-sheet>
   </view>
   </view>
 </template>
 </template>
 
 
@@ -123,7 +217,12 @@ export default {
 .h5-page::-webkit-scrollbar-thumb {
 .h5-page::-webkit-scrollbar-thumb {
   background: #faf4f4; /* 滚动条颜色 */
   background: #faf4f4; /* 滚动条颜色 */
 }
 }
-
-
+.commit-title {
+  color: #4476E9;
+  text-align: end;
+}
+.content {
+  padding: 16px 16px 160px;
+}
 
 
 </style>
 </style>

+ 6 - 0
src/subPages/pages/commitment/components/commitmentConfirmForm/READEME.md

@@ -0,0 +1,6 @@
+# 核查确定提交 form表单
+## props
+ value: 双向绑定的form值
+ 
+## slot
+ footer: 底部插槽

+ 175 - 0
src/subPages/pages/commitment/components/commitmentConfirmForm/index.vue

@@ -0,0 +1,175 @@
+<script>
+import {uploadFile} from "@/api/commitment";
+import {v4 as uuidv4} from "uuid";
+
+export default {
+  props:{
+    value:{
+      type: Object,
+      default: ()=>{}
+    }
+  },
+  computed:{
+    formStates:{
+      get(){
+        return this.value
+      },
+      set(value){
+        this.$emit('input', value)
+      }
+    }
+  },
+  data(){
+    return {
+      checkResultColumns: [
+        {
+          text: '整改',
+          value: 1
+        },
+        {
+          text: '整改扣分',
+          value: 2
+        },
+        {
+          text: '符合',
+          value: 0
+        }
+      ],
+      checkGoalColumns: [
+        {
+          text: '整改 0分',
+          value: 0
+        },
+        {
+          text: '整改扣分 -10分',
+          value: -10
+        },
+        {
+          text: '符合',
+          value: 0
+        }
+      ],
+      checkResultPopupVisible: false,
+      checkScorePopupVisible: false,
+    }
+  },
+  methods:{
+    handleCheckResultConfirm(value) {
+      this.formStates.auditResult = value.text
+      this.checkResultPopupVisible = false
+    },
+    handleCheckGoalConfirm(value) {
+      this.formStates.auditScore = value.text
+      this.checkScorePopupVisible = false
+    },
+    beforeUpload(file) {
+      const isLt50M = file.size / 1024 / 1024 < 50;
+      if (!isLt50M) {
+        this.$toast('上传的图片大小不能超过 50MB!');
+        return false;
+      }
+      return true;
+    },
+    afterRead(file) {
+      const formData = new FormData()
+      uploadFile({
+        uuid: uuidv4(),
+        file: formData
+      }).then(res => {
+        if (res.code === 0) {
+          this.formStates.fileList.push({
+            uuid: res.data,
+            url: URL.createObjectURL(file.file)
+          })
+        }
+      })
+    },
+  }
+}
+</script>
+
+<template>
+  <view>
+    <van-form v-if="formStates">
+      <!--核查结果-->
+      <van-field
+          readonly
+          clickable
+          name="auditResult"
+          :value="formStates.auditResult"
+          label="核查结果"
+          placeholder="请选择核查结果"
+          @click="checkResultPopupVisible = true"
+      />
+      <van-popup v-model="checkResultPopupVisible" position="bottom">
+        <van-picker
+            show-toolbar
+            value-key="text"
+            :columns="checkResultColumns"
+            @confirm="(value)=>handleCheckResultConfirm(value)"
+            @cancel="checkResultPopupVisible = false"
+        />
+      </van-popup>
+      <!--核查得分-->
+      <van-field
+          readonly
+          clickable
+          name="auditScore"
+          :value="formStates.auditScore"
+          label="核查得分"
+          placeholder="请选择核查得分"
+          @click="checkScorePopupVisible = true"
+      />
+      <van-popup v-model="checkScorePopupVisible" position="bottom">
+        <van-picker
+            show-toolbar
+            value-key="text"
+            :columns="checkGoalColumns"
+            @confirm="(value)=>handleCheckGoalConfirm(value)"
+            @cancel="checkScorePopupVisible = false"
+        />
+      </van-popup>
+      <!--核查说明-->
+      <van-field
+          clickable
+          name="auditRemark"
+          v-model="formStates.auditRemark"
+          label="核查说明"
+          type="textarea"
+          placeholder="请输入核查说明"
+      />
+      <!--附件上传-->
+      <van-field label="文件上传">
+        <template #input>
+          <view class="upload-files">
+            <view
+                v-for="(item,index) in formStates.fileList"
+                :key="index"
+            >
+              <img :src="item.url" style="width: 80px; height: 80px;"/>
+            </view>
+            <van-uploader v-if="formStates.fileList.length < 3"
+                          :before-upload="beforeUpload"
+                          accept="image/*,pdf"
+                          :after-read="(file)=>afterRead(file)"
+            >
+            </van-uploader>
+          </view>
+          <view class="upload-description">
+            <view>
+              支持png、jpg、pdf,最大50M
+            </view>
+            <view>
+              最多3个附件
+            </view>
+          </view>
+        </template>
+      </van-field>
+      <slot name="footer"></slot>
+    </van-form>
+  </view>
+</template>
+
+<style scoped lang="scss">
+
+</style>

+ 208 - 0
src/subPages/pages/commitment/components/promiseList/index.vue

@@ -0,0 +1,208 @@
+<script>
+import {getPromiseList} from "@/api/commitment";
+
+export default {
+  props: {
+    /* 不使用接口请求, 使用此数据 */
+    propDataList: {
+      type: Array,
+      default: () => []
+    },
+    /* 如果为true则不再使用接口请求 */
+    noRequest: {
+      type: Boolean,
+      default: false
+    },
+    /* 搜索条件: 模板的uuid */
+    templateId: {
+      type: String,
+      default: ''
+    },
+    /* 搜索条件: 企业的uuid */
+    companyId: {
+      type: String,
+      default: ''
+    },
+    /* 是否为展示状态的列表样式 */
+    showStatus: {
+      type: Boolean,
+      default: false
+    }
+  },
+  data() {
+    return {
+      promiseList: [],
+      loading: false,
+      finished: true,
+      /* 只允许加载一次 */
+      initLoadFlag: true,
+      current: 0,
+    };
+  },
+  mounted() {
+    if (this.noRequest) {
+      this.finished = true;
+      this.loading = false;
+    }
+  },
+  watch: {
+    propDataList: {
+      handler(val) {
+        if (this.noRequest) {
+          this.promiseList = val
+        }
+      },
+      deep: true,
+      immediate: true
+    },
+    watchList: {
+      async handler(val) {
+        if ((val[0] || val[1]) && !this.noRequest) {
+          this.promiseList = []
+          this.current = 0
+          await this.initLoad()
+        }
+      },
+      immediate: true,
+      deep: true
+    }
+  },
+  computed: {
+    /* 这里面的值有变化,则触发获取承诺 */
+    watchList() {
+      return [this.templateId, this.companyId]
+    }
+  },
+  methods: {
+    async initLoad() {
+      await this.handleGetPromiseList()
+      this.initLoadFlag = false
+    },
+    async handleVanLoadPromise() {
+      if (!this.initLoadFlag) {
+        await this.handleGetPromiseList()
+      }
+    },
+    /* 获取承诺列表 */
+    async handleGetPromiseList() {
+      try {
+        this.loading = true;  // 开始加载
+        const res = await getPromiseList({
+          current: this.current + 1,
+          size: 10,
+          templateId: this.templateId ? this.templateId : undefined,
+          companyId: this.companyId ? this.companyId : undefined
+        })
+        if (res.code === 0) {
+          this.promiseList = this.promiseList.concat(res.data.records || [])
+          this.current++;
+          this.finished = res.data.records.length < 10;
+        }
+        this.loading = false;  // 加载结束
+      } catch (e) {
+        console.log(e)
+        this.loading = false
+      }
+    },
+    handlePromiseClick(item) {
+      this.$router.push({
+        path: '/subPages/pages/commitment/commitmentDetail/index',
+        query: {
+          uuid: item.uuid,
+//          不需要下载pdf
+          noDownload: true
+        }
+      })
+    },
+    handleParseBody(body) {
+      if (!body) return []
+      try {
+        return JSON.parse(body).components.filter(item => item.base.moduleName === "InstructionsText" && item.inputValue).map(item => item.inputValue)
+      } catch (e) {
+        return []
+      }
+    }
+  },
+};
+</script>
+
+<template>
+  <van-list v-model="loading" @load="handleVanLoadPromise" :finished="finished"
+            finished-text="没有更多数据了">
+    <van-cell v-for="(item,index) in promiseList" :key="index" class="box" @click="handlePromiseClick(item)">
+      <template #default>
+        <view v-if="!showStatus">
+          <view class="top">
+            <view class="title">{{ item.template_name }}</view>
+            <view class="time">{{ item.create_time | date("MM-DD HH:mm:ss") }}</view>
+          </view>
+          <view class="content">承诺企业 : {{ item.company_name }}</view>
+        </view>
+        <view v-else>
+          <view class="top">
+            <view class="title">{{ item.template_name }}</view>
+            <view class="status">
+              <span v-if="item.is_audit === '0'" style="color: #1492FF">待核查</span>
+              <span v-if="item.is_audit === '1'" style="color: #FF6B00">已核查</span>
+            </view>
+          </view>
+          <view class="content">
+            <view v-for="(item,index) in handleParseBody(item.promise_body)" :key="index">
+              {{ item }}
+            </view>
+          </view>
+        </view>
+      </template>
+    </van-cell>
+  </van-list>
+</template>
+
+<style scoped lang="scss">
+.box {
+  min-height: 78px;
+  background: #FFFFFF;
+  border-radius: 6px;
+  margin: 12px auto;
+
+  view:first-child {
+    margin-top: 0;
+  }
+}
+
+.top {
+  display: flex;
+  justify-content: space-between;
+  padding: 10px 20px;
+}
+
+.title {
+  font-size: 16px;
+  font-weight: bold;
+  flex: 1;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+}
+
+.time {
+  font-size: 12px;
+  color: #999999;
+  width: 100px;
+}
+
+.status {
+  font-size: 14px;
+  color: #999;
+  width: 60px
+}
+
+.content {
+  padding: 0 20px;
+  font-size: 14px;
+  color: #666666;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+}
+
+</style>

+ 2 - 0
src/subPages/pages/commitment/enterpriseCommitment/READEME.md

@@ -0,0 +1,2 @@
+# 企业经营承诺
+当前企业的承诺, 提醒

+ 3 - 3
src/subPages/pages/commitment/enterpriseCommitment/components/number-list/index.vue → src/subPages/pages/commitment/enterpriseCommitment/components/score-list/index.vue

@@ -3,17 +3,17 @@ export default {
   props: {
   props: {
 //    经营信用分
 //    经营信用分
     creditScore: {
     creditScore: {
-      type: Number,
+      type: Number | String,
       default: 0
       default: 0
     },
     },
 //    经营性承诺数量
 //    经营性承诺数量
     commitmentNum: {
     commitmentNum: {
-      type: Number,
+      type: Number | String,
       default: 0
       default: 0
     },
     },
     //承诺项目提醒数
     //承诺项目提醒数
     commitmentRemindNum: {
     commitmentRemindNum: {
-      type: Number,
+      type: Number | String,
       default: 0
       default: 0
     },
     },
   }
   }

+ 30 - 63
src/subPages/pages/commitment/enterpriseCommitment/index.vue

@@ -1,53 +1,30 @@
 <script>
 <script>
-import NumberList from "@/subPages/pages/commitment/enterpriseCommitment/components/number-list/index.vue";
+import ScoreList from "@/subPages/pages/commitment/enterpriseCommitment/components/score-list/index.vue";
 import {getEnterpriseDetail, getPromiseList} from "@/api/commitment";
 import {getEnterpriseDetail, getPromiseList} from "@/api/commitment";
+import PromiseList from "@/subPages/pages/commitment/components/promiseList/index.vue";
+import RemindList from "@/components/bussinessComponents/remind-list/index.vue";
 
 
 export default {
 export default {
-  components: {NumberList},
+  components: {
+    PromiseList,
+    ScoreList,
+    RemindList
+  },
   data() {
   data() {
     return {
     return {
-      loading: false,
-      finished: false,
-      page: 0,
-      pageSize: 10,
-      promiseList: [],
-      enterpriseDetail: {}
-    }
-  },
-  computed: {
-    listData() {
-      return this.promiseList.map((item) => {
-        return {
-          ...item,
-          content: item.content ? JSON.parse(item.content) : {}
-        }
-      })
+      enterpriseDetail: {},
+      active: 0
     }
     }
   },
   },
   mounted() {
   mounted() {
     this.handleGetEnterpriseDetail()
     this.handleGetEnterpriseDetail()
-    this.getPromiseList()
   },
   },
   methods: {
   methods: {
-    async getPromiseList() {
-      this.loading = true;
-      const res = await getPromiseList({
-        companyId: 'e1',
-        current: this.page + 1,
-        size: this.pageSize
-      })
-      if (res.code === 0) {
-        this.promiseList = this.promiseList.concat(res.data.records || [])
-        this.page++;
-        this.finished = res.data.records.length < this.pageSize
-      }
-      this.loading = false
-    },
     /* 获取企业详情 */
     /* 获取企业详情 */
     async handleGetEnterpriseDetail() {
     async handleGetEnterpriseDetail() {
       try {
       try {
         const res = await getEnterpriseDetail({
         const res = await getEnterpriseDetail({
-          companyId: 'e1'
+          uuid: this.$route.query.uuid
         })
         })
         if (res.code === 0) {
         if (res.code === 0) {
           this.enterpriseDetail = res.data
           this.enterpriseDetail = res.data
@@ -64,37 +41,27 @@ export default {
 <template>
 <template>
   <view class="page">
   <view class="page">
     <view class="top">
     <view class="top">
-      <view class="company">xxxxxxxx</view>
-      <view class="code">组织机构代码: xxxxxxxx</view>
+      <view class="company">{{ enterpriseDetail.companyName }}</view>
+      <view class="code">组织机构代码: {{ enterpriseDetail.companyId }}</view>
     </view>
     </view>
     <view class="page-content">
     <view class="page-content">
-      <NumberList :creditScore="100" :commitmentNum="100" :commitmentRemindNum="100"></NumberList>
-      <van-list
-          v-model="loading"
-          :finished="finished"
-          finished-text="没有更多了"
-          style="min-height: 300px"
-          @load="getPromiseList"
-      >
-        <van-cell class="promise-list-item" v-for="(item, index) in listData" :key="index">
-          <template #default>
-            <view class="item-top">
-              <view class="left-title">{{ item.title }}</view>
-              <view class="status">{{ item.status }}</view>
-            </view>
-            <view class="list-content">
-              <view class="content-item" v-for="key in Object.keys(item.content)" :key="key">
-                <view class="content-key">{{ key }}</view>
-                <view class="content-value">{{ item.content[key] }}</view>
-              </view>
-              <view class="content-item">
-                <view class="content-key">签署时间</view>
-                <view class="content-value">{{ item.create_time | date }}</view>
-              </view>
-            </view>
-          </template>
-        </van-cell>
-      </van-list>
+      <ScoreList :creditScore="enterpriseDetail.creditGoal" :commitmentNum="enterpriseDetail.promiseCount"
+                 :commitmentRemindNum="enterpriseDetail.creditGoal"></ScoreList>
+      <van-tabs v-model="active">
+        <van-tab title="全部承诺">
+          <PromiseList
+              class="promise-style"
+              :company-id="enterpriseDetail.uuid"
+              :show-status="true"
+          ></PromiseList>
+        </van-tab>
+        <van-tab title="整改提醒">
+          <RemindList v-if="enterpriseDetail.uuid" :type="0" :company-id="enterpriseDetail.uuid"></RemindList>
+        </van-tab>
+        <van-tab title="系统提醒">
+          <RemindList v-if="enterpriseDetail.uuid" :type="1" :company-id="enterpriseDetail.uuid"></RemindList>
+        </van-tab>
+      </van-tabs>
     </view>
     </view>
 
 
   </view>
   </view>

+ 9 - 0
src/subPages/pages/commitment/home/components/enterpriseList/index.vue

@@ -58,6 +58,14 @@ export default {
         console.log(e);
         console.log(e);
         this.loading = false;
         this.loading = false;
       }
       }
+    },
+    handleClick(item) {
+      this.$router.push({
+        path: '/subPages/pages/commitment/enterpriseCommitment/index',
+        query: {
+          uuid: item.uuid
+        }
+      })
     }
     }
   }
   }
 };
 };
@@ -74,6 +82,7 @@ export default {
         v-for="(item, index) in enterpriseList"
         v-for="(item, index) in enterpriseList"
         :key="item.uuid"
         :key="item.uuid"
         class="box"
         class="box"
+        @click="handleClick(item)"
     >
     >
       <template #default>
       <template #default>
         <view class="top">
         <view class="top">

+ 0 - 152
src/subPages/pages/commitment/home/components/promiseList/index.vue

@@ -1,152 +0,0 @@
-<script>
-import {getPromiseList} from "@/api/commitment";
-
-export default {
-  props:{
-    propDataList: {
-      type: Array,
-      default: () => []
-    },
-    /* 如果为true则不再使用接口请求 */
-    noRequest: {
-      type: Boolean,
-      default: false
-    },
-    /* 模板的uuid */
-    templateId: {
-      type: String,
-      default: ''
-    }
-  },
-  data() {
-    return {
-      promiseList: [],
-      loading:false,
-      finished:false,
-      current:0
-    };
-  },
-  mounted() {
-    if(this.noRequest) {
-      this.finished = true;
-      this.loading = false;
-    }
-  },
-  watch: {
-    propDataList: {
-      handler(val) {
-        if(this.noRequest) {
-          this.promiseList = val
-        }
-      },
-      deep:true
-    },
-    templateId: {
-      handler(val) {
-        if(val) {
-          this.promiseList = []
-          this.current = 0
-          this.handleGetPromiseList()
-        }
-      },
-      immediate:true
-    }
-  },
-  methods: {
-    /* 获取承诺列表 */
-    async handleGetPromiseList() {
-      try {
-        this.loading = true;  // 开始加载
-        const res = await getPromiseList({
-          current:this.current + 1,
-          size:10,
-          templateId:this.templateId ? this.templateId : undefined //暂时隐藏掉,以便看到数据
-        })
-       if(res.code === 0) {
-         this.promiseList = this.promiseList.concat(res.data.records || [])
-         this.current++;
-         this.finished = res.data.records.length < 10;
-       }
-       this.loading = false;  // 加载结束
-      } catch (e) {
-        console.log(e)
-        this.loading = false
-      }
-    },
-    handleParseTitle(title) {
-      if (!title) return ''
-      try {
-        return JSON.parse(title).title
-      } catch (e) {
-        return ''
-      }
-    },
-    handlePromiseClick(item) {
-      this.$router.push({
-        path: '/subPages/pages/commitment/commitmentDetail/index',
-        query: {
-          uuid: item.uuid
-        }
-      })
-    }
-  },
-};
-</script>
-
-<template>
-  <van-list v-model="loading" @load="handleGetPromiseList" :finished="finished" finished-text="没有更多数据了">
-    <van-cell v-for="(item,index) in promiseList" :key="index" class="box" @click="handlePromiseClick(item)">
-      <template #default>
-        <view class="top">
-          <view class="title">{{ handleParseTitle(item.remark) }}</view>
-          <view class="time">{{ item.create_time | date("MM-DD HH:mm:ss") }}</view>
-        </view>
-        <view class="content">承诺企业 : {{ item.company_name }}</view>
-      </template>
-    </van-cell>
-  </van-list>
-</template>
-
-<style scoped lang="scss">
-.box {
-  min-height: 78px;
-  background: #FFFFFF;
-  border-radius: 6px;
-  margin: 12px auto;
-
-  view:first-child {
-    margin-top: 0;
-  }
-}
-
-.top {
-  display: flex;
-  justify-content: space-between;
-  padding: 10px 20px;
-}
-
-.title {
-  font-size: 16px;
-  font-weight: bold;
-  flex: 1;
-  overflow: hidden;
-  text-overflow: ellipsis;
-  white-space: nowrap;
-}
-
-.time {
-  font-size: 12px;
-  color: #999999;
-  width: 100px;
-}
-
-.content {
-  padding: 0 20px;
-  font-size: 14px;
-  color: #666666;
-  overflow: hidden;
-  text-overflow: ellipsis;
-  white-space: nowrap;
-}
-
-</style>

+ 17 - 2
src/subPages/pages/commitment/home/components/templateList/index.vue

@@ -1,5 +1,6 @@
 <script>
 <script>
-import {getTemplateList} from "@/api/commitment";
+import {downFileBase64, getTemplateList} from "@/api/commitment";
+import TemplateImg from "@/static/images/commitment/template.png";
 
 
 export default {
 export default {
   props:{
   props:{
@@ -27,6 +28,9 @@ export default {
           departmentId:undefined,// 等登录了联调
           departmentId:undefined,// 等登录了联调
         })
         })
         this.templateList = res.data.records || []
         this.templateList = res.data.records || []
+        for (const [index, item] of this.templateList.entries()) {
+          await this.handleDownImg(item.iconUrl, index);
+        }
       } catch (e) {
       } catch (e) {
         console.log(e)
         console.log(e)
       }
       }
@@ -35,6 +39,17 @@ export default {
     handleClick(item) {
     handleClick(item) {
       this.$emit('click', item)
       this.$emit('click', item)
     },
     },
+    async handleDownImg(iconUrl,index) {
+      if(!iconUrl) {
+        this.templateList[index].imgUrl = TemplateImg
+      }else {
+        let res =  await downFileBase64({
+          uuid: iconUrl
+        })
+        this.templateList[index].imgUrl = 'data:image/jpeg;base64,' + res.data
+      }
+
+    }
   },
   },
 };
 };
 </script>
 </script>
@@ -44,7 +59,7 @@ export default {
     <view v-for="item in templateList" :key="item.uuid"
     <view v-for="item in templateList" :key="item.uuid"
           @click="handleClick(item)"
           @click="handleClick(item)"
           :class="{active: item.uuid === activeTemplateId}">
           :class="{active: item.uuid === activeTemplateId}">
-      <img src="" alt="">
+      <img :src="item.imgUrl" style="border-radius: 5px" alt="">
       <view>{{item.name}}</view>
       <view>{{item.name}}</view>
     </view>
     </view>
   </view>
   </view>

+ 1 - 1
src/subPages/pages/commitment/home/index.vue

@@ -1,7 +1,7 @@
 <script>
 <script>
 import TopSearchShow from "./components/topSearchShow/index.vue";
 import TopSearchShow from "./components/topSearchShow/index.vue";
 import ContentMenu from "./components/contentMenu/index.vue";
 import ContentMenu from "./components/contentMenu/index.vue";
-import PromiseList from "./components/promiseList/index.vue";
+import PromiseList from "../components/promiseList/index.vue";
 import EnterPriseList from "./components/enterpriseList/index.vue";
 import EnterPriseList from "./components/enterpriseList/index.vue";
 import TemplateList from "./components/templateList/index.vue";
 import TemplateList from "./components/templateList/index.vue";
 import RecentlySearch from "./components/recentlySearch/index.vue";
 import RecentlySearch from "./components/recentlySearch/index.vue";

+ 0 - 1
src/subPages/pages/commitment/indicatorConfirm/index.vue

@@ -30,7 +30,6 @@ export default {
         this.formData = await getPromiseVerifyList({
         this.formData = await getPromiseVerifyList({
           uuid: this.uuid
           uuid: this.uuid
         })
         })
-        console.log(this.formData,'1212')
       } catch (e) {
       } catch (e) {
         console.log(e)
         console.log(e)
       }
       }

+ 198 - 0
src/subPages/pages/commitment/remindDetail/index.vue

@@ -0,0 +1,198 @@
+<script>
+import {downFileBase64, reminderDetails} from "@/api/commitment";
+
+export default {
+  watch: {
+    /* 提醒uuid */
+    'router.query.uuid': {
+      handler() {
+        this.handleGetDetail()
+      },
+      immediate: true,
+      deep: true
+    }
+  },
+  data() {
+    return {}
+  },
+  computed:{
+    noDownload(){
+      return this.$router.query.noDownload === true
+    }
+  },
+  methods: {
+    handleGetDetail() {
+      reminderDetails({
+        uuid: this.$route.query.uuid,
+        type: this.$route.query.type // 0:整改提醒 1:系统提醒
+      }).then(res => {
+        if (res.code === 0) {
+          this.enterpriseDetail = res.data
+        }
+      })
+    },
+    /* 附件下载 */
+    handleFileDown(uuid) {
+      downFileBase64({
+        uuid: uuid
+      }).then(res => {
+        if (res.code === 0) {
+          const a = document.createElement('a')
+          a.href = res.data
+          a.download = '附件'
+          a.click()
+        }
+      })
+    },
+    handleClose() {
+      window.history.go(-1)
+    },
+  }
+}
+
+</script>
+
+<template>
+  <view class="remind-page">
+    <view class="top">
+      <view class="title">整改提醒:{{ item.code }}</view>
+      <view class="status">
+        <span v-if="$router.query.type === '0'" style="color: #1492FF">待核查</span>
+        <span v-if="$router.query.type === '1'" style="color: #FF6B00">已核查</span>
+      </view>
+    </view>
+
+    <view class="remind">
+      {{ enterpriseDetail.content }}
+    </view>
+    <el-divider></el-divider>
+    <view>
+      <view class="indicator-body">
+        {{ item.indicatorInputBody }}
+      </view>
+      <view>
+        <view class="other-title">
+          监管核查
+          <view style="color: #FF6B00" v-if="enterpriseDetail.approvalStatus === 0">
+            审批状态:待审批
+          </view>
+          <view style="color: #15BE50" v-if="enterpriseDetail.approvalStatus === 1">
+            审批状态:已通过
+          </view>
+          <view style="color: #D40000" v-if="enterpriseDetail.approvalStatus === 2">
+            审批状态:已拒绝
+          </view>
+        </view>
+        <van-divider/>
+        <van-form>
+          <!--核查结果-->
+          <van-field
+              name="auditResult"
+              label="核查结果"
+          >
+            <template #input>
+              <view v-if="enterpriseDetail.auditResult === 0">符合</view>
+              <view v-if="enterpriseDetail.auditResult === 1">整改</view>
+              <view v-if="enterpriseDetail.auditResult === 2">整改扣分</view>
+            </template>
+          </van-field>
+          <!--核查得分-->
+          <van-field
+              name="auditScore"
+              label="核查得分"
+          >
+            <template #input>
+              <view v-if="enterpriseDetail.auditScore === 0">0分</view>
+              <view v-if="enterpriseDetail.auditScore === -10">-10分</view>
+            </template>
+          </van-field>
+          <!--核查说明-->
+          <van-field
+              name="auditRemark"
+              label="核查说明"
+          >
+            <template #input>
+              <view>{{ enterpriseDetail.auditRemark }}</view>
+            </template>
+          </van-field>
+          <van-field
+              name="expandStr"
+              label="附件"
+          >
+            <template #input>
+              <view class="file-style">
+                <view v-for="(item,index) in item.expandStr.split(',')" @click="handleFileDown(item.uuid)" :key="index">
+                  附件{{ index + 1 }}
+                </view>
+              </view>
+            </template>
+          </van-field>
+        </van-form>
+      </view>
+    </view>
+    <view class="page-bottom">
+      <van-button plain type="primary" @click="handleClose">关闭</van-button>
+      <van-button  v-if="!noDownload" type="info" @click="handleFileDown(enterpriseDetail.attachmentId)">下载PDF</van-button>
+    </view>
+  </view>
+</template>
+
+<style scoped lang="scss">
+.remind-page {
+  min-height: 100vh;
+  background-color: #fff;
+}
+
+.remind-page .top {
+  padding: 20rpx;
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+
+  .title {
+    font-size: 32rpx;
+    color: #333333;
+  }
+
+  .status {
+    font-size: 28rpx;
+  }
+}
+
+.indicator-body {
+  background: #F6F6F6;
+  border-radius: 4px;
+  font-weight: 400;
+  font-size: 15px;
+  color: #666666;
+  text-align: justify;
+  padding: 5px;
+  min-height: 40px;
+}
+
+.other-title {
+  font-size: 14px;
+  font-weight: bold;
+  color: #333;
+  margin-top: 10px;
+  display: flex;
+  justify-content: space-between;
+
+  view {
+    font-size: 12px;
+  }
+}
+
+.file-style {
+  font-size: 14px;
+  font-weight: 400;
+  color: #1492FF;
+  margin-top: 10px;
+  display: flex;
+  flex-direction: column;
+  cursor: pointer;
+}
+.page-bottom {
+  height: 48px;
+}
+</style>

+ 1 - 0
src/utils/fetch/index.js

@@ -213,6 +213,7 @@ export const myFetch = async (url, type = "get", data = {}, dataType) => {
         //返回一个promise对象
         //返回一个promise对象
         return responseData;
         return responseData;
     }catch (err) {
     }catch (err) {
+        handleReqLoading(false);
         return handleHttpError(err);
         return handleHttpError(err);
     }
     }
 }
 }

+ 64 - 31
src/utils/fetch/requestHandler.js

@@ -1,37 +1,70 @@
-export const handleRequest = async (reqConfig) => {
-    return new Promise((resolve, reject) => {
+export const handleRequest = (reqConfig) => {
+    //删除reqConfig为undefined的属性
+    for (let key in reqConfig.data) {
+        if (reqConfig.data[key] === undefined) {
+            delete reqConfig.data[key];
+        }
+    }
+    const promises = [];
 
 
-        /** 普通请求 */
-        reqConfig.dataType === 'json' && uni.request({
-            ...reqConfig,
-            success: function (res) {
-                resolve(res.data);
-            },
-            fail: function (err) {
-                reject(err);
-            },
+    /** 普通请求 */
+    if (reqConfig.dataType === 'json') {
+        const promise = new Promise((resolve, reject) => {
+            uni.request({
+                ...reqConfig,
+                success: function (res) {
+                    resolve(res.data);
+                },
+                fail: function (err) {
+                    reject(err);
+                },
+            });
         });
         });
+        promises.push(promise);
+    }
 
 
-        /** 文件上传 */
-        const uploadParams = JSON.parse(JSON.stringify(reqConfig));
-        // 上传会自己带
-        delete uploadParams.data.file;
-        reqConfig.dataType === 'formData' && uni.uploadFile({
-            url: reqConfig.url,
-            formData: uploadParams.data,
-            header: {
-               Token:uploadParams.header.Token
-            },
-            success: function (res) {
-                resolve(JSON.parse(res.data));
-            },
-            fail: function (err) {
-                reject(err);
-            },
+    /** 文件上传 */
+    if (reqConfig.dataType === 'formData') {
+        const promise = new Promise((resolve, reject) => {
+            const uploadParams = JSON.parse(JSON.stringify(reqConfig));
+            delete uploadParams.data.file;
+            uni.uploadFile({
+                url: reqConfig.url,
+                formData: uploadParams.data,
+                header: {
+                    Token: uploadParams.header.Token
+                },
+                success: function (res) {
+                    resolve(JSON.parse(res.data));
+                },
+                fail: function (err) {
+                    reject(err);
+                },
+            });
         });
         });
+        promises.push(promise);
+    }
 
 
-        /** 文件下载 */
-        const downloadParams = JSON.parse(JSON.stringify(reqConfig));
+    /** 文件下载 */
+    if (reqConfig.dataType === 'base64') {
+        const promise = new Promise((resolve, reject) => {
+            const url = reqConfig.url + '?' + Object.keys(reqConfig.data).map(key => key + '=' + reqConfig.data[key]).join('&');
+            uni.downloadFile({
+                url,
+                header:{
+                  ...reqConfig.header
+                },
+                success: function (res) {
+                    resolve(res.tempFilePath);
+                },
+                fail: function (err) {
+                    reject(err);
+                },
+            });
+        });
+        promises.push(promise);
+    }
 
 
-    });
-}
+    // 返回一个包含所有异步操作的 Promise 数组
+    return Promise.all(promises);
+}

+ 5 - 4
src/utils/fetch/responseHandler.js

@@ -4,7 +4,7 @@ import {errCodeMsgKV} from "@/utils/fetch/errCode";
  * 处理状态码不为200的响应
  * 处理状态码不为200的响应
  */
  */
 export function handleHttpError(err) {
 export function handleHttpError(err) {
-    const msg = errCodeMsgKV[err.code] + ':' + err.msg || err.msg;
+    const msg = errCodeMsgKV[err.code] ? errCodeMsgKV[err.code] + ':' + err.errMsg : err.errMsg;
     uni.showToast({
     uni.showToast({
         title: msg,
         title: msg,
         icon: "none",
         icon: "none",
@@ -18,8 +18,9 @@ export function handleHttpError(err) {
  * 处理http响应码为200的响应
  * 处理http响应码为200的响应
  * @return {Promise<unknown>}
  * @return {Promise<unknown>}
  */
  */
-export function handleNormalResponse(res) {
-    return new Promise((resolve, reject) => {
+export function handleNormalResponse(resList) {
+    const res = resList[0]
+    return res && new Promise((resolve, reject) => {
         if (res.code || res.code === 0) {
         if (res.code || res.code === 0) {
             switch (res.code) {
             switch (res.code) {
                 case 200:
                 case 200:
@@ -31,7 +32,7 @@ export function handleNormalResponse(res) {
                 default:
                 default:
                     reject(res);
                     reject(res);
                     uni.showToast({
                     uni.showToast({
-                        title:res.msg,
+                        title: res.msg,
                         icon: "none",
                         icon: "none",
                         duration: 2000,
                         duration: 2000,
                     });
                     });