import{d as p,r as c,o as _,c as r,a as e,b as l,w as d,e as i,f as t,p as h,g as m,_ as u}from"./index-yE18koBL.js";const s=o=>(h("data-v-7bdb0e8f"),o=o(),m(),o),f={class:"nopage"},b=s(()=>e("span",{style:{color:"#0074D9"}},"4",-1)),y=s(()=>e("span",{style:{color:"#67C23A"}},"0",-1)),g=s(()=>e("span",{style:{color:"#0074D9"}},"4",-1)),v=s(()=>e("p",null,"你页面走丢了~",-1)),x=p({__name:"404",setup(o){const a=()=>{sessionStorage.pageType=="company"?t.push("/manage/home"):sessionStorage.pageType=="personal"?t.push("/jobseeker/home"):t.push("/job/home")};return(C,S)=>{const n=c("a-button");return _(),r("div",f,[b,y,g,e("div",null,[v,e("p",null,[l(n,{type:"primary",onClick:a},{default:d(()=>[i("返回首页")]),_:1})])])])}}}),I=u(x,[["__scopeId","data-v-7bdb0e8f"]]);export{I as default}; | |||||
import{d as p,r as c,o as _,c as r,a as e,b as l,w as d,e as i,f as t,p as h,g as m,_ as u}from"./index-1KOpwZRJ.js";const s=o=>(h("data-v-7bdb0e8f"),o=o(),m(),o),f={class:"nopage"},b=s(()=>e("span",{style:{color:"#0074D9"}},"4",-1)),y=s(()=>e("span",{style:{color:"#67C23A"}},"0",-1)),g=s(()=>e("span",{style:{color:"#0074D9"}},"4",-1)),v=s(()=>e("p",null,"你页面走丢了~",-1)),x=p({__name:"404",setup(o){const a=()=>{sessionStorage.pageType=="company"?t.push("/manage/home"):sessionStorage.pageType=="personal"?t.push("/jobseeker/home"):t.push("/job/home")};return(C,S)=>{const n=c("a-button");return _(),r("div",f,[b,y,g,e("div",null,[v,e("p",null,[l(n,{type:"primary",onClick:a},{default:d(()=>[i("返回首页")]),_:1})])])])}}}),I=u(x,[["__scopeId","data-v-7bdb0e8f"]]);export{I as default}; |
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> | <meta name="viewport" content="width=device-width, initial-scale=1.0" /> | ||||
<script src="https://map.qq.com/api/gljs?v=1.exp&key=MPBBZ-HUICZ-EGRXB-7AHZI-R4GQZ-QWBSO"></script> | <script src="https://map.qq.com/api/gljs?v=1.exp&key=MPBBZ-HUICZ-EGRXB-7AHZI-R4GQZ-QWBSO"></script> | ||||
<title>菊城人才网</title> | <title>菊城人才网</title> | ||||
<script type="module" crossorigin src="/assets/index-yE18koBL.js"></script> | |||||
<link rel="stylesheet" crossorigin href="/assets/index-1PIseYT9.css"> | |||||
<script type="module" crossorigin src="/assets/index-1KOpwZRJ.js"></script> | |||||
<link rel="stylesheet" crossorigin href="/assets/index-ia0wri7Z.css"> | |||||
</head> | </head> | ||||
<body> | <body> | ||||
<div id="app"></div> | <div id="app"></div> |
"ant-design-vue": "^4.1.0", | "ant-design-vue": "^4.1.0", | ||||
"axios": "^1.6.4", | "axios": "^1.6.4", | ||||
"dayjs": "^1.11.10", | "dayjs": "^1.11.10", | ||||
"file-saver": "^2.0.5", | |||||
"he": "^1.2.0", | "he": "^1.2.0", | ||||
"html-docx-js-typescript": "^0.1.5", | |||||
"less": "^4.2.0", | "less": "^4.2.0", | ||||
"less-loader": "^11.1.3", | "less-loader": "^11.1.3", | ||||
"vue": "^3.3.11", | "vue": "^3.3.11", | ||||
"balanced-match": "^1.0.0" | "balanced-match": "^1.0.0" | ||||
} | } | ||||
}, | }, | ||||
"node_modules/browser-or-node": { | |||||
"version": "1.3.0", | |||||
"resolved": "https://registry.npmmirror.com/browser-or-node/-/browser-or-node-1.3.0.tgz", | |||||
"integrity": "sha512-0F2z/VSnLbmEeBcUrSuDH5l0HxTXdQQzLjkmBR4cYfvg1zJrKSlmIZFqyFR8oX0NrwPhy3c3HQ6i3OxMbew4Tg==" | |||||
}, | |||||
"node_modules/browserslist": { | "node_modules/browserslist": { | ||||
"version": "4.22.2", | "version": "4.22.2", | ||||
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz", | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz", | ||||
"url": "https://opencollective.com/core-js" | "url": "https://opencollective.com/core-js" | ||||
} | } | ||||
}, | }, | ||||
"node_modules/core-util-is": { | |||||
"version": "1.0.3", | |||||
"resolved": "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.3.tgz", | |||||
"integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" | |||||
}, | |||||
"node_modules/csstype": { | "node_modules/csstype": { | ||||
"version": "3.1.3", | "version": "3.1.3", | ||||
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", | "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", | ||||
"integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", | ||||
"peer": true | "peer": true | ||||
}, | }, | ||||
"node_modules/file-saver": { | |||||
"version": "2.0.5", | |||||
"resolved": "https://registry.npmmirror.com/file-saver/-/file-saver-2.0.5.tgz", | |||||
"integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==" | |||||
}, | |||||
"node_modules/follow-redirects": { | "node_modules/follow-redirects": { | ||||
"version": "1.15.4", | "version": "1.15.4", | ||||
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz", | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz", | ||||
"he": "bin/he" | "he": "bin/he" | ||||
} | } | ||||
}, | }, | ||||
"node_modules/html-docx-js-typescript": { | |||||
"version": "0.1.5", | |||||
"resolved": "https://registry.npmmirror.com/html-docx-js-typescript/-/html-docx-js-typescript-0.1.5.tgz", | |||||
"integrity": "sha512-GNojWFDYbpHSIgKml6/0oAom8mtHrHRTWKMyLRdeJQHO/CyeM6H39DYgzYvPp4OhBp2Ti8dxMKFq0/FkpYD4bg==", | |||||
"dependencies": { | |||||
"browser-or-node": "^1.2.1", | |||||
"jszip": "^3.4.0", | |||||
"tslib": "^1.13.0" | |||||
} | |||||
}, | |||||
"node_modules/html-docx-js-typescript/node_modules/tslib": { | |||||
"version": "1.14.1", | |||||
"resolved": "https://registry.npmmirror.com/tslib/-/tslib-1.14.1.tgz", | |||||
"integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" | |||||
}, | |||||
"node_modules/iconv-lite": { | "node_modules/iconv-lite": { | ||||
"version": "0.6.3", | "version": "0.6.3", | ||||
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", | ||||
"node": ">=0.10.0" | "node": ">=0.10.0" | ||||
} | } | ||||
}, | }, | ||||
"node_modules/immediate": { | |||||
"version": "3.0.6", | |||||
"resolved": "https://registry.npmmirror.com/immediate/-/immediate-3.0.6.tgz", | |||||
"integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" | |||||
}, | |||||
"node_modules/inherits": { | |||||
"version": "2.0.4", | |||||
"resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz", | |||||
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" | |||||
}, | |||||
"node_modules/is-arguments": { | "node_modules/is-arguments": { | ||||
"version": "1.1.1", | "version": "1.1.1", | ||||
"resolved": "https://registry.npmmirror.com/is-arguments/-/is-arguments-1.1.1.tgz", | "resolved": "https://registry.npmmirror.com/is-arguments/-/is-arguments-1.1.1.tgz", | ||||
"resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", | "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", | ||||
"integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==" | "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==" | ||||
}, | }, | ||||
"node_modules/isarray": { | |||||
"version": "1.0.0", | |||||
"resolved": "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz", | |||||
"integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" | |||||
}, | |||||
"node_modules/jest-worker": { | "node_modules/jest-worker": { | ||||
"version": "27.5.1", | "version": "27.5.1", | ||||
"resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", | "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", | ||||
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", | ||||
"peer": true | "peer": true | ||||
}, | }, | ||||
"node_modules/jszip": { | |||||
"version": "3.10.1", | |||||
"resolved": "https://registry.npmmirror.com/jszip/-/jszip-3.10.1.tgz", | |||||
"integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", | |||||
"dependencies": { | |||||
"lie": "~3.3.0", | |||||
"pako": "~1.0.2", | |||||
"readable-stream": "~2.3.6", | |||||
"setimmediate": "^1.0.5" | |||||
} | |||||
}, | |||||
"node_modules/less": { | "node_modules/less": { | ||||
"version": "4.2.0", | "version": "4.2.0", | ||||
"resolved": "https://registry.npmjs.org/less/-/less-4.2.0.tgz", | "resolved": "https://registry.npmjs.org/less/-/less-4.2.0.tgz", | ||||
"webpack": "^5.0.0" | "webpack": "^5.0.0" | ||||
} | } | ||||
}, | }, | ||||
"node_modules/lie": { | |||||
"version": "3.3.0", | |||||
"resolved": "https://registry.npmmirror.com/lie/-/lie-3.3.0.tgz", | |||||
"integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", | |||||
"dependencies": { | |||||
"immediate": "~3.0.5" | |||||
} | |||||
}, | |||||
"node_modules/loader-runner": { | "node_modules/loader-runner": { | ||||
"version": "4.3.0", | "version": "4.3.0", | ||||
"resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", | "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", | ||||
"node": ">= 0.4" | "node": ">= 0.4" | ||||
} | } | ||||
}, | }, | ||||
"node_modules/pako": { | |||||
"version": "1.0.11", | |||||
"resolved": "https://registry.npmmirror.com/pako/-/pako-1.0.11.tgz", | |||||
"integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" | |||||
}, | |||||
"node_modules/parchment": { | "node_modules/parchment": { | ||||
"version": "1.1.4", | "version": "1.1.4", | ||||
"resolved": "https://registry.npmmirror.com/parchment/-/parchment-1.1.4.tgz", | "resolved": "https://registry.npmmirror.com/parchment/-/parchment-1.1.4.tgz", | ||||
"node": "^10 || ^12 || >=14" | "node": "^10 || ^12 || >=14" | ||||
} | } | ||||
}, | }, | ||||
"node_modules/process-nextick-args": { | |||||
"version": "2.0.1", | |||||
"resolved": "https://registry.npmmirror.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz", | |||||
"integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" | |||||
}, | |||||
"node_modules/proxy-from-env": { | "node_modules/proxy-from-env": { | ||||
"version": "1.1.0", | "version": "1.1.0", | ||||
"resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", | "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", | ||||
"safe-buffer": "^5.1.0" | "safe-buffer": "^5.1.0" | ||||
} | } | ||||
}, | }, | ||||
"node_modules/readable-stream": { | |||||
"version": "2.3.8", | |||||
"resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz", | |||||
"integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", | |||||
"dependencies": { | |||||
"core-util-is": "~1.0.0", | |||||
"inherits": "~2.0.3", | |||||
"isarray": "~1.0.0", | |||||
"process-nextick-args": "~2.0.0", | |||||
"safe-buffer": "~5.1.1", | |||||
"string_decoder": "~1.1.1", | |||||
"util-deprecate": "~1.0.1" | |||||
} | |||||
}, | |||||
"node_modules/readable-stream/node_modules/safe-buffer": { | |||||
"version": "5.1.2", | |||||
"resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", | |||||
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" | |||||
}, | |||||
"node_modules/regenerator-runtime": { | "node_modules/regenerator-runtime": { | ||||
"version": "0.14.1", | "version": "0.14.1", | ||||
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", | ||||
"node": ">= 0.4" | "node": ">= 0.4" | ||||
} | } | ||||
}, | }, | ||||
"node_modules/setimmediate": { | |||||
"version": "1.0.5", | |||||
"resolved": "https://registry.npmmirror.com/setimmediate/-/setimmediate-1.0.5.tgz", | |||||
"integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" | |||||
}, | |||||
"node_modules/shallow-equal": { | "node_modules/shallow-equal": { | ||||
"version": "1.2.1", | "version": "1.2.1", | ||||
"resolved": "https://registry.npmjs.org/shallow-equal/-/shallow-equal-1.2.1.tgz", | "resolved": "https://registry.npmjs.org/shallow-equal/-/shallow-equal-1.2.1.tgz", | ||||
"source-map": "^0.6.0" | "source-map": "^0.6.0" | ||||
} | } | ||||
}, | }, | ||||
"node_modules/string_decoder": { | |||||
"version": "1.1.1", | |||||
"resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz", | |||||
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", | |||||
"dependencies": { | |||||
"safe-buffer": "~5.1.0" | |||||
} | |||||
}, | |||||
"node_modules/string_decoder/node_modules/safe-buffer": { | |||||
"version": "5.1.2", | |||||
"resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", | |||||
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" | |||||
}, | |||||
"node_modules/stylis": { | "node_modules/stylis": { | ||||
"version": "4.3.1", | "version": "4.3.1", | ||||
"resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.1.tgz", | "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.1.tgz", | ||||
"punycode": "^2.1.0" | "punycode": "^2.1.0" | ||||
} | } | ||||
}, | }, | ||||
"node_modules/util-deprecate": { | |||||
"version": "1.0.2", | |||||
"resolved": "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz", | |||||
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" | |||||
}, | |||||
"node_modules/vite": { | "node_modules/vite": { | ||||
"version": "5.0.11", | "version": "5.0.11", | ||||
"resolved": "https://registry.npmjs.org/vite/-/vite-5.0.11.tgz", | "resolved": "https://registry.npmjs.org/vite/-/vite-5.0.11.tgz", |
"ant-design-vue": "^4.1.0", | "ant-design-vue": "^4.1.0", | ||||
"axios": "^1.6.4", | "axios": "^1.6.4", | ||||
"dayjs": "^1.11.10", | "dayjs": "^1.11.10", | ||||
"file-saver": "^2.0.5", | |||||
"he": "^1.2.0", | "he": "^1.2.0", | ||||
"html-docx-js-typescript": "^0.1.5", | |||||
"less": "^4.2.0", | "less": "^4.2.0", | ||||
"less-loader": "^11.1.3", | "less-loader": "^11.1.3", | ||||
"vue": "^3.3.11", | "vue": "^3.3.11", |
CustomerVerify: web + '/jobseek/verify', // 转换为HR | CustomerVerify: web + '/jobseek/verify', // 转换为HR | ||||
JobseekerEditPwd: web + '/jobseek/edit_pwd', // 修改密码 | JobseekerEditPwd: web + '/jobseek/edit_pwd', // 修改密码 | ||||
CompanyLoginByMobile: web + '/company/login_by_mobile', // 企业登录 | CompanyLoginByMobile: web + '/company/login_by_mobile', // 企业登录 | ||||
JobseekerResetPwd: web + '/jobseek/resetpwd', // 修改密码 | |||||
JobseekerResetPwd: web + '/jobseeker/resetpwd', // 修改密码 | |||||
'SysconfigDetail': common + '/sysconfig/detail', // 详情 | 'SysconfigDetail': common + '/sysconfig/detail', // 详情 | ||||
<div class="text-decoration"> | <div class="text-decoration"> | ||||
<div class="text-content">基本资料</div> | <div class="text-content">基本资料</div> | ||||
</div> | </div> | ||||
</a-typography-title> | |||||
</a-typography-title> | |||||
<a-typography-paragraph> | <a-typography-paragraph> | ||||
<a-row :gutter="[20,20]"> | <a-row :gutter="[20,20]"> | ||||
<a-col span="24"> | <a-col span="24"> | ||||
</a-col> | </a-col> | ||||
</a-row> | </a-row> | ||||
</a-typography-paragraph> | </a-typography-paragraph> | ||||
<a-typography-title :level="4"><div class="text-decoration"> | |||||
<a-typography-title :level="4"> | |||||
<div class="text-decoration"> | |||||
<div class="text-content">个人简介</div> | <div class="text-content">个人简介</div> | ||||
</div></a-typography-title> | |||||
</div> | |||||
</a-typography-title> | |||||
<a-typography-paragraph> | <a-typography-paragraph> | ||||
<div v-html="detail.introduction"></div> | <div v-html="detail.introduction"></div> | ||||
</a-typography-paragraph> | </a-typography-paragraph> | ||||
<a-typography-title :level="4"><div class="text-decoration"> | |||||
<a-typography-title :level="4"> | |||||
<div class="text-decoration"> | |||||
<div class="text-content">求职期望</div> | <div class="text-content">求职期望</div> | ||||
</div></a-typography-title> | |||||
</div> | |||||
</a-typography-title> | |||||
<a-typography-paragraph> | <a-typography-paragraph> | ||||
<a-row> | <a-row> | ||||
<a-col span="24"> | <a-col span="24"> | ||||
</a-row> | </a-row> | ||||
</a-typography-paragraph> | </a-typography-paragraph> | ||||
</a-typography> | </a-typography> | ||||
<a-typography-title :level="4"><div class="text-decoration"> | |||||
<div class="text-content">专业技能掌握能力</div> | |||||
</div></a-typography-title> | |||||
<a-typography-title :level="4"> | |||||
<div class="text-decoration"> | |||||
<div class="text-content">专业技能掌握能力</div> | |||||
</div> | |||||
</a-typography-title> | |||||
<a-typography-paragraph> | <a-typography-paragraph> | ||||
<a-row> | <a-row> | ||||
<a-space direction="vertical"> | <a-space direction="vertical"> | ||||
</a-space> | </a-space> | ||||
</a-row> | </a-row> | ||||
</a-typography-paragraph> | </a-typography-paragraph> | ||||
<a-typography-title :level="4"><div class="text-decoration"> | |||||
<div class="text-content">工作经历</div> | |||||
</div></a-typography-title> | |||||
<a-typography-title :level="4"> | |||||
<div class="text-decoration"> | |||||
<div class="text-content">工作经历</div> | |||||
</div> | |||||
</a-typography-title> | |||||
<a-typography-paragraph> | <a-typography-paragraph> | ||||
<template v-for="(item,index) in detail.experiences"> | <template v-for="(item,index) in detail.experiences"> | ||||
<a-card :title="item.company_name" style="margin-bottom: 10px;"> | <a-card :title="item.company_name" style="margin-bottom: 10px;"> | ||||
</a-card> | </a-card> | ||||
</template> | </template> | ||||
</a-typography-paragraph> | </a-typography-paragraph> | ||||
<a-typography-title :level="4"><div class="text-decoration"> | |||||
<div class="text-content">教育/培训经历</div> | |||||
</div></a-typography-title> | |||||
<a-typography-title :level="4"> | |||||
<div class="text-decoration"> | |||||
<div class="text-content">教育/培训经历</div> | |||||
</div> | |||||
</a-typography-title> | |||||
<a-typography-paragraph> | <a-typography-paragraph> | ||||
<template v-for="(item,index) in detail.trainings"> | <template v-for="(item,index) in detail.trainings"> | ||||
<a-card :title="item.school_or_institution" style="margin-bottom: 10px;"> | <a-card :title="item.school_or_institution" style="margin-bottom: 10px;"> | ||||
</template> | </template> | ||||
</a-typography-paragraph> | </a-typography-paragraph> | ||||
</a-spin> | </a-spin> | ||||
<a-flex justify="flex-end"> | |||||
<a-space> | |||||
<a-button type="primary" @click="exportToWord">导出简历</a-button> | |||||
</a-space> | |||||
</a-flex> | |||||
<div v-show="false"> | |||||
<div id="export-container"> | |||||
<div class="resume-word"> | |||||
<h1 class="resume-word-title" style="text-align: center;">个人简历</h1> | |||||
<div> | |||||
<div class="resume-word-item"> | |||||
<div style="color: #4FBE70"> | |||||
<h3 class="resume-word-item-title-content">基本资料</h3> | |||||
</div> | |||||
<div class="resume-word-item-content"> | |||||
<table border="1" style="border-collapse: collapse;text-align: center;width: 100%;"> | |||||
<tbody> | |||||
<tr style="height: 30px;"> | |||||
<td>姓 名</td> | |||||
<td>{{detail.seekername}}</td> | |||||
<td>性 别</td> | |||||
<td>{{detail.gender}}</td> | |||||
<td rowspan="6" style="text-align: center; vertical-align: middle;"> | |||||
<img :src="imageprefix+detail.photo" alt="" width="90" height="150"> | |||||
</td> | |||||
</tr> | |||||
<tr style="height: 30px;"> | |||||
<td>出生日期</td> | |||||
<td>{{detail.dob}}</td> | |||||
<td>职 称</td> | |||||
<td>{{detail.title_txt}}</td> | |||||
</tr> | |||||
<tr style="height: 30px;"> | |||||
<td>现居住地</td> | |||||
<td>{{detail.now_level1_txt ? detail.now_level1_txt : ''}}{{detail.now_level2_txt ? detail.now_level2_txt : ''}}{{detail.now_level3_txt ? detail.now_level3_txt : ''}}{{detail.now_level4_txt ? detail.now_level4_txt : ''}} | |||||
</td> | |||||
<td>户口所在地</td> | |||||
<td>{{detail.now_level1_txt ? detail.now_level1_txt : ''}}{{detail.now_level2_txt ? detail.now_level2_txt : ''}}{{detail.now_level3_txt ? detail.now_level3_txt : ''}}{{detail.now_level4_txt ? detail.now_level4_txt : ''}} | |||||
</td> | |||||
</tr> | |||||
<tr style="height: 30px;"> | |||||
<td>学 历</td> | |||||
<td>{{detail.education_txt}}</td> | |||||
<td>婚姻状况</td> | |||||
<td>{{detail.marital_status_txt}}</td> | |||||
</tr> | |||||
<tr style="height: 30px;"> | |||||
<td>民 族</td> | |||||
<td>{{detail.ethnicity_txt}}</td> | |||||
<td>政治面貌</td> | |||||
<td>{{detail.political_status_txt}}</td> | |||||
</tr> | |||||
<tr style="height: 30px;"> | |||||
<td>体 重</td> | |||||
<td>{{detail.weight}}kg</td> | |||||
<td>身 高</td> | |||||
<td>{{detail.height}}cm</td> | |||||
</tr> | |||||
</tbody> | |||||
</table> | |||||
</div> | |||||
</div> | |||||
<!-- 个人简介 --> | |||||
<div class="resume-word-item"> | |||||
<div style="color: #4FBE70"> | |||||
<h3 class="resume-word-item-title-content">个人简介</h3> | |||||
</div> | |||||
<div class="resume-word-item-content"> | |||||
<p v-html="detail.introduction"></p> | |||||
</div> | |||||
</div> | |||||
<!-- 求职期望 --> | |||||
<div class="resume-word-item"> | |||||
<div style="color: #4FBE70"> | |||||
<h3 class="resume-word-item-title-content">求职期望</h3> | |||||
</div> | |||||
<div class="resume-word-item-content"> | |||||
<table border="1" style="border-collapse: collapse;width: 100%;text-align: center;"> | |||||
<tbody> | |||||
<tr style="height: 30px;"> | |||||
<td style="width: 20%;">求职类型</td> | |||||
<td style="width: 30%;">{{detail.job_type_txt}}</td> | |||||
<td style="width: 20%;">可到职日期</td> | |||||
<td style="width: 30%;">{{detail.available_date_txt}}</td> | |||||
</tr> | |||||
<tr style="height: 30px;"> | |||||
<td style="width: 20%;">人才类型</td> | |||||
<td style="width: 30%;">{{detail.talent_type_txt}}</td> | |||||
<td style="width: 20%;">工作经验</td> | |||||
<td style="width: 30%;">{{detail.work_experience}}年</td> | |||||
</tr> | |||||
<tr style="height: 30px;"> | |||||
<td style="width: 20%;">月薪要求</td> | |||||
<td colspan="3" style="width: 80%;">{{detail.salary_range_txt}}</td> | |||||
</tr> | |||||
<tr style="height: 30px;" v-for="(item,index) in detail.desire_areas"> | |||||
<td style="width: 20%;">期望工作地区{{index + 1}}</td> | |||||
<td colspan="3" style="width: 80%;"> | |||||
{{item.level1_txt ? item.level1_txt : ''}}{{item.level2_txt ? item.level2_txt : ''}}{{item.level3_txt ? item.level3_txt : ''}}{{item.level4_txt ? item.level4_txt : ''}} | |||||
</td> | |||||
</tr> | |||||
<tr style="height: 30px;" v-for="(item,index) in detail.desire_industrys"> | |||||
<td style="width: 20%;">期望从事行业{{index + 1}}</td> | |||||
<td colspan="3" style="width: 80%;">{{item.industry_txt}}</td> | |||||
</tr> | |||||
<tr style="height: 30px;" v-for="(item,index) in detail.desire_positions"> | |||||
<td style="width: 20%;">期望从事职位{{index + 1}}</td> | |||||
<td colspan="3" style="width: 80%;"> | |||||
{{item.level1_txt ? item.level1_txt : ''}}{{item.level2_txt ? item.level2_txt : ''}} | |||||
</td> | |||||
</tr> | |||||
</tbody> | |||||
</table> | |||||
</div> | |||||
</div> | |||||
<!-- 教育培训 --> | |||||
<div class="resume-word-item"> | |||||
<div style="color: #4FBE70"> | |||||
<h3 class="resume-word-item-title-content">教育培训</h3> | |||||
</div> | |||||
<div class="resume-word-item-content"> | |||||
<table border="1" style="border-collapse: collapse;width: 100%;text-align: center;"> | |||||
<thead> | |||||
<th style="height: 30px;width:20%;">起止时间</th> | |||||
<th style="height: 30px;width:20%;">学校/培训机构</th> | |||||
<th style="height: 30px;width: 20%;">专业</th> | |||||
<th style="height: 30px;width:20%;">曾担任的职务</th> | |||||
<th style="height: 30px;width: 20%;">获得证书奖项</th> | |||||
</thead> | |||||
<tbody> | |||||
<tr style="height: 30px;" v-for="(item,index) in detail.trainings"> | |||||
<td style="width: 20%;"> | |||||
{{item.start_year}}.{{item.start_month}}至{{item.end_year}}.{{item.end_month}} | |||||
</td> | |||||
<td style="width: 20%;">{{item.school_or_institution}}</td> | |||||
<td style="width: 20%;">{{item.major}}</td> | |||||
<td style="width: 20%;">{{item.positions_held}}</td> | |||||
<td style="width: 20%;"> | |||||
<div> | |||||
{{item.certificate}} | |||||
</div> | |||||
<div> | |||||
{{item.awards}} | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
</tbody> | |||||
</table> | |||||
</div> | |||||
</div> | |||||
<!-- 工作经历 --> | |||||
<div class="resume-word-item"> | |||||
<div style="color: #4FBE70"> | |||||
<h3 class="resume-word-item-title-content">工作经历</h3> | |||||
</div> | |||||
<div class="resume-word-item-content"> | |||||
<table border="1" style="border-collapse: collapse;width: 100%;text-align: center;"> | |||||
<thead> | |||||
<th style="height: 30px;width: 25%;">起止时间</th> | |||||
<th style="height: 30px;width: 25%;">单位名称</th> | |||||
<th style="height: 30px;width: 25%;">职位</th> | |||||
<th style="height: 30px;width: 25%;">离职原因</th> | |||||
</thead> | |||||
<tbody> | |||||
<tr style="height: 30px;" v-for="(item,index) in detail.experiences"> | |||||
<td style="width: 25%;"> | |||||
{{item.start_year}}.{{item.start_month}}至{{item.end_year}}.{{item.end_month}} | |||||
</td> | |||||
<td style="width: 25%;">{{item.company_name}}</td> | |||||
<td style="width: 25%;">{{item.position}}</td> | |||||
<td style="width: 25%;">{{item.reason_for_leaving}}</td> | |||||
</tr> | |||||
</tbody> | |||||
</table> | |||||
</div> | |||||
</div> | |||||
<!-- 专业技能掌握能力 --> | |||||
<div class="resume-word-item"> | |||||
<div style="color: #4FBE70"> | |||||
<h3 class="resume-word-item-title-content">专业技能掌握能力</h3> | |||||
</div> | |||||
<div class="resume-word-item-content"> | |||||
<table border="1" style="border-collapse: collapse;width: 100%;text-align: center;"> | |||||
<tbody> | |||||
<tr style="height: 30px;"> | |||||
<td style="width: 25%;">英 语</td> | |||||
<td style="width: 25%;">{{detail.english_txt}}</td> | |||||
<td style="width: 25%;">粤 语</td> | |||||
<td style="width: 25%;">{{detail.mandarin_txt}}</td> | |||||
</tr> | |||||
<tr style="height: 30px;"> | |||||
<td style="width:25%;">国 语</td> | |||||
<td style="width: 25%;">{{detail.cantonese_txt}}</td> | |||||
<td style="width: 25%;">第二外语</td> | |||||
<td style="width: 25%;">{{detail.other_language_txt}}</td> | |||||
</tr> | |||||
<tr style="height: 30px;"> | |||||
<td style="width: 25%;">计算机能力</td> | |||||
<td colspan="7" style="width: 75%;">{{detail.computer_skills}}</td> | |||||
</tr> | |||||
</tbody> | |||||
</table> | |||||
</div> | |||||
</div> | |||||
<!-- 联系信息 --> | |||||
<div class="resume-word-item"> | |||||
<div style="color: #4FBE70"> | |||||
<h3 class="resume-word-item-title-content">联系信息</h3> | |||||
</div> | |||||
<div class="resume-word-item-content"> | |||||
<table border="1" style="border-collapse: collapse;width: 100%;text-align: center;"> | |||||
<tbody> | |||||
<tr style="height: 30px;"> | |||||
<td style="width: 15%;">移动电话</td> | |||||
<td style="width: 35%;">{{detail.mobile}}</td> | |||||
<td style="width: 15%;">固定电话</td> | |||||
<td style="width: 35%;">{{detail.landline}}</td> | |||||
</tr> | |||||
<tr style="height: 30px;"> | |||||
<td style="width: 15%;">联系邮箱</td> | |||||
<td style="width: 35%;">{{detail.email}}</td> | |||||
<td style="width: 15%;">Q Q</td> | |||||
<td style="width: 35%;">{{detail.qq}}</td> | |||||
</tr> | |||||
<tr style="height: 30px;"> | |||||
<td style="width: 15%;">通讯地址</td> | |||||
<td style="width: 35%;">{{detail.mailing_address}} | |||||
</td> | |||||
<td style="width: 15%;">邮 编</td> | |||||
<td style="width: 35%;">{{detail.postal_code}} | |||||
</td> | |||||
</tr> | |||||
<tr style="height: 30px;"> | |||||
<td style="width: 15%;">个人主页</td> | |||||
<td colspan="3" style="width: 85%;">{{detail.personal_website}}</td> | |||||
</tr> | |||||
</tbody> | |||||
</table> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
</a-modal> | </a-modal> | ||||
</template> | </template> | ||||
import { ref, onMounted, defineProps, computed, watch, defineEmits } from 'vue'; | import { ref, onMounted, defineProps, computed, watch, defineEmits } from 'vue'; | ||||
import { GetJobseekerDetail, GetJobapplicantIntroductiondetail, PostJobapplicantTrainingdetail, PostJobapplicantDesireindustrydetail, PostJobapplicantExperiencedetail } from '@/apis/models'; | import { GetJobseekerDetail, GetJobapplicantIntroductiondetail, PostJobapplicantTrainingdetail, PostJobapplicantDesireindustrydetail, PostJobapplicantExperiencedetail } from '@/apis/models'; | ||||
import { message } from 'ant-design-vue'; | import { message } from 'ant-design-vue'; | ||||
import * as htmlDocx from "html-docx-js-typescript"; | |||||
import { saveAs } from 'file-saver' | |||||
import { useCommon } from '@/hooks/useCommon'; | import { useCommon } from '@/hooks/useCommon'; | ||||
let { store, commomParams, hideOtherModal1, openOtherModel_1, imageprefix} = useCommon(); | |||||
let { store, commomParams, hideOtherModal1, openOtherModel_1, imageprefix } = useCommon(); | |||||
const emit = defineEmits(); | const emit = defineEmits(); | ||||
let props = defineProps(['detail_record']); | let props = defineProps(['detail_record']); | ||||
let detailTitle = ref<String>('') | let detailTitle = ref<String>('') | ||||
return store.state.openOtherModel_1; | return store.state.openOtherModel_1; | ||||
}) | }) | ||||
const exportToWord = async () => { | |||||
const htmlContent = document.getElementById('export-container'); // 获取需要转换的HTML内容 | |||||
const convertedFile = htmlDocx.asBlob(htmlContent?.outerHTML!); | |||||
const fileData = await convertedFile | |||||
saveAs((fileData as Blob), detail.value.seekername + '个人简历.docx') | |||||
} | |||||
watch(() => [props.detail_record], (newVal) => { | watch(() => [props.detail_record], (newVal) => { | ||||
if (newVal[0]) { | if (newVal[0]) { | ||||
padding: 6px; | padding: 6px; | ||||
// padding-top: 6px; | // padding-top: 6px; | ||||
} | } | ||||
.text-decoration { | .text-decoration { | ||||
position: relative; | position: relative; | ||||
display: inline-block; | display: inline-block; | ||||
overflow: visible; | overflow: visible; | ||||
} | } | ||||
.text-decoration::before { | .text-decoration::before { | ||||
content: ''; | content: ''; | ||||
width: 6px; | width: 6px; | ||||
position: absolute; | position: absolute; | ||||
top: 4px | top: 4px | ||||
} | } | ||||
.text-content { | .text-content { | ||||
position: relative; | position: relative; | ||||
margin-left: 20px; | margin-left: 20px; |
<template> | <template> | ||||
<a-card title="修改密码"> | |||||
<a-form :model="createForm" layout="vertical"> | |||||
<a-card title="重置密码"> | |||||
<a-form :model="createForm" layout="vertical"> | |||||
<a-row gutter="20"> | <a-row gutter="20"> | ||||
<a-col span="12"> | <a-col span="12"> | ||||
<a-row> | |||||
<a-row gutter="20"> | |||||
<a-col span="24"> | <a-col span="24"> | ||||
<a-form-item required label="旧密码" name="old_password"> | |||||
<a-input v-model:value="createForm.old_password" placeholder="请输入旧密码" size="large"/> | |||||
<a-form-item required label="手机号"> | |||||
<a-input v-model:value="smsForm.mobile" placeholder="手机号" size="large" /> | |||||
</a-form-item> | </a-form-item> | ||||
</a-col> | </a-col> | ||||
<a-col span="24"> | |||||
<a-form-item required label="新密码" name="new_password"> | |||||
<a-input v-model:value="createForm.new_password" placeholder="请输入新密码" size="large"/> | |||||
<a-col span="12"> | |||||
<a-form-item required label="验证码"> | |||||
<a-input v-model:value="smsForm.captcha" placeholder="验证码" size="large" /> | |||||
</a-form-item> | |||||
</a-col> | |||||
<a-col span="12"> | |||||
<a-form-item required label="图形验证码"> | |||||
<image-container :imgObj="{src: codeImage,width: '100%',height: '40px', mode: 'fill'}" | |||||
@click="getCaptcha"></image-container> | |||||
</a-form-item> | |||||
</a-col> | |||||
<a-col span="18"> | |||||
<a-form-item required label="短信验证码"> | |||||
<a-input v-model:value="createForm.sms_code" placeholder="短信验证码" size="large" /> | |||||
</a-form-item> | |||||
</a-col> | |||||
<a-col span="6"> | |||||
<a-form-item required label="验证码"> | |||||
<a-button type="primary" block size="large" @click="sendCode" | |||||
:disabled="state.disabled"> | |||||
{{ state.codeTxt }}</a-button> | |||||
</a-form-item> | </a-form-item> | ||||
</a-col> | </a-col> | ||||
<a-col span="24"> | <a-col span="24"> | ||||
<a-form-item required label="确认密码" name="comform_password"> | |||||
<a-input v-model:value="createForm.comform_password" placeholder="请输入确认密码" size="large"/> | |||||
<a-form-item required label="重置密码" name="new_pwd"> | |||||
<a-input v-model:value="createForm.new_pwd" placeholder="请输入确认密码" size="large" /> | |||||
</a-form-item> | </a-form-item> | ||||
</a-col> | </a-col> | ||||
<a-col span="24"> | <a-col span="24"> | ||||
</a-col> | </a-col> | ||||
</a-row> | </a-row> | ||||
</a-col> | </a-col> | ||||
</a-row> | </a-row> | ||||
</a-form> | </a-form> | ||||
</a-card> | </a-card> | ||||
</template> | </template> | ||||
<script setup lang="ts"> | <script setup lang="ts"> | ||||
import { ref, onMounted, computed } from 'vue'; | |||||
import { PostCompanyPwdEdit } from '@/apis/models'; | |||||
import { ref, onMounted, computed, onBeforeUnmount } from 'vue'; | |||||
import { PostJobseekerEditPwd, PostSmsSend, GetCaptcha, PostJobseekerResetPwd } from '@/apis/models'; | |||||
import { warnToast, successToast } from '@/utils/toastHelper'; | import { warnToast, successToast } from '@/utils/toastHelper'; | ||||
let createForm : companyListType.addrFormType = ref({ | |||||
old_password: '', | |||||
new_password: '', | |||||
comform_password: '' | |||||
import { store } from '@/store/index'; | |||||
import { router } from '@/router/index'; | |||||
import { useMenu } from '@/hooks/useMenu'; | |||||
let { onMenu, routerCur, routerArrayCur, routerArrayParentChildCur } = useMenu(); | |||||
let smsForm = ref<Object>({ | |||||
mobile: "", | |||||
captcha: "", | |||||
capt_id: "" | |||||
}) | }) | ||||
const saveForm = () => { | |||||
if(createForm.value.new_password != createForm.value.comform_password) { | |||||
warnToast('新密码和确认密码不一致') | |||||
let createForm = ref({ | |||||
mobile: '', | |||||
sms_code: '', | |||||
new_pwd: '', | |||||
}) | |||||
let capt_id = ref<String>('') | |||||
let codeImage = ref<String>('') | |||||
interface State { | |||||
count : number; | |||||
sending : boolean; | |||||
disabled : boolean; | |||||
} | |||||
const state = ref<State>({ | |||||
count: 60, | |||||
codeTxt: '获取验证码', | |||||
disabled: false, | |||||
}); | |||||
let timer = ref<any>(null) | |||||
const sendCode = () => { | |||||
smsForm.value.capt_id = capt_id.value; | |||||
if (!smsForm.value.mobile) { | |||||
warnToast('请输入手机号') | |||||
return false; | return false; | ||||
} | } | ||||
PostCompanyPwdEdit(createForm.value).then(res => { | |||||
successToast('修改成功,请重新登录') | |||||
if (!smsForm.value.captcha) { | |||||
warnToast('请输入图形验证码') | |||||
return false; | |||||
} | |||||
PostSmsSend(smsForm.value).then(res => { | |||||
successToast('发送验证码成功,验证码有效期为一分钟'); | |||||
timer.value = setInterval(function () { | |||||
if (state.value.count > 1) { | |||||
state.value.count = state.value.count - 1; | |||||
state.value.codeTxt = '剩余' + (state.value.count - 1) + '秒'; | |||||
state.value.disabled = true | |||||
} else { | |||||
clearInterval(timer.value); | |||||
state.value.count = 60; | |||||
state.value.codeTxt = '获取验证码'; | |||||
state.value.disabled = false | |||||
}; | |||||
}, 1000) | |||||
}) | |||||
}; | |||||
const getCaptcha = () => { | |||||
smsForm.value.captcha = ''; | |||||
GetCaptcha().then(res => { | |||||
capt_id.value = res.data.capt_id; | |||||
codeImage.value = res.data.img; | |||||
}) | |||||
} | |||||
const saveForm = () => { | |||||
createForm.value.mobile = smsForm.value.mobile; | |||||
createForm.value.sms_code = Number(createForm.value.sms_code) | |||||
PostJobseekerResetPwd(createForm.value).then(res => { | |||||
successToast('重置成功,请重新登录') | |||||
resetForm() | resetForm() | ||||
quit() | |||||
}) | }) | ||||
} | } | ||||
const quit = () => { | |||||
if (routerCur() == '/job/home') { | |||||
sessionStorage.clear() | |||||
location.reload() | |||||
} else { | |||||
store.commit('getPageType', { | |||||
pageType: '' | |||||
}) | |||||
store.commit('setShowLoginBox', { | |||||
showLoginBox: false | |||||
}) | |||||
sessionStorage.clear() | |||||
sessionStorage.setItem('pageType', '') | |||||
store.commit('permissions/SET_PERMISSION', null) | |||||
store.commit('permissions/SET_MENU', []) | |||||
router.push('/job/home') | |||||
} | |||||
} | |||||
const resetForm = () => { | const resetForm = () => { | ||||
smsForm.value = { | |||||
mobile: "", | |||||
captcha: "", | |||||
capt_id: "" | |||||
} | |||||
createForm.value = { | createForm.value = { | ||||
old_password: '', | |||||
new_password: '', | |||||
comform_password: '' | |||||
mobile: '', | |||||
sms_code: '', | |||||
new_pwd: '', | |||||
} | } | ||||
} | } | ||||
onMounted(() => { | |||||
getCaptcha() | |||||
}) | |||||
onBeforeUnmount(() => { | |||||
clearInterval(timer.value); | |||||
}) | |||||
</script> | </script> | ||||
<style scoped lang="less"> | <style scoped lang="less"> | ||||
</style> | </style> |
name: 'JobseekerPassword', | name: 'JobseekerPassword', | ||||
component: routerList.JobseekerPassword, | component: routerList.JobseekerPassword, | ||||
meta: { | meta: { | ||||
title: '修改密码', | |||||
title: '重置密码', | |||||
icon: HomeOutlined | icon: HomeOutlined | ||||
}, | }, | ||||
}; | }; |
<div class="content-padding-inline" style="margin: 30px 0;"> | <div class="content-padding-inline" style="margin: 30px 0;"> | ||||
<a-row :gutter="[20,20]" type="flex" justify="center"> | <a-row :gutter="[20,20]" type="flex" justify="center"> | ||||
<a-col span="18"> | <a-col span="18"> | ||||
<a-card title="修改密码"> | |||||
<a-card title="重置密码"> | |||||
<a-form :model="createForm" layout="vertical"> | <a-form :model="createForm" layout="vertical"> | ||||
<a-row gutter="20"> | <a-row gutter="20"> | ||||
<a-col span="12"> | <a-col span="12"> | ||||
<a-row gutter="20"> | <a-row gutter="20"> | ||||
<a-col span="24"> | <a-col span="24"> | ||||
<a-form-item label="手机号"> | |||||
<a-form-item required label="手机号"> | |||||
<a-input v-model:value="smsForm.mobile" placeholder="手机号" size="large" /> | <a-input v-model:value="smsForm.mobile" placeholder="手机号" size="large" /> | ||||
</a-form-item> | </a-form-item> | ||||
</a-col> | </a-col> | ||||
<a-col span="12"> | <a-col span="12"> | ||||
<a-form-item label="验证码"> | |||||
<a-form-item required label="验证码"> | |||||
<a-input v-model:value="smsForm.captcha" placeholder="验证码" size="large" /> | <a-input v-model:value="smsForm.captcha" placeholder="验证码" size="large" /> | ||||
</a-form-item> | </a-form-item> | ||||
</a-col> | </a-col> | ||||
<a-col span="12"> | <a-col span="12"> | ||||
<a-form-item label="图形验证码"> | |||||
<a-form-item required label="图形验证码"> | |||||
<image-container :imgObj="{src: codeImage,width: '100%',height: '40px', mode: 'fill'}" | <image-container :imgObj="{src: codeImage,width: '100%',height: '40px', mode: 'fill'}" | ||||
@click="getCaptcha"></image-container> | @click="getCaptcha"></image-container> | ||||
</a-form-item> | </a-form-item> | ||||
</a-col> | </a-col> | ||||
<a-col span="18"> | <a-col span="18"> | ||||
<a-form-item label="短信验证码"> | |||||
<a-form-item required label="短信验证码"> | |||||
<a-input v-model:value="createForm.sms_code" placeholder="短信验证码" size="large" /> | <a-input v-model:value="createForm.sms_code" placeholder="短信验证码" size="large" /> | ||||
</a-form-item> | </a-form-item> | ||||
</a-col> | </a-col> | ||||
<a-col span="6"> | <a-col span="6"> | ||||
<a-form-item label="验证码"> | |||||
<a-form-item required label="验证码"> | |||||
<a-button type="primary" block size="large" @click="sendCode" | <a-button type="primary" block size="large" @click="sendCode" | ||||
:disabled="state.disabled"> | :disabled="state.disabled"> | ||||
{{ state.codeTxt }}</a-button> | {{ state.codeTxt }}</a-button> | ||||
</a-form-item> | </a-form-item> | ||||
</a-col> | </a-col> | ||||
<a-col span="24"> | <a-col span="24"> | ||||
<a-form-item label="确认密码" name="comform_password"> | |||||
<a-input v-model:value="createForm.new_password" placeholder="请输入确认密码" | |||||
<a-form-item required label="重置密码" name="new_pwd"> | |||||
<a-input v-model:value="createForm.new_pwd" placeholder="请输入确认密码" | |||||
size="large" /> | size="large" /> | ||||
</a-form-item> | </a-form-item> | ||||
</a-col> | </a-col> | ||||
</a-card> | </a-card> | ||||
</a-col> | </a-col> | ||||
</a-row> | </a-row> | ||||
</div> | </div> | ||||
</template> | </template> | ||||
import { ref, onMounted, computed, onBeforeUnmount } from 'vue'; | import { ref, onMounted, computed, onBeforeUnmount } from 'vue'; | ||||
import { PostJobseekerEditPwd, PostSmsSend, GetCaptcha, PostJobseekerResetPwd } from '@/apis/models'; | import { PostJobseekerEditPwd, PostSmsSend, GetCaptcha, PostJobseekerResetPwd } from '@/apis/models'; | ||||
import { warnToast, successToast } from '@/utils/toastHelper'; | import { warnToast, successToast } from '@/utils/toastHelper'; | ||||
import { store } from '@/store/index'; | |||||
import { router } from '@/router/index'; | |||||
import { useMenu } from '@/hooks/useMenu'; | |||||
let { onMenu, routerCur, routerArrayCur, routerArrayParentChildCur } = useMenu(); | |||||
let smsForm = ref<Object>({ | let smsForm = ref<Object>({ | ||||
mobile: "", | mobile: "", | ||||
captcha: "", | captcha: "", | ||||
const getCaptcha = () => { | const getCaptcha = () => { | ||||
createForm.value.captcha = ''; | |||||
smsForm.value.captcha = ''; | |||||
GetCaptcha().then(res => { | GetCaptcha().then(res => { | ||||
capt_id.value = res.data.capt_id; | capt_id.value = res.data.capt_id; | ||||
codeImage.value = res.data.img; | codeImage.value = res.data.img; | ||||
const saveForm = () => { | const saveForm = () => { | ||||
createForm.value.mobile = smsForm.value.mobile; | |||||
createForm.value.sms_code = Number(createForm.value.sms_code) | |||||
PostJobseekerResetPwd(createForm.value).then(res => { | PostJobseekerResetPwd(createForm.value).then(res => { | ||||
successToast('重置成功') | |||||
successToast('重置成功,请重新登录') | |||||
resetForm() | resetForm() | ||||
quit() | |||||
}) | }) | ||||
} | } | ||||
const quit = () => { | |||||
if(routerCur() == '/job/home') { | |||||
sessionStorage.clear() | |||||
location.reload() | |||||
} else { | |||||
store.commit('getPageType', { | |||||
pageType: '' | |||||
}) | |||||
store.commit('setShowLoginBox', { | |||||
showLoginBox: false | |||||
}) | |||||
sessionStorage.clear() | |||||
sessionStorage.setItem('pageType', '') | |||||
store.commit('permissions/SET_PERMISSION', null) | |||||
store.commit('permissions/SET_MENU', []) | |||||
router.push('/job/home') | |||||
} | |||||
} | |||||
const resetForm = () => { | const resetForm = () => { | ||||
smsForm.value = { | smsForm.value = { | ||||
capt_id: "" | capt_id: "" | ||||
} | } | ||||
createForm.value = { | createForm.value = { | ||||
mobile: '', | |||||
sms_code: '', | sms_code: '', | ||||
new_password: '', | |||||
new_pwd: '', | |||||
} | } | ||||
} | } | ||||
import UserEmail from '@/components/user/email/index.vue' | import UserEmail from '@/components/user/email/index.vue' | ||||
import UserConver from '@/components/user/conver/index.vue' | import UserConver from '@/components/user/conver/index.vue' | ||||
let companyList = ref<object[]>([{}, {}, {}, {}, {}, {}]) | let companyList = ref<object[]>([{}, {}, {}, {}, {}, {}]) | ||||
let menu_list = ref([{ title: '费用管理', key: 1 },{ title: '修改登录密码', key: 2},{ title: '修改邮箱', key: 3},{ title: '生成招聘者代码', key: 4}]) | |||||
let menu_list = ref([{ title: '费用管理', key: 1 },{ title: '重置密码', key: 2},{ title: '修改邮箱', key: 3},{ title: '生成招聘者代码', key: 4}]) | |||||
let curKey = ref<Number>(1) | let curKey = ref<Number>(1) | ||||
const changeKey = (data) => { | const changeKey = (data) => { | ||||
curKey.value = data.key; | curKey.value = data.key; |