Ver Fonte

Merge remote-tracking branch 'HS_MZAP/master'

# Conflicts:
#	src/api/sys/userSets.js
#	src/views/activityMan/placeactivity/placeActivityList.vue
#	src/views/activityMan/selfMeetingReport/selfMeetingList.vue
#	src/views/activityMan/selfMeetingReport/selfMeetingView.vue
#	src/views/activityMan/siteInspection/siteInspectionList.vue
#	src/views/activityMan/siteInspection/siteInspectionView.vue
#	src/views/tab_a/tabAll.vue
yin_yu820 há 2 anos atrás
pai
commit
1732edf37a
32 ficheiros alterados com 1909 adições e 423 exclusões
  1. 28 21
      package-lock.json
  2. 2 1
      package.json
  3. 1 1
      public/index.html
  4. 22 0
      src/api/differentbelievers/ReligiousPeopleReportService.js
  5. 24 0
      src/api/placeRegister/placeRegister.js
  6. 7 7
      src/api/sys/tools.js
  7. 9 0
      src/api/tabletManage/TabletServer.js
  8. 104 0
      src/components/editor/WangEditor.vue
  9. 49 7
      src/router/index.js
  10. 15 0
      src/styles/index.css
  11. 22 0
      src/utils/request.js
  12. 122 0
      src/views/activityMan/differentbelievers/ReligiousPeopleReportInfo.vue
  13. 211 0
      src/views/activityMan/differentbelievers/ReligiousPeopleReportList.vue
  14. 64 55
      src/views/activityMan/differentbelievers/ReligiousPeopleReportView.vue
  15. 3 3
      src/views/activityMan/personList.vue
  16. 27 7
      src/views/activityMan/placeactivity/placeActivityInfo.vue
  17. 85 80
      src/views/activityMan/placeactivity/placeActivityList.vue
  18. 50 30
      src/views/activityMan/placeactivity/placeActivityView.vue
  19. 81 33
      src/views/activityMan/selfMeetingReport/selfMeetingInfo.vue
  20. 81 76
      src/views/activityMan/selfMeetingReport/selfMeetingList.vue
  21. 68 23
      src/views/activityMan/selfMeetingReport/selfMeetingView.vue
  22. 1 1
      src/views/activityMan/siteInspection/siteInspectionList.vue
  23. 2 4
      src/views/activityMan/siteInspection/siteInspectionView.vue
  24. 153 0
      src/views/placeManage/ManageList.vue
  25. 0 1
      src/views/placeManage/placePerson.vue
  26. 1 1
      src/views/placeManage/placePersoninfo.vue
  27. 288 69
      src/views/placeManage/placeRegister.vue
  28. 135 0
      src/views/placeManage/placeTablet.vue
  29. 247 0
      src/views/placeManage/placeTabletInfo.vue
  30. 1 1
      src/views/tab_a/tabAll.vue
  31. 3 1
      src/views/toBeDone/toBeDone.vue
  32. 3 1
      src/views/toBeDone/toBeDone_details.vue

+ 28 - 21
package-lock.json

@@ -12507,6 +12507,29 @@
         "webpack-merge": "^5.7.3",
         "webpack-virtual-modules": "^0.4.2",
         "whatwg-fetch": "^3.6.2"
+      },
+      "dependencies": {
+        "@vue/vue-loader-v15": {
+          "version": "npm:vue-loader@15.10.1",
+          "resolved": "https://registry.npmmirror.com/vue-loader/-/vue-loader-15.10.1.tgz",
+          "integrity": "sha512-SaPHK1A01VrNthlix6h1hq4uJu7S/z0kdLUb6klubo738NeQoLbS6V9/d8Pv19tU0XdQKju3D1HSKuI8wJ5wMA==",
+          "dev": true,
+          "requires": {
+            "@vue/component-compiler-utils": "^3.1.0",
+            "hash-sum": "^1.0.2",
+            "loader-utils": "^1.1.0",
+            "vue-hot-reload-api": "^2.3.0",
+            "vue-style-loader": "^4.1.0"
+          },
+          "dependencies": {
+            "hash-sum": {
+              "version": "1.0.2",
+              "resolved": "https://registry.npmmirror.com/hash-sum/-/hash-sum-1.0.2.tgz",
+              "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==",
+              "dev": true
+            }
+          }
+        }
       }
     },
     "@vue/cli-shared-utils": {
@@ -12765,27 +12788,6 @@
       "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.47.tgz",
       "integrity": "sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ=="
     },
-    "@vue/vue-loader-v15": {
-      "version": "npm:vue-loader@15.10.1",
-      "resolved": "https://registry.npmmirror.com/vue-loader/-/vue-loader-15.10.1.tgz",
-      "integrity": "sha512-SaPHK1A01VrNthlix6h1hq4uJu7S/z0kdLUb6klubo738NeQoLbS6V9/d8Pv19tU0XdQKju3D1HSKuI8wJ5wMA==",
-      "dev": true,
-      "requires": {
-        "@vue/component-compiler-utils": "^3.1.0",
-        "hash-sum": "^1.0.2",
-        "loader-utils": "^1.1.0",
-        "vue-hot-reload-api": "^2.3.0",
-        "vue-style-loader": "^4.1.0"
-      },
-      "dependencies": {
-        "hash-sum": {
-          "version": "1.0.2",
-          "resolved": "https://registry.npmmirror.com/hash-sum/-/hash-sum-1.0.2.tgz",
-          "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==",
-          "dev": true
-        }
-      }
-    },
     "@vue/web-component-wrapper": {
       "version": "1.3.0",
       "resolved": "https://registry.npmjs.org/@vue/web-component-wrapper/-/web-component-wrapper-1.3.0.tgz",
@@ -18026,6 +18028,11 @@
         "@vue/devtools-api": "^6.0.0-beta.11"
       }
     },
