hookehuyr

新增数据收集设置功能

......@@ -29,12 +29,14 @@ import vConsole from "@/utils/vconsole";
// import { apiList } from '@/api/wx/jsApiList.js'
import { wxInfo } from "@/utils/tools";
import { styleColor } from "@/constant.js";
import { getFormSettingAPI } from "@/api/form.js";
// 使用 include + pinia 状态管理动态缓存页面
const store = mainStore();
const keepPages = computed(() => store.getKeepPages);
// // TAG: 全局设置页面标题
// const $route = useRoute();
const $route = useRoute();
// watchEffect(() => useTitle("表单标题"));
// 监听路由变化
// 切换路由页面返回顶部
......@@ -69,6 +71,34 @@ onMounted(async () => {
// wx.error((err) => {
// console.warn(err);
// });
// const { data } = await getFormSettingAPI({ form_code: $route.query.code });
// 数据收集设置
const { data } = await getFormSettingAPI({ form_code: "jxrteb" });
const form_setting = {};
if (data.length) {
data[0].property_list.forEach((prop) => {
const key = prop["property_code"];
const obj = {
[key]:
prop["setting_value"].length > 1
? prop["setting_value"]
: prop["setting_value"][0],
};
Object.assign(form_setting, obj);
});
}
// 缓存表单设置
store.changeFormSetting(form_setting);
// 判断跳转页面
if (form_setting.enable && form_setting.enable === 0) {
// 开启/停止表单
$router.push("/stop");
}
if (form_setting.is_time_range && form_setting.is_time_range === 0) {
// 是否设定开启/停止时间
// $router.push("/");
console.warn("是否设定开启/停止时间");
}
});
</script>
......
/*
* @Date: 2022-06-17 14:54:29
* @LastEditors: hookehuyr hookehuyr@gmail.com
* @LastEditTime: 2022-11-17 16:30:03
* @LastEditTime: 2022-12-06 11:22:36
* @FilePath: /data-table/src/api/form.js
* @Description: 表单接口
*/
......@@ -12,6 +12,7 @@ const Api = {
FORM_QUERY: '/srv/?a=query_form',
ADD_FORM_FIELD: '/srv/?a=add_form_field',
ADD_FORM_SETTING: '/srv/?a=add_form_setting',
QUERY_FORM_SETTING: '/srv/?a=query_form_setting',
}
/**
......@@ -46,3 +47,14 @@ export const addFormFieldAPI = (params) => fn(fetch.post(Api.ADD_FORM_FIELD, par
* @param: setting_value 待设置的属性值。json数组,内部必须双引号。如果属性值是单值,数组只有一个元素。
*/
export const addFormSettingAPI = (params) => fn(fetch.post(Api.ADD_FORM_SETTING, params));
/**
* @description: 查询表单的设置类组件的属性值
* @param: form_code 表单唯一标识
* @returns: enable 开启/停止表单 0=停止表单,1=开启表单
* @returns: is_time_range 是否设定开启/停止时间 0=不设定,1=设定
* @returns: is_count_down 是否显示停止倒计时 0=不显示,1-显示
* @returns: begin_time 开启时间
* @returns: end_time 停止时间
*/
export const getFormSettingAPI = (params) => fn(fetch.get(Api.QUERY_FORM_SETTING, params));
......
......@@ -2,12 +2,12 @@
* @Author: hookehuyr hookehuyr@gmail.com
* @Date: 2022-05-31 12:06:19
* @LastEditors: hookehuyr hookehuyr@gmail.com
* @LastEditTime: 2022-11-23 15:05:10
* @LastEditTime: 2022-12-06 11:38:48
* @FilePath: /data-table/src/main.js
* @Description:
*/
import { createApp } from 'vue';
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';
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';
import router from './router';
import App from './App.vue';
// import axios from './utils/axios';
......@@ -25,6 +25,6 @@ app.config.warnHandler = () => null;
app.config.globalProperties.$http = axios; // 关键语句
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);
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);
app.use(vueEsign)
app.mount('#app');
......
/*
* @Date: 2022-07-18 10:22:22
* @LastEditors: hookehuyr hookehuyr@gmail.com
* @LastEditTime: 2022-12-05 16:58:59
* @LastEditTime: 2022-12-06 11:31:14
* @FilePath: /data-table/src/route.js
* @Description: 文件描述
*/
......@@ -17,4 +17,10 @@ export default [{
meta: {
title: '提交成功',
}
}, {
path: '/stop',
component: () => import('@/views/stop.vue'),
meta: {
title: '表单',
}
}];
......
/*
* @Date: 2022-04-18 15:59:42
* @LastEditors: hookehuyr hookehuyr@gmail.com
* @LastEditTime: 2022-11-29 22:37:01
* @LastEditTime: 2022-12-06 11:24:58
* @FilePath: /data-table/src/store/index.js
* @Description: 文件描述
*/
......@@ -23,7 +23,8 @@ export const mainStore = defineStore('main', {
scrollTopLike: 0,
scrollTopPerson: 0,
keepPages: ['default'], // 很坑爹,空值全部都缓存
fieldName: ''
fieldName: '',
formSetting: {}, // 表单数据收集设置
};
},
getters: {
......@@ -71,6 +72,9 @@ export const mainStore = defineStore('main', {
},
changeFieldName (v) {
this.fieldName = v;
}
},
changeFormSetting (v) {
this.formSetting = v;
},
},
});
......
......@@ -6,6 +6,13 @@
* @Description: 首页
-->
<template>
<van-notice-bar
v-if="notice_text"
left-icon="volume-o"
:text="notice_text"
scrollable
mode="closeable"
/>
<div class="table-box">
<van-image
v-if="PHeader.type === '单张图'"
......@@ -73,6 +80,10 @@ import { addFormDataAPI } from "@/api/data.js";
import { showSuccessToast, showFailToast } from "vant";
import { wxInfo } from "@/utils/tools";
import { styleColor } from "@/constant.js";
const store = mainStore();
// 获取表单设置
const { formSetting } = storeToRefs(store);
// web端判断封面图片高度
const is_pc = computed(() => wxInfo().isPC);
const PHeaderHeight = computed(() => {
......@@ -165,6 +176,7 @@ const setRefMap = (el, item) => {
}
}
};
const notice_text = ref("");
onMounted(async () => {
// TAG: 全局背景色
......@@ -222,6 +234,9 @@ onMounted(async () => {
// 生成自定义组件
// createComponentType(mockData.value);
createComponentType(formData.value);
//
console.warn(formSetting.value);
notice_text.value = "表单报名将在2022-12-21 12:32后结束";
});
// 操作绑定自定义字段回调
......
<!--
* @Date: 2022-06-29 18:18:02
* @LastEditors: hookehuyr hookehuyr@gmail.com
* @LastEditTime: 2022-06-29 18:18:09
* @FilePath: /tswj/src/views/test/404.vue
* @Description: 文件描述
-->
<template>
<div class="stop-page">
<div style="padding-top: 2rem; padding-bottom: 2rem; text-align: center">
<van-image
round
width="10rem"
height="10rem"
style="vertical-align: bottom"
:src="icon_success"
/>
<p style="font-size: 1.05rem; margin: 0.5rem; font-weight: bold">表单停止提交</p>
<!-- <p style="font-size: 0.9rem; margin-bottom: 0.5rem">您的作品正在审核中</p> -->
<!-- <p style="font-size: 0.9rem">请耐心等待~~</p> -->
</div>
<!-- <div style="padding: 0 15% 1rem 15%">
<div class="button-plain" :style="styleObj" @click="handle">返回</div>
</div> -->
</div>
</template>
<script setup>
import { ref } from "vue";
import { useRoute, useRouter } from "vue-router";
import { styleColor } from "@/constant.js";
import icon_success from "@images/que-sucess@2x.png";
import {
Cookies,
$,
_,
axios,
storeToRefs,
mainStore,
Toast,
useTitle,
} from "@/utils/generatePackage.js";
//import { } from '@/utils/generateModules.js'
//import { } from '@/utils/generateIcons.js'
//import { } from '@/composables'
const $route = useRoute();
const $router = useRouter();
useTitle($route.meta.title);
const styleObj = {
background: styleColor.baseColor,
border: styleColor.baseColor,
color: "#FFFFFF",
};
onMounted(() => {});
const handle = () => {
$router.go(-1);
};
</script>
<style lang="less" scoped>
.stop-page {
.button-plain {
width: auto;
height: auto;
text-align: center;
padding: 0.6rem;
margin: 0.5rem;
font-size: 1rem;
// background: @base-font-color;
border-radius: 24px;
// border: 1px solid @base-color;
// color: @base-color;
font-weight: bold;
}
}
</style>