From e837f198083b5e55a0b76e34b70643198692f83c Mon Sep 17 00:00:00 2001 From: laishajiang <12977614+laishajiang@user.noreply.gitee.com> Date: Thu, 18 Apr 2024 09:52:15 +0800 Subject: [PATCH] =?UTF-8?q?pc=E7=AB=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/imgs/FaultUpload.jpg | Bin 0 -> 6369 bytes public/imgs/web_btn_delete.png | Bin 0 -> 872 bytes src/api/auth.js | 5 + src/api/sms.js | 3 + src/layout/Index.vue | 6 +- src/permission.js | 67 +-- src/router/index.js | 19 +- src/util/request.js | 11 +- src/util/validator copy.js | 132 ++++++ src/views/Home.vue | 81 +++- src/views/MailDetail.vue | 184 ++++++++ src/views/MailEvaluate.vue | 3 + src/views/RealNameAuth.vue | 46 ++ src/views/Write.vue | 166 ++++--- src/views/components/CorporateLogin.vue | 107 +++++ src/views/components/MailDraft.vue | 177 +++++++ src/views/components/MyMail.vue | 201 ++++++++ src/views/components/PersonLogin.vue | 19 + src/views/components/WriteInfo.vue | 604 ++++++++++++++++++++++++ 19 files changed, 1695 insertions(+), 136 deletions(-) create mode 100644 public/imgs/FaultUpload.jpg create mode 100644 public/imgs/web_btn_delete.png create mode 100644 src/util/validator copy.js create mode 100644 src/views/MailDetail.vue create mode 100644 src/views/MailEvaluate.vue create mode 100644 src/views/RealNameAuth.vue create mode 100644 src/views/components/CorporateLogin.vue create mode 100644 src/views/components/MailDraft.vue create mode 100644 src/views/components/MyMail.vue create mode 100644 src/views/components/PersonLogin.vue create mode 100644 src/views/components/WriteInfo.vue diff --git a/public/imgs/FaultUpload.jpg b/public/imgs/FaultUpload.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1097d8b206ae97ae0358879951cb0cefb2a12693 GIT binary patch literal 6369 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 KS^eDh!~X!(ZHQ?A literal 0 HcmV?d00001 diff --git a/public/imgs/web_btn_delete.png b/public/imgs/web_btn_delete.png new file mode 100644 index 0000000000000000000000000000000000000000..1b3c67b48e31917d87c35e9ea1e64e34eb9d2c6e GIT binary patch literal 872 zcmV-u1DE`XP)Px&B1uF+R9FecSUpP|Q53yzTv6O57Fw)pDv5)VP$?t5NnbAilFI4 zl!!=Dij5W)Dq>-8V_a?;MfYcW38`9Oa1wwxl ze2u9l30*2pAn6x?zpIrjVpr-Aai3K#_cLO%6iyQO^{?>jzah!A<=8n z5XGGX*ViJ;%Oa1DcDTsyuE^qISjQgq6x)^o#N3=nf4^@F{u0kW0J#fAuok{zI&|b& zTf-sUrZrp|emqa>m6d32;sKZV3PZxX;0kT`QJl;9Q?RhWnEHgHv9#n*nLFYJcTL_i zmr)V{cYgd%~k+HFG82i+xmx6~Sm;Q7-I}je0mj$-Q=7~~?S%hKIu;>{FjkcupL9rYQAm z!urE!XGQk+!~X13pGJU7d~<;zZX+?ay}j1S7Y*kH$GBuMxIPI~#n>f>PXEzS{|q=d zaJqyH^y8VqIF}HQxVEsKh+JU7rM9!9b$55VON{=E3vxu?69N8nQA0&yWp#x+ZhKqg z@-m2Zzx(<`rlv&l`FI~!WkqjO`<2Tqa);uho1#6%ju^Mg|6pO7?8bny9G#asMOkf6 z+XM(4B0+^I$5ED}dCGnhh2I^Ka-aD_Yr+OJQ}ds`z#=0N5aEzj%JRv??HdHdz5Q)J y$vo9lV7og -
+ +
+
+
\ No newline at end of file diff --git a/src/permission.js b/src/permission.js index 6e716e7..6bbbaea 100644 --- a/src/permission.js +++ b/src/permission.js @@ -3,7 +3,7 @@ import UserStore from "@/store/user" import { getToken } from '@/util/cookie' // 白名单 -const whiteList = ['/', '/mail/write']; +const whiteList = ['/', '/realName/auth']; router.beforeEach((to, from, next) => { const whiteFlag = whiteList.indexOf(to.path) !== -1; const userStore = UserStore(); @@ -14,38 +14,43 @@ router.beforeEach((to, from, next) => { return } if (!token) { - next('/'); + next('/realName/auth'); return } - // 已有用户信息 - if (userStore.user.id) { - // 判断用户是否进行了人脸认证 - if (userStore.user.idCard || to.path === '/realName/auth') { - // 判断是否是从信件页面回退到人脸认证界面的,如果是则返回首页 - if (to.path === '/realName/auth' && from.path === '/mail') { - next('/'); - return - } - next(); - return - } - next('/realName/auth'); + if (token) { + next(); return } - // 获取用户信息 - userStore.getUser().then(() => { - // 判断用户是否进行了人脸认证 - if (userStore.user.idCard || to.path === '/realName/auth') { - // 判断是否是从信件页面回退到人脸认证界面的,如果是则返回首页 - if (to.path === '/realName/auth' && from.path === '/mail') { - next('/'); - return - } - next(); - return - } - next('/realName/auth'); - }).catch((res) => { - next('/') - }) + // // 已有用户信息 + // if (userStore.user.id) { + // // 判断用户是否进行了人脸认证 + // if (userStore.user.idCard || to.path === '/realName/auth') { + // // 判断是否是从信件页面回退到人脸认证界面的,如果是则返回首页 + // if (to.path === '/realName/auth' && from.path === '/mail') { + // next('/'); + // return + // } + // next(); + // return + // } + // next('/realName/auth'); + // return + // } + // // 获取用户信息 + // userStore.getUser().then(() => { + // // 判断用户是否进行了人脸认证 + // if (userStore.user.idCard || to.path === '/realName/auth') { + // // 判断是否是从信件页面回退到人脸认证界面的,如果是则返回首页 + // if (to.path === '/realName/auth' && from.path === '/mail') { + // next('/'); + // return + // } + // next(); + // return + // } + // next('/realName/auth'); + // }).catch((res) => { + // next('/') + // }) + }) \ No newline at end of file diff --git a/src/router/index.js b/src/router/index.js index 99889be..8043b21 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -3,9 +3,10 @@ import { createRouter, createWebHistory } from 'vue-router' import Layout from '@/layout/Index.vue' import Home from '@/views/Home.vue' import Write from '@/views/Write.vue' - +import MailEvaluate from '@/views/MailEvaluate.vue' +import MailDetail from '@/views/MailDetail.vue' import NotFound from '@/views/error/404.vue' - +import RealNameAuth from '@/views/RealNameAuth.vue' const routes = [ { path: '/layout', @@ -18,7 +19,19 @@ const routes = [ { path: '/mail/write', component: Write, - } + }, + { + path: '/mail/evaluate', + component: MailEvaluate + }, + { + path: '/mail/:id', + component: MailDetail + }, + { + path: '/realName/auth', + component: RealNameAuth + }, ] }, { diff --git a/src/util/request.js b/src/util/request.js index dd540e1..d95ad86 100644 --- a/src/util/request.js +++ b/src/util/request.js @@ -47,7 +47,16 @@ export function del(url) { export function upload(data) { return post('/file/upload/base64', data) } - +export function uploadfile(url,data) { + return request(url, { + method: 'POST', + body: JSON.stringify(data), + headers: { + "Content-Type": 'multipart/form-data', + "Authorization": getToken() + } + }) +} function request(url, options) { return new Promise((resolve, reject) => { fetch(`${basePath}${url}`, { diff --git a/src/util/validator copy.js b/src/util/validator copy.js new file mode 100644 index 0000000..1dbcf14 --- /dev/null +++ b/src/util/validator copy.js @@ -0,0 +1,132 @@ +/** + * 验证身份证号码 + * @param { String } code 身份证号码 + */ +export function validatorIdCard(rule,code,callback) { + + // 身份证号前两位代表区域 + const city = { + 11: '北京', + 12: '天津', + 13: '河北', + 14: '山西', + 15: '内蒙古', + 21: '辽宁', + 22: '吉林', + 23: '黑龙江 ', + 31: '上海', + 32: '江苏', + 33: '浙江', + 34: '安徽', + 35: '福建', + 36: '江西', + 37: '山东', + 41: '河南', + 42: '湖北 ', + 43: '湖南', + 44: '广东', + 45: '广西', + 46: '海南', + 50: '重庆', + 51: '四川', + 52: '贵州', + 53: '云南', + 54: '西藏 ', + 61: '陕西', + 62: '甘肃', + 63: '青海', + 64: '宁夏', + 65: '新疆', + 71: '台湾', + 81: '香港', + 82: '澳门', + 91: '国外 ', + }; + const idCardReg = /^[1-9]\d{5}(19|20)?\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$/i; // 身份证格式正则表达式 + // 如果身份证不满足格式正则表达式 + if (!code) { + callback(new Error('请输入身份证号码')); + + } + if (!code.match(idCardReg)) { + callback(new Error('请输入正确的身份证号码')); + + } + if (!city[code.substr(0, 2)]) { + // 区域数组中不包含需验证的身份证前两位 + callback(new Error('请输入正确的身份证号码')); + + } + if (code.length === 18) { + // 18位身份证需要验证最后一位校验位 + code = code.split(''); + // ∑(ai×Wi)(mod 11) + // 加权因子 + const factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]; + // 校验位 + const parity = [1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2]; + let sum = 0; + let ai = 0; + let wi = 0; + for (let i = 0; i < 17; i++) { + ai = parseInt(code[i]); + wi = factor[i]; + sum += ai * wi; // 开始计算并相加 + } + const last = parity[sum % 11]; // 求余 + if (last.toString() !== code[17]) { + callback(new Error('请输入正确的身份证号码')); + } + } + return true +} + +/** + * 校验手机号 + * @param {*} phonenumber + * @returns + */ +export function validatorPhone(rule,phonenumber,callback) { + console.log("phonenumber"+phonenumber) + if (!phonenumber) { + callback(new Error('请输入手机号码')); + } + if (!/^1[3456789]\d{9}/.test(phonenumber)) { + callback(new Error('请输入正确的手机号码')); + } + return true +} + +/** + * 校验手机号 + * @param {*} phonenumber + * @returns + */ +export function Phone(phonenumber) { + if (!phonenumber) { + return '请输入手机号码'; + } + if (!/^1[3456789]\d{9}/.test(phonenumber)) { + return '请输入手机号码'; + } + return true +} + + +/** + * 校验内容长度 + * @param {*} content + * @returns + */ +export function validatorContent(rule,content,callback) { + if (!content) { + callback(new Error('请输入信件内容')); + } + if (content.length < 10) { + callback(new Error('信件内容不能少于 10 个字')); + } + if (content.length > 300) { + callback(new Error('信件内容不能多于 300 个字')); + } + return true +} \ No newline at end of file diff --git a/src/views/Home.vue b/src/views/Home.vue index 189e4e2..1afbc61 100644 --- a/src/views/Home.vue +++ b/src/views/Home.vue @@ -1,26 +1,30 @@ \ No newline at end of file diff --git a/src/views/MailDetail.vue b/src/views/MailDetail.vue new file mode 100644 index 0000000..39ec1dc --- /dev/null +++ b/src/views/MailDetail.vue @@ -0,0 +1,184 @@ + + + \ No newline at end of file diff --git a/src/views/MailEvaluate.vue b/src/views/MailEvaluate.vue new file mode 100644 index 0000000..6c57829 --- /dev/null +++ b/src/views/MailEvaluate.vue @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/src/views/RealNameAuth.vue b/src/views/RealNameAuth.vue new file mode 100644 index 0000000..bf41cbf --- /dev/null +++ b/src/views/RealNameAuth.vue @@ -0,0 +1,46 @@ + + + \ No newline at end of file diff --git a/src/views/Write.vue b/src/views/Write.vue index d7eb11c..112f0bf 100644 --- a/src/views/Write.vue +++ b/src/views/Write.vue @@ -1,78 +1,96 @@ + + + + + + + + + + + - - \ No newline at end of file +} +const handleClickOfWrite = (name) => { + console.log(chooseTab.value) + + chooseTab.value = 'isList' + +} + +function getChildMsg(msg) { + console.log("这就是子组件传过来的msg" + msg) + chooseTab.value = 'isDetail' + message.value = msg + console.log("aaa"+message.value) + +} +function getChildWriteMsg(msg) { + // console.log("这就是子组件传过来的msg" + msg) + activeName.value = msg + // console.log("aaa"+activeName.value) +} +function getMailDraftChildMsg(msg) { + activeName.value = "first" + console.log("这就是子组件传过来的msg" + msg) + message_draft.value = msg + console.log("message_draft"+message_draft.value) +} + + \ No newline at end of file diff --git a/src/views/components/CorporateLogin.vue b/src/views/components/CorporateLogin.vue new file mode 100644 index 0000000..334fd7b --- /dev/null +++ b/src/views/components/CorporateLogin.vue @@ -0,0 +1,107 @@ + + + \ No newline at end of file diff --git a/src/views/components/MailDraft.vue b/src/views/components/MailDraft.vue new file mode 100644 index 0000000..64592db --- /dev/null +++ b/src/views/components/MailDraft.vue @@ -0,0 +1,177 @@ + + + \ No newline at end of file diff --git a/src/views/components/MyMail.vue b/src/views/components/MyMail.vue new file mode 100644 index 0000000..0d2bbbb --- /dev/null +++ b/src/views/components/MyMail.vue @@ -0,0 +1,201 @@ + + + \ No newline at end of file diff --git a/src/views/components/PersonLogin.vue b/src/views/components/PersonLogin.vue new file mode 100644 index 0000000..1b600e9 --- /dev/null +++ b/src/views/components/PersonLogin.vue @@ -0,0 +1,19 @@ + + + \ No newline at end of file diff --git a/src/views/components/WriteInfo.vue b/src/views/components/WriteInfo.vue new file mode 100644 index 0000000..00efebd --- /dev/null +++ b/src/views/components/WriteInfo.vue @@ -0,0 +1,604 @@ + + + + + + \ No newline at end of file