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

更新

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