123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208 |
- const {
- globalData: {
- util: {
- regeneratorRuntime,
- api: {
- guide,
- addCollect,
- delCollect,
- server,
- reservationServiceList,
- reservationSave,
- reservationDateStatus,
- sendVerifCode,
- verifSmsCode
- },
- navigate,
- navigate_native,
- navigate_auth_native,
- navigateBack,
- showTip,
- request: {
- get,
- get_auth,
- post_auth
- },
- extend: {
- dateLaters
- },
- getUserInfo,
- inputChange,
- pickerChange,
- appKey,
- md5,
- goSuccess,
- init,
- verify: {
- isPhone,
- form_verify
- }
- }
- }
- } = getApp(),
- t = {
- name: '请选择',
- list: [
- {
- name: '请选择',
- }
- ]
- },
- t_arr = ['请选择'],
- realNameTip = true,
- date_list = [t_arr, ...dateLaters(7).filter(([, x]) => !/[六|日]/.test(x))];
- let lock;
- Page({
- data: {
- date_list_range: date_list.map(x => x.join(' ')),
- dep_list: [t],
- verify: {
- applicantIdCard: "请输入证件号码",
- applicantIdType: "请输入证件类型",
- applicantName: "请输入预约姓名",
- applicantPhone: x => x ? !isPhone(x) && '您输入的电话格式不正确' : '请输入预约电话',
- checked: (x, { mask }) => mask && !x && '请先阅读预约须知',
- code: x => x.length != 4 && '请输入六位短信验证码',
- deptUnid: "请选择预约窗口",
- reservationDate: "请选择预约日期",
- reservationInterval: "请选择预约时段",
- serviceUnid: "请选择预约事项"
- }
- },
- onLoad({ unid }) {
- unid && this.setData({ flag: !!this.setHandleInfo(unid) })
- init(this).p_code = get(server, { code: 'CARDTYPE' }, { loading: true, loadingMsg: '加载证件列表...' }).then(code_list => {
- if (code_list._err) return []
- code_list = code_list.map(({ dictValueCode: id, dictValueName: name }) => ({ id, name }))
- this.setData({ code_list })
- return code_list
- })
- },
- async onShow() {
- lock = false
- const { num: applicantIdCard, code_type: applicantIdType, name: applicantName, phone: applicantPhone, _err } = await getUserInfo({ realNameTip, loading: true })
- if (_err) return _err.status && showTip('用户信息加载失败')
- this.setData({
- mask: false,
- checked: false,
- applicantIdCard,
- applicantName,
- applicantPhone,
- applicantIdType,
- code_index: applicantIdType ? Math.max((await this.p_code).map(({ id }) => id).indexOf(applicantIdType), 0) : 0
- })
- if (this.data.flag) return
- const dep_list = await get_auth(reservationServiceList, null, { loginTip: false });
- if (dep_list._err) return dep_list._err.status && showTip('部门列表加载失败')
- this.setData({ dep_list: [t, ...dep_list.map(({ deptName: name, deptUnid: id, serviceList: list }) => ({ id, name, list: [t, ...list.map(({ UNID: id, serviceName: name }) => ({ id, name }))] }))] })
- this._pickerChange('dep_index')
- },
- async send_verify_code() {
- let context = this, { data: { applicantPhone: phone, send_time } } = context;
- if (send_time) return
- if (!isPhone(phone))
- return showTip('您输入的电话格式不正确')
- let timeStamp = new Date().getTime() + '', sign = md5(md5(appKey).toUpperCase() + md5(timeStamp).toUpperCase()).toUpperCase()
- let { _err } = await get_auth(sendVerifCode, { phone, timeStamp, sign }, { loading: true, loadingMsg: '正在发送验证码...', })
- if (_err) return _err.status && showTip('验证码发送失败')
- showTip('发送成功')
- context._setData({ send_time: 60 });
- (function timer() {
- let { data: { send_time } } = context
- if (!send_time--) return
- context._setData({ send_time })
- setTimeout(timer, 1000)
- })()
- },
- async setHandleInfo(unid = '') {
- const { isCollect, preService: { serviceName = '', amStartTime = '', amEndTime = '', pmStartTime = '', pmEndTime = '', deptName = '', deptUnid = '' } = {}, _err } = unid ? await get_auth(guide, { unid, type: 2, }, { loading: true, loadingMsg: '事项信息获取中...' }) : { _err: { status: false } }
- this.setData({
- deptUnid,
- deptName,
- isCollect: isCollect == '1',
- serviceName,
- serviceUnid: unid,
- amTime: amStartTime && amEndTime ? `${amStartTime}-${amEndTime}` : '',
- pmTime: pmStartTime && pmEndTime ? `${pmStartTime}-${pmEndTime}` : ''
- })
- if (_err) return _err.status && showTip('获取信息失败')
- this._pickerChange('reservation_date_index', 1)
- },
- reserva_change({ currentTarget: { dataset: { val: reservationInterval } } }) {
- let { serviceUnid, [`${reservationInterval.toLowerCase()}Status`]: status } = this.data
- serviceUnid && status && this.setData({ reservationInterval })
- },
- async _pickerChange(_index, value = 0) {
- this.setData({ [_index]: value })
- let { dep_list, dep_index, serviceUnid, deptUnid, reservation_date_index, code_list } = this.data;
- switch (_index) {
- case 'dep_index':
- return this._pickerChange('matter_index')
- case 'matter_index':
- await this.setHandleInfo(dep_list[dep_index].list[value].id)
- return this._pickerChange('reservation_date_index', value && (reservation_date_index || 1))
- case 'reservation_date_index':
- let reservationDate = value ? date_list[value][0] : '', { amStatus = false, pmStatus = false } = value && await get_auth(reservationDateStatus, { reservationDate, deptUnid, serviceUnid }, { loading: true, loadingMsg: '预约信息获取中...' })
- return this.setData({ reservationDate, amStatus, pmStatus, reservationInterval: '' })
- case 'code_index':
- return this.setData({
- applicantIdType: code_list[value].id
- })
- }
- },
- async verify_code() {
- const msg = this.form_verify()
- if (msg) return showTip(msg)
- const { data } = this, { applicantPhone: phone, code } = data,
- { _err } = await get_auth(verifSmsCode, { phone, code }, { loading: true, loadingMsg: '信息验证中。。。', realNameTip })
- if (_err) return _err.status && showTip('短信验证码错误')
- this.setData({ mask: true, checked: false })
- },
- async formSubmit({ detail: { value } }) {
- const msg = this.form_verify(value)
- if (msg) return showTip(msg)
- let { id, _err } = await post_auth(reservationSave, value, { loading: true, loadingMsg: '信息提交中。。。', realNameTip })
- if (_err) return _err.status && showTip(`提交失败 ${_err.errmsg}`)
- goSuccess('reservation', id)
- },
- cancel() {
- this.setData({
- mask: false,
- checked: false
- })
- },
- async keep() {
- let
- {
- isCollect,
- serviceUnid,
- serviceName
- } = this.data
- if (!serviceUnid || lock) return
- lock = !this.setData({
- isCollect: !isCollect
- })
- let [req, url] = isCollect ? [get_auth, delCollect] : [post_auth, addCollect],
- { _err } = await req(url, {
- type: 2,
- serviceUnid,
- serviceName,
- })
- if (_err) {
- _err.status && showTip(`${isCollect ? "取消" : ""}收藏失败`)
- this.setData({
- isCollect: isCollect
- })
- }
- lock = false
- },
- checkboxChange({ detail: { value: [checked] } }) {
- this.setData({
- checked
- })
- },
- inputChange,
- pickerChange,
- navigateBack
- })
|