Explorar o código

完成了活动场所模块的基本功能测试

LuChongMei %!s(int64=2) %!d(string=hai) anos
pai
achega
fd8681a5af

+ 72 - 29
src/views/activityMan/placeactivity/placeActivityInfo.vue

@@ -1,59 +1,98 @@
 <template>
   <van-nav-bar
-    fixed
     title="场所活动"
     left-text=""
     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"></div>
+    <div class="info">
+      <p>活动名称:{{ placeActivity.activityName }}</p>
+      <p>场所名称:{{ placeActivity.siteName.name }}</p>
+      <p>发起人:{{ placeActivity.reporter.name }}</p>
+      <p>参会人数:{{ placeActivity.participantsNum }}</p>
+      <p>已知人员名单:{{ placeActivity.knownList.name }}</p>
+      <p>活动地点:{{ placeActivity.place }}</p>
+      <p>详细地址:{{ placeActivity.placeDel }}</p>
+      <p>活动时间:{{ placeActivity.activityTime }}</p>
+      <p>安全预案:<span style="color: #6892ff">活动申请书</span></p>
+      <p>主题内容:{{ placeActivity.sourceFunds }}</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 placeActivityServer from "@/api/placeActivity/placeActivityServer";
+import UserManage from "@/api/user/UserManage";
+import { useRoute } from "vue-router";
 export default {
   setup() {
     const onClickLeft = () => {
       history.back();
     };
+    // 加载
+    let isLoading = ref(true);
     // 活动信息
-    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",
+    const placeActivity = ref({
+      id: "",
+      activityName: "",
+      siteName: {
+        id: "",
+        name: "",
+      },
+      activityTime: "",
+      participantsNum: "",
+      knownList: {
+        id: "",
+        name: "",
+      },
+      subjectContent: "",
+      reporter: {
+        id: "",
+        name: "",
+      },
+      participation: "",
+      place: "",
+      placeDel: "",
+      sourceFunds: "",
+      safetyPlan: "",
+      activityPerson: {
+        id: "",
+        name: "",
+      },
+      phone: "",
+      state: "",
+      assessment: "",
+    });
+    let route = useRoute();
+    new placeActivityServer().queryById(route.query.id).then((data) => {
+      placeActivity.value = data;
+      let ids = data.knownList.id.split(",");
+      placeActivity.value.knownList.name = "";
+      ids.forEach((item) => {
+        new UserManage().queryById(item).then((data) => {
+          placeActivity.value.knownList.name += data.name + ",";
+        });
+      });
+      isLoading.value = false;
     });
     return {
       onClickLeft,
       placeActivity,
+      isLoading,
     };
   },
 };
 </script>
   
 <style lang="less">
+.main p{
+  line-height: 1.5;
+}
 .banner {
   height: 30vh;
   background: #36a7f3;
@@ -74,4 +113,8 @@ export default {
   border-radius: 20px;
   margin-left: 5%;
 }
+.van-loading {
+  text-align: center;
+  margin-top: 20px;
+}
 </style>

+ 104 - 51
src/views/activityMan/placeactivity/placeActivityList.vue

@@ -1,6 +1,5 @@
 <template>
   <van-nav-bar
-    fixed
     title="场所活动"
     left-text=""
     right-text="上报"
@@ -9,54 +8,85 @@
     @click-right="onClickRight"
   />
   <van-search v-model="value" shape="round" placeholder="请输入搜索关键词" />
-  <van-list
-    v-model:loading="loading"
-    :finished="finished"
-    finished-text="没有更多了"
-    @load="onLoad"
+  <van-tabs
+    v-model:active="active"
+    title-inactive-color="#bdbdbd"
+    title-active-color="#36a7f3"
+    @click-tab="onClickTab"
   >
-    <!-- tab切换 -->
-    <div class="nav_tab">
-      <div class="tab" :class="tabIndex ? '' : 'active'" @click="tabIndex = 0">
-        未审核
-      </div>
-      <div class="tab" :class="tabIndex ? 'active' : ''" @click="tabIndex = 1">
-        已审核
-      </div>
-    </div>
-    <van-swipe-cell
-      v-for="item in list"
-      :key="item"
-      :before-close="beforeClose"
-    >
-      <div class="list_item">
-        <div class="item-left">
-          <p style="color: #c4c4c4">{{ item.activityTime }}</p>
-          <p style="color: red">待审核</p>
-        </div>
-        <van-cell is-link to="placeActivityInfo">
-          <template #title>
-            {{ item.reporter.name }}申请于{{ item.placeDel }}举办{{
-              item.activityName
-            }}活动
+    <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.activityTime }}</p>
+              <p style="color: red">待审核</p>
+            </div>
+            <van-cell is-link to="placeActivityInfo">
+              <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>
-          <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-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.activityTime }}</p>
+              <p style="color: red">已审核</p>
+            </div>
+            <van-cell is-link to="placeActivityInfo">
+              <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>
 </template>
 
 <script>
