Toggle navigation
Toggle navigation
This project
Loading...
Sign in
Hooke
/
data-table
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Graphs
Network
Create a new issue
Commits
Issue Boards
Authored by
hookehuyr
2022-12-06 11:43:11 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
a16348edc53c47c69f134ea0a97a5c290d4d6214
a16348ed
1 parent
210cd2e6
新增数据收集设置功能
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
156 additions
and
9 deletions
src/App.vue
src/api/form.js
src/main.js
src/route.js
src/store/index.js
src/views/index.vue
src/views/stop.vue
src/App.vue
View file @
a16348e
...
...
@@ -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>
...
...
src/api/form.js
View file @
a16348e
/*
* @Date: 2022-06-17 14:54:29
* @LastEditors: hookehuyr hookehuyr@gmail.com
* @LastEditTime: 2022-1
1-17 16:30:03
* @LastEditTime: 2022-1
2-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
));
...
...
src/main.js
View file @
a16348e
...
...
@@ -2,12 +2,12 @@
* @Author: hookehuyr hookehuyr@gmail.com
* @Date: 2022-05-31 12:06:19
* @LastEditors: hookehuyr hookehuyr@gmail.com
* @LastEditTime: 2022-1
1-23 15:05:10
* @LastEditTime: 2022-1
2-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'
);
...
...
src/route.js
View file @
a16348e
/*
* @Date: 2022-07-18 10:22:22
* @LastEditors: hookehuyr hookehuyr@gmail.com
* @LastEditTime: 2022-12-0
5 16:58:59
* @LastEditTime: 2022-12-0
6 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
:
'表单'
,
}
}];
...
...
src/store/index.js
View file @
a16348e
/*
* @Date: 2022-04-18 15:59:42
* @LastEditors: hookehuyr hookehuyr@gmail.com
* @LastEditTime: 2022-1
1-29 22:37:01
* @LastEditTime: 2022-1
2-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
;
},
},
});
...
...
src/views/index.vue
View file @
a16348e
...
...
@@ -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后结束";
});
// 操作绑定自定义字段回调
...
...
src/views/stop.vue
0 → 100644
View file @
a16348e
<!--
* @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>
Please
register
or
login
to post a comment