|
@@ -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>
|