hookehuyr

配置pinia获取数据成功

......@@ -7,10 +7,8 @@ export {}
declare module '@vue/runtime-core' {
export interface GlobalComponents {
NutCol: typeof import('@nutui/nutui-taro')['Col']
NutConfigProvider: typeof import('@nutui/nutui-taro')['ConfigProvider']
NutDialog: typeof import('@nutui/nutui-taro')['Dialog']
NutRow: typeof import('@nutui/nutui-taro')['Row']
RouterLink: typeof import('vue-router')['RouterLink']
RouterView: typeof import('vue-router')['RouterView']
}
......
/*
* @Date: 2023-03-23 11:17:54
* @LastEditors: hookehuyr hookehuyr@gmail.com
* @LastEditTime: 2023-03-24 10:59:28
* @LastEditTime: 2023-03-24 13:49:26
* @FilePath: /custom_form/config/index.js
* @Description: 文件描述
*/
......@@ -47,6 +47,7 @@ const config = {
sourceRoot: 'src',
outputRoot: `dist/${process.env.TARO_ENV}`,
plugins: [
'taro-plugin-pinia',
'@tarojs/plugin-html',
[
'@tarojs/plugin-http',
......
......@@ -56,7 +56,8 @@
"@tarojs/taro": "3.6.2",
"axios-miniprogram": "^2.0.0-rc-2",
"dayjs": "^1.11.7",
"pinia": "^2.0.33",
"pinia": "2.0.10",
"taro-plugin-pinia": "^1.0.0",
"taro-plugin-style-resource": "^0.1.9",
"vue": "^3.0.0",
"weixin-js-sdk": "^1.6.0"
......
/*
* @Date: 2023-03-23 11:17:54
* @LastEditors: hookehuyr hookehuyr@gmail.com
* @LastEditTime: 2023-03-24 11:26:51
* @LastEditTime: 2023-03-24 13:13:44
* @FilePath: /custom_form/src/app.config.js
* @Description: 文件描述
*/
......
/*
* @Date: 2023-03-23 11:17:54
* @LastEditors: hookehuyr hookehuyr@gmail.com
* @LastEditTime: 2023-03-23 13:47:12
* @LastEditTime: 2023-03-24 14:14:27
* @FilePath: /custom_form/src/app.js
* @Description: 文件描述
*/
......@@ -10,7 +10,31 @@ import { createPinia } from 'pinia'
import './app.less'
const App = createApp({
onShow (options) {},
// 可以使用所有的 Vue 生命周期方法
mounted() {
},
// 对应 onLaunch
onLaunch(options) {
// // 未授权状态跳转授权页面,首页不需要权限
// const path = options.path;
// // 缓存没有权限的地址
// const router = routerStore();
// router.add(path);
// if (path !== 'pages/index/index' && !wx.getStorageSync("sessionid")) {
// wx.navigateTo({
// url: './pages/auth/index'
// })
// }
},
// 对应 onShow
onShow(options) {
},
// 对应 onHide
onHide() { },
// 入口组件不需要实现 render 方法,即使实现了也会被 taro 所覆盖
})
......
/*
* @Author: hookehuyr hookehuyr@gmail.com
* @Date: 2022-05-17 12:13:13
* @LastEditors: hookehuyr hookehuyr@gmail.com
* @LastEditTime: 2022-07-19 10:33:36
* @FilePath: /front/src/composables/index.js
* @Description:
*/
import { onMounted, onUnmounted } from 'vue'
/**
* 添加和清除 DOM 事件监听器
* @param {*} target
* @param {*} event
* @param {*} callback
*/
export function useEventListener(target, event, callback) {
onMounted(() => target?.addEventListener(event, callback))
onUnmounted(() => target?.removeEventListener(event, callback))
}
/*
* @Date: 2022-06-13 17:42:32
* @LastEditors: hookehuyr hookehuyr@gmail.com
* @LastEditTime: 2023-03-03 17:51:55
* @FilePath: /data-table/src/composables/useShare.js
* @Description: 文件描述
*/
import wx from 'weixin-js-sdk';
// import { Toast } from 'vant';
/**
* @description: 微信分享功能
* @param {*} title 标题
* @param {*} desc 描述
* @param {*} imgUrl 图标
* @return {*}
*/
export const sharePage = ({title = '自定义表单', desc = '数据收集', imgUrl = ''}) => {
const shareData = {
title, // 分享标题
desc, // 分享描述
link: location.origin + location.pathname + location.hash, // 分享链接,该链接域名或路径必须与当前页面对应的公众号 JS 安全域名一致
imgUrl, // 分享图标
success: function () {
console.warn('设置成功');
}
}
// 分享好友(微信好友或qq好友)
// wx.updateAppMessageShareData(shareData);
wx.onMenuShareAppMessage(shareData);
// 分享到朋友圈或qq空间
// wx.updateTimelineShareData(shareData);
wx.onMenuShareTimeline(shareData);
// 分享到腾讯微博
wx.onMenuShareWeibo(shareData);
// // 获取“分享给朋友”按钮点击状态及自定义分享内容接口(即将废弃)
// wx.onMenuShareAppMessage(shareData);
// // 获取“分享到朋友圈”按钮点击状态及自定义分享内容接口(即将废弃)
// wx.onMenuShareTimeline(shareData);
// // 获取“分享到QQ”按钮点击状态及自定义分享内容接口(即将废弃)
// wx.onMenuShareQQ(shareData);
}
......@@ -9,9 +9,6 @@
<script setup>
import { ref, computed, watchEffect, onMounted } from "vue";
import Taro from '@tarojs/taro'
import { useDidShow } from '@tarojs/taro'
import request from '@/utils/request';
import { storeToRefs } from 'pinia'
import { mainStore } from '@/stores'
import { wxInfo, getUrlParams } from "@/utils/tools";
// 初始化WX环境
......@@ -29,17 +26,20 @@ const themeVars = {
// web端判断
const is_pc = computed(() => process.env.TARO_ENV === 'h5' && wxInfo().isPC);
const store = mainStore();
const { formInfo } = storeToRefs(store);
const code = getUrlParams(location.href) ? getUrlParams(location.href).code : '';
const model = getUrlParams(location.href) ? getUrlParams(location.href).model : '';
const show_reach_sjsj_max_count = ref(false);
const onOk = () => {
show_reach_sjsj_max_count.value = false;
Taro.redirectTo({
url: `../table/index?code=${code}&model=${model}`
})
}
onMounted(async () => {
const code = getUrlParams(location.href) ? getUrlParams(location.href).code : '';
const model = getUrlParams(location.href) ? getUrlParams(location.href).model : '';
const store = mainStore();
const raw_url = encodeURIComponent(location.pathname + location.hash);
// 数据收集设置
const { data } = await getFormSettingAPI({ form_code: code });
......@@ -61,13 +61,6 @@ onMounted(async () => {
if (process.env.NODE_ENV !== 'development' && no_auth_info && form_setting.wxzq_scope) {
// 预览模式不开启
if (no_preview_model) {
// $router.replace({
// path: '/auth',
// query: {
// href: location.hash,
// code
// }
// });
Taro.redirectTo({
url: `../auth/index?href=${location.hash}&code=${code}`
})
......@@ -76,7 +69,6 @@ onMounted(async () => {
// 判断跳转页面
if (form_setting.sjsj_enable === 0 && !form_setting.sjsj_enable) {
// 表单已结束
// $router.push("/stop?status=disable");
Taro.navigateTo({
url: '../stop/index?status=disable'
})
......@@ -85,14 +77,12 @@ onMounted(async () => {
if (form_setting.sjsj_is_time_range && form_setting.sjsj_is_time_range) {
// 未开始
if (form_setting.server_time < form_setting.sjsj_begin_time) {
// $router.push("/stop?status=apply");
Taro.navigateTo({
url: '../stop/index?status=apply'
})
}
// 已结束
if (form_setting.server_time > form_setting.sjsj_end_time) {
// $router.push("/stop?status=finish");
Taro.navigateTo({
url: '../stop/index?status=finish'
})
......@@ -112,13 +102,8 @@ onMounted(async () => {
}
// 当数据量达到限额时,该表单将不能继续提交数据。
if (form_setting.is_reach_sjsj_max_count) {
// showDialog({
// title: '温馨提示',
// message: '表单收集量已达到限额,无法再提交数据。',
// theme: 'round-button',
// confirmButtonColor: styleColor.baseColor
// });
show_reach_sjsj_max_count.value = true;
return false;
}
// 设定填写次数
if (form_setting.wxzq_scope && no_preview_model) {
......
<!--
* @Date: 2023-03-24 09:19:27
* @LastEditors: hookehuyr hookehuyr@gmail.com
* @LastEditTime: 2023-03-24 09:20:19
* @LastEditTime: 2023-03-24 14:21:47
* @FilePath: /custom_form/src/pages/table/index.vue
* @Description: 文件描述
-->
<template>
<div class=""></div>
<div class="">table</div>
</template>
<script setup>
import { ref } from 'vue'
import wx from 'weixin-js-sdk'
import { ref, computed } from 'vue'
import _ from "@/utils/lodash";
import { storeToRefs } from 'pinia'
import { mainStore } from '@/stores'
import { queryFormAPI, postVerifyPasswordAPI } from "@/api/form.js";
import { addFormDataAPI } from "@/api/data.js";
import { wxInfo, getUrlParams } from "@/utils/tools";
import { styleColor } from "@/constant.js";
import { sharePage } from '@/composables/useShare.js'
// // 获取表单设置
const store = mainStore();
const { formSetting, formInfo } = storeToRefs(store);
// web端判断封面图片高度
const is_pc = computed(() => process.env.TARO_ENV === 'h5' && wxInfo().isPC);
const PHeaderHeight = computed(() => {
if (is_pc.value) {
return "35vh";
} else {
return "20vh";
}
});
// TAG: 自定义主题颜色
const themeVars = {
buttonPrimaryBackground: styleColor.baseColor,
buttonPrimaryBorderColor: styleColor.baseColor,
};
</script>
<style lang="less" scoped>
......
/*
* @Date: 2022-04-18 15:59:42
* @LastEditors: hookehuyr hookehuyr@gmail.com
* @LastEditTime: 2023-03-23 13:19:21
* @LastEditTime: 2023-03-24 14:04:54
* @FilePath: /custom_form/src/stores/index.js
* @Description: 文件描述
*/
......
This diff could not be displayed because it is too large.
......@@ -2335,7 +2335,7 @@
"@vue/compiler-dom" "3.2.47"
"@vue/shared" "3.2.47"
"@vue/devtools-api@^6.5.0":
"@vue/devtools-api@^6.0.0-beta.21":
version "6.5.0"
resolved "https://mirrors.cloud.tencent.com/npm/@vue/devtools-api/-/devtools-api-6.5.0.tgz#98b99425edee70b4c992692628fa1ea2c1e57d07"
integrity sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q==
......@@ -9792,12 +9792,12 @@ pify@^4.0.1:
resolved "https://mirrors.cloud.tencent.com/npm/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231"
integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==
pinia@^2.0.33:
version "2.0.33"
resolved "https://mirrors.cloud.tencent.com/npm/pinia/-/pinia-2.0.33.tgz#b70065be697874d5824e9792f59bd5d87ddb5e7d"
integrity sha512-HOj1yVV2itw6rNIrR2f7+MirGNxhORjrULL8GWgRwXsGSvEqIQ+SE0MYt6cwtpegzCda3i+rVTZM+AM7CG+kRg==
pinia@2.0.10:
version "2.0.10"
resolved "https://mirrors.cloud.tencent.com/npm/pinia/-/pinia-2.0.10.tgz#66ae65e10d9062d110cb8ce47aedf491b4b131ef"
integrity sha512-Gq8qCjWkz1SZSCrHqGg/k+wbeu35R7y44eDXFHJlBr5gZ8ooAf6bAHLt5zpAVIDptv09h0+XLZpy9dMHbwvXWw==
dependencies:
"@vue/devtools-api" "^6.5.0"
"@vue/devtools-api" "^6.0.0-beta.21"
vue-demi "*"
pinkie-promise@^2.0.0:
......@@ -12105,6 +12105,11 @@ taro-css-to-react-native@3.6.2:
css-mediaquery "^0.1.2"
postcss-value-parser "^3.3.0"
taro-plugin-pinia@^1.0.0:
version "1.0.0"
resolved "https://mirrors.cloud.tencent.com/npm/taro-plugin-pinia/-/taro-plugin-pinia-1.0.0.tgz#7dee620cc84303a4b4c2df50e649bae72c3b6ac0"
integrity sha512-Ip2LTRh7NGsFyEzkZWvU115xDqV3D8cRRbqqw0JKTvzHFBzpwycmrUVQQxV61AMg0r2RJm3mcEbQ997j7xNjtg==
taro-plugin-style-resource@^0.1.9:
version "0.1.9"
resolved "https://mirrors.cloud.tencent.com/npm/taro-plugin-style-resource/-/taro-plugin-style-resource-0.1.9.tgz#46448a384a8d96bbe4c363c8bed2d1c5ec031803"
......