Browse Source

Merge branch 'master' of http://123.57.226.179:8080/yin_yu820/HS_MZAP

guoqing 2 years ago
parent
commit
6cd15fc707

+ 0 - 1
src/utils/request.js

@@ -91,7 +91,6 @@ var http = {
                 method: 'get',
                 params: params,
                 config: config,
-                cancelToken: new axios.CancelToken(function executor(c) {})
             }).then((response) => {
                 resolve(response.data)
             }).catch((error) => {

+ 407 - 4
src/views/activityMan/religiousConference/religiousConferenceView.vue

@@ -1,6 +1,409 @@
 <template>
-    <div class="about">
-      <h1>This is an about page</h1>
+  <van-nav-bar
+    fixed
+    title="信息上报中心"
+    left-text=""
+    left-arrow
+    @click-left="onClickLeft"
+  />
+  <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>
+      <van-cell-group>
+        <van-field
+          v-model="inputForm.placeSelectName"
+          center
+          readonly
+          label="会议地点:"
+          placeholder="请选择"
+          input-align="right"
+          right-icon="arrow-down"
+          @click="showArea = true"
+        />
+        <van-popup v-model:show="showArea" round position="bottom">
+          <van-cascader
+            v-model="cascaderValue"
+            title="请选择所在地区"
+            :options="options"
+            @close="showArea = false"
+            @finish="onFinish"
+            :field-names="fieldNames"
+          />
+        </van-popup>
+      </van-cell-group>
+      <van-cell-group>
+        <van-field
+          v-model="inputForm.venueDetailed"
+          center
+          label="详细地址:"
+          placeholder="请填写具体地址"
+          input-align="right"
+          right-icon="location"
+        />
+      </van-cell-group>
+
+      <van-cell-group>
+        <van-field
+          v-model="inputForm.meetingTime"
+          center
+          readonly
+          label="会议时间:"
+          placeholder="请选择会议时间"
+          input-align="right"
+          right-icon="arrow-down"
+          @click="showAct = true"
+        />
+        <van-popup v-model:show="showAct" round position="bottom">
+          <van-picker-group
+            :tabs="['选择日期', '选择时间']"
+            next-step-text="下一步"
+            @confirm="getTime"
+            @cancel="showAct = false"
+          >
+            <van-date-picker v-model="currentDate" />
+            <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.frequency"
+          center
+          label="频次:"
+          placeholder="请填写频次"
+          input-align="right"
+          type="digit"
+        />
+      </van-cell-group> -->
+
+      <van-cell-group>
+        <van-field
+          v-model="inputForm.siteName.name"
+          readonly
+          required
+          label="会议场所:"
+          placeholder="请选择"
+          input-align="right"
+          right-icon="arrow-down"
+          @click="showPlace = true"
+        />
+        <van-dialog
+          v-model:show="showPlace"
+          title="选择场所"
+          show-cancel-button
+          @confirm="reselected2"
+        >
+          <site-list @selected="selected2" :type="1"></site-list>
+        </van-dialog>
+      </van-cell-group>
+      
+      <van-cell-group>
+        <van-field
+          v-model="inputForm.participants.name"
+          center
+          required
+          label="参会人员:"
+          placeholder="请选择参会人员"
+          input-align="right"
+          right-icon="arrow-down"
+          @click="showPerson = true"
+        />
+        <van-dialog
+          v-model:show="showPerson"
+          title="选择人员"
+          show-cancel-button
+          @confirm="reselected"
+        >
+          <person-list @selected="selected" :type="1"></person-list>
+        </van-dialog>
+      </van-cell-group>
+      <van-cell-group>
+        <van-field label="内容:" label-align="top">
+          <template #input>
+            <wang-editor ref="contentEditor" v-model="inputForm.meetingTopics" />
+          </template>
+        </van-field>
+      </van-cell-group>
     </div>
-  </template>
-  
+    <div class="subbtn">
+      <van-button type="primary" @click="submit">提交</van-button>
+      <van-button type="default" hairline>取消</van-button>
+    </div>
+  </div>
+</template>
+  
+  <script>
+import { ref, onMounted } from "vue";
+import personList from "../personList.vue";
+import siteList from "../siteList.vue";
+import tools from "@/api/sys/tools";
+import religiousConferenceService from "@/api/religiousConference/religiousConferenceService";
+import UserManage from "@/api/user/UserManage";
+import { useRoute } from "vue-router";
+// 富文本编辑器
+import WangEditor from "@/components/editor/WangEditor";
+export default {
+  components: { personList, WangEditor,siteList },
+  setup() {
+    // 加载
+    let isLoading = ref(true);
+    // 返回
+    const onClickLeft = () => {
+      history.back();
+    };
+    // 私设聚会点信息
+    let inputForm = ref({
+      id: "",
+      siteName: {
+        id: "",
+        name: "",
+      },
+      venue: "320900",
+      placeSelectName: "盐城市",
+      placeSelectType3: "320900",
+      placeSelectType4: "",
+      placeSelectType5: "",
+      placeSelectType6: "",
+      venueDetailed: "",
+      meetingTime: "",
+      participants: {
+        id: "",
+        name: "",
+      },      
+      meetingTopics: "",
+      state: "0",
+      assessment: "0",
+    });
+    const contentEditor = ref(null);
+    let route = useRoute();
+    onMounted(() => {
+      // 根据路由初始化
+      if (route.query.id) {
+        new religiousConferenceService()
+          .queryById(route.query.id)
+          .then((data) => {
+            inputForm.value = data;
+            let ids = data.participants.id.split(",");
+            inputForm.value.participants.name = "";
+            ids.forEach((item) => {
+              new UserManage().queryById(item).then((data) => {
+                inputForm.value.participants.name += data.name + ",";
+              });
+            });
+            contentEditor.value.init(inputForm.value.meetingTopics);
+            isLoading.value = false;
+          });
+      } else {
+        contentEditor.value.init(inputForm.value.meetingTopics);
+        isLoading.value = false;
+      }
+    });
+    // 获取活动时间
+    let showAct = ref(false);
+    let currentDate = ref(["" + new Date().getFullYear(), "01", "01"]);
+    let currentTime = ref(["00", "00", "00"]);
+    const columnsType = ["hour", "minute", "second"];
+    const getTime = () => {
+      showAct.value = false;
+      inputForm.value.meetingTime = `${currentDate.value.join(
+        "-"
+      )} ${currentTime.value.join(":")}`;
+    };
+    // 会议场所
+    let showPlace = ref(false);
+    let list2 = {
+      value: [],
+      type: "",
+    };
+    const selected2 = (val, type) => {
+      list2.value = val;
+      list2.type = type;
+    };
+    const reselected2 = () => {
+      let ids = [];
+      let names = [];
+      if (list2.type == 1) {
+        list2.value.forEach((item) => {
+          ids.push(item.id);
+          names.push(item.name);
+        });
+        inputForm.value.siteName.id = ids.join(",");
+        inputForm.value.siteName.name = names.join(",");
+      }
+    };
+    // 相关人
+    let showPerson = ref(false);
+    let list = {
+      value: [],
+      type: "",
+    };
+    const selected = (val, type) => {
+      list.value = val;
+      list.type = type;
+    };
+    const reselected = () => {
+      let ids = [];
+      let names = [];
+      if (list.type == 1) {
+        list.value.forEach((item) => {
+          ids.push(item.id);
+          names.push(item.name);
+        });
+        inputForm.value.participants.id = ids.join(",");
+        inputForm.value.participants.name = names.join(",");
+      }
+    };
+    // 地区选择
+    let showArea = ref(false);
+    const cascaderValue = ref("");
+    const fieldNames = {
+      text: "name",
+      value: "code",
+      children: "children",
+    };
+    // 选项列表,children 代表子选项,支持多级嵌套
+    let options = ref([]);
+    new tools().treeData().then((res) => {
+      options.value.push(res[0]);
+    });
+    // 全部选项选择完毕后,会触发 finish 事件
+    const onFinish = ({ selectedOptions }) => {
+      showArea.value = false;
+      inputForm.value.placeSelectName = selectedOptions
+        .map((option) => option.name)
+        .join("/");
+        console.log("选择地区:"+selectedOptions);
+
+        inputForm.value.venue = selectedOptions
+        .map((option) => option.id)
+        .join("/");
+
+        inputForm.value.venue = selectedOptions
+        .map((option) => option.id)
+        .join("/");
+
+        inputForm.value.placeSelectType3= selectedOptions[0].id;
+        inputForm.value.placeSelectType4= selectedOptions[1].id;
+        inputForm.value.placeSelectType5= selectedOptions[2].id;
+        console.log("11:"+inputForm.value);
+
+        //inputForm.value.placeSelectType6= selectedOptions[2].id,
+
+    };
+    const submit = () => {
+      isLoading.value = true;
+      new religiousConferenceService().save(inputForm.value).then((res) => {
+        if(res.data=="保存宗教场所负责人会议上报成功"){
+          window.xm.showToast({
+             message:"保存成功!"
+          })
+          onClickLeft();
+        isLoading.value = false;
+        }        
+      });
+    };
+    return {
+      isLoading,
+      inputForm,
+      // 活动时间
+      showAct,
+      currentDate,
+      currentTime,
+      columnsType,
+      getTime,
+      // 返回
+      onClickLeft,
+      // 场所选择
+      showPlace,
+      selected2,
+      reselected2,
+      // 人员选择
+      showPerson,
+      selected,
+      reselected,
+      // 地区选择
+      showArea,
+      fieldNames,
+      options,
+      onFinish,
+      cascaderValue,
+      contentEditor,
+      // change,
+      submit,
+    };
+  },
+};
+</script>
+  
+  <style scoped>
+* {
+  margin: 0;
+  padding: 0;
+}
+.main {
+  background: #fff;
+  position: relative;
+  top: 40px;
+}
+.title,
+.miniTitle {
+  height: 40px;
+  line-height: 40px;
+  color: #36a7f3;
+  border-bottom: 1px solid #eee;
+}
+.title {
+  font-size: 20px;
+  font-weight: 700;
+  padding-left: 20px;
+}
+.miniTitle {
+  font-size: 16px;
+}
+.formArea {
+  padding: 0px 20px;
+}
+.formArea .van-cell-group .van-field__label {
+  height: 40px;
+}
+.formArea .van-cell-group .van-cell {
+  line-height: 40px;
+}
+.van-cell__value .van-field__right-icon .van-icon-location {
+  color: #36a7f3 !important;
+}
+#editor {
+  position: relative;
+  height: 200px;
+}
+.w-e-text-container {
+  height: 150px !important;
+}
+.subbtn {
+  margin: 20px;
+  text-align: center;
+}
+.subbtn .van-button {
+  width: 40%;
+  margin: 5px;
+}
+.van-uploader .van-button {
+  border: none;
+  color: #36a7f3;
+  top: -4px;
+}
+.van-dialog {
+  width: 80%;
+  top: 50%;
+}
+.van-loading {
+  text-align: center;
+  margin-top: 80px;
+}
+</style>

+ 161 - 0
src/views/activityMan/siteList.vue

@@ -0,0 +1,161 @@
+<template>
+    <div class="siteList">
+      <van-search
+        v-model="value"
+        show-action
+        placeholder="请输入搜索关键词"
+        @search="onSearch"
+        @cancel="onCancel"
+      />
+      <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 tools from "@/api/sys/tools";
+  export default {
+    name: "siteList",
+    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()
+        .placeList({
+            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>
+  .siteList {
+    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>