@@ -76,28 +106,42 @@ export default {
       router.push("placeActivity");
     };
     // 切换
-    let tabIndex = ref(0);
+    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 = () => {
+    const onLoad = (val) => {
       // 异步更新数据
       new placeActivityServer()
         .list({
           current: index + 1,
           size: 10,
+          assessment: val ? val : 0,
         })
         .then((res) => {
           list.value.push(...res.records);
           // 加载状态结束
           loading.value = false;
-          index++;
           // 数据全部加载完成
           if (res.records.length < 10) {
             finished.value = true;
           }
+          index++;
         });
     };
     // 搜索
@@ -124,7 +168,16 @@ export default {
         query: { id: val.id },
       });
     };
+    // 详情跳转
+    const goInfo = (val) => {
+      router.push({
+        path: "/placeActivityInfo",
+        query: { id: val },
+      });
+    };
     return {
+      active,
+      onClickTab,
       onClickLeft,
       list,
       onLoad,
@@ -132,9 +185,9 @@ export default {
       finished,
       value,
       onClickRight,
-      tabIndex,
       beforeClose,
       updateItem,
+      goInfo,
     };
   },
 };

+ 8 - 6
src/views/activityMan/placeactivity/placeActivityView.vue

@@ -5,9 +5,7 @@
     left-arrow
     @click-left="onClickLeft"
   />
-  <van-loading size="24px" vertical v-if="isLoading" color="#0094ff"
-    >加载中...</van-loading
-  >
+  <van-loading size="16px" v-if="isLoading">加载中...</van-loading>
   <div class="main" v-if="!isLoading">
     <p class="title">场所活动上报</p>
     <div class="formArea">
@@ -268,7 +266,7 @@ export default {
     // 根据路由初始化
     let route = useRoute();
     onMounted(() => {
-      if (route.query) {
+      if (route.query.id) {
         new placeActivityServer().queryById(route.query.id).then((data) => {
           placeActivity.value = data;
           let ids = data.knownList.id.split(",");
@@ -278,9 +276,10 @@ export default {
               placeActivity.value.knownList.name += data.name + ",";
             });
           });
-
           isLoading.value = false;
         });
+      } else {
+        isLoading.value = false;
       }
     });
     // 场所名称
@@ -299,7 +298,6 @@ export default {
       });
     let showPlace = ref(false);
     const getPlace = ({ selectedOptions }) => {
-      // console.log("选择",selectedOptions);
       showPlace.value = false;
       placeActivity.value.siteName = selectedOptions[0];
     };
@@ -459,4 +457,8 @@ export default {
   width: 80%;
   top: 50%;
 }
+.van-loading {
+  text-align: center;
+  margin-top: 20px;
+}
 </style>

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

@@ -11,7 +11,7 @@
       <p class="miniTitle">基础信息</p>
       <van-cell-group>
         <van-field
-          v-model="inputForm.place"
+          v-model="inputForm.placeSelectName"
           center
           readonly
           label="地点:"
@@ -27,12 +27,13 @@
             :options="options"
             @close="showArea = false"
             @finish="onFinish"
+            :field-names="fieldNames"
           />
         </van-popup>
       </van-cell-group>
       <van-cell-group>
         <van-field
-          v-model="inputForm.address"
+          v-model="inputForm.placeDel"
           center
           label="详细地址:"
           placeholder="请填写具体地址"
@@ -43,7 +44,7 @@
 
       <van-cell-group>
         <van-field
-          v-model="inputForm.count"
+          v-model="inputForm.frequency"
           center
           label="频次:"
           placeholder="请填写频次"
@@ -53,7 +54,7 @@
       </van-cell-group>
       <van-cell-group>
         <van-field
-          v-model="inputForm.time"
+          v-model="inputForm.partyTime"
           center
           readonly
           label="时间:"