+    "wangeditor": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmmirror.com/wangeditor/-/wangeditor-3.1.1.tgz",
+      "integrity": "sha512-co18zRS96xVKhLyhTIqgqWs5khSbNPlZeoT8/B2dxnVKQMntRGu1D8ks+nbNOvZcIjyrdhhtde6LjqzVECL6DA=="
+    },
     "watchpack": {
       "version": "2.4.0",
       "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz",

+ 2 - 1
package.json

@@ -15,7 +15,8 @@
     "vant": "^4.1.2",
     "vue": "^3.2.13",
     "vue-router": "^4.0.3",
-    "vuex": "^4.0.2"
+    "vuex": "^4.0.2",
+    "wangeditor": "^3.1.1"
   },
   "devDependencies": {
     "@vue/cli-plugin-babel": "~5.0.0",

+ 1 - 1
public/index.html

@@ -8,7 +8,7 @@
     <title><%= htmlWebpackPlugin.options.title %></title>
 
     <!--小程序SDK 只有在小程序容器中才能加载到 -->
-	  <script src="shinemosdk://20000/index.js"></script>
+	  <!-- <script src="shinemosdk://20000/index.js"></script> -->
   </head>
   <body>
     <noscript>

+ 22 - 0
src/api/differentbelievers/ReligiousPeopleReportService.js

@@ -0,0 +1,22 @@
+import request from '@/utils/request'
+export default class ReligiousPeopleReportService {
+    // 保存
+    save(inputForm) {
+        return request.post(
+            '/differentbelievers/religiousPeopleReport/save',
+            inputForm
+        )
+    };
+    // 修改
+    queryById(id) {
+        return request.get(
+            '/differentbelievers/religiousPeopleReport/queryById', { id: id }
+        )
+    };
+    list(params) {
+        return request.get(
+            `/differentbelievers/religiousPeopleReport/list`,
+            params
+        )
+    };
+}

+ 24 - 0
src/api/placeRegister/placeRegister.js

@@ -0,0 +1,24 @@
+import request from "@/utils/request";
+export default class placeRegister {
+    //场所提交
+    sava(inputFrom) {
+        return request.post(
+            `/religioussites/siteinfo/religiousSitesInfo/save`,
+            inputFrom
+        )
+    };
+    //地点
+    treeDate(params) {
+        return request.get(
+            `/tools/area_yc/treeData`,
+            params
+        )
+    };
+    //公安、宗教部门
+    list(params) {
+        return request.get(
+            `/sys/user/list`,
+            params
+        )
+    };
+}

+ 7 - 7
src/api/sys/tools.js

@@ -3,17 +3,17 @@ export default class Tools {
     treeData() {
         return request.get(`/tools/area_yc/treeData`);
     };
-    // 获取人员信息
-    personList(params) {
-        return request.get(
-            `/user/usermanagement/userManagement/list`,
-            params
-        )
-    };
     placeList(params) {
         return request.get(
             `/religioussites/siteinfo/religiousSitesInfo/list`,
             params
         )
+    };
+    // 文件上传
+    uploadFile(formData, uploadPath) {
+        return request.uploadFile(
+            `/sys/file/webupload/upload?uploadPath=${uploadPath}`,
+            formData
+        )
     }
 }

+ 9 - 0
src/api/tabletManage/TabletServer.js

@@ -0,0 +1,9 @@
+import request from "@/utils/request";
+export default class TabletServer {
+    list(params) {
+        return request.get(
+            `/placememorialtablets/placeMemorialTablets/list`,
+            params
+        )
+    };
+}

+ 104 - 0
src/components/editor/WangEditor.vue

@@ -0,0 +1,104 @@
+<template>
+   <div class="editor" style="min-width:100px; padding-right:10px">
+    <div ref="toolbar" class="toolbar">
+    </div>
+    <div ref="editor" class="wtext">
+    </div>
+  </div>
+  </template>
+  
+  <script>
+import E from "wangeditor";
+export default {
+  name: "WangEditor",
+  data() {
+    return {
+      editor: null,
+      info_: null,
+    };
+  },
+  model: {
+    prop: "value",
+    event: "change",
+  },
+  props: {
+    isClear: {
+      type: Boolean,
+      default: false,
+    },
+  },
+  watch: {
+    isClear(val) {
+      // 触发清除文本域内容
+      if (val) {
+        this.editor.txt.clear();
+        this.info_ = null;
+      }
+    },
+  },
+  mounted() {
+    this.seteditor();
+  },
+  methods: {
+    init(val) {
+      // 使用 v-model 时,设置初始值
+      this.editor.txt.html(val);
+    },
+    seteditor() {
+      this.editor = new E(this.$refs.toolbar, this.$refs.editor);
+      this.editor.customConfig.placeholder = "请输入内容";
+      this.editor.customConfig.uploadImgShowBase64 = true; // base 64 存储图片
+      this.editor.customConfig.uploadImgServer = ""; // 配置服务器端地址
+      this.editor.customConfig.uploadImgHeaders = {}; // 自定义 header
+      this.editor.customConfig.uploadFileName = ""; // 后端接受上传文件的参数名
+      this.editor.customConfig.uploadImgMaxSize = 2 * 1024 * 1024; // 将图片大小限制为 2M
+      this.editor.customConfig.uploadImgMaxLength = 6; // 限制一次最多上传 3 张图片
+      this.editor.customConfig.uploadImgTimeout = 3 * 60 * 1000; // 设置超时时间
+      // 配置菜单
+      this.editor.customConfig.menus = [
+        "image", // 插入图片
+      ];
+      this.editor.customConfig.uploadImgHooks = {
+        fail: (xhr, editor, result) => {
+          // 插入图片失败回调
+        },
+        success: (xhr, editor, result) => {
+          // 图片上传成功回调
+        },
+        timeout: (xhr, editor) => {
+          // 网络超时的回调
+        },
+        error: (xhr, editor) => {
+          // 图片上传错误的回调
+        },
+        customInsert: (insertImg, result, editor) => {
+          // 图片上传成功,插入图片的回调
+        },
+      };
+      this.editor.customConfig.onchange = (html) => {
+        this.info_ = html; // 绑定当前逐渐地值
+        this.$emit("change", this.info_); // 将内容同步到父组件中
+      };
+      // 创建富文本编辑器
+      this.editor.create();
+    },
+    editable(value) {
+      this.editor.$textElem.attr("contenteditable", value);
+    },
+  },
+};
+</script>
+  
+<style lang="css">
+.editor {
+  width: 98%;
+  margin: 0 auto;
+}
+.toolbar {
+  border: 1px solid #ccc;
+}
+.wtext {
+  border: 1px solid #ccc;
+  height: 100px;
+}
+</style>

+ 49 - 7
src/router/index.js

@@ -56,7 +56,7 @@ const routes = [{
         meta: {
             isShowTarbar: true,
         }
-    },{
+    }, {
         path: '/securityFacilitiesErrList',
         name: 'securityFacilitiesErrList',
         component: () =>
@@ -64,7 +64,7 @@ const routes = [{
         meta: {
             isShowTarbar: true,
         }
-    },{
+    }, {
         path: '/religiousConferenceList',
         name: 'religiousConferenceList',
         component: () =>
@@ -72,7 +72,7 @@ const routes = [{
         meta: {
             isShowTarbar: true,
         }
-    },{
+    }, {
         path: '/nonReligiousInformationList',
         name: 'nonReligiousInformationList',
         component: () =>
@@ -80,7 +80,7 @@ const routes = [{
         meta: {
             isShowTarbar: true,
         }
-    },{
+    }, {
         path: '/toBeDone',
         name: 'toBeDone',
         component: () =>
@@ -137,10 +137,34 @@ const routes = [{
             isShowTarbar: true,
         }
     }, {
-        path: '/abnormalCrowd',
-        name: 'abnormalCrowd',
+        path: '/selfMeetingInfo',
+        name: 'selfMeetingInfo',
+        component: () =>
+            import ('../views/activityMan/selfMeetingReport/selfMeetingInfo.vue'),
+        meta: {
+            isShowTarbar: true,
+        }
+    }, {
+        path: '/differentbelievers',
+        name: 'differentbelievers',
+        component: () =>
+            import ('../views/activityMan/differentbelievers/ReligiousPeopleReportView.vue'),
+        meta: {
+            isShowTarbar: true,
+        }
+    }, {
+        path: '/differentbelieversList',
+        name: 'differentbelieversList',
         component: () =>
-            import ('../views/activityMan/abnormalcrowd/abnormalCrowdView.vue'),
+            import ('../views/activityMan/differentbelievers/ReligiousPeopleReportList.vue'),
+        meta: {
+            isShowTarbar: true,
+        }
+    }, {
+        path: '/differentbelieversInfo',
+        name: 'differentbelieversInfo',
+        component: () =>
+            import ('../views/activityMan/differentbelievers/ReligiousPeopleReportInfo.vue'),
         meta: {
             isShowTarbar: true,
         }
@@ -196,6 +220,24 @@ const routes = [{
         meta: {
             isShowTarbar: false,
         }
+    },
+    {
+        path: '/placeTablet',
+        name: 'placeTablet',
+        component: () =>
+            import ('../views/placeManage/placeTablet.vue'),
+        meta: {
+            isShowTarbar: false,
+        }
+    },
+    {
+        path: '/placeTabletInfo',
+        name: 'placeTabletInfo',
+        component: () =>
+            import ('../views/placeManage/placeTabletInfo.vue'),
+        meta: {
+            isShowTarbar: false,
+        }
     }
 ]
 

+ 15 - 0
src/styles/index.css

@@ -1,5 +1,20 @@
 /*公用样式 开始----*/
 
+* {
+    margin: 0;
+    padding: 0;
+}
+
+body {
+    background-color: #f5f5f5;
+    ;
+}
+
+p {
+    line-height: 1.5;
+    margin: 5px;
+}
+
 
 /*字体黑,正文常用*/
 

+ 22 - 0
src/utils/request.js

@@ -125,6 +125,28 @@ var http = {
                 // }
                 // resolve(response.data);
 
+                resolve(response);
+            }).catch((error) => {
+                reject(error)
+            })
+        })
+    },
+    /**
+     * 文件上传
+     * @param {*} url      请求地址
+     * @param {*} data     请求参数
+     * @param {*} params   请求参数,拼接再url地址栏后面,无需求时忽略该参数
+     * @param {*} config   请求的config相关配置
+     * @returns
+     */
+    uploadFile: function(url, data = {}) {
+        return new Promise((resolve, reject) => {
+            axios({
+                url: url,
+                method: 'post',
+                data: data,
+                headers: { 'Content-Type': 'multipart/form-data' }
+            }).then((response) => {
                 resolve(response);
             }).catch((error) => {
                 reject(error)

+ 122 - 0
src/views/activityMan/differentbelievers/ReligiousPeopleReportInfo.vue

@@ -0,0 +1,122 @@
+<template>
+  <van-nav-bar
+    fixed
+    title="私设聚会点"
+    left-text=""
+    left-arrow
+    @click-left="onClickLeft"
+  />
+  <van-loading size="16px" v-if="isLoading">加载中...</van-loading>
+  <div class="main" v-if="!isLoading">
+    <div class="banner">
+      <h2>扎实提升“三力”</h2>
+      <h2>深入推进“三化”</h2>
+      <h2>坚持“三个思维”</h2>
+    </div>
+    <div class="info">
+      <p>异常人员姓名:{{ inputForm.abnormalName }}</p>
+      <p>人员身份证号:{{ inputForm.abnormalIdcar }}</p>
+      <p>性别:{{ inputForm.sex }}</p>
+      <p>手机号:{{ inputForm.abnormalPhone }}</p>
+      <p>籍贯:{{ inputForm.nativePlace }}</p>
+      <p>现居地:{{ inputForm.currentResidence }}</p>
+      <p>现居地详情:{{ inputForm.currentResidenceDetail }}</p>
+      <p>异常行为:{{ inputForm.abnormalBehavior }}</p>
+    </div>
+    <van-button type="primary" class="btn-sub">审核</van-button>
+  </div>
+</template>
+      
+      <script>
+import { ref } from "vue";
+import { useRoute } from "vue-router";
+import ReligiousPeopleReportService from "@/api/differentbelievers/ReligiousPeopleReportService";
+export default {
+  setup() {
+    const onClickLeft = () => {
+      history.back();
+    };
+    // 加载
+    let isLoading = ref(true);
+    // 异常人员信息
+    let inputForm = ref({
+      id: "",
+      abnormalName: "",
+      abnormalIdcar: "",
+      sex: "",
+      abnormalPhone: "",
+      nativePlace: "",
+      currentResidence: "",
+      currentResidenceDetail: "",
+      abnormalBehavior: "",
+      state: "0",
+      assessment: "0",
+      currentResidenceId: "",
+      currentResidenceLevel1: "",
+      currentResidenceLevel2: "",
+      currentResidenceLevel3: "",
+      currentResidenceLevel4: "",
+      currentResidenceLevel5: "",
+      currentResidenceLevel6: "",
+    });
+    // 获取信息
+    let route = useRoute();
+    new ReligiousPeopleReportService()
+      .queryById(route.query.id)
+      .then((data) => {
+        inputForm.value = data;
+        isLoading.value = false;
+      });
+    return {
+      onClickLeft,
+      inputForm,
+      isLoading,
+    };
+  },
+};
+</script>
+      
+<style lang="less">
+.main {
+  background: #fff;
+  position: relative;
+  top: 40px;
+}
+.banner {
+  background-color: #36a7f3;
+  padding: 20px 50px 40px 50px;
+  color: #fff;
+  h2 {
+    &:nth-child(1) {
+      margin-top: 0px;
+      text-align: left;
+    }
+    &:nth-child(2) {
+      text-align: center;
+    }
+    &:nth-child(3) {
+      text-align: right;
+    }
+  }
+}
+.info {
+  position: relative;
+  width: 86vw;
+  // height: 120px;
+  margin: 10px auto;
+  padding: 10px;
+  background: #fff;
+  border-radius: 20px;
+  top: -50px;
+  font-size: 14px;
+}
+.btn-sub {
+  width: 90%;
+  border-radius: 20px;
+  margin-left: 5%;
+}
+.van-loading {
+  text-align: center;
+  margin-top: 80px;
+}
+</style>

+ 211 - 0
src/views/activityMan/differentbelievers/ReligiousPeopleReportList.vue

@@ -0,0 +1,211 @@
+<template>
+  <van-nav-bar
+    fixed
+    title="信教群众异常"
+    right-text="上报"
+    left-arrow
+    @click-left="onClickLeft"
+    @click-right="onClickRight"
+  />
+  <van-search v-model="value" shape="round" placeholder="请输入搜索关键词" />
+  <van-tabs
+    v-model:active="active"
+    title-inactive-color="#bdbdbd"
+    title-active-color="#36a7f3"
+    @click-tab="onClickTab"
+  >
+    <van-tab title="未审核" name="0">
+      <van-list
+        v-model:loading="loading"
+        :finished="finished"
+        finished-text="没有更多了"
+        @load="onLoad"
+      >
+        <van-swipe-cell
+          v-for="item in list"
+          :key="item"
+          :before-close="beforeClose"
+        >
+          <div class="list_item" @click="goInfo(item.id)">
+            <div class="item-left">
+              <p style="color: #c4c4c4">{{ item.partyTime }}</p>
+              <p style="color: red">待审核</p>
+            </div>
+            <van-cell is-link>
+              <template #title>
+                <p>异常人员:{{ item.abnormalName }}</p>
+                <p>身份证号:{{ item.abnormalIdcar }}</p>
+                <p>异常行为:{{ item.abnormalBehavior }}</p>
+              </template>
+            </van-cell>
+          </div>
+          <template #right>
+            <van-button square type="danger" text="删除" class="button" />
+            <van-button
+              square
+              type="primary"
+              text="修改"
+              class="button"
+              @click="updateItem(item)"
+            />
+          </template>
+        </van-swipe-cell>
+      </van-list>
+    </van-tab>
+    <van-tab title="已审核" name="1">
+      <van-list
+        v-model:loading="loading"
+        :finished="finished"
+        finished-text="没有更多了"
+        @load="onLoad"
+      >
+        <van-swipe-cell
+          v-for="item in list"
+          :key="item"
+          :before-close="beforeClose"
+        >
+          <div class="list_item" @click="goInfo(item.id)">
+            <div class="item-left">
+              <p style="color: #c4c4c4">{{ item.partyTime }}</p>
+              <p style="color: red">已审核</p>
+            </div>
+            <van-cell is-link>
+              <template #title>
+                <p>异常人员:{{ item.abnormalName }}</p>
+                <p>身份证号:{{ item.abnormalIdcar }}</p>
+                <p>异常行为:{{ item.abnormalBehavior }}</p>
+              </template>
+            </van-cell>
+          </div>
+        </van-swipe-cell>
+      </van-list>
+    </van-tab>
+  </van-tabs>
+</template>
+    
+    <script>
+import { ref } from "vue";
+import ReligiousPeopleReportService from "@/api/differentbelievers/ReligiousPeopleReportService";
+import { useRouter } from "vue-router";
+export default {
+  name: "ReligiousPeopleReportList",
+  setup() {
+    const onClickLeft = () => {
+      history.back();
+    };
+    // 上报
+    const onClickRight = () => {
+      router.push("/differentbelievers");
+    };
+    const value = ref("");
+    // 切换
+    let active = ref(0);
+    const onClickTab = (val) => {
+      // 清空列表数据
+      finished.value = false;
+      list.value = [];
+      // 重新加载数据
+      // 将 loading 设置为 true,表示处于加载状态
+      loading.value = true;
+      if (val.name == 0) {
+        onLoad(0);
+      } else {
+        onLoad(1);
+      }
+    };
+    // 列表
+    let list = ref([]);
+    const loading = ref(false);
+    const finished = ref(false);
+    let index = 0;
+    const onLoad = (val) => {
+      // 异步更新数据
+      new ReligiousPeopleReportService()
+        .list({
+          current: index + 1,
+          size: 10,
+          assessment: val ? val : 0,
+        })
+        .then((res) => {
+          list.value.push(...res.records);
+          // 加载状态结束
+          loading.value = false;
+          // 数据全部加载完成
+          if (res.records.length < 10) {
+            finished.value = true;
+          }
+          index++;
+        });
+    };
+    // 删除确认
+    const beforeClose = ({ position }) => {
+      switch (position) {
+        case "left":
+        case "cell":
+        case "outside":
+          return true;
+        case "right":
+          return new Promise((resolve) => {
+            showConfirmDialog({
+              title: "确定删除吗?",
+            }).then(resolve);
+          });
+      }
+    };
+    let router = useRouter();
+    // 修改跳转
+    const updateItem = (val) => {
+      router.push({
+        path: "/differentbelievers",
+        query: { id: val.id },
+      });
+    };
+    // 详情跳转
+    const goInfo = (val) => {
+      router.push({
+        path: "/differentbelieversInfo",
+        query: { id: val },
+      });
+    };
+    return {
+      active,
+      onClickTab,
+      onClickLeft,
+      list,
+      onLoad,
+      loading,
+      finished,
+      value,
+      onClickRight,
+      beforeClose,
+      updateItem,
+      goInfo,
+    };
+  },
+};
+</script >
+    
+<style scope>
+.main {
+  background: #fff;
+  position: relative;
+  top: 40px;
+}
+.van-list {
+  height: 80%;
+  margin-top: 5px;
+}
+.list_item {
+  display: flex;
+  background: #fff;
+}
+.item-left {
+  text-align: center;
+  width: 30%;
+  font-size: 12px;
+  border-right: 1px solid #eee;
+}
+.button {
+  height: 100%;
+}
+</style>

+ 64 - 55
src/views/activityMan/abnormalcrowd/abnormalCrowdView.vue → src/views/activityMan/differentbelievers/ReligiousPeopleReportView.vue

@@ -1,27 +1,28 @@
 <template>
   <van-nav-bar
+    fixed
     title="信息上报中心"
     left-text=""
     left-arrow
     @click-left="onClickLeft"
   />
-  <div class="main">
+  <van-loading size="16px" v-if="isLoading">加载中...</van-loading>
+  <div class="main" v-if="!isLoading">
     <p class="title">信教异常群众上报</p>
     <div class="formArea">
       <p class="miniTitle">基础信息</p>
       <van-cell-group>
         <van-field
-          v-model="inputForm.count"
+          v-model="inputForm.abnormalName"
           center
           label="异常人员:"
           placeholder="请填写异常人员姓名"
           input-align="right"
-          type="digit"
         />
       </van-cell-group>
       <van-cell-group>
         <van-field
-          v-model="inputForm.count"
+          v-model="inputForm.abnormalIdcar"
           center
           label="身份证号:"
           placeholder="请填写身份证号"
@@ -31,7 +32,7 @@
       </van-cell-group>
       <van-cell-group>
         <van-field
-          v-model="inputForm.count"
+          v-model="inputForm.abnormalPhone"
           center
           label="手机号:"
           placeholder="请填写手机号"
@@ -42,7 +43,7 @@
       <van-cell-group>
         <van-cell title="性别:">
           <template #right-icon>
-            <van-radio-group v-model="checked" direction="horizontal">
+            <van-radio-group v-model="inputForm.sex" direction="horizontal">
               <van-radio name="1">男</van-radio>
               <van-radio name="2">女</van-radio>
             </van-radio-group>
@@ -51,7 +52,7 @@
       </van-cell-group>
       <van-cell-group>
         <van-field
-          v-model="inputForm.place"
+          v-model="inputForm.nativePlace"
           center
           readonly
           label="籍贯:"
@@ -72,7 +73,7 @@
       </van-cell-group>
       <van-cell-group>
         <van-field
-          v-model="inputForm.place"
+          v-model="inputForm.currentResidence"
           center
           readonly
           label="现居地:"
@@ -93,10 +94,10 @@
       </van-cell-group>
       <van-cell-group>
         <van-field
-          v-model="inputForm.address"
+          v-model="inputForm.currentResidenceDetail"
           center
-          label="详细地址:"
-          placeholder="请填写具体地址"
+          label="现居地详情:"
+          placeholder="请填写现居地详情"
           input-align="right"
           right-icon="location"
         />
@@ -104,7 +105,7 @@
       <van-cell-group>
         <div class="rowTextArea">
           <van-field
-            v-model="inputForm.into"
+            v-model="inputForm.abnormalBehavior"
             placeholder="请填写异常行为"
             center
             rows="2"
@@ -123,45 +124,53 @@
 </template>
     
     <script>
-import { reactive, ref } from "vue";
+import { ref, onMounted } from "vue";
 import { useCascaderAreaData } from "@vant/area-data";
-import personList from "../personList.vue";
+import ReligiousPeopleReportService from "@/api/differentbelievers/ReligiousPeopleReportService";
+import { useRoute } from "vue-router";
 export default {
-  components: { personList },
   setup() {
     // 返回
     const onClickLeft = () => {
       history.back();
     };
-    // 活动信息
-    const inputForm = reactive({
-      place: "",
-      count: "",
-      time: "",
-      person: "",
-      place: "",
-      address: "",
-      into: "",
+    // 加载
+    let isLoading = ref(true);
+    // 异常人员信息
+    const inputForm = ref({
+      id: "",
+      abnormalName: "",
+      abnormalIdcar: "",
+      sex: "",
+      abnormalPhone: "",
+      nativePlace: "",
+      currentResidence: "",
+      currentResidenceDetail: "",
+      abnormalBehavior: "",
+      state: "0",
+      assessment: "0",
+      currentResidenceId: "",
+      currentResidenceLevel1: "",
+      currentResidenceLevel2: "",
+      currentResidenceLevel3: "",
+      currentResidenceLevel4: "",
+      currentResidenceLevel5: "",
+      currentResidenceLevel6: "",
+    });
+    // 根据路由初始化
+    let route = useRoute();
+    onMounted(() => {
+      if (route.query.id) {
+        new ReligiousPeopleReportService()
+          .queryById(route.query.id)
+          .then((data) => {
+            inputForm.value = data;
+            isLoading.value = false;
+          });
+      } else {
+        isLoading.value = false;
+      }
     });
-    // 获取活动时间
-    let showAct = ref(false);
-    let currentDate = ref(["" + new Date().getFullYear(), "01", "01"]);
-    let currentTime = ref(["00", "00"]);
-    const getTime = () => {
-      showAct.value = false;
-      inputForm.time = `${currentDate.value.join("-")} ${currentTime.value.join(
-        ":"
-      )}`;
-    };
-    // 相关人
-    let showPerson = ref(false);
-    let list = "";
-    const selected = (val) => {
-      list = val;
-    };
-    const reselected = () => {
-      inputForm.person = list;
-    };
     // 地区选择
     let showArea = ref(false);
     const cascaderValue = ref("");
@@ -170,29 +179,22 @@ export default {
     // 全部选项选择完毕后,会触发 finish 事件
     const onFinish = ({ selectedOptions }) => {
       showArea.value = false;
-      inputForm.place = selectedOptions.map((option) => option.text).join("/");
+      inputForm.value.currentResidence = selectedOptions
+        .map((option) => option.text)
+        .join("/");
     };
     // 性别
     let checked = ref("1");
     return {
       inputForm,
-      // 活动时间
-      showAct,
-      currentDate,
-      currentTime,
-      getTime,
       // 返回
       onClickLeft,
-      // 人员选择
-      showPerson,
-      selected,
-      reselected,
       // 地区选择
       showArea,
       options,
       onFinish,
       cascaderValue,
-      checked,
+      isLoading,
     };
   },
 };
@@ -205,8 +207,11 @@ export default {
 }
 .main {
   background: #fff;
+  position: relative;
+  top: 40px;
 }
-.main p {
+.title,
+.miniTitle {
   height: 40px;
   line-height: 40px;
   color: #36a7f3;
@@ -256,4 +261,8 @@ export default {
 .van-radio {
   margin-right: 10px;
 }
+.van-loading {
+  text-align: center;
+  margin-top: 80px;
+}
 </style>

+ 3 - 3
src/views/activityMan/personList.vue

@@ -60,7 +60,7 @@
 
 <script>
 import { ref } from "vue";
-import tools from "@/api/sys/tools";
+import UserManage from "@/api/user/UserManage";
 export default {
   name: "personList",
   emits: ["selected"],
@@ -72,8 +72,8 @@ export default {
     let index = 0;
     const onLoad = () => {
       // 异步更新数据
-      new tools()
-        .personList({
+      new UserManage()
+        .list({
           current: index + 1,
           size: 10,
         })

+ 27 - 7
src/views/activityMan/placeactivity/placeActivityInfo.vue

@@ -1,5 +1,6 @@
 <template>
   <van-nav-bar
+    fixed
     title="场所活动"
     left-text=""
     left-arrow
@@ -7,7 +8,11 @@
   />
   <van-loading size="16px" v-if="isLoading">加载中...</van-loading>
   <div class="main" v-if="!isLoading">
-    <div class="banner"></div>
+    <div class="banner">
+      <h2>扎实提升“三力”</h2>
+      <h2>深入推进“三化”</h2>
+      <h2>坚持“三个思维”</h2>
+    </div>
     <div class="info">
       <p>活动名称:{{ placeActivity.activityName }}</p>
       <p>场所名称:{{ placeActivity.siteName.name }}</p>
@@ -18,7 +23,7 @@
       <p>详细地址:{{ placeActivity.placeDel }}</p>
       <p>活动时间:{{ placeActivity.activityTime }}</p>
       <p>安全预案:<span style="color: #6892ff">活动申请书</span></p>
-      <p>主题内容:{{ placeActivity.sourceFunds }}</p>
+      <p>主题内容:{{ placeActivity.subjectContent }}</p>
     </div>
     <van-button type="primary" class="btn-sub">审核</van-button>
   </div>
@@ -90,12 +95,27 @@ export default {
 </script>
   
 <style lang="less">
-.main p{
-  line-height: 1.5;
+.main {
+  background: #fff;
+  position: relative;
+  top: 40px;
 }
 .banner {
-  height: 30vh;
-  background: #36a7f3;
+  background-color: #36a7f3;
+  padding: 20px 50px 40px 50px;
+  color: #fff;
+  h2 {
+    &:nth-child(1) {
+      margin-top: 0px;
+      text-align: left;
+    }
+    &:nth-child(2) {
+      text-align: center;
+    }
+    &:nth-child(3) {
+      text-align: right;
+    }
+  }
 }
 .info {
   position: relative;
@@ -115,6 +135,6 @@ export default {
 }
 .van-loading {
   text-align: center;
-  margin-top: 20px;
+  margin-top: 80px;
 }
 </style>

+ 85 - 80
src/views/activityMan/placeactivity/placeActivityList.vue

@@ -1,5 +1,6 @@
 <template>
   <van-nav-bar
+    fixed
     title="场所活动"
     left-text=""
     right-text="上报"
@@ -7,86 +8,88 @@
     @click-left="onClickLeft"
     @click-right="onClickRight"
   />
-  <van-search v-model="value" shape="round" placeholder="请输入搜索关键词" />
-  <van-tabs
-    v-model:active="active"
-    title-inactive-color="#bdbdbd"
-    title-active-color="#36a7f3"
-    @click-tab="onClickTab"
-  >
-    <van-tab title="未审核" name="0">
-      <van-list
-        v-model:loading="loading"
-        :finished="finished"
-        finished-text="没有更多了"
-        @load="onLoad"
-      >
-        <van-swipe-cell
-          v-for="item in list"
-          :key="item"
-          :before-close="beforeClose"
+  <div class="main">
+    <van-search v-model="value" shape="round" placeholder="请输入搜索关键词" />
+    <van-tabs
+      v-model:active="active"
+      title-inactive-color="#bdbdbd"
+      title-active-color="#36a7f3"
+      @click-tab="onClickTab"
+    >
+      <van-tab title="未审核" name="0">
+        <van-list
+          v-model:loading="loading"
+          :finished="finished"
+          finished-text="没有更多了"
+          @load="onLoad"
         >
-          <div class="list_item" @click="goInfo(item.id)">
-            <div class="item-left">
-              <p style="color: #c4c4c4">{{ item.activityTime }}</p>
-              <p style="color: red">待审核</p>
+          <van-swipe-cell
+            v-for="item in list"
+            :key="item"
+            :before-close="beforeClose"
+          >
+            <div class="list_item" @click="goInfo(item.id)">
+              <div class="item-left">
+                <p style="color: #c4c4c4">{{ item.activityTime }}</p>
+                <p style="color: red">待审核</p>
+              </div>
+              <van-cell is-link>
+                <template #title>
+                  {{ item.reporter.name }}申请于{{ item.placeDel }}举办{{
+                    item.activityName
+                  }}活动
+                </template>
+                <template #label>
+                  {{ item.place }}
+                </template>
+              </van-cell>
             </div>
-            <van-cell is-link>
-              <template #title>
-                {{ item.reporter.name }}申请于{{ item.placeDel }}举办{{
-                  item.activityName
-                }}活动
-              </template>
-              <template #label>
-                {{ item.place }}
-              </template>
-            </van-cell>
-          </div>
-          <template #right>
-            <van-button square type="danger" text="删除" class="button" />
-            <van-button
-              square
-              type="primary"
-              text="修改"
-              class="button"
-              @click="updateItem(item)"
-            />
-          </template>
-        </van-swipe-cell>
-      </van-list>
-    </van-tab>
-    <van-tab title="已审核" name="1">
-      <van-list
-        v-model:loading="loading"
-        :finished="finished"
-        finished-text="没有更多了"
-        @load="onLoad"
-      >
-        <van-swipe-cell
-          v-for="item in list"
-          :key="item"
-          :before-close="beforeClose"
+            <template #right>
+              <van-button square type="danger" text="删除" class="button" />
+              <van-button
+                square
+                type="primary"
+                text="修改"
+                class="button"
+                @click="updateItem(item)"
+              />
+            </template>
+          </van-swipe-cell>
+        </van-list>
+      </van-tab>
+      <van-tab title="已审核" name="1">
+        <van-list
+          v-model:loading="loading"
+          :finished="finished"
+          finished-text="没有更多了"
+          @load="onLoad"
         >
-          <div class="list_item" @click="goInfo(item.id)">
-            <div class="item-left">
-              <p style="color: #c4c4c4">{{ item.activityTime }}</p>
-              <p style="color: red">已审核</p>
+          <van-swipe-cell
+            v-for="item in list"
+            :key="item"
+            :before-close="beforeClose"
+          >
+            <div class="list_item" @click="goInfo(item.id)">
+              <div class="item-left">
+                <p style="color: #c4c4c4">{{ item.activityTime }}</p>
+                <p style="color: red">已审核</p>
+              </div>
+              <van-cell is-link>
+                <template #title>
+                  {{ item.reporter.name }}申请于{{ item.placeDel }}举办{{
+                    item.activityName
+                  }}活动
+                </template>
+                <template #label>
+                  {{ item.place }}
+                </template>
+              </van-cell>
             </div>
-            <van-cell is-link>
-              <template #title>
-                {{ item.reporter.name }}申请于{{ item.placeDel }}举办{{
-                  item.activityName
-                }}活动
-              </template>
-              <template #label>
-                {{ item.place }}
-              </template>
-            </van-cell>
-          </div>
-        </van-swipe-cell>
-      </van-list>
-    </van-tab>
-  </van-tabs>
+          </van-swipe-cell>
+        </van-list>
+      </van-tab>
+    </van-tabs>
+  </div>
 </template>
 
 <script>
@@ -193,9 +196,11 @@ export default {
 };
 </script>
 
-<style>
-body {
-  background: #f5f5f5;
+<style scoped>
+.main {
+  background: #fff;
+  position: relative;
+  top: 40px;
 }
 .van-list {
   height: 80%;
@@ -214,4 +219,4 @@ body {
 .button {
   height: 100%;
 }
-</style>
+</style>

+ 50 - 30
src/views/activityMan/placeactivity/placeActivityView.vue

@@ -1,12 +1,13 @@
 <template>
   <van-nav-bar
+    fixed
     title="信息上报中心"
     left-text=""
     left-arrow
     @click-left="onClickLeft"
   />
-  <van-loading size="16px" v-if="isLoading">加载中...</van-loading>
-  <div class="main" v-if="!isLoading">
+  <van-loading size="16px" v-show="isLoading">加载中...</van-loading>
+  <div class="main" v-show="!isLoading">
     <p class="title">场所活动上报</p>
     <div class="formArea">
       <p class="miniTitle">基础信息</p>
@@ -189,23 +190,27 @@
       <van-cell-group>
         <van-field name="uploader" label="安全预案:">
           <template #input>
-            <van-uploader>
+            <van-uploader
+              :after-read="afterRead"
+              v-model="fileList"
+              multiple
+              :max-count="1"
+              accept=""
+            >
               <van-button icon="plus">上传文件</van-button>
             </van-uploader>
           </template>
         </van-field>
       </van-cell-group>
       <van-cell-group>
-        <div class="rowTextArea">
-          <van-field
-            v-model="placeActivity.subjectContent"
-            center
-            rows="2"
-            type="textarea"
-            label="主题内容:"
-            label-align="top"
-          />
-        </div>
+        <van-field name="content" label="主题内容:" label-align="top">
+          <template #input>
+            <wang-editor
+              ref="subjectContentEditor"
+              v-model="placeActivity.subjectContent"
+            />
+          </template>
+        </van-field>
       </van-cell-group>
     </div>
     <div class="subbtn">
@@ -222,8 +227,10 @@ import placeActivityServer from "@/api/placeActivity/placeActivityServer";
 import tools from "@/api/sys/tools";
 import UserManage from "@/api/user/UserManage";
 import { useRoute } from "vue-router";
+// 富文本编辑器
+import WangEditor from "@/components/editor/WangEditor";
 export default {
-  components: { personList },
+  components: { personList, WangEditor },
   setup() {
     // 加载
     let isLoading = ref(true);
@@ -263,6 +270,7 @@ export default {
       state: "0",
       assessment: "0",
     });
+    const subjectContentEditor = ref(null);
     // 根据路由初始化
     let route = useRoute();
     onMounted(() => {
@@ -276,9 +284,11 @@ export default {
               placeActivity.value.knownList.name += data.name + ",";
             });
           });
+          subjectContentEditor.value.init(placeActivity.value.subjectContent);
           isLoading.value = false;
         });
       } else {
+        subjectContentEditor.value.init("");
         isLoading.value = false;
       }
     });
@@ -359,6 +369,18 @@ export default {
         .map((option) => option.name)
         .join("/");
     };
+    // 文件上传
+    let fileList = ref([]);
+    const afterRead = (file) => {
+      // 此时可以自行将文件上传至服务器
+      console.log(file);
+      new tools()
+        .uploadFile(file, `reporting/reportingActivities`)
+        .then(({ data }) => {
+          fileList.value.push(data);
+          placeActivity.value.safetyPlan = data.url;
+        });
+    };
     // 提交数据
     const submit = () => {
       new placeActivityServer().save(placeActivity.value).then((res) => {
@@ -392,21 +414,24 @@ export default {
       options,
       onFinish,
       cascaderValue,
+      // 文件上传
+      afterRead,
+      fileList,
       submit,
+      subjectContentEditor,
     };
   },
 };
 </script>
 
 <style scoped>
-* {
-  margin: 0;
-  padding: 0;
-}
 .main {
   background: #fff;
+  position: relative;
+  top: 40px;
 }
-.main p {
+.miniTitle,
+.title {
   height: 40px;
   line-height: 40px;
   color: #36a7f3;
@@ -426,20 +451,12 @@ export default {
 .formArea .van-cell-group .van-field__label {
   height: 40px;
 }
-.formArea .van-cell-group .van-cell {
+/* .formArea .van-cell-group .van-cell {
   line-height: 40px;
-}
+} */
 .van-cell__value .van-field__right-icon .van-icon-location {
   color: #36a7f3 !important;
 }
-.rowTextArea::v-deep .van-field__value {
-  width: 98%;
-  border: 2px solid #ccc;
-  border-radius: 10px;
-}
-.rowTextArea::v-deep .van-cell {
-  display: flow-root;
-}
 .subbtn {
   margin: 20px;
   text-align: center;
@@ -459,6 +476,9 @@ export default {
 }
 .van-loading {
   text-align: center;
-  margin-top: 20px;
+  margin-top: 80px;
+}
+#editor {
+  width: 98%;
 }
 </style>

+ 81 - 33
src/views/activityMan/selfMeetingReport/selfMeetingInfo.vue

@@ -6,57 +6,101 @@
     left-arrow
     @click-left="onClickLeft"
   />
-  <div class="banner"></div>
-  <div class="info">
-    <p>活动名称:{{ placeActivity.activity }}</p>
-    <p>场所名称:{{ placeActivity.place }}</p>
-    <p>发起人:{{ placeActivity.portname }}</p>
-    <p>参会人数:{{ placeActivity.countPerson }}</p>
-    <p>活动地点:{{ placeActivity.activityPlace }}</p>
-    <p>详细地址:{{ placeActivity.address }}</p>
-    <p>活动时间:{{ placeActivity.activityTime }}</p>
-    <p>安全预案:<span style="color: #6892ff">活动申请书</span></p>
-    <p>主题内容:{{ placeActivity.into }}</p>
+  <van-loading size="16px" v-if="isLoading">加载中...</van-loading>
+  <div class="main" v-if="!isLoading">
+    <div class="banner">
+      <h2>扎实提升“三力”</h2>
+      <h2>深入推进“三化”</h2>
+      <h2>坚持“三个思维”</h2>
+    </div>
+    <div class="info">
+      <p>地点:{{ inputForm.placeSelectName }}</p>
+      <p>详细地点:{{ inputForm.placeDel }}</p>
+      <p>频次:{{ inputForm.frequency }}</p>
+      <p>时间:{{ inputForm.partyTime }}</p>
+      <p>相关人:{{ inputForm.relatedPersons.name }}</p>
+      <p>内容:{{ inputForm.content }}</p>
+    </div>
+    <van-button type="primary" class="btn-sub">审核</van-button>
   </div>
-  <van-button type="primary" class="btn-sub">审核</van-button>
 </template>
     
     <script>
-import { reactive } from "vue";
+import { ref } from "vue";
+import { useRoute } from "vue-router";
+import PrivatePartyPointService from "@/api/privateparty/PrivatePartyPointService";
+import UserManage from "@/api/user/UserManage";
 export default {
   setup() {
     const onClickLeft = () => {
       history.back();
     };
-    // 活动信息
-    const placeActivity = reactive({
-      activity: "测试",
-      place: "基督教",
-      activityTime: "2023-03-28 13:00",
-      countPerson: "100",
-      list: "11,22,33",
-      portname: "张三",
-      area: "",
-      activityPlace: "盐都区/张庄街道",
-      address: "1111",
-      money: "",
-      activityName: "李四",
-      tel: "",
-      file: "",
-      into: "1111",
+    // 加载
+    let isLoading = ref(true);
+    // 异常人员信息
+    let inputForm = ref({
+      id: "",
+      place: "320900",
+      placeSelectName: "盐城市",
+      placeSelectType3: "320900",
+      placeSelectType4: "",
+      placeSelectType5: "",
+      placeSelectType6: "",
+      placeDel: "",
+      frequency: "",
+      partyTime: "",
+      relatedPersons: {
+        id: "",
+        name: "",
+      },
+      content: "",
+      state: "0",
+      assessment: "0",
+    });
+    // 获取信息
+    let route = useRoute();
+    new PrivatePartyPointService().queryById(route.query.id).then((data) => {
+      inputForm.value = data;
+      let ids = data.relatedPersons.id.split(",");
+      inputForm.value.relatedPersons.name = "";
+      ids.forEach((item) => {
+        new UserManage().queryById(item).then((data) => {
+          inputForm.value.relatedPersons.name += data.name + ",";
+        });
+      });
+      isLoading.value = false;
     });
     return {
       onClickLeft,
-      placeActivity,
+      inputForm,
+      isLoading,
     };
   },
 };
 </script>
     
-  <style lang="less">
+<style lang="less">
+.main {
+  background: #fff;
+  position: relative;
+  top: 40px;
+}
 .banner {
-  height: 30vh;
-  background: #36a7f3;
+  background-color: #36a7f3;
+  padding: 20px 50px 40px 50px;
+  color: #fff;
+  h2 {
+    &:nth-child(1) {
+      margin-top: 0px;
+      text-align: left;
+    }
+    &:nth-child(2) {
+      text-align: center;
+    }
+    &:nth-child(3) {
+      text-align: right;
+    }
+  }
 }
 .info {
   position: relative;
@@ -74,4 +118,8 @@ export default {
   border-radius: 20px;
   margin-left: 5%;
 }
+.van-loading {
+  text-align: center;
+  margin-top: 80px;
+}
 </style>

+ 81 - 76
src/views/activityMan/selfMeetingReport/selfMeetingList.vue

@@ -1,5 +1,6 @@
 <template>
   <van-nav-bar
+    fixed
     title="私设聚会点"
     left-text=""
     right-text="上报"
@@ -7,82 +8,84 @@
     @click-left="onClickLeft"
     @click-right="onClickRight"
   />
-  <van-search v-model="value" shape="round" placeholder="请输入搜索关键词" />
-  <van-tabs
-    v-model:active="active"
-    title-inactive-color="#bdbdbd"
-    title-active-color="#36a7f3"
-    @click-tab="onClickTab"
-  >
-    <van-tab title="未审核" name="0">
-      <van-list
-        v-model:loading="loading"
-        :finished="finished"
-        finished-text="没有更多了"
-        @load="onLoad"
-      >
-        <van-swipe-cell
-          v-for="item in list"
-          :key="item"
-          :before-close="beforeClose"
+  <div class="main">
+    <van-search v-model="value" shape="round" placeholder="请输入搜索关键词" />
+    <van-tabs
+      v-model:active="active"
+      title-inactive-color="#bdbdbd"
+      title-active-color="#36a7f3"
+      @click-tab="onClickTab"
+    >
+      <van-tab title="未审核" name="0">
+        <van-list
+          v-model:loading="loading"
+          :finished="finished"
+          finished-text="没有更多了"
+          @load="onLoad"
         >
-          <div class="list_item" @click="goInfo(item.id)">
-            <div class="item-left">
-              <p style="color: #c4c4c4">{{ item.partyTime }}</p>
-              <p style="color: red">待审核</p>
+          <van-swipe-cell
+            v-for="item in list"
+            :key="item"
+            :before-close="beforeClose"
+          >
+            <div class="list_item" @click="goInfo(item.id)">
+              <div class="item-left">
+                <p style="color: #c4c4c4">{{ item.partyTime }}</p>
+                <p style="color: red">待审核</p>
+              </div>
+              <van-cell is-link>
+                <template #title>
+                  <p>地点:{{ item.placeSelectName }}</p>
+                  <p>相关人员:{{ item.relatedPersons.name }}</p>
+                  <p>频次:{{ item.frequency }}</p>
+                </template>
+              </van-cell>
             </div>
-            <van-cell is-link>
-              <template #title>
-                <p>地点:{{ item.placeSelectName }}</p>
-                <p>相关人员:{{ item.relatedPersons.name }}</p>
-                <p>频次:{{ item.frequency }}</p>
-              </template>
-            </van-cell>
-          </div>
-          <template #right>
-            <van-button square type="danger" text="删除" class="button" />
-            <van-button
-              square
-              type="primary"
-              text="修改"
-              class="button"
-              @click="updateItem(item)"
-            />
-          </template>
-        </van-swipe-cell>
-      </van-list>
-    </van-tab>
-    <van-tab title="已审核" name="1">
-      <van-list
-        v-model:loading="loading"
-        :finished="finished"
-        finished-text="没有更多了"
-        @load="onLoad"
-      >
-        <van-swipe-cell
-          v-for="item in list"
-          :key="item"
-          :before-close="beforeClose"
+            <template #right>
+              <van-button square type="danger" text="删除" class="button" />
+              <van-button
+                square
+                type="primary"
+                text="修改"
+                class="button"
+                @click="updateItem(item)"
+              />
+            </template>
+          </van-swipe-cell>
+        </van-list>
+      </van-tab>
+      <van-tab title="已审核" name="1">
+        <van-list
+          v-model:loading="loading"
+          :finished="finished"
+          finished-text="没有更多了"
+          @load="onLoad"
         >
-          <div class="list_item" @click="goInfo(item.id)">
-            <div class="item-left">
-              <p style="color: #c4c4c4">{{ item.partyTime }}</p>
-              <p style="color: red">已审核</p>
+          <van-swipe-cell
+            v-for="item in list"
+            :key="item"
+            :before-close="beforeClose"
+          >
+            <div class="list_item" @click="goInfo(item.id)">
+              <div class="item-left">
+                <p style="color: #c4c4c4">{{ item.partyTime }}</p>
+                <p style="color: red">已审核</p>
+              </div>
+              <van-cell is-link>
+                <template #title>
+                  <p>地点:{{ item.placeSelectName }}</p>
+                  <p>相关人员:{{ item.relatedPersons.name }}</p>
+                  <p>频次:{{ item.frequency }}</p>
+                </template>
+              </van-cell>
             </div>
-            <van-cell is-link>
-              <template #title>
-                <p>地点:{{ item.placeSelectName }}</p>
-                <p>相关人员:{{ item.relatedPersons.name }}</p>
-                <p>频次:{{ item.frequency }}</p>
-              </template>
-            </van-cell>
-          </div>
-        </van-swipe-cell>
-      </van-list>
-    </van-tab>
-  </van-tabs>
+          </van-swipe-cell>
+        </van-list>
+      </van-tab>
+    </van-tabs>
+  </div>
 </template>
-  
+
   <script>
 import { ref } from "vue";
 import PrivatePartyPointService from "@/api/privateparty/PrivatePartyPointService";
@@ -184,8 +187,13 @@ export default {
   },
 };
 </script >
-  
+
 <style scope>
+.main {
+  background: #fff;
+  position: relative;
+  top: 40px;
+}
 .van-list {
   height: 80%;
   margin-top: 5px;
@@ -194,9 +202,6 @@ export default {
   display: flex;
   background: #fff;
 }
-.list_item p{
-  line-height: 1;
-}
 .item-left {
   text-align: center;
   width: 30%;
@@ -206,4 +211,4 @@ export default {
 .button {
   height: 100%;
 }
-</style>
+</style>

+ 68 - 23
src/views/activityMan/selfMeetingReport/selfMeetingView.vue

@@ -1,12 +1,13 @@
 <template>
   <van-nav-bar
+    fixed
     title="信息上报中心"
     left-text=""
     left-arrow
     @click-left="onClickLeft"
   />
-  <van-loading size="16px" v-if="isLoading">加载中...</van-loading>
-  <div class="main" v-if="!isLoading">
+  <van-loading size="16px" v-show="isLoading">加载中...</van-loading>
+  <div class="main" v-show="!isLoading">
     <p class="title">私设聚会点上报</p>
     <div class="formArea">
       <p class="miniTitle">基础信息</p>
@@ -104,11 +105,10 @@
           <van-field
             v-model="inputForm.into"
             center
-            rows="2"
-            type="textarea"
             label="内容:"
             label-align="top"
           />
+          <div name="editor" id="editor" ref="editor"></div>
         </div>
       </van-cell-group>
     </div>
@@ -120,11 +120,14 @@
 </template>
   
   <script>
-import { ref ,onMounted} from "vue";
+import { ref, onMounted } from "vue";
 import personList from "../personList.vue";
 import tools from "@/api/sys/tools";
 import PrivatePartyPointService from "@/api/privateparty/PrivatePartyPointService";
+import UserManage from "@/api/user/UserManage";
 import { useRoute } from "vue-router";
+// 富文本编辑器
+import EWangEditor from "wangeditor";
 export default {
   components: { personList },
   setup() {
@@ -134,7 +137,7 @@ export default {
     const onClickLeft = () => {
       history.back();
     };
-    // 活动信息
+    // 私设聚会点信息
     let inputForm = ref({
       id: "",
       place: "320900",
@@ -154,29 +157,58 @@ export default {
       state: "0",
       assessment: "0",
     });
-    // 根据路由初始化
+
     let route = useRoute();
     onMounted(() => {
+      // 根据路由初始化
       if (route.query.id) {
-        new PrivatePartyPointService().queryById(route.query.id).then((data) => {
-          inputForm.value = data;
-          // let ids = data.knownList.id.split(",");
-          // inputForm.value.knownList.name = "";
-          // ids.forEach((item) => {
-          //   new UserManage().queryById(item).then((data) => {
-          //     inputForm.value.knownList.name += data.name + ",";
-          //   });
-          // });
-          isLoading.value = false;
-        });
+        new PrivatePartyPointService()
+          .queryById(route.query.id)
+          .then((data) => {
+            inputForm.value = data;
+            let ids = data.relatedPersons.id.split(",");
+            inputForm.value.relatedPersons.name = "";
+            ids.forEach((item) => {
+              new UserManage().queryById(item).then((data) => {
+                inputForm.value.relatedPersons.name += data.name + ",";
+              });
+            });
+            isLoading.value = false;
+          });
       } else {
         isLoading.value = false;
       }
+      // 富文本编辑器
+      let editor = new EWangEditor("#editor");
+      editor.config.uploadImgShowBase64 = true;
+      editor.config.onchangeTimeout = 400;
+
+      editor.config.customAlert = (err) => {
+        console.log(err);
+      };
+
+      editor.customConfig = editor.customConfig
+        ? editor.customConfig
+        : editor.config;
+
+      editor.customConfig.onchange = (html) => {
+        data.editorContent = html;
+        console.log(html);
+      };
+      //以下为新增
+      const menuItem = [
+        //工具栏里有哪些工具
+        "image",
+      ];
+      editor.config.menus = [...menuItem]; /* 应用设置好的工具栏 */
+      editor.config.height = 100; //你可能发现这个编辑器是没法用样式调高度的?
+      //新增至此
+      editor.create();
     });
     // 获取活动时间
     let showAct = ref(false);
     let currentDate = ref(["" + new Date().getFullYear(), "01", "01"]);
-    let currentTime = ref(["00", "00"]);
+    let currentTime = ref(["00", "00", "00"]);
     const columnsType = ["hour", "minute", "second"];
     const getTime = () => {
       showAct.value = false;
@@ -259,8 +291,11 @@ export default {
 }
 .main {
   background: #fff;
+  position: relative;
+  top: 40px;
 }
-.main p {
+.title,
+.miniTitle {
   height: 40px;
   line-height: 40px;
   color: #36a7f3;
@@ -286,14 +321,20 @@ export default {
 .van-cell__value .van-field__right-icon .van-icon-location {
   color: #36a7f3 !important;
 }
-.rowTextArea::v-deep .van-field__value {
+.rowTextArea {
   width: 98%;
-  border: 2px solid #ccc;
-  border-radius: 10px;
 }
 .rowTextArea::v-deep .van-cell {
   display: flow-root;
 }
+#editor {
+  position: relative;
+  top: -40px;
+  height: 100px;
+}
+.w-e-text-container {
+  height: 100px !important;
+}
 .subbtn {
   margin: 20px;
   text-align: center;
@@ -311,4 +352,8 @@ export default {
   width: 80%;
   top: 50%;
 }
+.van-loading {
+  text-align: center;
+  margin-top: 80px;
+}
 </style>

+ 1 - 1
src/views/activityMan/siteInspection/siteInspectionList.vue

@@ -92,7 +92,7 @@ export default {
         .then((res) => {
           list.value.push(...res.records) ;
           // 加载状态结束
-          loading.value = false;          
+          loading.value = false;
           // 数据全部加载完成
           if (res.records.length < 10) {
             finished.value = true;

+ 2 - 4
src/views/activityMan/siteInspection/siteInspectionView.vue

@@ -215,10 +215,8 @@ export default {
 
       new siteInspectionServer().save(siteInspection).then((res) => {
         if(res.data=="保存场所检查情况成功"){
-          window.xm.showToast({
-             message:"保存成功!"
-          })
-          history.back();
+          console.log("保存成功");
+          //添加保存后跳转
         }
 
       });

+ 153 - 0
src/views/placeManage/ManageList.vue

@@ -0,0 +1,153 @@
+<template>
+  <div class="personList">
+    <van-list
+      v-model:loading="loading"
+      :finished="finished"
+      finished-text="没有更多了"
+      @load="onLoad"
+    >
+      <van-checkbox-group
+        v-if="type == 1"
+        v-model="checked"
+        ref="checkboxGroup"
+      >
+        <van-button type="primary" size="mini" @click="checkAll"
+          >全选</van-button
+        >
+        <van-cell-group inset>
+          <van-cell
+            v-for="(item, index) in list"
+            clickable
+            :key="item"
+            :title="item.name"
+            @click="toggle(index)"
+          >
+            <template #right-icon>
+              <van-checkbox
+                shape="square"
+                :name="item"
+                :ref="(el) => (checkboxRefs[index] = el)"
+              />
+            </template>
+          </van-cell>
+        </van-cell-group>
+      </van-checkbox-group>
+      <van-radio-group v-if="type == 0" v-model="checked">
+        <van-cell-group inset>
+          <van-cell
+            v-for="item in list"
+            clickable
+            :key="item"
+            :title="item.name"
+            @click="selectes(item)"
+          >
+            <template #right-icon>
+              <van-radio :name="item" />
+            </template>
+          </van-cell>
+        </van-cell-group>
+      </van-radio-group>
+    </van-list>
+  </div>
+</template>
+
+<script>
+import { ref } from "vue";
+import placeRegister from "@/api/placeRegister/placeRegister" 
+export default {
+  name: "personList",
+  emits: ["selected"],
+  props: ["type"],
+  setup(props, { emit }) {
+    const list = ref([]);
+    const loading = ref(false);
+    const finished = ref(false);
+    let index = 0;
+    const onLoad = () => {
+      // 异步更新数据
+      new placeRegister()
+        .list({
+          current: index + 1,
+          size: 10,
+        })
+        .then(({ records }) => {
+          list.value.push(...records);
+          // 加载状态结束
+          loading.value = false;
+          index++;
+          // 数据全部加载完成
+          if (records.length < 10) {
+            finished.value = true;
+          }
+        });
+    };
+    // 搜索
+    const value = ref("");
+    const onSearch = (val) => showToast(val);
+    const onCancel = () => showToast("取消");
+    // 选择人员
+    const checked = ref([]);
+    const checkboxRefs = ref([]);
+    const checkboxGroup = ref(null);
+    const toggle = (index) => {
+      checkboxRefs.value[index].toggle();
+      emit("selected", checked.value, 1);
+    };
+    // 全选
+    const checkAll = () => {
+      checkboxGroup.value.toggleAll(true);
+      emit("selected", checked.value, 1);
+    };
+    const selectes = (val) => {
+      checked.value = val;
+      emit("selected", checked.value, 0);
+    };
+
+    return {
+      // 人员
+      list,
+      onLoad,
+      loading,
+      finished,
+      // 搜索
+      value,
+      onSearch,
+      onCancel,
+      // 全选
+      checkAll,
+      toggle,
+      checked,
+      checkboxRefs,
+      checkboxGroup,
+      // 单选
+      selectes,
+    };
+  },
+};
+</script>
+
+<style scoped>
+.personList {
+  height: 65vh;
+  overflow: auto;
+  margin: 10px;
+}
+.van-button {
+  top: -5px;
+}
+.search {
+  height: 40px;
+  line-height: 40px;
+}
+.van-list {
+  height: 80%;
+  margin-top: 5px;
+}
+.keyword {
+  width: 70%;
+  height: 25px;
+  border-radius: 25px;
+  border: 1px solid;
+  padding-left: 15px;
+}
+</style>

+ 0 - 1
src/views/placeManage/placePerson.vue

@@ -59,7 +59,6 @@
 import { reactive, ref } from "vue";
 import { useRouter } from "vue-router";
 import UserManage from "@/api/user/UserManage";
-import { List } from 'vant';
 export default {
   setup() {
     const value = ref("");

+ 1 - 1
src/views/placeManage/placePersoninfo.vue

@@ -301,7 +301,7 @@ html {
 .content {
   position: fixed;
   width: 85%;
-  top: 240px;
+  top: 180px;
   left: 50%;
   padding: 20px 10px;
   transform: translateX(-50%);

+ 288 - 69
src/views/placeManage/placeRegister.vue

@@ -6,132 +6,295 @@
       <p class="miniTitle">基础信息</p>
       <van-cell-group>
         <van-field
-          v-model="placeActivity.religion"
+          v-model="placeActivity.placeData.religiousType"
           readonly
           label="所属宗教:"
           placeholder="请选择宗教"
           input-align="right"
           right-icon="arrow-down"
-          @click="showPlace = true"
+          @click="showPicker = true"
         />
-        <van-popup v-model:show="showPlace" round position="bottom">
+        <van-popup v-model:show="showPicker" round position="bottom">
           <van-picker
-            title="宗教选择"
+            title="请选择宗教类型"
             :columns="places"
-            @cancel="showPlace = false"
+            @cancel="showPicker = false"
             @confirm="getPlace"
           />
         </van-popup>
       </van-cell-group>
       <van-cell-group>
         <van-field
-          v-model="placeActivity.district"
+          v-model="placeActivity.placeData.name"
+          center
+          label="场所名称:"
+          placeholder="请填写场所名称"
+          input-align="right"
+        />
+      </van-cell-group>
+      <van-cell-group>
+        <van-field
+          v-model="placeActivity.placeData.contact"
+          center
+          label="场所联系人:"
+          placeholder="请填写场所联系人"
+          input-align="right"
+        />
+      </van-cell-group>
+      <van-cell-group>
+        <van-field
+          v-model="placeActivity.placeData.contactNumber"
+          center
+          label="联系电话:"
+          placeholder="请填写联系电话"
+          input-align="right"
+        />
+      </van-cell-group>
+      <van-cell-group>
+        <van-field
+          v-model="placeActivity.placeData.placeSelectName"
           center
           readonly
-          label="所属县(区):"
-          placeholder="请填写所属县(区)"
+          label="场所地点:"
+          placeholder="请填写场所地点"
           input-align="right"
           right-icon="arrow-down"
-          @click="showArea = true"
+          @click="showPlace1 = true"
         />
-        <van-popup v-model:show="showArea" round position="bottom">
-          <van-cascader
-            v-model="cascaderValue"
-            title="请选择所在地区"
-            :options="options"
-            @close="showArea = false"
-            @finish="onFinish"
+        <van-popup v-model:show="showPlace1" round position="bottom">
+          <van-picker
+            title="活动场所"
+            :columns="options"
+            :columns-field-names="customFieldName"
+            @cancel="showPlace1 = false"
+            @confirm="getPlace1"
           />
         </van-popup>
       </van-cell-group>
       <van-cell-group>
         <van-field
-          v-model="placeActivity.address"
+          v-model="placeActivity.placeData.place"
           center
-          label="具体地址:"
-          placeholder="请填写具体地址"
+          label="详细场所地点:"
+          placeholder="请填写详细场所地点"
           input-align="right"
           right-icon="location"
         />
       </van-cell-group>
       <van-cell-group>
         <van-field
-          v-model="placeActivity.place"
-          center
-          label="场所名称:"
-          placeholder="请填写场所名称"
+          v-model="placeActivity.placeData.siteType"
+          readonly
+          label="场所类型:"
+          placeholder="请选择场所类型"
           input-align="right"
+          right-icon="arrow-down"
+          @click="showPicker1 = true"
         />
+        <van-popup v-model:show="showPicker1" round position="bottom">
+          <van-picker
+            title="请选择场所类型"
+            :columns="placeType"
+            @cancel="showPicker1 = false"
+            @confirm="getplaceType"
+          />
+        </van-popup>
+      </van-cell-group>
+      <van-cell-group>
+        <van-field
+          v-model="placeActivity.placeData.constructionStage"
+          readonly
+          label="场所建设阶段:"
+          placeholder="请选择场所建设阶段"
+          input-align="right"
+          right-icon="arrow-down"
+          @click="showPicker2 = true"
+        />
+        <van-popup v-model:show="showPicker2" round position="bottom">
+          <van-picker
+            title="请选择场所建设阶段"
+            :columns="construction"
+            @cancel="showPicker2 = false"
+            @confirm="getConstruction"
+          />
+        </van-popup>
       </van-cell-group>
       <van-cell-group>
         <van-field
-          v-model="placeActivity.name"
+          v-model="placeActivity.placeData.nature"
+          readonly
+          label="场所性质:"
+          placeholder="请选择场所性质"
+          input-align="right"
+          right-icon="arrow-down"
+          @click="showPicker3 = true"
+        />
+        <van-popup v-model:show="showPicker3" round position="bottom">
+          <van-picker
+            title="场所性质选择"
+            :columns="property"
+            @cancel="showPicker3 = false"
+            @confirm="getproperty"
+          />
+        </van-popup>
+      </van-cell-group>
+      <van-cell-group>
+        <van-field
+          v-model="placeActivity.placeData.religiousDeptManaUserName.name"
           center
-          label="联络人姓名:"
-          placeholder="请填写联络人姓名"
+          label="宗教部门管理人员:"
+          placeholder="请填写宗教部门管理人员"
           input-align="right"
+          right-icon="arrow-down"
+          @click="showPerson = true"
         />
+        <van-dialog
+          v-model:show="showPerson"
+          title="选择宗教部门管理人员"
+          show-cancel-button
+          @confirm="reselected"
+        >
+          <manage-list @selected="selected" :type="1"></manage-list>
+        </van-dialog>
       </van-cell-group>
       <van-cell-group>
         <van-field
-          v-model="placeActivity.tel"
+          v-model="placeActivity.placeData.securityDeptManaUserName.name"
           center
-          label="联系方式:"
-          placeholder="请填写联络人联系方式"
+          label="公安部门管理人员:"
+          placeholder="请填写公安部门管理人员"
+          input-align="right"
+          right-icon="arrow-down"
+          @click="showReport = true"
+        />  
+        <van-dialog
+          v-model:show="showReport"
+          title="选择公安部门管理人员"
+          show-cancel-button
+          @confirm="reselected"
+        >
+          <manage-list @selected="selected" :type="0"></manage-list>
+        </van-dialog>
+      </van-cell-group>
+      <van-cell-group>
+        <van-field
+          v-model="placeActivity.placeData.peopleThreshold"
+          center
+          label="场所活动人数阈值:"
+          placeholder="请填写场所活动人数阈值"
           input-align="right"
         />
       </van-cell-group>
       <van-cell-group>
         <van-field name="uploader" label="外景照片:">
           <template #input>
-            <van-uploader v-model="placeActivity.fileList1" :after-read="afterRead" />
+            <van-uploader
+              v-model="placeActivity.fileList1"
+              :after-read="afterRead"
+            />
           </template>
         </van-field>
       </van-cell-group>
       <van-cell-group>
         <van-field name="uploader" label="内景照片:">
           <template #input>
-            <van-uploader v-model="placeActivity.fileList2" :after-read="afterRead" />
+            <van-uploader
+              v-model="placeActivity.fileList2"
+              :after-read="afterRead"
+            />
           </template>
         </van-field>
       </van-cell-group>
     </div>
     <div class="subbtn">
-      <van-button type="primary">提交</van-button>
-      <van-button type="default" hairline>取消</van-button>
+      <van-button type="primary" @click="submit">提交</van-button>
+      <van-button @click="goback" type="default" hairline>取消</van-button>
     </div>
   </div>
 </template>
 
 <script>
 import { reactive, ref } from "vue";
+import ManageList from "../placeManage/ManageList.vue"
+import PlaceRegister from "@/api/placeRegister/placeRegister";
+import router from "@/router";
 export default {
+  components:{ManageList},
   setup() {
     const goback = () => {
       history.back();
     };
+
     //场所录入
     const placeActivity = reactive({
-      religion: "",//所属宗教
-      district: "",//所属县区
-      address: "",//具体地址
-      place: "",//场所
-      name: "",//联系人姓名
-      tel: "",//联系方式
-      fileList1:[],//外景图片
-      fileList2: [],//内景图片
+      placeData: {
+        religiousType: "", //所属宗教
+        name: "", //场所名称
+        contact: "", //场所联系人
+        contactNumber: "", //联系电话
+        placeSelectName: "", //场所地点
+        place: "", //详细场所地点
+        siteType: "", //场所类型
+        constructionStage: "", //场所建设阶段
+        nature: "", //场所性质
+        religiousDeptManaUserName: {
+          id:"",
+          name:""
+        }, //宗教部门管理人员
+        securityDeptManaUserName: {
+          id:"",
+          name:""
+        }, //公安部门管理人员
+        peopleThreshold: "", //场所活动人数
+        scenesImage: "", //内外景图片
+      },
+      fileList1: [], //外景图片
+      fileList2: [], //内景图片
     });
     // 宗教名称
     const places = [
+      { text: "伊斯兰教", value: "伊斯兰教" },
       { text: "基督教", value: "基督教" },
+      { text: "天主教", value: "天主教" },
       { text: "佛教", value: "佛教" },
-      { text: "伊斯兰教", value: "伊斯兰教" },
+      { text: "道教", value: "道教" },
     ];
-    let showPlace = ref(false);
+    let showPicker = ref(false);
     const getPlace = ({ selectedOptions }) => {
-      showPlace.value = false;
-      placeActivity.place = selectedOptions[0].text;
+      showPicker.value = false;
+      placeActivity.placeData.religiousType = selectedOptions[0].text;
+    };
+    // 场所类型
+    const placeType = [
+      { text: "线下", value: "线下" },
+      { text: "线上", value: "线上" },
+    ];
+    let showPicker1 = ref(false);
+    const getplaceType = ({ selectedOptions }) => {
+      showPicker1.value = false;
+      placeActivity.placeData.siteType = selectedOptions[0].text;
+    };
+    // 场所建设
+    const construction = [
+      { text: "筹备", value: "筹备" },
+      { text: "建设完成", value: "建设完成" },
+    ];
+    let showPicker2 = ref(false);
+    const getConstruction = ({ selectedOptions }) => {
+      showPicker2.value = false;
+      placeActivity.placeData.constructionStage = selectedOptions[0].text;
+    };
+    // 场所性质
+    const property = [
+      { text: "固定场所", value: "固定场所" },
+      { text: "寺观教堂", value: "寺观教堂" },
+    ];
+    let showPicker3 = ref(false);
+    const getproperty = ({ selectedOptions }) => {
+      showPicker3.value = false;
+      placeActivity.placeData.nature = selectedOptions[0].text;
     };
+
     //图片上传
     const afterRead = (file) => {
       // 此时可以自行将文件上传至服务器
@@ -139,43 +302,99 @@ export default {
     };
 
     // 地区选择
-    let showArea = ref(false);
-    const cascaderValue = ref("");
+    const customFieldName = {
+      text: "name",
+      value: "id",
+    };
     // 选项列表,children 代表子选项,支持多级嵌套
-    const options = [
-      {
-        text: "浙江省",
-        value: "330000",
-        children: [{ text: "杭州市", value: "330100" }],
-      },
-      {
-        text: "江苏省",
-        value: "320000",
-        children: [{ text: "南京市", value: "320100" }],
-      },
-    ];
-    // 全部选项选择完毕后,会触发 finish 事件
-    const onFinish = ({ selectedOptions }) => {
-      showArea.value = false;
-      placeActivity.activityPlace = selectedOptions
-        .map((option) => option.text)
-        .join("/");
+    const options = ref([]);
+    // 获取地区数据树
+    new PlaceRegister().treeDate().then((res) => {
+      options.value.push(...res);
+    });
+    let showPlace1 = ref(false);
+    const getPlace1 = ({ selectedOptions }) => {
+      showPlace1.value = false;
+      placeActivity.placeData.placeSelectName =
+        selectedOptions[0].name +
+        "/" +
+        selectedOptions[1].name +
+        "/" +
+        selectedOptions[2].name;
+    };
+    //人员选择
+    let showPerson = ref(false);
+    let showReport = ref(false);
+    let list = {
+      value: [],
+      type: "",
     };
+    const selected = (val, type) => {
+      
+      list.value = val;
+      list.type = type;
+      console.log(list);
+    };
+    const reselected = () => {
+      let ids = [];
+      let names = [];
+      if (list.type == 1) {
+        list.value.forEach((item) => {
+          ids.push(item.id);
+          names.push(item.name);
+        });
+      placeActivity.placeData.religiousDeptManaUserName.id =  ids.join(',')
+      placeActivity.placeData.religiousDeptManaUserName.name =  names.join(',')  
+      } else {
+      placeActivity.placeData.securityDeptManaUserName.id =  list.value.id
+      placeActivity.placeData.securityDeptManaUserName.name =  list.value.name
+      }
+    };
+    //数据提交
+    const submit = () => {
+      // console.log(placeActivity.placeData.scenesImage);
+      new PlaceRegister().sava(placeActivity.placeData).then((res) => {
+        console.log("提交成功", res);
+        router.push({
+          path: "/tabAll",
+        });
+      });
+    };
+
     return {
       placeActivity,
       // 活动场所
-      showPlace,
+      showPicker,
       places,
       getPlace,
+      //场所类型
+      showPicker1,
+      placeType,
+      getplaceType,
+      //场所建设阶段
+      showPicker2,
+      construction,
+      getConstruction,
+      //场所性质
+      showPicker3,
+      property,
+      getproperty,
       //图片上传
       afterRead,
       // 返回
       goback,
       // 地区选择
-      showArea,
+      customFieldName,
+      showPlace1,
+      getPlace1,
       options,
-      onFinish,
-      cascaderValue,
+      //人员选择
+      showPerson,
+      showReport,
+      selected,
+      reselected,
+      //数据提交
+      submit,
     };
   },
 };

+ 135 - 0
src/views/placeManage/placeTablet.vue

@@ -0,0 +1,135 @@
+<template>
+  <van-nav-bar title="牌位管理" left-arrow @click="goback" />
+  <div class="PersonList">
+    <div class="PersonItem" v-for="item in TabletData.data" :key="item.id" @click="goTabletInfo(item)">
+      <van-row>
+        <van-col span="18">
+          <p>
+            {{ item.brandName }}(<span style="color: #36a7f3">{{
+              item.udCard
+            }}</span
+            >)
+          </p>
+        </van-col>
+        <van-col span="6">
+          <p style="color: #36a7f3">{{ item.siteName.name }}</p>
+        </van-col>
+      </van-row>
+      <van-row>
+        <van-col span="18">
+          <p>{{ item.nativePlace }}</p>
+        </van-col>
+        <van-col span="6">
+          <p style="color: red">¥{{ item.sacrificeExpenses }}</p>
+        </van-col>
+      </van-row>
+    </div>
+  </div>
+</template>
+
+<script>
+import { reactive, ref } from "vue";
+import { useRouter } from "vue-router";
+import TabletServer from "@/api/tabletManage/TabletServer";
+export default {
+  setup() {
+    const TabletData = reactive({
+      data: [], //牌位数据集
+    });
+    //获取牌位数据
+    new TabletServer().list({}).then((res) => {
+      TabletData.data = res.records;
+    //   console.log(TabletData.data);
+    });
+    //页面跳转以及数据传递
+    let router = useRouter();
+    const goTabletInfo = (item)=>{
+        var data = JSON.stringify(item)
+        router.push({
+            path:'/placeTabletInfo',
+            query:{'data':data}
+        })
+    }
+    //返回
+    const goback = () => {
+      history.back();
+    };
+    return {
+      goback,
+      TabletData,
+      goTabletInfo
+    };
+  },
+};
+</script>
+
+<style lang="less">
+body,
+html {
+  margin: 0;
+  padding: 0;
+  background-color: #f2f2f2;
+}
+.van-nav-bar {
+  background-color: #36a7f3;
+  .van-nav-bar__title {
+    color: #fff;
+  }
+  .van-badge__wrapper {
+    color: #fff;
+  }
+}
+.search {
+  background-color: #fff;
+  .van-dropdown-menu__item {
+    width: 20px;
+    height: 50px;
+  }
+}
+.PersonList {
+  background-color: #fff;
+  margin-top: 20px;
+  height: 100vh;
+  p {
+    margin: 0;
+    padding: 0;
+  }
+  .PersonItem {
+    padding: 10px 10px;
+    font-size: 16px;
+    border-bottom: 1px solid #f2f2f2;
+    .van-row {
+      &:nth-child(1) {
+        margin-bottom: 10px;
+        .van-col {
+          &:nth-child(1) {
+            p {
+              font-weight: 700;
+            }
+          }
+          &:nth-child(2) {
+            p {
+              text-align: right;
+            }
+          }
+        }
+      }
+      &:nth-child(2) {
+        .van-col {
+          &:nth-child(1) {
+            p {
+              color: #d0d0d0;
+            }
+          }
+          &:nth-child(2) {
+            p {
+              text-align: right;
+              color: #d0d0d0;
+            }
+          }
+        }
+      }
+    }
+  }
+}
+</style>

+ 247 - 0
src/views/placeManage/placeTabletInfo.vue

@@ -0,0 +1,247 @@
+<template>
+  <van-nav-bar title="牌位管理" left-arrow @click="goback" />
+  <div class="banner">
+    <h2>扎实提升“三力”</h2>
+    <h2>深入推进“三化”</h2>
+    <h2>坚持“三个思维”</h2>
+  </div>
+  <div class="content">
+    <div class="itemInfo">
+    <h3 style="color: #40abf4">牌位信息-{{data.data.brandName}}</h3>
+      <van-row justify="space-between">
+        <van-col span="14">
+          <van-row class="item">
+            <van-col span="24">
+              <van-row justify="space-between">
+                <van-col span="8"> 名称: </van-col>
+                <van-col span="8" style="text-align: right">{{data.data.brandName}}</van-col>
+              </van-row>
+            </van-col>
+          </van-row>
+          <van-row class="item">
+            <van-col span="24">
+              <van-row justify="space-between">
+                <van-col span="8"> 所属场所名称: </van-col>
+                <van-col span="8" style="text-align: right">{{data.siteName.name}}</van-col>
+              </van-row>
+            </van-col>
+          </van-row>
+          <van-row class="item">
+            <van-col span="24">
+              <van-row justify="space-between">
+                <van-col span="12"> 场所联系人: </van-col>
+                <van-col span="6" style="text-align: right">{{data.data.memorialTabletHolder}}</van-col>
+              </van-row>
+            </van-col>
+          </van-row>
+        </van-col>
+        <van-col span="8">
+          <img class="personImg" :src="data.pic[0]" alt="" />
+        </van-col>
+      </van-row>
+      <van-row class="item">
+        <van-col span="24">
+          <van-row justify="space-between">
+            <van-col span="10"> 联系方式: </van-col>
+            <van-col span="14" style="text-align: right">
+              {{data.data.memorialTabletHolderPhone}}
+            </van-col>
+          </van-row>
+        </van-col>
+      </van-row>
+      <van-row class="item">
+        <van-col span="24">
+          <van-row justify="space-between">
+            <van-col span="10"> 供奉牌位人: </van-col>
+            <van-col span="14" style="text-align: right">
+              {{data.data.contactInformation}}
+            </van-col>
+          </van-row>
+        </van-col>
+      </van-row>
+      <van-row class="item">
+        <van-col span="24">
+          <van-row justify="space-between">
+            <van-col span="10"> 供奉牌位人电话: </van-col>
+            <van-col span="14" style="text-align: right">
+             {{data.data.siteContact}}
+            </van-col>
+          </van-row>
+        </van-col>
+      </van-row>
+      <van-row class="item">
+        <van-col span="24">
+          <van-row justify="space-between">
+            <van-col span="10"> 身份证号: </van-col>
+            <van-col span="14" style="text-align: right">
+              {{data.data.udCard}}
+            </van-col>
+          </van-row>
+        </van-col>
+      </van-row>
+      <van-row class="item">
+        <van-col span="24">
+          <van-row justify="space-between">
+            <van-col span="10"> 籍贯: </van-col>
+            <van-col span="14" style="text-align: right">
+              {{data.data.currentResidence}}
+            </van-col>
+          </van-row>
+        </van-col>
+      </van-row>
+      <van-row class="item">
+        <van-col span="24">
+          <van-row justify="space-between">
+            <van-col span="10"> 现居地: </van-col>
+            <van-col span="14" style="text-align: right">
+              {{data.data.nativePlace}}
+            </van-col>
+          </van-row>
+        </van-col>
+      </van-row>
+      <van-row class="item">
+        <van-col span="24">
+          <van-row justify="space-between">
+            <van-col span="10"> 现居地详情: </van-col>
+            <van-col span="14" style="text-align: right">
+              {{data.data.currentResidenceDel}}
+            </van-col>
+          </van-row>
+        </van-col>
+      </van-row>
+      <van-row class="item">
+        <van-col span="24">
+          <van-row justify="space-between">
+            <van-col span="10"> 与供奉牌位关系: </van-col>
+            <van-col span="14" style="text-align: right">
+                {{data.data.relationship}}
+            </van-col>
+          </van-row>
+        </van-col>
+      </van-row>
+      <van-row class="item">
+        <van-col span="24">
+          <van-row justify="space-between">
+            <van-col span="10"> 供奉费用(元/年): </van-col>
+            <van-col span="14" style="text-align: right">
+              {{data.data.sacrificeExpenses}}
+            </van-col>
+          </van-row>
+        </van-col>
+      </van-row>
+      <van-row class="item">
+        <van-col span="24">
+          <van-row justify="space-between">
+            <van-col span="10">被供奉者信息: </van-col>
+            <van-col span="14" style="text-align: right">
+            </van-col>
+          </van-row>
+        </van-col>
+      </van-row>
+    </div>
+  </div>
+</template>
+
+<script>
+import { useRouter } from 'vue-router'
+import {onMounted, reactive,ref} from "vue"
+import UserManage from '@/api/user/UserManage';
+export default {
+  setup(){
+    const data = reactive({
+      //牌位数据
+      data:{},
+      siteName:{},
+      pic:[]
+    })
+    //数据接收
+    const router = useRouter();
+    onMounted(()=>{
+      var item = JSON.parse(router.currentRoute.value.query.data)
+      data.data = item
+      data.siteName = data.data.siteName
+      data.pic.push(data.data.pic.split('|'))
+    })
+    //返回
+    const goback = () => {
+      history.back();
+    };
+    return{
+      goback,
+      data
+    }
+  }
+};
+</script>
+
+<style lang="less">
+body,
+html {
+  margin: 0;
+  padding: 0;
+  background-color: #f2f2f2;
+}
+.van-nav-bar {
+  background-color: #36a7f3;
+  .van-nav-bar__title {
+    color: #fff;
+  }
+  .van-badge__wrapper {
+    color: #fff;
+  }
+}
+.banner {
+  background-color: #36a7f3;
+  padding: 20px 50px 40px 50px;
+  color: #fff;
+  h2 {
+    &:nth-child(1) {
+      margin-top: 0px;
+      text-align: left;
+    }
+    &:nth-child(2) {
+      text-align: center;
+    }
+    &:nth-child(3) {
+      text-align: right;
+    }
+  }
+}
+.content {
+  position: fixed;
+  width: 85%;
+  top: 240px;
+  left: 50%;
+  padding: 20px 10px;
+  transform: translateX(-50%);
+  background-color: #fff;
+  border-radius: 10px;
+  font-size: 16px;
+  height: 680px;
+  overflow: auto;
+  h3 {
+    margin: 0;
+    padding: 0;
+  }
+  .itemInfo{
+    height: 100%;
+    .item{
+        padding: 15px 0;
+        border-bottom: 1px solid #f2f2f2;
+        .van-col{
+            .van-row{
+                .van-col{
+                    &:nth-child(2){
+                        color: #7f7f7f;
+                    }
+                }
+            }
+        }
+    }
+    .personImg{
+        width: 100%;
+        height: 100%;
+    }
+  }
+}
+</style>

+ 1 - 1
src/views/tab_a/tabAll.vue

@@ -93,7 +93,7 @@ import userSets from "@/api/sys/userSets";
 		created(){
 			let id=this.$route.query.id;
 			window.xm.setNavigationBarTitle({ title: '智慧“和顺”'})
-			this.TokenLogin2();			
+			this.TokenLogin2();
 		},
 
 		methods:{

+ 3 - 1
src/views/toBeDone/toBeDone.vue

@@ -17,7 +17,7 @@
           </van-col>
           <van-col span="18" style="border-left: 1px solid #e3e3e3" class="list-item-right">
             <van-row>
-              <van-col span="24">
+              <van-col span="24" style="height:50px;overflow: hidden;">
                 <span v-html="item.problemContent"></span>
               </van-col>
             </van-row>
@@ -101,6 +101,7 @@ html {
   margin: 0;
   padding: 0;
   background-color: #f2f2f2;
+  
 }
 .van-nav-bar {
   background-color: #36a7f3;
@@ -118,6 +119,7 @@ html {
     padding: 10px 0;
     margin-bottom: 5px;
     .list-item-left {
+      margin: auto;
       text-align: center;
       font-size: 12px;
       border-right: 2px solid #f2f2f2;

+ 3 - 1
src/views/toBeDone/toBeDone_details.vue

@@ -8,7 +8,7 @@
   <div class="content">
     <div class="content-top">
       <p>问题内容:</p>
-      <p v-html="PersonInfo.data.problemContent"></p>
+      <p v-html="PersonInfo.data.problemContent" style=""></p>
       <p>发起部门:{{ PersonInfo.createDepartment.name }}</p>
       <p>发起人:{{ PersonInfo.todoBy.name }}</p>
       <p>交办类型:{{ PersonInfo.data.assignTypeName }}</p>
@@ -106,12 +106,14 @@ html {
 .content {
   position: fixed;
   width: 85%;
+  height: 680px;
   top: 180px;
   left: 50%;
   padding: 20px 10px;
   transform: translateX(-50%);
   background-color: #fff;
   border-radius: 10px;
+  overflow: auto;
   .content-top {
     padding-bottom: 30px;
     border-bottom: 2px solid #e7e7e7;