提交 02d67aa2 authored 作者: 刘旭's avatar 刘旭

更新

上级 0f001c47
import request from "@/utils/request" import request from "@/utils/request";
/** /**
* @brief 查阅预约 * @brief 查阅预约
...@@ -10,5 +10,18 @@ export const referReservation = (data: any) => { ...@@ -10,5 +10,18 @@ export const referReservation = (data: any) => {
"/LQKJ.K3.FileSystem.WebApi.WebApiService.Select,LQKJ.K3.FileSystem.WebApi.common.kdsvc", "/LQKJ.K3.FileSystem.WebApi.WebApiService.Select,LQKJ.K3.FileSystem.WebApi.common.kdsvc",
"POST", "POST",
data data
) );
} };
/**
* @brief 查阅预约
* @param data
* @return
*/
export const pushMessaging = (data: any) => {
return request(
"/LQKJ.K3.FileSystem.WebApi.WebApiService.PushMessaging,LQKJ.K3.FileSystem.WebApi.common.kdsvc",
"POST",
data
);
};
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
class="time-item" class="time-item"
@tap="change(item, i)" @tap="change(item, i)"
> >
<view class="date">{{ item.date.split("-")[1] }}</view> <view class="date">{{ item.date.split("-")[2] }}</view>
<view class="week">{{ item.week }}</view> <view class="week">{{ item.week }}</view>
<view v-show="item.show" class="rest"></view> <view v-show="item.show" class="rest"></view>
<view v-show="!isFull(item) && !item.show" class="rest full"></view> <view v-show="!isFull(item) && !item.show" class="rest full"></view>
...@@ -31,7 +31,7 @@ ...@@ -31,7 +31,7 @@
class="time-item" class="time-item"
@tap="change(item, i)" @tap="change(item, i)"
> >
<view class="date">{{ item.date.split("-")[1] }}</view> <view class="date">{{ item.date.split("-")[2] }}</view>
<view class="week">{{ item.week }}</view> <view class="week">{{ item.week }}</view>
<view v-show="item.show" class="rest"></view> <view v-show="item.show" class="rest"></view>
<view v-show="!isFull(item) && !item.show" class="rest full"></view> <view v-show="!isFull(item) && !item.show" class="rest full"></view>
...@@ -83,15 +83,19 @@ ...@@ -83,15 +83,19 @@
</view> </view>
</view> </view>
<view v-show="wxtsPrompt" class="wxti-prompt"> <view v-show="prompt?.WXTSS?.FCONTENT" class="wxti-prompt">
<view class="wxti-prompt-detail">温馨提示:</view> <view class="wxti-prompt-detail">温馨提示:</view>
<view class="wxti-prompt-detail">{{ wxtsPrompt }}</view> <view class="wxti-prompt-detail">{{ prompt?.WXTSS?.FCONTENT }}</view>
</view> </view>
<u-button class="confirm-btn" type="primary" @tap="onConfirm" <u-button class="confirm-btn" type="primary" @tap="onConfirm"
>立即预约</u-button >立即预约</u-button
> >
<view v-show="wxtsxPromptShow" class="prompt">
<view class="prompt-title">温馨提示:</view>
<view class="prompt-detail">{{ prompt?.WXTSX?.FCONTENT }}</view>
</view>
<view v-show="show" class="prompt"> <view v-show="show" class="prompt">
<view class="prompt-title">温馨提示:</view> <view class="prompt-title">温馨提示:</view>
<!-- <view class="prompt-detail">{{ prompt }}</view> --> <!-- <view class="prompt-detail">{{ prompt }}</view> -->
...@@ -113,8 +117,8 @@ const props = defineProps({ ...@@ -113,8 +117,8 @@ const props = defineProps({
default: "", default: "",
}, },
show: Boolean, show: Boolean,
prompt: String, wxtsxPromptShow: Boolean,
wxtsPrompt: String, prompt: Object,
current: { current: {
type: Number, type: Number,
default: 0, default: 0,
...@@ -132,6 +136,7 @@ const props = defineProps({ ...@@ -132,6 +136,7 @@ const props = defineProps({
default: "", default: "",
}, },
}); });
console.log(props.prompt);
const emits = defineEmits(["change", "onConfirm"]); const emits = defineEmits(["change", "onConfirm"]);
......
...@@ -78,7 +78,7 @@ const paramsData = ref({} as any); ...@@ -78,7 +78,7 @@ const paramsData = ref({} as any);
const list = ref([] as any); const list = ref([] as any);
const tapItem = (row: string) => { const tapItem = (row: any) => {
if (row.FHANDLESTATES != "未办理") return; if (row.FHANDLESTATES != "未办理") return;
if (state.FID === row.FID) return (state.FID = ""); if (state.FID === row.FID) return (state.FID = "");
state.FID = row.FID; state.FID = row.FID;
...@@ -87,6 +87,7 @@ const tapItem = (row: string) => { ...@@ -87,6 +87,7 @@ const tapItem = (row: string) => {
const change = (e: any) => { const change = (e: any) => {
state.current = e; state.current = e;
state.FID = ""; state.FID = "";
list.value = [];
init(); init();
}; };
......
...@@ -4,7 +4,12 @@ ...@@ -4,7 +4,12 @@
<u-image src="../../static/img/Frame812.png" width="100%" height="100%" /> <u-image src="../../static/img/Frame812.png" width="100%" height="100%" />
</view> </view>
<view class="logo"> <view class="logo">
<u-image src="../../static/img/logo.png" width="100%" height="240rpx" /> <u-image
src="../../static/img/logo.png"
width="100%"
height="240rpx"
mode="aspectFit"
/>
<view class="logo-detail">档案系统</view> <view class="logo-detail">档案系统</view>
</view> </view>
...@@ -55,7 +60,7 @@ ...@@ -55,7 +60,7 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { toast, encrypt, decrypt } from "@/utils/util"; import { toast, decrypt } from "@/utils/util";
import { verification } from "@/api/deposit"; import { verification } from "@/api/deposit";
import { useGlobalStore } from "../../store/useStore"; import { useGlobalStore } from "../../store/useStore";
...@@ -72,7 +77,7 @@ const data = reactive({ ...@@ -72,7 +77,7 @@ const data = reactive({
{ {
required: true, required: true,
message: "请输入手机号", message: "请输入手机号",
trigger: ["change", "blur"], trigger: ["blur"],
}, },
{ {
// 自定义验证函数,见上说明 // 自定义验证函数,见上说明
...@@ -81,14 +86,14 @@ const data = reactive({ ...@@ -81,14 +86,14 @@ const data = reactive({
}, },
message: "手机号码不正确", message: "手机号码不正确",
// 触发器可以同时用blur和change // 触发器可以同时用blur和change
trigger: ["change", "blur"], trigger: ["blur"],
}, },
], ],
code: [ code: [
{ {
required: true, required: true,
message: "请输入验证码", message: "请输入验证码",
trigger: ["change", "blur"], trigger: ["blur"],
}, },
], ],
}, },
...@@ -145,6 +150,7 @@ watch( ...@@ -145,6 +150,7 @@ watch(
const getCode = async () => { const getCode = async () => {
if (uCode.value.canGetCode) { if (uCode.value.canGetCode) {
// 模拟向后端请求验证码 // 模拟向后端请求验证码
let timer: ReturnType<typeof setTimeout>;
const { data: res } = await verification(data.formData.phone); const { data: res } = await verification(data.formData.phone);
if (res.code == 200) { if (res.code == 200) {
data.codeValue = decrypt(res.data); data.codeValue = decrypt(res.data);
...@@ -154,7 +160,7 @@ const getCode = async () => { ...@@ -154,7 +160,7 @@ const getCode = async () => {
setTimeout(() => { setTimeout(() => {
uni.hideLoading(); uni.hideLoading();
clearTimeout(timer); clearTimeout(timer);
var timer = setTimeout(() => { timer = setTimeout(() => {
data.flag = false; data.flag = false;
}, 300000); }, 300000);
// 这里此提示会被this.start()方法中的提示覆盖 // 这里此提示会被this.start()方法中的提示覆盖
...@@ -177,8 +183,8 @@ onReady(() => { ...@@ -177,8 +183,8 @@ onReady(() => {
const submit = () => { const submit = () => {
form.value.validate(async (valid: boolean) => { form.value.validate(async (valid: boolean) => {
if (valid) { if (valid) {
// if (!data.flag) return toast("验证码失效"); if (!data.flag) return toast("验证码失效");
// if (data.formData.code != data.codeValue) return toast("验证码不正确"); if (data.formData.code != data.codeValue) return toast("验证码不正确");
globalStore.setPhone(data.formData.phone); globalStore.setPhone(data.formData.phone);
uni.reLaunch({ url: "/pages/myReservation/index" }); uni.reLaunch({ url: "/pages/myReservation/index" });
} }
......
...@@ -7,10 +7,13 @@ ...@@ -7,10 +7,13 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { appointmentConfig } from "@/api/transfer"; import { appointmentConfig } from "@/api/transfer";
import { useGlobalStore } from "@/store/useStore";
import { getUrlCode } from "@/utils/util";
import workGuide from "@/pages/workGuide/index.vue"; import workGuide from "@/pages/workGuide/index.vue";
import referForm from "./referForm.vue"; import referForm from "./referForm.vue";
const referFormRef = ref(); const referFormRef = ref();
const globalStore = useGlobalStore();
const paramsData = ref({} as any); const paramsData = ref({} as any);
// 初始化数据 // 初始化数据
...@@ -42,6 +45,11 @@ onReady(() => { ...@@ -42,6 +45,11 @@ onReady(() => {
init(); init();
referFormRef.value.initRules(); referFormRef.value.initRules();
}); });
onMounted(() => {
let code = getUrlCode().code;
if (code) globalStore.setCode(code);
});
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
......
...@@ -110,7 +110,7 @@ ...@@ -110,7 +110,7 @@
<script setup lang="ts"> <script setup lang="ts">
import { verification } from "@/api/transfer"; import { verification } from "@/api/transfer";
import { isXgIDCard, toast } from "@/utils/util"; import { decrypt, isXgIDCard, toast } from "@/utils/util";
import { useGlobalStore } from "@/store/useStore"; import { useGlobalStore } from "@/store/useStore";
import { depositReservation } from "@/api/deposit"; import { depositReservation } from "@/api/deposit";
...@@ -171,6 +171,13 @@ const state = reactive({ ...@@ -171,6 +171,13 @@ const state = reactive({
trigger: ["blur"], trigger: ["blur"],
}, },
], ],
code: [
{
required: true,
message: "请输入验证码",
trigger: ["blur"],
},
],
FDAIDCard1: [ FDAIDCard1: [
{ {
required: true, required: true,
...@@ -267,6 +274,7 @@ const state = reactive({ ...@@ -267,6 +274,7 @@ const state = reactive({
codeValue: "", codeValue: "",
codeDisabled: false, codeDisabled: false,
disabled: false, disabled: false,
flag: true,
}); });
watch( watch(
...@@ -302,9 +310,9 @@ const isExist = async (idCard: string, type: number = 1) => { ...@@ -302,9 +310,9 @@ const isExist = async (idCard: string, type: number = 1) => {
const submit = () => { const submit = () => {
form.value.validate(async (valid: boolean) => { form.value.validate(async (valid: boolean) => {
if (valid) { if (valid) {
// if (state.tips == "重新获取") return toast("验证码失效"); if (!state.flag) return toast("验证码失效");
// if (state.codeValue !== state.parmeters.Model.code) if (state.codeValue !== state.parmeters.Model.code)
// return toast("验证码不正确"); return toast("验证码不正确");
Reflect.deleteProperty(state.parmeters.Model, "code"); Reflect.deleteProperty(state.parmeters.Model, "code");
if (state.parmeters.Model.FReferToType == "本人查阅") { if (state.parmeters.Model.FReferToType == "本人查阅") {
const { isIdCard, msg } = await isExist( const { isIdCard, msg } = await isExist(
...@@ -343,27 +351,35 @@ const radioChange = (e: string) => { ...@@ -343,27 +351,35 @@ const radioChange = (e: string) => {
}; };
const getCode = async () => { const getCode = async () => {
if (state.codeDisabled || uniA.$u.test.mobile(state.parmeters.Model.code)) try {
return; // if (state.codeDisabled || uniA.$u.test.mobile(state.parmeters.Model.code))
// return toast("手机号为空或手机号格式不正确"); // return;
if (uCode.value.canGetCode) { if (!uCode.value.canGetCode) return toast("倒计时结束后再发送");
// 模拟向后端请求验证码 let timer: ReturnType<typeof setTimeout>;
const { data: res } = await verification( const { data: res } = await verification(
state.parmeters.Model.FPhoneNumber state.parmeters.Model.FPhoneNumber
); );
if (res.code == 200) {
state.codeValue = res.state; if (res.code === 200) {
state.codeValue = decrypt(res.data);
uni.showLoading({ uni.showLoading({
title: "正在获取验证码", title: "正在获取验证码",
}); });
setTimeout(() => { setTimeout(() => {
uni.hideLoading(); uni.hideLoading();
clearTimeout(timer);
timer = setTimeout(() => {
state.flag = false;
}, 300000);
toast("验证码已发送"); toast("验证码已发送");
uCode.value.start(); uCode.value.start();
}, 2000); }, 2000);
} }
} else { } catch (error) {
toast("倒计时结束后再发送"); console.error("获取验证码失败:", error);
// 处理错误逻辑,如显示错误提示等
} }
}; };
......
...@@ -2,9 +2,8 @@ ...@@ -2,9 +2,8 @@
<appointmentTime <appointmentTime
ref="appointmentTimeRef" ref="appointmentTimeRef"
time-title="选择预约时间" time-title="选择预约时间"
:show="!state.isReservation" :prompt="state.paramsData"
:prompt="state.paramsData?.WXTSX?.FCONTENT" :wxtsx-prompt-show="state.wxtsxPromptShow"
:wxts-prompt="state.paramsData?.WXTSS?.FCONTENT"
@change="reservationChange" @change="reservationChange"
@on-confirm="onConfirm" @on-confirm="onConfirm"
/> />
...@@ -12,18 +11,18 @@ ...@@ -12,18 +11,18 @@
<script setup lang="ts"> <script setup lang="ts">
import { selectDateTime, appointmentConfig } from "@/api/transfer"; import { selectDateTime, appointmentConfig } from "@/api/transfer";
import { referReservation } from "@/api/refer"; import { pushMessaging, referReservation } from "@/api/refer";
import { zconfirm, toast } from "@/utils/util"; import { zconfirm, toast } from "@/utils/util";
import { useGlobalStore } from "@/store/useStore"; import { useGlobalStore } from "@/store/useStore";
import appointmentTime from "@/components/appointmentTime.vue"; import appointmentTime from "@/components/appointmentTime.vue";
const globalStore = useGlobalStore(); const globalStore = useGlobalStore();
// pages/refer/referReservation
const appointmentTimeRef = ref(); const appointmentTimeRef = ref();
const state = reactive({ const state = reactive({
paramsData: {} as any, paramsData: {} as any,
parmeters: {} as any, parmeters: {} as any,
isReservation: false, isReservation: false,
wxtsxPromptShow: false,
fid: "", fid: "",
}); });
const list = ref([] as any); const list = ref([] as any);
...@@ -53,7 +52,20 @@ const onConfirm = () => { ...@@ -53,7 +52,20 @@ const onConfirm = () => {
parmeters: JSON.stringify(params), parmeters: JSON.stringify(params),
}); });
if (res.code === 200) { if (res.code === 200) {
state.isReservation = true; state.wxtsxPromptShow = true;
let pushParams = {
Code: globalStore.code,
FDatetime: "", //预约时间
YYType: "档案查阅", //预约类型:档案移交,档案查阅
};
list.value.map((item: any) => {
[...item.morning, ...item.afternoon].map((col: any) => {
if (col.FEntryID == state.fid) {
pushParams.FDatetime = item.date + " " + col.Time + ":00";
}
});
});
await pushMessaging(pushParams);
appointmentTimeRef.value.FEntryID = null; appointmentTimeRef.value.FEntryID = null;
await init(); await init();
await toast("查阅预约成功"); await toast("查阅预约成功");
...@@ -73,6 +85,7 @@ const initAppointmentConfig = async () => { ...@@ -73,6 +85,7 @@ const initAppointmentConfig = async () => {
state.paramsData.WXTSX = item.WXTSX[0]; state.paramsData.WXTSX = item.WXTSX[0];
} }
}); });
console.log(state.paramsData);
} }
}; };
......
...@@ -73,7 +73,7 @@ ...@@ -73,7 +73,7 @@
<script setup lang="ts"> <script setup lang="ts">
import { useGlobalStore } from "@/store/useStore"; import { useGlobalStore } from "@/store/useStore";
import { toast, isXgIDCard } from "@/utils/util"; import { toast, isXgIDCard, getUrlCode, decrypt } from "@/utils/util";
import { verification, appointmentConfig } from "@/api/transfer"; import { verification, appointmentConfig } from "@/api/transfer";
import workGuide from "@/pages/workGuide/index.vue"; import workGuide from "@/pages/workGuide/index.vue";
...@@ -144,17 +144,18 @@ const data = reactive({ ...@@ -144,17 +144,18 @@ const data = reactive({
trigger: ["change", "blur"], trigger: ["change", "blur"],
}, },
], ],
// code: [ code: [
// { {
// required: true, required: true,
// message: "请输入验证码", message: "请输入验证码",
// trigger: [ "blur"], trigger: ["blur"],
// }, },
// ], ],
}, },
tips: "", tips: "",
codeValue: "", codeValue: "",
codeDisabled: true, codeDisabled: true,
flag: true,
paramsData: {} as any, paramsData: {} as any,
}); });
...@@ -177,18 +178,23 @@ watch( ...@@ -177,18 +178,23 @@ watch(
); );
const getCode = async () => { const getCode = async () => {
if (data.codeDisabled || uniA.$u.test.mobile(data.parmeters.Model.code)) // if (data.codeDisabled || uniA.$u.test.mobile(data.parmeters.Model.code))
return; // return;
if (uCode.value.canGetCode) { if (uCode.value.canGetCode) {
let timer: ReturnType<typeof setTimeout>;
// 模拟向后端请求验证码 // 模拟向后端请求验证码
const { data: res } = await verification(data.parmeters.Model.FPhoneNumber); const { data: res } = await verification(data.parmeters.Model.FPhoneNumber);
if (res.code == 200) { if (res.code == 200) {
data.codeValue = res.data; data.codeValue = decrypt(res.data);
uni.showLoading({ uni.showLoading({
title: "正在获取验证码", title: "正在获取验证码",
}); });
setTimeout(() => { setTimeout(() => {
uni.hideLoading(); uni.hideLoading();
clearTimeout(timer);
timer = setTimeout(() => {
data.flag = false;
}, 300000);
toast("验证码已发送"); toast("验证码已发送");
uCode.value.start(); uCode.value.start();
}, 2000); }, 2000);
...@@ -211,9 +217,9 @@ const start = () => { ...@@ -211,9 +217,9 @@ const start = () => {
const submit = () => { const submit = () => {
form.value.validate(async (valid: boolean) => { form.value.validate(async (valid: boolean) => {
if (valid) { if (valid) {
// if (data.tips == "重新获取") return toast("验证码失效") if (!data.flag) return toast("验证码失效");
// if (data.codeValue !== data.parmeters.Model.code) if (data.codeValue !== data.parmeters.Model.code)
// return toast("验证码不正确") return toast("验证码不正确");
Reflect.deleteProperty(data.parmeters.Model, "code"); Reflect.deleteProperty(data.parmeters.Model, "code");
globalStore.setTransferData(data.parmeters); globalStore.setTransferData(data.parmeters);
uni.navigateTo({ url: "/pages/transfer/reservation" }); uni.navigateTo({ url: "/pages/transfer/reservation" });
...@@ -245,6 +251,11 @@ onReady(async () => { ...@@ -245,6 +251,11 @@ onReady(async () => {
// console.log(data.paramsData); // console.log(data.paramsData);
} }
}); });
onMounted(() => {
let code = getUrlCode().code;
if (code) globalStore.setCode(code);
});
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
......
...@@ -30,6 +30,7 @@ import { baseUrl } from "@/utils/request"; ...@@ -30,6 +30,7 @@ import { baseUrl } from "@/utils/request";
import { useGlobalStore } from "@/store/useStore"; import { useGlobalStore } from "@/store/useStore";
import { hLoading, sLoading, toast, zconfirm } from "@/utils/util"; import { hLoading, sLoading, toast, zconfirm } from "@/utils/util";
import { selectDateTime, appointmentConfig } from "@/api/transfer"; import { selectDateTime, appointmentConfig } from "@/api/transfer";
import { pushMessaging } from "@/api/refer";
import appointmentTime from "@/components/appointmentTime.vue"; import appointmentTime from "@/components/appointmentTime.vue";
const uniA: any = uni; const uniA: any = uni;
...@@ -102,15 +103,22 @@ const upload = (type: number) => { ...@@ -102,15 +103,22 @@ const upload = (type: number) => {
const res = JSON.parse(uploadFileRes.data); const res = JSON.parse(uploadFileRes.data);
if (res.code === 200) { if (res.code === 200) {
state.isReservation = true; state.isReservation = true;
let pushParams = {
Code: globalStore.code,
FDatetime: "", //预约时间
YYType: "档案移交", //预约类型:档案移交,档案查阅
};
list.value.map((item: any) => { list.value.map((item: any) => {
[...item.morning, ...item.afternoon].map((col: any) => { [...item.morning, ...item.afternoon].map((col: any) => {
if (col.FEntryID == state.fid) { if (col.FEntryID == state.fid) {
pushParams.FDatetime = item.date + " " + col.Time + ":00";
state.successDate = `${item.date.split("-")[0]}${ state.successDate = `${item.date.split("-")[0]}${
item.date.split("-")[1] item.date.split("-")[1]
}${parseInt(col.Time?.split(":")[0], 10).toString()}`; }${parseInt(col.Time?.split(":")[0], 10).toString()}`;
} }
}); });
}); });
await pushMessaging(pushParams);
appointmentTimeRef.value.FEntryID = null; appointmentTimeRef.value.FEntryID = null;
fileUrl.value = null; fileUrl.value = null;
await init(); await init();
......
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
src="@/static/img/logo.png" src="@/static/img/logo.png"
width="100%" width="100%"
height="240rpx" height="240rpx"
mode="aspectFit"
border-radius="15" border-radius="15"
/> />
<view class="logo-detail">{{ title }}</view> <view class="logo-detail">{{ title }}</view>
......
...@@ -10,6 +10,7 @@ export const useGlobalStore = defineStore({ ...@@ -10,6 +10,7 @@ export const useGlobalStore = defineStore({
referData: null, referData: null,
infoData: {} as any, infoData: {} as any,
phone: "", phone: "",
code: "",
}; };
}, },
getters: {}, getters: {},
...@@ -26,6 +27,9 @@ export const useGlobalStore = defineStore({ ...@@ -26,6 +27,9 @@ export const useGlobalStore = defineStore({
setPhone(phone: string) { setPhone(phone: string) {
this.phone = phone; this.phone = phone;
}, },
setCode(code: string) {
this.code = code;
},
}, },
persist: piniaPersistOption("globalStore"), persist: piniaPersistOption("globalStore"),
}); });
......
...@@ -42,7 +42,6 @@ function request( ...@@ -42,7 +42,6 @@ function request(
} else { } else {
console.log(res.data.Result, "非200错误"); console.log(res.data.Result, "非200错误");
if (!res.data.hasOwnProperty("code")) return resolve(res.data); if (!res.data.hasOwnProperty("code")) return resolve(res.data);
// res.data.has
//其余异样 //其余异样
reject(res); reject(res);
} }
......
...@@ -184,3 +184,17 @@ export const isXgIDCard = (str: string) => { ...@@ -184,3 +184,17 @@ export const isXgIDCard = (str: string) => {
return false; return false;
} }
}; };
// 截取url中的code方法
export const getUrlCode = () => {
const url = location.search;
const theRequest: any = new Object();
if (url.indexOf("?") != -1) {
const str = url.substr(1);
const strs = str.split("&");
for (let i: any = 0; i < strs.length; i++) {
theRequest[strs[i].split("=")[0]] = strs[i].split("=")[1];
}
}
return theRequest;
};
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论