hookehuyr

新增数据收集设置功能

...@@ -29,12 +29,14 @@ import vConsole from "@/utils/vconsole"; ...@@ -29,12 +29,14 @@ import vConsole from "@/utils/vconsole";
29 // import { apiList } from '@/api/wx/jsApiList.js' 29 // import { apiList } from '@/api/wx/jsApiList.js'
30 import { wxInfo } from "@/utils/tools"; 30 import { wxInfo } from "@/utils/tools";
31 import { styleColor } from "@/constant.js"; 31 import { styleColor } from "@/constant.js";
32 +import { getFormSettingAPI } from "@/api/form.js";
33 +
32 // 使用 include + pinia 状态管理动态缓存页面 34 // 使用 include + pinia 状态管理动态缓存页面
33 const store = mainStore(); 35 const store = mainStore();
34 const keepPages = computed(() => store.getKeepPages); 36 const keepPages = computed(() => store.getKeepPages);
35 37
36 // // TAG: 全局设置页面标题 38 // // TAG: 全局设置页面标题
37 -// const $route = useRoute(); 39 +const $route = useRoute();
38 // watchEffect(() => useTitle("表单标题")); 40 // watchEffect(() => useTitle("表单标题"));
39 // 监听路由变化 41 // 监听路由变化
40 // 切换路由页面返回顶部 42 // 切换路由页面返回顶部
...@@ -69,6 +71,34 @@ onMounted(async () => { ...@@ -69,6 +71,34 @@ onMounted(async () => {
69 // wx.error((err) => { 71 // wx.error((err) => {
70 // console.warn(err); 72 // console.warn(err);
71 // }); 73 // });
74 + // const { data } = await getFormSettingAPI({ form_code: $route.query.code });
75 + // 数据收集设置
76 + const { data } = await getFormSettingAPI({ form_code: "jxrteb" });
77 + const form_setting = {};
78 + if (data.length) {
79 + data[0].property_list.forEach((prop) => {
80 + const key = prop["property_code"];
81 + const obj = {
82 + [key]:
83 + prop["setting_value"].length > 1
84 + ? prop["setting_value"]
85 + : prop["setting_value"][0],
86 + };
87 + Object.assign(form_setting, obj);
88 + });
89 + }
90 + // 缓存表单设置
91 + store.changeFormSetting(form_setting);
92 + // 判断跳转页面
93 + if (form_setting.enable && form_setting.enable === 0) {
94 + // 开启/停止表单
95 + $router.push("/stop");
96 + }
97 + if (form_setting.is_time_range && form_setting.is_time_range === 0) {
98 + // 是否设定开启/停止时间
99 + // $router.push("/");
100 + console.warn("是否设定开启/停止时间");
101 + }
72 }); 102 });
73 </script> 103 </script>
74 104
......
1 /* 1 /*
2 * @Date: 2022-06-17 14:54:29 2 * @Date: 2022-06-17 14:54:29
3 * @LastEditors: hookehuyr hookehuyr@gmail.com 3 * @LastEditors: hookehuyr hookehuyr@gmail.com
4 - * @LastEditTime: 2022-11-17 16:30:03 4 + * @LastEditTime: 2022-12-06 11:22:36
5 * @FilePath: /data-table/src/api/form.js 5 * @FilePath: /data-table/src/api/form.js
6 * @Description: 表单接口 6 * @Description: 表单接口
7 */ 7 */
...@@ -12,6 +12,7 @@ const Api = { ...@@ -12,6 +12,7 @@ const Api = {
12 FORM_QUERY: '/srv/?a=query_form', 12 FORM_QUERY: '/srv/?a=query_form',
13 ADD_FORM_FIELD: '/srv/?a=add_form_field', 13 ADD_FORM_FIELD: '/srv/?a=add_form_field',
14 ADD_FORM_SETTING: '/srv/?a=add_form_setting', 14 ADD_FORM_SETTING: '/srv/?a=add_form_setting',
15 + QUERY_FORM_SETTING: '/srv/?a=query_form_setting',
15 } 16 }
16 17
17 /** 18 /**
...@@ -46,3 +47,14 @@ export const addFormFieldAPI = (params) => fn(fetch.post(Api.ADD_FORM_FIELD, par ...@@ -46,3 +47,14 @@ export const addFormFieldAPI = (params) => fn(fetch.post(Api.ADD_FORM_FIELD, par
46 * @param: setting_value 待设置的属性值。json数组,内部必须双引号。如果属性值是单值,数组只有一个元素。 47 * @param: setting_value 待设置的属性值。json数组,内部必须双引号。如果属性值是单值,数组只有一个元素。
47 */ 48 */
48 export const addFormSettingAPI = (params) => fn(fetch.post(Api.ADD_FORM_SETTING, params)); 49 export const addFormSettingAPI = (params) => fn(fetch.post(Api.ADD_FORM_SETTING, params));
50 +
51 +/**
52 + * @description: 查询表单的设置类组件的属性值
53 + * @param: form_code 表单唯一标识
54 + * @returns: enable 开启/停止表单 0=停止表单,1=开启表单
55 + * @returns: is_time_range 是否设定开启/停止时间 0=不设定,1=设定
56 + * @returns: is_count_down 是否显示停止倒计时 0=不显示,1-显示
57 + * @returns: begin_time 开启时间
58 + * @returns: end_time 停止时间
59 + */
60 +export const getFormSettingAPI = (params) => fn(fetch.get(Api.QUERY_FORM_SETTING, params));
......
...@@ -2,12 +2,12 @@ ...@@ -2,12 +2,12 @@
2 * @Author: hookehuyr hookehuyr@gmail.com 2 * @Author: hookehuyr hookehuyr@gmail.com
3 * @Date: 2022-05-31 12:06:19 3 * @Date: 2022-05-31 12:06:19
4 * @LastEditors: hookehuyr hookehuyr@gmail.com 4 * @LastEditors: hookehuyr hookehuyr@gmail.com
5 - * @LastEditTime: 2022-11-23 15:05:10 5 + * @LastEditTime: 2022-12-06 11:38:48
6 * @FilePath: /data-table/src/main.js 6 * @FilePath: /data-table/src/main.js
7 * @Description: 7 * @Description:
8 */ 8 */
9 import { createApp } from 'vue'; 9 import { createApp } from 'vue';
10 -import { Button, Image as VanImage, Col, Row, Icon, Form, Field, CellGroup, ConfigProvider, Toast, Uploader, Empty, Tab, Tabs, Overlay, NumberKeyboard, Lazyload, List, PullRefresh, Popup, Picker, Sticky, Stepper, Tag, Swipe, SwipeItem, Dialog, ActionSheet, Loading, Checkbox, Search, NavBar, Collapse, CollapseItem, RadioGroup, Radio, CheckboxGroup, Area, DatePicker, TimePicker, PickerGroup, Rate, Calendar, Divider, Popover } from 'vant'; 10 +import { Button, Image as VanImage, Col, Row, Icon, Form, Field, CellGroup, ConfigProvider, Toast, Uploader, Empty, Tab, Tabs, Overlay, NumberKeyboard, Lazyload, List, PullRefresh, Popup, Picker, Sticky, Stepper, Tag, Swipe, SwipeItem, Dialog, ActionSheet, Loading, Checkbox, Search, NavBar, Collapse, CollapseItem, RadioGroup, Radio, CheckboxGroup, Area, DatePicker, TimePicker, PickerGroup, Rate, Calendar, Divider, Popover, NoticeBar } from 'vant';
11 import router from './router'; 11 import router from './router';
12 import App from './App.vue'; 12 import App from './App.vue';
13 // import axios from './utils/axios'; 13 // import axios from './utils/axios';
...@@ -25,6 +25,6 @@ app.config.warnHandler = () => null; ...@@ -25,6 +25,6 @@ app.config.warnHandler = () => null;
25 25
26 app.config.globalProperties.$http = axios; // 关键语句 26 app.config.globalProperties.$http = axios; // 关键语句
27 27
28 -app.use(pinia).use(router).use(Button).use(VanImage).use(Col).use(Row).use(Icon).use(Form).use(Field).use(CellGroup).use(Toast).use(Uploader).use(Empty).use(Tab).use(Tabs).use(Overlay).use(NumberKeyboard).use(Lazyload).use(List).use(PullRefresh).use(Popup).use(Picker).use(Sticky).use(Stepper).use(Tag).use(Swipe).use(SwipeItem).use(Dialog).use(ActionSheet).use(Loading).use(Checkbox).use(Search).use(ConfigProvider).use(NavBar).use(Collapse).use(CollapseItem).use(Radio).use(RadioGroup).use(CheckboxGroup).use(Area).use(DatePicker).use(TimePicker).use(PickerGroup).use(Rate).use(Calendar).use(Divider).use(Popover); 28 +app.use(pinia).use(router).use(Button).use(VanImage).use(Col).use(Row).use(Icon).use(Form).use(Field).use(CellGroup).use(Toast).use(Uploader).use(Empty).use(Tab).use(Tabs).use(Overlay).use(NumberKeyboard).use(Lazyload).use(List).use(PullRefresh).use(Popup).use(Picker).use(Sticky).use(Stepper).use(Tag).use(Swipe).use(SwipeItem).use(Dialog).use(ActionSheet).use(Loading).use(Checkbox).use(Search).use(ConfigProvider).use(NavBar).use(Collapse).use(CollapseItem).use(Radio).use(RadioGroup).use(CheckboxGroup).use(Area).use(DatePicker).use(TimePicker).use(PickerGroup).use(Rate).use(Calendar).use(Divider).use(Popover).use(NoticeBar);
29 app.use(vueEsign) 29 app.use(vueEsign)
30 app.mount('#app'); 30 app.mount('#app');
......
1 /* 1 /*
2 * @Date: 2022-07-18 10:22:22 2 * @Date: 2022-07-18 10:22:22
3 * @LastEditors: hookehuyr hookehuyr@gmail.com 3 * @LastEditors: hookehuyr hookehuyr@gmail.com
4 - * @LastEditTime: 2022-12-05 16:58:59 4 + * @LastEditTime: 2022-12-06 11:31:14
5 * @FilePath: /data-table/src/route.js 5 * @FilePath: /data-table/src/route.js
6 * @Description: 文件描述 6 * @Description: 文件描述
7 */ 7 */
...@@ -17,4 +17,10 @@ export default [{ ...@@ -17,4 +17,10 @@ export default [{
17 meta: { 17 meta: {
18 title: '提交成功', 18 title: '提交成功',
19 } 19 }
20 +}, {
21 + path: '/stop',
22 + component: () => import('@/views/stop.vue'),
23 + meta: {
24 + title: '表单',
25 + }
20 }]; 26 }];
......
1 /* 1 /*
2 * @Date: 2022-04-18 15:59:42 2 * @Date: 2022-04-18 15:59:42
3 * @LastEditors: hookehuyr hookehuyr@gmail.com 3 * @LastEditors: hookehuyr hookehuyr@gmail.com
4 - * @LastEditTime: 2022-11-29 22:37:01 4 + * @LastEditTime: 2022-12-06 11:24:58
5 * @FilePath: /data-table/src/store/index.js 5 * @FilePath: /data-table/src/store/index.js
6 * @Description: 文件描述 6 * @Description: 文件描述
7 */ 7 */
...@@ -23,7 +23,8 @@ export const mainStore = defineStore('main', { ...@@ -23,7 +23,8 @@ export const mainStore = defineStore('main', {
23 scrollTopLike: 0, 23 scrollTopLike: 0,
24 scrollTopPerson: 0, 24 scrollTopPerson: 0,
25 keepPages: ['default'], // 很坑爹,空值全部都缓存 25 keepPages: ['default'], // 很坑爹,空值全部都缓存
26 - fieldName: '' 26 + fieldName: '',
27 + formSetting: {}, // 表单数据收集设置
27 }; 28 };
28 }, 29 },
29 getters: { 30 getters: {
...@@ -71,6 +72,9 @@ export const mainStore = defineStore('main', { ...@@ -71,6 +72,9 @@ export const mainStore = defineStore('main', {
71 }, 72 },
72 changeFieldName (v) { 73 changeFieldName (v) {
73 this.fieldName = v; 74 this.fieldName = v;
74 - } 75 + },
76 + changeFormSetting (v) {
77 + this.formSetting = v;
78 + },
75 }, 79 },
76 }); 80 });
......
...@@ -6,6 +6,13 @@ ...@@ -6,6 +6,13 @@
6 * @Description: 首页 6 * @Description: 首页
7 --> 7 -->
8 <template> 8 <template>
9 + <van-notice-bar
10 + v-if="notice_text"
11 + left-icon="volume-o"
12 + :text="notice_text"
13 + scrollable
14 + mode="closeable"
15 + />
9 <div class="table-box"> 16 <div class="table-box">
10 <van-image 17 <van-image
11 v-if="PHeader.type === '单张图'" 18 v-if="PHeader.type === '单张图'"
...@@ -73,6 +80,10 @@ import { addFormDataAPI } from "@/api/data.js"; ...@@ -73,6 +80,10 @@ import { addFormDataAPI } from "@/api/data.js";
73 import { showSuccessToast, showFailToast } from "vant"; 80 import { showSuccessToast, showFailToast } from "vant";
74 import { wxInfo } from "@/utils/tools"; 81 import { wxInfo } from "@/utils/tools";
75 import { styleColor } from "@/constant.js"; 82 import { styleColor } from "@/constant.js";
83 +
84 +const store = mainStore();
85 +// 获取表单设置
86 +const { formSetting } = storeToRefs(store);
76 // web端判断封面图片高度 87 // web端判断封面图片高度
77 const is_pc = computed(() => wxInfo().isPC); 88 const is_pc = computed(() => wxInfo().isPC);
78 const PHeaderHeight = computed(() => { 89 const PHeaderHeight = computed(() => {
...@@ -165,6 +176,7 @@ const setRefMap = (el, item) => { ...@@ -165,6 +176,7 @@ const setRefMap = (el, item) => {
165 } 176 }
166 } 177 }
167 }; 178 };
179 +const notice_text = ref("");
168 180
169 onMounted(async () => { 181 onMounted(async () => {
170 // TAG: 全局背景色 182 // TAG: 全局背景色
...@@ -222,6 +234,9 @@ onMounted(async () => { ...@@ -222,6 +234,9 @@ onMounted(async () => {
222 // 生成自定义组件 234 // 生成自定义组件
223 // createComponentType(mockData.value); 235 // createComponentType(mockData.value);
224 createComponentType(formData.value); 236 createComponentType(formData.value);
237 + //
238 + console.warn(formSetting.value);
239 + notice_text.value = "表单报名将在2022-12-21 12:32后结束";
225 }); 240 });
226 241
227 // 操作绑定自定义字段回调 242 // 操作绑定自定义字段回调
......
1 +<!--
2 + * @Date: 2022-06-29 18:18:02
3 + * @LastEditors: hookehuyr hookehuyr@gmail.com
4 + * @LastEditTime: 2022-06-29 18:18:09
5 + * @FilePath: /tswj/src/views/test/404.vue
6 + * @Description: 文件描述
7 +-->
8 +<template>
9 + <div class="stop-page">
10 + <div style="padding-top: 2rem; padding-bottom: 2rem; text-align: center">
11 + <van-image
12 + round
13 + width="10rem"
14 + height="10rem"
15 + style="vertical-align: bottom"
16 + :src="icon_success"
17 + />
18 + <p style="font-size: 1.05rem; margin: 0.5rem; font-weight: bold">表单停止提交</p>
19 + <!-- <p style="font-size: 0.9rem; margin-bottom: 0.5rem">您的作品正在审核中</p> -->
20 + <!-- <p style="font-size: 0.9rem">请耐心等待~~</p> -->
21 + </div>
22 + <!-- <div style="padding: 0 15% 1rem 15%">
23 + <div class="button-plain" :style="styleObj" @click="handle">返回</div>
24 + </div> -->
25 + </div>
26 +</template>
27 +
28 +<script setup>
29 +import { ref } from "vue";
30 +import { useRoute, useRouter } from "vue-router";
31 +import { styleColor } from "@/constant.js";
32 +import icon_success from "@images/que-sucess@2x.png";
33 +
34 +import {
35 + Cookies,
36 + $,
37 + _,
38 + axios,
39 + storeToRefs,
40 + mainStore,
41 + Toast,
42 + useTitle,
43 +} from "@/utils/generatePackage.js";
44 +//import { } from '@/utils/generateModules.js'
45 +//import { } from '@/utils/generateIcons.js'
46 +//import { } from '@/composables'
47 +const $route = useRoute();
48 +const $router = useRouter();
49 +useTitle($route.meta.title);
50 +
51 +const styleObj = {
52 + background: styleColor.baseColor,
53 + border: styleColor.baseColor,
54 + color: "#FFFFFF",
55 +};
56 +
57 +onMounted(() => {});
58 +
59 +const handle = () => {
60 + $router.go(-1);
61 +};
62 +</script>
63 +
64 +<style lang="less" scoped>
65 +.stop-page {
66 + .button-plain {
67 + width: auto;
68 + height: auto;
69 + text-align: center;
70 + padding: 0.6rem;
71 + margin: 0.5rem;
72 + font-size: 1rem;
73 + // background: @base-font-color;
74 + border-radius: 24px;
75 + // border: 1px solid @base-color;
76 + // color: @base-color;
77 + font-weight: bold;
78 + }
79 +}
80 +</style>