Просмотр исходного кода

完成活动场所上报的接口测试

LuChongMei 2 лет назад
Родитель
Сommit
5f91566a18

+ 7 - 0
src/api/placeActivity/placeActivityServer.js

@@ -1,5 +1,12 @@
 import request from '@/utils/request'
 export default class placeActivityServer {
+    // 保存
+    save(inputForm) {
+        return request(
+            '/reporting/reportingActivities/save',
+            inputForm
+        )
+    }
     list(params) {
         return request.get(
             `/reporting/reportingActivities/list`,

+ 63 - 100
src/views/activityMan/personList.vue

@@ -13,32 +13,20 @@
       finished-text="没有更多了"
       @load="onLoad"
     >
-      <!-- <van-cell title="全选">
-        <template #right-icon>
-          <input type="checkbox" v-model="isAll" @change="selectAll" />
-        </template>
-      </van-cell>
-      <van-cell v-for="(item, index) in list" :key="item" :title="item">
-        <template #right-icon>
-          <input
-            type="checkbox"
-            :ref="getList"
-            @change="selectPerson(item, index)"
-          />
-        </template>
-      </van-cell> -->
-      <van-checkbox-group v-model="checked">
+      <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 title="全选">
-            <template #right-icon>
-              <input type="checkbox" v-model="isAll" @change="selectAll" />
-            </template>
-          </van-cell>
           <van-cell
             v-for="(item, index) in list"
             clickable
             :key="item"
-            :title="`复选框 ${item}`"
+            :title="item.name"
             @click="toggle(index)"
           >
             <template #right-icon>
@@ -46,125 +34,100 @@
                 shape="square"
                 :name="item"
                 :ref="(el) => (checkboxRefs[index] = el)"
-                @click.stop
               />
             </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, onBeforeUpdate } from "vue";
-// import tools from "@/api/sys/tools";
+import { ref } from "vue";
+import tools from "@/api/sys/tools";
 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 tools()
-    //     .personList({
-    //       current: index + 1,
-    //       size: 10,
-    //     })
-    //     .then(({ data }) => {
-    //       console.log("获取数据", data);
-    //       // list.push(data);
-    //       // // 数据全部加载完成
-    //       // if (data.length < 10) {
-    //       //   finished.value = true;
-    //       // }
-    //     });
-    //   // 加载状态结束
-    //   loading.value = false;
-    //   index++;
-    // };
+    let index = 0;
     const onLoad = () => {
       // 异步更新数据
-      // setTimeout 仅做示例,真实场景中一般为 ajax 请求
-      setTimeout(() => {
-        for (let i = 0; i < 10; i++) {
-          list.value.push(list.value.length + 1);
-        }
-
-        // 加载状态结束
-        loading.value = false;
-
-        // 数据全部加载完成
-        if (list.value.length >= 40) {
-          finished.value = true;
-        }
-      }, 1000);
+      new tools()
+        .personList({
+          current: index + 1,
+          size: 10,
+        })
+        .then(({ records }) => {
+          list.value.push(...records);
+          // 加载状态结束
+          loading.value = false;
+          index++;
+          // 数据全部加载完成
+          if (records.length < 10) {
+            finished.value = true;
+          }
+        });
     };
-    const checked = ref([]);
-    const checkboxRefs = ref([]);
-    const toggle = (index) => {
-      checkboxRefs.value[index].toggle();
-    };
-
-    onBeforeUpdate(() => {
-      checkboxRefs.value = [];
-    });
-
     // 搜索
     const value = ref("");
     const onSearch = (val) => showToast(val);
     const onCancel = () => showToast("取消");
     // 选择人员
-    let selects = [];
+    const checked = ref([]);
+    const checkboxRefs = ref([]);
+    const checkboxGroup = ref(null);
+    const toggle = (index) => {
+      checkboxRefs.value[index].toggle();
+      emit("selected", checked.value, 1);
+    };
     // 全选
-    let isAll = ref(false);
-    let checks = [];
-    const getList = (el) => {
-      checks.push(el);
+    const checkAll = () => {
+      checkboxGroup.value.toggleAll(true);
+      emit("selected", checked.value, 1);
     };
-    const selectAll = () => {
-      checks.forEach((item) => {
-        item.checked = isAll.value;
-      });
-      if (isAll) {
-        selects = list;
-      } else {
-        selects = [];
-      }
-      emit("selected", selects.join(","));
+    const selectes = (val) => {
+      checked.value = val;
+      emit("selected", checked.value, 0);
     };
-    const selectPerson = (value, index) => {
-      if (checks[index].checked) {
-        selects.push(value);
-      } else {
-        selects.splice(selects.indexOf(value), 1);
-      }
 
-      if (selects.length == getList.length) {
-        isAll.value = true;
-      } else {
-        isAll.value = false;
-      }
-      emit("selected", selects.join(","));
-    };
     return {
+      // 人员
       list,
       onLoad,
       loading,
       finished,
-      selectPerson,
+      // 搜索
       value,
       onSearch,
       onCancel,
-      selectAll,
-      getList,
-      isAll,
+      // 全选
+      checkAll,
       toggle,
       checked,
       checkboxRefs,
+      checkboxGroup,
+      // 单选
+      selectes,
     };
   },
 };

+ 74 - 40
src/views/activityMan/placeactivity/placeActivityView.vue

@@ -11,7 +11,7 @@
       <p class="miniTitle">基础信息</p>
       <van-cell-group>
         <van-field
-          v-model="placeActivity.activity"
+          v-model="placeActivity.activityName"
           center
           label="活动名称:"
           placeholder="请填写活动名称"
@@ -20,7 +20,7 @@
       </van-cell-group>
       <van-cell-group>
         <van-field
-          v-model="placeActivity.place"
+          v-model="placeActivity.siteName.name"
           readonly
           required
           label="场所名称:"
@@ -65,7 +65,7 @@
       </van-cell-group>
       <van-cell-group>
         <van-field
-          v-model="placeActivity.countPerson"
+          v-model="placeActivity.participantsNum"
           center
           label="参会人数:"
           placeholder="请填写参会人数"
@@ -75,7 +75,7 @@
       </van-cell-group>
       <van-cell-group>
         <van-field
-          v-model="placeActivity.list"
+          v-model="placeActivity.knownList.name"
           center
           required
           label="已知名单:"
@@ -90,12 +90,12 @@
           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>
         <van-field
-          v-model="placeActivity.portname"
+          v-model="placeActivity.reporter.id"
           center
           label="报告人:"
           placeholder="请选择报告人"
@@ -105,7 +105,7 @@
       </van-cell-group>
       <van-cell-group>
         <van-field
-          v-model="placeActivity.area"
+          v-model="placeActivity.participation"
           center
           label="参加范围:"
           placeholder="请填写参加范围"
@@ -114,7 +114,7 @@
       </van-cell-group>
       <van-cell-group>
         <van-field
-          v-model="placeActivity.activityPlace"
+          v-model="placeActivity.place"
           center
           readonly
           label="活动地点:"
@@ -136,7 +136,7 @@
       </van-cell-group>
       <van-cell-group>
         <van-field
-          v-model="placeActivity.address"
+          v-model="placeActivity.placeDel"
           center
           label="详细地址:"
           placeholder="请填写活参加地点"
@@ -146,7 +146,7 @@
       </van-cell-group>
       <van-cell-group>
         <van-field
-          v-model="placeActivity.money"
+          v-model="placeActivity.sourceFunds"
           center
           label="经费来源:"
           placeholder="请选择"
@@ -155,7 +155,7 @@
       </van-cell-group>
       <van-cell-group>
         <van-field
-          v-model="placeActivity.activityName"
+          v-model="placeActivity.activityPerson.name"
           center
           label="活动负责人:"
           placeholder="请选择活动负责人"
@@ -167,13 +167,14 @@
           v-model:show="showReport"
           title="选择活动负责人"
           show-cancel-button
+          @confirm="reselected"
         >
-          <person-list></person-list>
+          <person-list @selected="selected" :type="0"></person-list>
         </van-dialog>
       </van-cell-group>
       <van-cell-group>
         <van-field
-          v-model="placeActivity.tel"
+          v-model="placeActivity.phone"
           center
           type="tel"
           label="联系方式:"
@@ -193,7 +194,7 @@
       <van-cell-group>
         <div class="rowTextArea">
           <van-field
-            v-model="placeActivity.into"
+            v-model="placeActivity.subjectContent"
             center
             rows="2"
             type="textarea"
@@ -204,7 +205,7 @@
       </van-cell-group>
     </div>
     <div class="subbtn">
-      <van-button type="primary">提交</van-button>
+      <van-button type="primary" @click="submit">提交</van-button>
       <van-button type="default" hairline>取消</van-button>
     </div>
   </div>
@@ -224,26 +225,39 @@ export default {
     };
     // 活动信息
     const placeActivity = reactive({
-      activity: "",
-      place: "",
-      activityTime: "",
-      countPerson: "",
-      list: "",
-      portname: "",
-      area: "",
-      activityPlace: "",
-      address: "",
-      money: "",
+      id: "",
       activityName: "",
-      tel: "",
-      file: "",
-      into: "",
+      siteName: {
+        id: "",
+      },
+      activityTime: "",
+      participantsNum: "",
+      knownList: {
+        id: "",
+        name: "",
+      },
+      subjectContent: "",
+      reporter: {
+        id: "",
+      },
+      participation: "",
+      place: "",
+      placeDel: "",
+      sourceFunds: "",
+      safetyPlan: "",
+      activityPerson: {
+        id: "",
+        name: "",
+      },
+      phone: "",
+      state: "0",
+      assessment: "0",
     });
     // 场所名称
     let places = ref([]);
     const customFieldName = {
       text: "name",
-      value: "name",
+      value: "id",
     };
     new tools()
       .placeList({
@@ -251,13 +265,13 @@ export default {
         size: 10000,
       })
       .then(({ records }) => {
-        places.value.push(...records) ;
+        places.value.push(...records);
       });
     let showPlace = ref(false);
     const getPlace = ({ selectedOptions }) => {
       // console.log("选择",selectedOptions);
       showPlace.value = false;
-      placeActivity.place = selectedOptions[0].name;
+      placeActivity.siteName = selectedOptions[0];
     };
     // 获取活动时间
     let showAct = ref(false);
@@ -273,15 +287,29 @@ export default {
     let showPerson = ref(false);
     // 活动负责人
     let showReport = ref(false);
-    // const show = () => {
-    //   showPerson = true;
-    // };
-    let list = "";
-    const selected = (val) => {
-      list = val;
+    let list = {
+      value: [],
+      type: "",
+    };
+    const selected = (val, type) => {
+      list.value = val;
+      list.type = type;
+      console.log("选择", list);
     };
     const reselected = () => {
-      placeActivity.list = list;
+      let ids = [];
+      let names = [];
+      if (list.type == 1) {
+        list.value.forEach((item) => {
+          ids.push(item.id);
+          names.push(item.name);
+        });
+        placeActivity.knownList.id = ids.join(",");
+        placeActivity.knownList.name = names.join(",");
+      } else {
+        placeActivity.activityPerson.id = list.value.id;
+        placeActivity.activityPerson.name = list.value.name;
+      }
     };
     // 地区选择
     let showArea = ref(false);
@@ -294,16 +322,21 @@ export default {
     // 选项列表,children 代表子选项,支持多级嵌套
     let options = ref([]);
     new tools().treeData().then((res) => {
-      console.log("area", res);
       options.value.push(res[0]);
     });
     // 全部选项选择完毕后,会触发 finish 事件
     const onFinish = ({ selectedOptions }) => {
       showArea.value = false;
-      placeActivity.activityPlace = selectedOptions
+      placeActivity.place = selectedOptions
         .map((option) => option.name)
         .join("/");
     };
+    // 提交数据
+    const submit = () => {
+      new placeActivityServer().save({placeActivity}).then((res) => {
+        console.log("提交", res);
+      });
+    };
     return {
       placeActivity,
       // 活动场所
@@ -329,6 +362,7 @@ export default {
       options,
       onFinish,
       cascaderValue,
+      submit,
     };
   },
 };