@@ -70,13 +71,16 @@
             @cancel="showAct = false"
           >
             <van-date-picker v-model="currentDate" />
-            <van-time-picker v-model="currentTime" />
+            <van-time-picker
+              v-model="currentTime"
+              :columns-type="columnsType"
+            />
           </van-picker-group>
         </van-popup>
       </van-cell-group>
       <van-cell-group>
         <van-field
-          v-model="inputForm.person"
+          v-model="inputForm.relatedPersons.name"
           center
           required
           label="相关人:"
@@ -91,7 +95,7 @@
           show-cancel-button
           @confirm="reselected"
         >
-          <person-list @selected="selected"></person-list>
+          <person-list @selected="selected" :type="1"></person-list>
         </van-dialog>
       </van-cell-group>
       <van-cell-group>
@@ -115,8 +119,11 @@
 </template>
   
   <script>
-import { reactive, ref } from "vue";
+import { ref } from "vue";
 import personList from "../personList.vue";
+import tools from "@/api/sys/tools";
+import UserManage from "@/api/user/UserManage";
+import { useRoute } from "vue-router";
 export default {
   components: { personList },
   setup() {
@@ -125,54 +132,77 @@ export default {
       history.back();
     };
     // 活动信息
-    const inputForm = reactive({
-      place: "",
-      count: "",
-      time: "",
-      person: "",
-      place: "",
-      address: "",
-      into: "",
+    let inputForm = ref({
+      id: "",
+      place: "320900",
+      placeSelectName: "盐城市",
+      placeSelectType3: "320900",
+      placeSelectType4: "",
+      placeSelectType5: "",
+      placeSelectType6: "",
+      placeDel: "",
+      frequency: "",
+      partyTime: "",
+      relatedPersons: {
+        id: "",
+        name: "",
+      },
+      content: "",
+      state: "0",
+      assessment: "0",
     });
     // 获取活动时间
     let showAct = ref(false);
     let currentDate = ref(["" + new Date().getFullYear(), "01", "01"]);
     let currentTime = ref(["00", "00"]);
+    const columnsType = ["hour", "minute", "second"];
     const getTime = () => {
       showAct.value = false;
-      inputForm.time = `${currentDate.value.join("-")} ${currentTime.value.join(
-        ":"
-      )}`;
+      inputForm.value.partyTime = `${currentDate.value.join(
+        "-"
+      )} ${currentTime.value.join(":")}`;
     };
     // 相关人
     let showPerson = ref(false);
-    let list = "";
-    const selected = (val) => {
-      list = val;
+    let list = {
+      value: [],
+      type: "",
+    };
+    const selected = (val, type) => {
+      list.value = val;
+      list.type = type;
     };
     const reselected = () => {
-      inputForm.person = list;
+      let ids = [];
+      let names = [];
+      if (list.type == 1) {
+        list.value.forEach((item) => {
+          ids.push(item.id);
+          names.push(item.name);
+        });
+        inputForm.value.relatedPersons.id = ids.join(",");
+        inputForm.value.relatedPersons.name = names.join(",");
+      }
     };
     // 地区选择
     let showArea = ref(false);
     const cascaderValue = ref("");
+    const fieldNames = {
+      text: "name",
+      value: "code",
+      children: "children",
+    };
     // 选项列表,children 代表子选项,支持多级嵌套
-    const options = [
-      {
-        text: "浙江省",
-        value: "330000",
-        children: [{ text: "杭州市", value: "330100" }],
-      },
-      {
-        text: "江苏省",
-        value: "320000",
-        children: [{ text: "南京市", value: "320100" }],
-      },
-    ];
+    let options = ref([]);
+    new tools().treeData().then((res) => {
+      options.value.push(res[0]);
+    });
     // 全部选项选择完毕后,会触发 finish 事件
     const onFinish = ({ selectedOptions }) => {
       showArea.value = false;
-      inputForm.place = selectedOptions.map((option) => option.text).join("/");
+      inputForm.value.placeSelectName = selectedOptions
+        .map((option) => option.name)
+        .join("/");
     };
     return {
       inputForm,
@@ -180,6 +210,7 @@ export default {
       showAct,
       currentDate,
       currentTime,
+      columnsType,
       getTime,
       // 返回
       onClickLeft,
@@ -189,6 +220,7 @@ export default {
       reselected,
       // 地区选择
       showArea,
+      fieldNames,
       options,
       onFinish,
       cascaderValue,