From 41196466af288364557ffa5e0dfde20e791aa9f3 Mon Sep 17 00:00:00 2001 From: xiebin <719488417@qq.com> Date: Fri, 21 Nov 2025 14:50:59 +0800 Subject: [PATCH 01/10] =?UTF-8?q?=E9=9A=90=E8=97=8F=E7=94=B5=E5=AD=90?= =?UTF-8?q?=E5=90=8D=E7=89=87=E6=B2=A1=E6=9C=89=E7=9A=84=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packageA/pages/vCard/vCard.vue | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/packageA/pages/vCard/vCard.vue b/packageA/pages/vCard/vCard.vue index 4571dcf..5edd52a 100644 --- a/packageA/pages/vCard/vCard.vue +++ b/packageA/pages/vCard/vCard.vue @@ -32,7 +32,8 @@ - 到岗:2025-11-02 + + 地点:青岛市- @@ -44,10 +45,10 @@ 毕业学校 {{ userInfo.graduationSchool || "-" }} - + From a3d592eb02b823b9af66dd9d5f9b50dc7d8176b2 Mon Sep 17 00:00:00 2001 From: xiebin <719488417@qq.com> Date: Fri, 21 Nov 2025 15:34:38 +0800 Subject: [PATCH 02/10] =?UTF-8?q?remove=20:=20=E8=81=8C=E4=BD=8D=E8=AF=A6?= =?UTF-8?q?=E6=83=85-=E7=AB=9E=E4=BA=89=E5=8A=9B=E5=88=86=E6=9E=90-?= =?UTF-8?q?=E9=9B=B7=E8=BE=BE=E5=9B=BE=E7=9A=84=E6=8A=80=E8=83=BD=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packageA/pages/post/component/radarMap.vue | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/packageA/pages/post/component/radarMap.vue b/packageA/pages/post/component/radarMap.vue index 0d7084e..df7be4c 100644 --- a/packageA/pages/post/component/radarMap.vue +++ b/packageA/pages/post/component/radarMap.vue @@ -28,9 +28,12 @@ watch( () => props.value, (newVal) => { if (newVal && Object.keys(newVal).length > 0) { - const { skill, experience, education, salary, age, location } = newVal.radarChart; - const labels = ['学历', '年龄', '工作地', '技能', '工作经验', '期望薪资']; - const data = [education, age, location, skill, experience, salary].map((item) => item * 0.05); + // const { skill, experience, education, salary, age, location } = newVal.radarChart; + const { experience, education, salary, age, location } = newVal.radarChart; + // const labels = ['学历', '年龄', '工作地', '技能', '工作经验', '期望薪资']; + const labels = ['学历', '年龄', '工作地', '工作经验', '期望薪资']; + // const data = [education, age, location, skill, experience, salary].map((item) => item * 0.05); + const data = [education, age, location, experience, salary].map((item) => item * 0.05); rawRadarChart(labels, data); } }, From 4b8056b71649a9410e30e3cf62f17daffa8efefe Mon Sep 17 00:00:00 2001 From: xiebin <719488417@qq.com> Date: Fri, 21 Nov 2025 15:41:47 +0800 Subject: [PATCH 03/10] =?UTF-8?q?fix=20:=20=E9=9B=B7=E8=BE=BE=E5=9B=BE?= =?UTF-8?q?=E6=B8=B2=E6=9F=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packageA/pages/post/component/radarMap.vue | 52 +++++++--------------- 1 file changed, 15 insertions(+), 37 deletions(-) diff --git a/packageA/pages/post/component/radarMap.vue b/packageA/pages/post/component/radarMap.vue index df7be4c..2d0a98e 100644 --- a/packageA/pages/post/component/radarMap.vue +++ b/packageA/pages/post/component/radarMap.vue @@ -46,10 +46,8 @@ function rawRadarChart(labels, data) { const height = 80; const centerX = 150; const centerY = 125; - // const data = [2, 3.5, 5, 3.5, 5, 3.5]; // 示例数据 - // const labels = ['火烧', '泡水', '事故', '外观', '部件', '火烧']; const colors = ['#F5F5F5', '#F5F5F5', '#F5F5F5', '#F5F5F5', '#F5F5F5']; - const maxScore = 5; // 数据最大值 + const maxScore = 5; const angleStep = (2 * Math.PI) / labels.length; @@ -65,9 +63,8 @@ function rawRadarChart(labels, data) { ctx.fill(); //多边形圈 - // 多边形圈 for (let i = 5; i > 0; i--) { - ctx.setStrokeStyle(colors[i - 1]); // 设置边框颜色 + ctx.setStrokeStyle(colors[i - 1]); ctx.beginPath(); labels.forEach((label, index) => { const x = centerX + (width / 5) * i * Math.cos(angleStep * index - Math.PI / 2); @@ -79,19 +76,20 @@ function rawRadarChart(labels, data) { } }); ctx.closePath(); - ctx.stroke(); // 只描边,不填充 + ctx.stroke(); } - // //竖线 + //竖线 labels.forEach((label, index) => { ctx.setStrokeStyle('#F5F5F5'); ctx.setFillStyle('#F5F5F5'); ctx.beginPath(); - const x1 = centerX + width * 0.6 * Math.sin(angleStep * index); - const y1 = centerY + height * 0.6 * Math.cos(angleStep * index); - const x = centerX + width * Math.sin(angleStep * index); - const y = centerY + height * Math.cos(angleStep * index); + // 修改坐标计算,使用与多边形圈相同的角度计算方式 + const x1 = centerX + width * 0.6 * Math.cos(angleStep * index - Math.PI / 2); + const y1 = centerY + height * 0.6 * Math.sin(angleStep * index - Math.PI / 2); + const x = centerX + width * Math.cos(angleStep * index - Math.PI / 2); + const y = centerY + height * Math.sin(angleStep * index - Math.PI / 2); ctx.moveTo(x1, y1); ctx.lineTo(x, y); @@ -105,11 +103,11 @@ function rawRadarChart(labels, data) { ctx.setFillStyle('rgba(37,107,250, 0.24)'); ctx.setLineWidth(2); ctx.beginPath(); - const pointList = []; // 记录每个点的位置,等会画小圆点 + const pointList = []; data.forEach((score, index) => { const x = centerX + width * (score / maxScore) * Math.cos(angleStep * index - Math.PI / 2); const y = centerY + height * (score / maxScore) * Math.sin(angleStep * index - Math.PI / 2); - pointList.push({ x, y }); // 保存位置 + pointList.push({ x, y }); if (index === 0) { ctx.moveTo(x, y); } else { @@ -121,15 +119,16 @@ function rawRadarChart(labels, data) { ctx.stroke(); // 绘制每个小圆点 - ctx.setFillStyle('#256BFA'); // 小圆点颜色(你可以改) + ctx.setFillStyle('#256BFA'); pointList.forEach((point) => { ctx.beginPath(); - ctx.arc(point.x, point.y, 4, 0, 2 * Math.PI); // 半径 4,可以自己调大小 + ctx.arc(point.x, point.y, 4, 0, 2 * Math.PI); ctx.fill(); }); - // 绘制标签 + // 绘制标签 ctx.setTextAlign('center'); + ctx.setTextBaseline('middle'); labels.forEach((label, index) => { const x = centerX + (width + 30) * Math.cos(angleStep * index - Math.PI / 2); @@ -140,30 +139,9 @@ function rawRadarChart(labels, data) { ctx.setFontSize(12); ctx.font = 'bold 12px sans-serif'; ctx.fillText(label, x, y); - - // ctx.setFillStyle('#A2A4A2'); - // ctx.font = '12px sans-serif'; - // ctx.setFontSize(12); - // ctx.fillText(data[index], x, y + 16); }); ctx.draw(); - - //转图片 - - // uni.canvasToTempFilePath({ - // x: 0, - // y: 0, - // width: 320, - // height: 320, - // destWidth: 840, - // destHeight: 840, - // canvasId: 'radarCanvas', - // success: (res) => { - // // 在H5平台下,tempFilePath 为 base64 - // src = res.tempFilePath; - // }, - // }); } From 42d0451869e399f26ac6d21cc47ad7a0e08476f9 Mon Sep 17 00:00:00 2001 From: Apcallover <1503963513@qq.com> Date: Sat, 22 Nov 2025 17:11:11 +0800 Subject: [PATCH 04/10] =?UTF-8?q?flat:=E5=88=87=E6=8D=A2=E5=BA=94=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- App.vue | 7 ++----- config.js | 11 +++++++---- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/App.vue b/App.vue index 8f20c16..3023406 100644 --- a/App.vue +++ b/App.vue @@ -43,23 +43,20 @@ onHide(() => { function getUserInfo() { lightAppJssdk.user.getUserInfoWithEncryptedParamByAppId({ - appId: 'qdsrgznrgpp', // 接入方在成功创建应用后自动生成 + appId: config.appInfo.loveShandong, // 接入方在成功创建应用后自动生成 success: function (data) { if (data == '未登录') onLoginApp(); else { if (typeof data == 'string') data = JSON.parse(data); - - const sm2_privateKey = '7e14966df4ecd4241ed082ef716d82b52113cb5899ebdc704a98844d0a32b0dc'; + const sm2_privateKey = config.appInfo.sm2PrivateKey; let sm2_encrypt_result = data.data; let sm2_decrypt_result = sm2_Decrypt(sm2_encrypt_result, sm2_privateKey); - if (typeof sm2_decrypt_result == 'string') sm2_decrypt_result = JSON.parse(sm2_decrypt_result); // 其次,对sm2解密后的结果进行 aes解密 // aes解密需要用到 appword , 为固定值,使用示例代码中的即可 let aes_encrypt_result = sm2_decrypt_result.data; let aes_decrypt_result = aes_Decrypt(aes_encrypt_result, appword); - // 加密 loginCallback(aes_decrypt_result); } diff --git a/config.js b/config.js index 9d75c81..5274677 100644 --- a/config.js +++ b/config.js @@ -1,8 +1,7 @@ export default { - // baseUrl: 'https://fw.rc.qingdao.gov.cn/rgpp-api/api', // 内网 - baseUrl: 'https://qd.zhaopinzao8dian.com/api', // 测试 - // baseUrl: "http://192.168.98.110:18181", - // baseUrl: "http://192.168.3.19:8080", + baseUrl: 'https://fw.rc.qingdao.gov.cn/rgpp-api/api', // 内网 + // baseUrl: 'https://qd.zhaopinzao8dian.com/api', // 测试 + // baseUrl: 'http://192.168.3.29:8081', // sseAI+ // StreamBaseURl: 'http://39.98.44.136:8000', StreamBaseURl: 'https://qd.zhaopinzao8dian.com/ai', @@ -22,6 +21,10 @@ export default { appInfo: { // 应用名称 name: "青岛市就业服务", + // 爱山东应用标识 + loveShandong: 'szjxrgznqzzp', + // 爱山东应用Key + sm2PrivateKey: '0d152c849f10e4469f2af8cedea62004e4f1db7be23c2f7270c1441d8050799d', // 地区名 areaName: '青岛市', // AI名称 From 99f02927ac463387681b203c4e1a56514bb9969c Mon Sep 17 00:00:00 2001 From: xiebin <719488417@qq.com> Date: Sat, 22 Nov 2025 18:53:52 +0800 Subject: [PATCH 05/10] =?UTF-8?q?=E5=AF=B9=E6=8E=A5=E6=8B=9B=E8=81=98?= =?UTF-8?q?=E4=BC=9A=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/renderCompanys/renderCompanys.vue | 27 +- components/renderJobs/renderJobs.vue | 36 +- packageA/pages/UnitDetails/UnitDetails.vue | 35 +- packageA/pages/exhibitors/exhibitors.vue | 42 +- packageA/pages/post/post.vue | 38 +- pages/careerfair/careerfair copy.vue | 545 +++++++++++++++++++ pages/careerfair/careerfair.vue | 56 +- 7 files changed, 688 insertions(+), 91 deletions(-) create mode 100644 pages/careerfair/careerfair copy.vue diff --git a/components/renderCompanys/renderCompanys.vue b/components/renderCompanys/renderCompanys.vue index 5a1456d..0310e6f 100644 --- a/components/renderCompanys/renderCompanys.vue +++ b/components/renderCompanys/renderCompanys.vue @@ -2,17 +2,18 @@ - {{ job.name }} + {{ job.gsmc }} - - - - + + + + {{job.gsxy}} - + 在招职位· - {{ job.totalRecruitment || '-' }} + {{ job.zzgwsl || '-' }} @@ -20,10 +21,14 @@ + {{ vacanciesTo(job.vacancies) }} + + {{job.qyxz}} + @@ -51,6 +56,10 @@ const props = defineProps({ type: String, default: '', }, + zphId: { + type: String, + default: '', + }, }); const listData = computed(() => { @@ -58,7 +67,7 @@ const listData = computed(() => { }); function nextDetail(company) { - navTo(`/packageA/pages/UnitDetails/UnitDetails?companyId=${company.companyId}`); + navTo(`/packageA/pages/UnitDetails/UnitDetails?companyId=${company.gsID}&companyName=${company.gsmc}&zphId=${props.zphId}`); } @@ -119,7 +128,7 @@ function nextDetail(company) { } } .card-bottom{ - margin-top: 4rpx + margin-top: 15rpx margin-bottom: 10rpx display: flex justify-content: space-between diff --git a/components/renderJobs/renderJobs.vue b/components/renderJobs/renderJobs.vue index 08372b6..1f67ae3 100644 --- a/components/renderJobs/renderJobs.vue +++ b/components/renderJobs/renderJobs.vue @@ -2,33 +2,33 @@ - {{ job.jobTitle }} + {{ job.gwmc }} - {{ job.companyName }} + {{ job.gsmc }} - + {{job.xlyq == '不限' ? '学历不限' : job.xlyq}} - + {{job.gwgzjy == '不限' ? '经验不限' : job.gwgzjy}} - {{ vacanciesTo(job.vacancies) }} + {{ vacanciesTo(job.zprs) }} - {{ job.postingDate }} + {{ parseDateTime(job.createTime).date }} - - + --> @@ -77,7 +77,25 @@ function nextDetail(job) { const recordData = recommedIndexDb.JobParameter(job); recommedIndexDb.addRecord(recordData); } - navTo(`/packageA/pages/post/post?jobId=${btoa(job.jobId)}`); + navTo(`/packageA/pages/post/post?jobId=${btoa(job.id)}`); +} +function parseDateTime(datetimeStr) { + if (!datetimeStr) return { time: '', date: '' }; + + const dateObj = new Date(datetimeStr); + + if (isNaN(dateObj.getTime())) return { time: '', date: '' }; // 无效时间 + + const year = dateObj.getFullYear(); + const month = String(dateObj.getMonth() + 1).padStart(2, '0'); + const day = String(dateObj.getDate()).padStart(2, '0'); + const hours = String(dateObj.getHours()).padStart(2, '0'); + const minutes = String(dateObj.getMinutes()).padStart(2, '0'); + + return { + time: `${hours}:${minutes}`, + date: `${year}-${month}-${day}`, + }; } diff --git a/packageA/pages/UnitDetails/UnitDetails.vue b/packageA/pages/UnitDetails/UnitDetails.vue index 633857a..f1b92b1 100644 --- a/packageA/pages/UnitDetails/UnitDetails.vue +++ b/packageA/pages/UnitDetails/UnitDetails.vue @@ -21,7 +21,7 @@ - {{ companyInfo?.name }} + {{ companyInfo?.gsmc }}   + {{companyInfo.gsxy}} 公司介绍 - {{ companyInfo.description }} + {{ companyInfo.qyxz }} @@ -47,7 +48,8 @@ src="@/static/icon/downs.png" > - + + 在招职位 { console.log(options); - getCompanyInfo(options.companyId || options.bussinessId); + getCompanyInfo(options.companyId,options.companyName,options.zphId); }); function companyCollection() { - const companyId = companyInfo.value.companyId; + const companyId = companyInfo.value.gsID; if (companyInfo.value.isCollection) { $api.createRequest(`/app/company/collection/${companyId}`, {}, 'DELETE').then((resData) => { - getCompanyInfo(companyId); + // getCompanyInfo(companyId); $api.msg('取消收藏成功'); }); } else { $api.createRequest(`/app/company/collection/${companyId}`, {}, 'POST').then((resData) => { - getCompanyInfo(companyId); + // getCompanyInfo(companyId); $api.msg('收藏成功'); }); } } -function getCompanyInfo(id) { - $api.createRequest(`/app/company/${id}`).then((resData) => { +function getCompanyInfo(companyId,companyName,zphId) { + $api.createRequest(`/app/internal/companyThirdPart/${companyId}`).then((resData) => { companyInfo.value = resData.data; - getJobsList(); + getJobsList(companyId,companyName,zphId); }); } -function getJobsList(type = 'add') { +function getJobsList(companyId,companyName,zphId,type='add') { if (type === 'refresh') { pageState.page = 1; pageState.maxPage = 1; @@ -122,13 +124,14 @@ function getJobsList(type = 'add') { current: pageState.page, pageSize: pageState.pageSize, }; - $api.createRequest(`/app/company/job/${companyInfo.value.companyId}`, params).then((resData) => { + $api.createRequest(`/app/internal/jobThirdPart?gsID=${companyId}&gsmc=${companyName}&zphID=${zphId}`, ).then((resData) => { const { rows, total } = resData; if (type === 'add') { - const str = pageState.pageSize * (pageState.page - 1); - const end = pageState.list.length; - const reslist = rows; - pageState.list.splice(str, end, ...reslist); + // const str = pageState.pageSize * (pageState.page - 1); + // const end = pageState.list.length; + // const reslist = rows; + // pageState.list.splice(str, end, ...reslist); + pageState.list = rows } else { pageState.list = rows; } diff --git a/packageA/pages/exhibitors/exhibitors.vue b/packageA/pages/exhibitors/exhibitors.vue index e6872cb..82a649b 100644 --- a/packageA/pages/exhibitors/exhibitors.vue +++ b/packageA/pages/exhibitors/exhibitors.vue @@ -11,15 +11,15 @@ - {{ fairInfo?.name }} + {{ fairInfo?.zphmc }} - {{ fairInfo.location }} - {{ fairInfo.jbf }} + @@ -27,36 +27,36 @@ - {{ fairInfo.address }} - 位置 + {{ fairInfo.zphdz }} + 内容描述 - {{ fairInfo.description }} + {{ fairInfo.zphjj }} 内容描述 - {{ parseDateTime(fairInfo.startTime).time }} - {{ parseDateTime(fairInfo.startTime).date }} + {{ parseDateTime(fairInfo.zphjbsj).time }} + {{ parseDateTime(fairInfo.zphjbsj).date }} - {{ getTimeStatus(fairInfo.startTime, fairInfo.endTime).statusText }} + {{ getTimeStatus(fairInfo.zphjbsj, fairInfo.zphjzsj).statusText }} - {{ getHoursBetween(fairInfo.startTime, fairInfo.endTime) }}小时 + {{ getHoursBetween(fairInfo.zphjbsj, fairInfo.zphjzsj) }}小时 - {{ parseDateTime(fairInfo.endTime).time }} - {{ parseDateTime(fairInfo.endTime).date }} + {{ parseDateTime(fairInfo.zphjzsj).time }} + {{ parseDateTime(fairInfo.zphjzsj).date }} @@ -76,6 +76,7 @@ { - getCompanyInfo(options.jobFairId); + zphId.value = options.jobFairId + getJobFairInfo(options.jobFairId, options.jobFairName); + getCompanyInfo(options.jobFairId, options.jobFairName); }); -function getCompanyInfo(id) { - $api.createRequest(`/app/fair/${id}`).then((resData) => { +function getJobFairInfo(id,name) { + $api.createRequest(`/app/internal/jobFairThirdPart/${id}`).then((resData) => { fairInfo.value = resData.data; - companyList.value = resData.data.companyList; hasAppointment(); }); } +function getCompanyInfo(id,name) { + $api.createRequest(`/app/internal/companyThirdPart/?zphID=${id}&zphmc=${name}`).then((resData) => { + companyList.value = resData.rows; + }); +} const hasAppointment = () => { const isTimePassed = (timeStr) => { diff --git a/packageA/pages/post/post.vue b/packageA/pages/post/post.vue index 5551afb..d593bae 100644 --- a/packageA/pages/post/post.vue +++ b/packageA/pages/post/post.vue @@ -23,20 +23,26 @@ :is-month="true" > - {{ jobInfo.jobTitle }} + {{ jobInfo.gwmc }} - + + + {{jobInfo.xlyq == '不限' ? '学历不限' : jobInfo.xlyq}} - + + + {{jobInfo.gwgzjy == '不限' ? '经验不限' : jobInfo.gwgzjy}} 来源  - {{ jobInfo.dataSource }} + 青岛人才网 @@ -53,7 +59,7 @@ 职位描述 - {{ jobInfo.description }} + {{ jobInfo.gwms }} @@ -61,7 +67,7 @@ 公司信息 单位详情 @@ -71,7 +77,7 @@ - {{ jobInfo.company?.name }} + {{ jobInfo.gsmc }}   + {{jobInfo.qyxz}} 在招 @@ -187,12 +194,13 @@ function seeExplain() { function getDetail(jobId) { return new Promise((reslove, reject) => { - $api.createRequest(`/app/job/${jobId}`).then((resData) => { - const { latitude, longitude, companyName, companyId } = resData.data; + $api.createRequest(`/app/internal/jobThirdPart/${jobId}`).then((resData) => { + const { gsID, gsmc, zphID} = resData.data; jobInfo.value = resData.data; reslove(resData.data); - getCompanyIsAJobs(companyId); - getCompetivetuveness(jobId); + getCompanyIsAJobs(gsID, gsmc, zphID); + // getCompetivetuveness(jobId); + return if (latitude && longitude) { mapCovers.value = [ { @@ -216,9 +224,9 @@ function getDetail(jobId) { }); } -function getCompanyIsAJobs(companyId) { - $api.createRequest(`/app/company/count/${companyId}`).then((resData) => { - companyCount.value = resData.data; +function getCompanyIsAJobs(gsID, gsmc, zphID) { + $api.createRequest(`/app/internal/jobThirdPart?gsID=${gsID}&gsmc=${gsmc}&zphID=${zphID}`).then((resData) => { + companyCount.value = resData.total; }); } @@ -238,7 +246,7 @@ function getCompetivetuveness(jobId) { // 申请岗位 function jobApply() { - const jobId = jobInfo.value.jobId; + const jobId = jobInfo.value.id; if (jobInfo.value.isApply) { const jobUrl = jobInfo.value.jobUrl; return window.open(jobUrl); diff --git a/pages/careerfair/careerfair copy.vue b/pages/careerfair/careerfair copy.vue new file mode 100644 index 0000000..0abc265 --- /dev/null +++ b/pages/careerfair/careerfair copy.vue @@ -0,0 +1,545 @@ + + + + + diff --git a/pages/careerfair/careerfair.vue b/pages/careerfair/careerfair.vue index a6754a7..4fe0789 100644 --- a/pages/careerfair/careerfair.vue +++ b/pages/careerfair/careerfair.vue @@ -13,7 +13,7 @@ - + @@ -42,42 +42,42 @@ class="card press-button" v-for="(item, index) in fairList" :key="index" - @click="navTo('/packageA/pages/exhibitors/exhibitors?jobFairId=' + item.jobFairId)" + @click="navTo('/packageA/pages/exhibitors/exhibitors?jobFairId=' + item.zphID + '&jobFairName=' + item.zphmc)" > - {{ item.name }} + {{ item.zphmc }} - {{ item.location }} + {{ item.jbf }} - + > --> - {{ parseDateTime(item.startTime).time }} - {{ parseDateTime(item.startTime).date }} + {{ parseDateTime(item.zphjbsj).time }} + {{ parseDateTime(item.zphjbsj).date }} - {{ getTimeStatus(item.startTime, item.endTime).statusText }} + {{ getTimeStatus(item.zphjbsj, item.zphjzsj).statusText }} - {{ getHoursBetween(item.startTime, item.endTime) }}小时 + {{ getHoursBetween(item.zphjbsj, item.zphjzsj) }}小时 - {{ parseDateTime(item.endTime).time }} - {{ parseDateTime(item.endTime).date }} + {{ parseDateTime(item.zphjzsj).time }} + {{ parseDateTime(item.zphjzsj).date }} - 内容简介:{{ item.description }} + 内容简介:{{ item.zphjj }} @@ -95,7 +95,7 @@ import Tabbar from '@/components/tabbar/midell-box.vue'; import useLocationStore from '@/stores/useLocationStore'; import { storeToRefs } from 'pinia'; const { longitudeVal, latitudeVal } = storeToRefs(useLocationStore()); -const { $api, navTo, cloneDeep } = inject('globalFunction'); +const { $api, navTo, cloneDeep,debounce } = inject('globalFunction'); const weekList = ref([]); const fairList = ref([]); const currentDay = ref({}); @@ -108,7 +108,7 @@ const pageState = reactive({ total: 0, maxPage: 2, pageSize: 10, - search: {}, + zphmc:'' }); onLoad(() => { @@ -122,6 +122,7 @@ onLoad(() => { startDate: currentDate, }); weekList.value = result; + currentDay.value.fullDate = result[0].fullDate getFair('refresh'); }); @@ -161,10 +162,12 @@ function seemsg(index) { } const handleScrollToLower = () => { + return getFair(); console.log('触底'); }; + function getFair(type = 'add') { if (type === 'refresh') { pageState.page = 1; @@ -174,21 +177,24 @@ function getFair(type = 'add') { pageState.page += 1; } let params = { - ...pageState.search, - current: pageState.page, - pageSize: pageState.pageSize, + zphmc:pageState.zphmc, + // current: pageState.page, + // pageSize: pageState.pageSize, }; + // if (currentDay.value?.fullDate) { + // params.queryDate = currentDay.value.fullDate; + // } if (currentDay.value?.fullDate) { - params.queryDate = currentDay.value.fullDate; + params.zphjbsj = currentDay.value.fullDate.replace(/-/g, ''); } - $api.createRequest('/app/fair', params).then((resData) => { + $api.createRequest('/app/internal/jobFairThirdPart', params).then((resData) => { const { rows, total } = resData; - console.log(rows); if (type === 'add') { - const str = pageState.pageSize * (pageState.page - 1); - const end = fairList.value.length; - const reslist = rows; - fairList.value.splice(str, end, ...reslist); + // const str = pageState.pageSize * (pageState.page - 1); + // const end = fairList.value.length; + // const reslist = rows; + // fairList.value.splice(str, end, ...reslist); + fairList.value = rows } else { fairList.value = rows; } From 06fb492cbdb9d018c61e05c539c228f0ab42cee1 Mon Sep 17 00:00:00 2001 From: xiebin <719488417@qq.com> Date: Sat, 22 Nov 2025 19:23:20 +0800 Subject: [PATCH 06/10] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=85=AC=E5=8F=B8?= =?UTF-8?q?=E8=AF=A6=E6=83=85=E6=8E=A5=E5=8F=A3=E5=9C=B0=E5=9D=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config.js | 4 ++-- packageA/pages/UnitDetails/UnitDetails.vue | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/config.js b/config.js index 5274677..6b16e54 100644 --- a/config.js +++ b/config.js @@ -1,6 +1,6 @@ export default { - baseUrl: 'https://fw.rc.qingdao.gov.cn/rgpp-api/api', // 内网 - // baseUrl: 'https://qd.zhaopinzao8dian.com/api', // 测试 + // baseUrl: 'https://fw.rc.qingdao.gov.cn/rgpp-api/api', // 内网 + baseUrl: 'https://qd.zhaopinzao8dian.com/api', // 测试 // baseUrl: 'http://192.168.3.29:8081', // sseAI+ // StreamBaseURl: 'http://39.98.44.136:8000', diff --git a/packageA/pages/UnitDetails/UnitDetails.vue b/packageA/pages/UnitDetails/UnitDetails.vue index f1b92b1..1ebea1d 100644 --- a/packageA/pages/UnitDetails/UnitDetails.vue +++ b/packageA/pages/UnitDetails/UnitDetails.vue @@ -106,7 +106,7 @@ function companyCollection() { } function getCompanyInfo(companyId,companyName,zphId) { - $api.createRequest(`/app/internal/companyThirdPart/${companyId}`).then((resData) => { + $api.createRequest(`/app/internal/companyThirdPart/${companyId}/${zphId}`).then((resData) => { companyInfo.value = resData.data; getJobsList(companyId,companyName,zphId); }); From abd91e2cb7117fec1d74cbf9e2b99a052a31cefe Mon Sep 17 00:00:00 2001 From: xiebin <719488417@qq.com> Date: Sun, 23 Nov 2025 18:20:28 +0800 Subject: [PATCH 07/10] =?UTF-8?q?=E5=88=86=E7=B1=BB=E6=B8=B2=E6=9F=93?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E7=B1=BB=E5=9E=8B=20:=20=E5=B2=97=E4=BD=8D?= =?UTF-8?q?=E8=AF=A6=E6=83=85=20=E5=85=AC=E5=8F=B8=E8=AF=A6=E6=83=85=20?= =?UTF-8?q?=E5=B2=97=E4=BD=8D=E6=94=B6=E8=97=8F=20=20=E5=85=AC=E5=8F=B8?= =?UTF-8?q?=E6=94=B6=E8=97=8F=20=E6=B5=8F=E8=A7=88=E8=AE=B0=E5=BD=95=20?= =?UTF-8?q?=E9=A2=84=E7=BA=A6=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../renderCompanyCollectionRecord.vue | 157 +++++++++ components/renderCompanys/renderCompanys.vue | 29 +- .../renderCompanysOutData.vue | 142 +++++++++ .../renderDeliveryRecord.vue | 201 ++++++++++++ .../renderJobCollectionRecord.vue | 202 ++++++++++++ .../renderJobViewRecord.vue | 201 ++++++++++++ components/renderJobs/renderJobs.vue | 36 +-- .../renderJobsOutData/renderJobsOutData.vue | 167 ++++++++++ main.js | 12 + .../Intendedposition/Intendedposition.vue | 12 +- packageA/pages/UnitDetails/UnitDetails.vue | 158 +++++++--- packageA/pages/browseJob/browseJob.vue | 8 +- packageA/pages/collection/collection.vue | 12 +- packageA/pages/exhibitors/exhibitors.vue | 70 +++-- packageA/pages/myResume/myResume.vue | 42 +++ packageA/pages/post/post.vue | 297 +++++++++++------- packageA/pages/reservation/reservation.vue | 39 ++- static/icon/close-blue.png | Bin 0 -> 2686 bytes static/icon/close-green.png | Bin 0 -> 2623 bytes static/icon/notice-blue.png | Bin 0 -> 3830 bytes static/icon/notice-green.png | Bin 0 -> 3888 bytes utils/request.js | 1 + 22 files changed, 1544 insertions(+), 242 deletions(-) create mode 100644 components/renderCompanyCollectionRecord/renderCompanyCollectionRecord.vue create mode 100644 components/renderCompanysOutData/renderCompanysOutData.vue create mode 100644 components/renderDeliveryRecord/renderDeliveryRecord.vue create mode 100644 components/renderJobCollectionRecord/renderJobCollectionRecord.vue create mode 100644 components/renderJobViewRecord/renderJobViewRecord.vue create mode 100644 components/renderJobsOutData/renderJobsOutData.vue create mode 100644 static/icon/close-blue.png create mode 100644 static/icon/close-green.png create mode 100644 static/icon/notice-blue.png create mode 100644 static/icon/notice-green.png diff --git a/components/renderCompanyCollectionRecord/renderCompanyCollectionRecord.vue b/components/renderCompanyCollectionRecord/renderCompanyCollectionRecord.vue new file mode 100644 index 0000000..12c768b --- /dev/null +++ b/components/renderCompanyCollectionRecord/renderCompanyCollectionRecord.vue @@ -0,0 +1,157 @@ + + + + + \ No newline at end of file diff --git a/components/renderCompanys/renderCompanys.vue b/components/renderCompanys/renderCompanys.vue index 0310e6f..1234a2d 100644 --- a/components/renderCompanys/renderCompanys.vue +++ b/components/renderCompanys/renderCompanys.vue @@ -2,18 +2,17 @@ - {{ job.gsmc }} + {{ job.name }} - - - - {{job.gsxy}} + + + + - + 在招职位· - {{ job.zzgwsl || '-' }} + {{ job.totalRecruitment || '-' }} @@ -21,14 +20,10 @@ - {{ vacanciesTo(job.vacancies) }} - - {{job.qyxz}} - @@ -56,10 +51,6 @@ const props = defineProps({ type: String, default: '', }, - zphId: { - type: String, - default: '', - }, }); const listData = computed(() => { @@ -67,7 +58,7 @@ const listData = computed(() => { }); function nextDetail(company) { - navTo(`/packageA/pages/UnitDetails/UnitDetails?companyId=${company.gsID}&companyName=${company.gsmc}&zphId=${props.zphId}`); + navTo(`/packageA/pages/UnitDetails/UnitDetails?companyId=${company.companyId}`); } @@ -128,7 +119,7 @@ function nextDetail(company) { } } .card-bottom{ - margin-top: 15rpx + margin-top: 4rpx margin-bottom: 10rpx display: flex justify-content: space-between @@ -139,4 +130,4 @@ function nextDetail(company) { .ris{ font-family: 'PingFangSC-Medium', 'PingFang SC', 'Helvetica Neue', Helvetica, Arial, 'Microsoft YaHei', sans-serif; } - + \ No newline at end of file diff --git a/components/renderCompanysOutData/renderCompanysOutData.vue b/components/renderCompanysOutData/renderCompanysOutData.vue new file mode 100644 index 0000000..87f22fa --- /dev/null +++ b/components/renderCompanysOutData/renderCompanysOutData.vue @@ -0,0 +1,142 @@ + + + + + diff --git a/components/renderDeliveryRecord/renderDeliveryRecord.vue b/components/renderDeliveryRecord/renderDeliveryRecord.vue new file mode 100644 index 0000000..07967ef --- /dev/null +++ b/components/renderDeliveryRecord/renderDeliveryRecord.vue @@ -0,0 +1,201 @@ + + + + + \ No newline at end of file diff --git a/components/renderJobCollectionRecord/renderJobCollectionRecord.vue b/components/renderJobCollectionRecord/renderJobCollectionRecord.vue new file mode 100644 index 0000000..c1f6888 --- /dev/null +++ b/components/renderJobCollectionRecord/renderJobCollectionRecord.vue @@ -0,0 +1,202 @@ + + + + + \ No newline at end of file diff --git a/components/renderJobViewRecord/renderJobViewRecord.vue b/components/renderJobViewRecord/renderJobViewRecord.vue new file mode 100644 index 0000000..111a610 --- /dev/null +++ b/components/renderJobViewRecord/renderJobViewRecord.vue @@ -0,0 +1,201 @@ + + + + + \ No newline at end of file diff --git a/components/renderJobs/renderJobs.vue b/components/renderJobs/renderJobs.vue index 1f67ae3..c2d0623 100644 --- a/components/renderJobs/renderJobs.vue +++ b/components/renderJobs/renderJobs.vue @@ -2,33 +2,33 @@ - {{ job.gwmc }} + {{ job.jobTitle }} - {{ job.gsmc }} + {{ job.gwmc }} - {{job.xlyq == '不限' ? '学历不限' : job.xlyq}} + - {{job.gwgzjy == '不限' ? '经验不限' : job.gwgzjy}} + - {{ vacanciesTo(job.zprs) }} + {{ vacanciesTo(job.vacancies) }} - {{ parseDateTime(job.createTime).date }} + {{ job.postingDate }} - + @@ -77,25 +77,7 @@ function nextDetail(job) { const recordData = recommedIndexDb.JobParameter(job); recommedIndexDb.addRecord(recordData); } - navTo(`/packageA/pages/post/post?jobId=${btoa(job.id)}`); -} -function parseDateTime(datetimeStr) { - if (!datetimeStr) return { time: '', date: '' }; - - const dateObj = new Date(datetimeStr); - - if (isNaN(dateObj.getTime())) return { time: '', date: '' }; // 无效时间 - - const year = dateObj.getFullYear(); - const month = String(dateObj.getMonth() + 1).padStart(2, '0'); - const day = String(dateObj.getDate()).padStart(2, '0'); - const hours = String(dateObj.getHours()).padStart(2, '0'); - const minutes = String(dateObj.getMinutes()).padStart(2, '0'); - - return { - time: `${hours}:${minutes}`, - date: `${year}-${month}-${day}`, - }; + navTo(`/packageA/pages/post/post?jobId=${btoa(job.jobId)}&dataType=1`); } diff --git a/components/renderJobsOutData/renderJobsOutData.vue b/components/renderJobsOutData/renderJobsOutData.vue new file mode 100644 index 0000000..ba50080 --- /dev/null +++ b/components/renderJobsOutData/renderJobsOutData.vue @@ -0,0 +1,167 @@ + + + + + diff --git a/main.js b/main.js index 8ae9e2a..5255af7 100644 --- a/main.js +++ b/main.js @@ -12,6 +12,12 @@ import SelectPopup from '@/components/selectPopup/selectPopup.vue' import SelectPopupPlugin from '@/components/selectPopup/selectPopupPlugin'; import RenderJobs from '@/components/renderJobs/renderJobs.vue'; import RenderCompanys from '@/components/renderCompanys/renderCompanys.vue'; +import RenderJobsOutData from '@/components/renderJobsOutData/renderJobsOutData.vue'; +import RenderCompanysOutData from '@/components/renderCompanysOutData/renderCompanysOutData.vue'; +import renderDeliveryRecord from '@/components/renderDeliveryRecord/renderDeliveryRecord.vue'; +import renderJobCollectionRecord from '@/components/renderJobCollectionRecord/renderJobCollectionRecord.vue'; +import renderCompanyCollectionRecord from '@/components/renderCompanyCollectionRecord/renderCompanyCollectionRecord.vue'; +import renderJobViewRecord from '@/components/renderJobViewRecord/renderJobViewRecord.vue'; // import Tabbar from '@/components/tabbar/midell-box.vue' // 自动导入 directives 目录下所有指令 const directives = import.meta.glob('./directives/*.js', { @@ -36,6 +42,12 @@ export function createApp() { app.component('SelectPopup', SelectPopup) app.component('RenderJobs', RenderJobs) app.component('RenderCompanys', RenderCompanys) + app.component('RenderJobsOutData', RenderJobsOutData) //渲染外部岗位数据列表 + app.component('RenderCompanysOutData', RenderCompanysOutData) //渲染外部公司数据列表 + app.component('renderDeliveryRecord', renderDeliveryRecord) //渲染岗位投递记录 + app.component('renderJobCollectionRecord', renderJobCollectionRecord) //渲染岗位收藏记录 + app.component('renderCompanyCollectionRecord', renderCompanyCollectionRecord) //渲染公司收藏记录 + app.component('renderJobViewRecord', renderJobViewRecord) //渲染岗位浏览记录 // app.component('tabbar-custom', Tabbar) for (const path in directives) { diff --git a/packageA/pages/Intendedposition/Intendedposition.vue b/packageA/pages/Intendedposition/Intendedposition.vue index 1ed76e9..edc81c5 100644 --- a/packageA/pages/Intendedposition/Intendedposition.vue +++ b/packageA/pages/Intendedposition/Intendedposition.vue @@ -1,12 +1,12 @@ @@ -41,9 +41,7 @@ onReachBottom(() => { getJobList(); }); -function navToPost(jobId) { - navTo(`/packageA/pages/post/post?jobId=${btoa(jobId)}`); -} + function getJobList(type = 'add') { if (type === 'refresh') { diff --git a/packageA/pages/UnitDetails/UnitDetails.vue b/packageA/pages/UnitDetails/UnitDetails.vue index 1ebea1d..c9a1998 100644 --- a/packageA/pages/UnitDetails/UnitDetails.vue +++ b/packageA/pages/UnitDetails/UnitDetails.vue @@ -21,7 +21,7 @@ - {{ companyInfo?.gsmc }} + {{ dataType === 2 ? companyInfo?.gsmc : companyInfo?.name }}   - {{companyInfo.gsxy}} + {{ companyInfo.gsxy }} 公司介绍 - {{ companyInfo.qyxz }} - + {{ dataType === 2 ? companyInfo.qyxz : companyInfo.description }} {{ isExpanded ? '收起' : '展开' }} @@ -48,12 +46,18 @@ src="@/static/icon/downs.png" > - - + 在招职位 + + { console.log(options); - getCompanyInfo(options.companyId,options.companyName,options.zphId); + dataType.value = options.dataType ? parseInt(options.dataType) : 1; + pageOptions.value = options; + + if (dataType.value === 2) { + // 第三方数据 + getCompanyInfo(options.companyId, options.zphId); + getJobsList('refresh'); + } else { + // 原数据 + getCompanyInfo(options.companyId || options.bussinessId); + } }); function companyCollection() { - const companyId = companyInfo.value.gsID; - if (companyInfo.value.isCollection) { - $api.createRequest(`/app/company/collection/${companyId}`, {}, 'DELETE').then((resData) => { - // getCompanyInfo(companyId); - $api.msg('取消收藏成功'); + if (dataType.value === 2) { + // 第三方数据收藏逻辑 + const id = companyInfo.value.id; + const companyId = companyInfo.value.gsID; + const zphId = companyInfo.value.zphID; + if (companyInfo.value.isCollection) { + $api.createRequest(`/app/company/collection/${id}/2`, {}, 'DELETE').then((resData) => { + getCompanyInfo(companyId, zphId); + $api.msg('取消收藏成功'); + }); + } else { + $api.createRequest(`/app/company/collection/${id}/2`, {}, 'POST').then((resData) => { + getCompanyInfo(companyId, zphId); + $api.msg('收藏成功'); + }); + } + } else { + // 原数据收藏逻辑 + const companyId = companyInfo.value.companyId; + if (companyInfo.value.isCollection) { + $api.createRequest(`/app/company/collection/${companyId}`, {}, 'DELETE').then((resData) => { + getCompanyInfo(companyId); + $api.msg('取消收藏成功'); + }); + } else { + $api.createRequest(`/app/company/collection/${companyId}`, {}, 'POST').then((resData) => { + getCompanyInfo(companyId); + $api.msg('收藏成功'); + }); + } + } +} + +function getCompanyInfo(...args) { + if (dataType.value === 2) { + // 第三方数据接口 + const [companyId, zphId] = args; + $api.createRequest(`/app/internal/companyThirdPart/${companyId}/${zphId}`).then((resData) => { + companyInfo.value = resData.data; }); } else { - $api.createRequest(`/app/company/collection/${companyId}`, {}, 'POST').then((resData) => { - // getCompanyInfo(companyId); - $api.msg('收藏成功'); + // 原数据接口 + const [companyId] = args; + $api.createRequest(`/app/company/${companyId}`).then((resData) => { + companyInfo.value = resData.data; + getJobsList(); }); } } -function getCompanyInfo(companyId,companyName,zphId) { - $api.createRequest(`/app/internal/companyThirdPart/${companyId}/${zphId}`).then((resData) => { - companyInfo.value = resData.data; - getJobsList(companyId,companyName,zphId); +function getJobsList(type = 'add') { + if (dataType.value === 2) { + // 第三方数据职位列表 + getThirdPartyJobsList(type); + } else { + // 原数据职位列表 + getOriginalJobsList(type); + } +} + +function getThirdPartyJobsList(type = 'add') { + const { companyId, companyName, zphId } = pageOptions.value; + + if (type === 'refresh') { + pageState.current = 1; + pageState.maxPage = 1; + } + if (type === 'add' && pageState.current < pageState.maxPage) { + pageState.current += 1; + } + + let params = { + current: pageState.current, + pageSize: pageState.pageSize, + }; + + $api.createRequest(`/app/internal/jobThirdPart?gsID=${companyId}&gsmc=${companyName}&zphID=${zphId}`, params).then((resData) => { + const { rows, total } = resData; + handleJobsListResponse(type, rows, total, 'current'); }); } -function getJobsList(companyId,companyName,zphId,type='add') { +function getOriginalJobsList(type = 'add') { if (type === 'refresh') { pageState.page = 1; pageState.maxPage = 1; @@ -120,26 +198,31 @@ function getJobsList(companyId,companyName,zphId,type='add') { if (type === 'add' && pageState.page < pageState.maxPage) { pageState.page += 1; } + let params = { current: pageState.page, pageSize: pageState.pageSize, }; - $api.createRequest(`/app/internal/jobThirdPart?gsID=${companyId}&gsmc=${companyName}&zphID=${zphId}`, ).then((resData) => { + + $api.createRequest(`/app/company/job/${companyInfo.value.companyId}`, params).then((resData) => { const { rows, total } = resData; - if (type === 'add') { - // const str = pageState.pageSize * (pageState.page - 1); - // const end = pageState.list.length; - // const reslist = rows; - // pageState.list.splice(str, end, ...reslist); - pageState.list = rows - } else { - pageState.list = rows; - } - pageState.total = resData.total; - pageState.maxPage = Math.ceil(pageState.total / pageState.pageSize); + handleJobsListResponse(type, rows, total, 'page'); }); } +function handleJobsListResponse(type, rows, total, pageKey) { + if (type === 'add') { + const str = pageState.pageSize * (pageState[pageKey] - 1); + const end = pageState.list.length; + const reslist = rows; + pageState.list.splice(str, end, ...reslist); + } else { + pageState.list = rows; + } + pageState.total = total; + pageState.maxPage = Math.ceil(pageState.total / pageState.pageSize); +} + function expand() { isExpanded.value = !isExpanded.value; } @@ -177,7 +260,6 @@ image { margin-right: 24rpx } .companyinfo-right{ - .row1{ font-weight: 500; font-size: 32rpx; @@ -213,7 +295,7 @@ image { } } .expanded { - max-height: 1000rpx; // 足够显示完整内容 + max-height: 1000rpx; } .expand{ display: flex @@ -288,7 +370,7 @@ image { } .card-companyName{ font-weight: 400; - font-size: 28rpx; + font-size: 28rpx; color: #6C7282; } .card-tags{ @@ -320,4 +402,4 @@ image { } } } - + \ No newline at end of file diff --git a/packageA/pages/browseJob/browseJob.vue b/packageA/pages/browseJob/browseJob.vue index 3b2f8f0..0f9aa20 100644 --- a/packageA/pages/browseJob/browseJob.vue +++ b/packageA/pages/browseJob/browseJob.vue @@ -25,12 +25,12 @@ - + > @@ -88,9 +88,7 @@ function toSelectDate() { }); } -function navToPost(jobId) { - navTo(`/packageA/pages/post/post?jobId=${btoa(jobId)}`); -} + function searchCollection(e) { const value = e.detail.value; diff --git a/packageA/pages/collection/collection.vue b/packageA/pages/collection/collection.vue index 928dd70..d1204c9 100644 --- a/packageA/pages/collection/collection.vue +++ b/packageA/pages/collection/collection.vue @@ -15,12 +15,12 @@ - + :latitude="latitudeVal"> + @@ -28,12 +28,12 @@ - + > diff --git a/packageA/pages/exhibitors/exhibitors.vue b/packageA/pages/exhibitors/exhibitors.vue index 82a649b..171d0eb 100644 --- a/packageA/pages/exhibitors/exhibitors.vue +++ b/packageA/pages/exhibitors/exhibitors.vue @@ -69,18 +69,18 @@ src="@/static/icon/downs.png" > - + - 参会单位({{ companyList.length }}) + 参会单位({{ pageState.total }}) - + > @@ -111,13 +111,24 @@ const { longitudeVal, latitudeVal } = storeToRefs(useLocationStore()); const isExpanded = ref(false); const fairInfo = ref({}); -const companyList = ref([]); + +const pageState = reactive({ + current: 0, + list: [], + total: 0, + maxPage: 1, + pageSize: 10, +}); const hasnext = ref(true); + const zphId = ref(''); +const pageOptions = ref({}) + onLoad((options) => { zphId.value = options.jobFairId + pageOptions.value = options getJobFairInfo(options.jobFairId, options.jobFairName); - getCompanyInfo(options.jobFairId, options.jobFairName); + getCompanyList('refresh'); }); function getJobFairInfo(id,name) { @@ -126,20 +137,43 @@ function getJobFairInfo(id,name) { hasAppointment(); }); } -function getCompanyInfo(id,name) { - $api.createRequest(`/app/internal/companyThirdPart/?zphID=${id}&zphmc=${name}`).then((resData) => { - companyList.value = resData.rows; +function getCompanyList(type='add') { + const { jobFairId,jobFairName} = pageOptions.value + if (type === 'refresh') { + pageState.current = 1; + pageState.maxPage = 1; + } + if (type === 'add' && pageState.current < pageState.maxPage) { + pageState.current += 1; + } + let params = { + current: pageState.current, + pageSize: pageState.pageSize, + }; + $api.createRequest(`/app/internal/companyThirdPart/?zphID=${jobFairId}&zphmc=${jobFairName}`,params ).then((resData) => { + const { rows, total } = resData; + if (type === 'add') { + const str = pageState.pageSize * (pageState.current - 1); + const end = pageState.list.length; + const reslist = rows; + pageState.list.splice(str, end, ...reslist); + } else { + pageState.list = rows; + } + pageState.total = resData.total; + pageState.maxPage = Math.ceil(pageState.total / pageState.pageSize); }); } const hasAppointment = () => { const isTimePassed = (timeStr) => { + if(!timeStr) return false const targetTime = new Date(timeStr.replace(/-/g, '/')).getTime(); // 兼容格式 const now = Date.now(); return now < targetTime; }; - hasnext.value = isTimePassed(fairInfo.value.startTime); + hasnext.value = isTimePassed(fairInfo.value.zphjbsj); }; function openMap(lat, lng, name = '位置') { @@ -157,16 +191,16 @@ function expand() { // 取消/收藏岗位 function applyExhibitors() { - const fairId = fairInfo.value.jobFairId; + const fairId = fairInfo.value.zphID; if (fairInfo.value.isCollection) { - // $api.createRequest(`/app/fair/collection/${fairId}`, {}, 'DELETE').then((resData) => { - // getCompanyInfo(fairId); - // $api.msg('取消预约成功'); - // }); + $api.createRequest(`/app/fair/collection/${fairId}`, {}, 'DELETE').then((resData) => { + getJobFairInfo(fairId); + $api.msg('取消预约成功'); + }); $api.msg('已预约成功'); } else { $api.createRequest(`/app/fair/collection/${fairId}`, {}, 'POST').then((resData) => { - getCompanyInfo(fairId); + getJobFairInfo(fairId); $api.msg('预约成功'); }); } diff --git a/packageA/pages/myResume/myResume.vue b/packageA/pages/myResume/myResume.vue index 2123cf4..78e47e4 100644 --- a/packageA/pages/myResume/myResume.vue +++ b/packageA/pages/myResume/myResume.vue @@ -5,6 +5,13 @@ + + + + {{userInfo.resumeOcrStatus}} + + + { getUserResume(); }); +function closeNotice() { + showNotice.value=false +} + function chooseResume() { uni.chooseImage({ sizeType: ["original", "compressed"], @@ -254,6 +266,36 @@ function uploadResume(tempFilePath, loading) { text-align: center; } } + +.notice-line + width 100%; + height:60rpx; + display: flex; + align-items: center; + justify-content: space-between; + box-sizing: border-box; + padding:0 30rpx + margin-bottom: 20rpx + .icon + width:35rpx; + height:35rpx; + .text + flex: 1; + overflow hidden + padding:0 25rpx + .close + width:25rpx; + height:25rpx; + +.notice-line.blue{ + background: #E8F1FF + color: #1677ff +} +.notice-line.green{ + background: #D4FFF1 + color: #38bb8f +} + image{ width: 100%; height: 100% diff --git a/packageA/pages/post/post.vue b/packageA/pages/post/post.vue index d593bae..92f3818 100644 --- a/packageA/pages/post/post.vue +++ b/packageA/pages/post/post.vue @@ -6,45 +6,59 @@ + + + - + - {{ jobInfo.gwmc }} + + + + {{ dataType === 2 ? jobInfo.gwmc : jobInfo.jobTitle }} - - + + {{jobInfo.xlyq == '不限' ? '学历不限' : jobInfo.xlyq}} + + + + + - - + + {{jobInfo.gwgzjy == '不限' ? '经验不限' : jobInfo.gwgzjy}} + + + + 来源  - 青岛人才网 + {{ dataType === 2 ? '青岛人才网' : jobInfo.dataSource }} + + @@ -54,20 +68,24 @@ 点击查看 + + 职位描述 - {{ jobInfo.gwms }} + {{ dataType === 2 ? jobInfo.gwms : jobInfo.description }} + + 公司信息 单位详情 @@ -77,16 +95,20 @@ - {{ jobInfo.gsmc }} + {{ dataType === 2 ? jobInfo.gsmc : jobInfo.company?.name }} -   - - {{jobInfo.qyxz}} +   + + {{jobInfo.qyxz}} 在招 @@ -104,7 +126,9 @@ > - + + + 竞争力分析 @@ -132,11 +156,15 @@ + + @@ -150,8 +178,10 @@ import { reactive, inject, watch, ref, onMounted, computed } from 'vue'; import { onLoad, onShow, onHide } from '@dcloudio/uni-app'; import dictLabel from '@/components/dict-Label/dict-Label.vue'; import RadarMap from './component/radarMap.vue'; + const { $api, navTo, getLenPx, parseQueryParams, navBack, isEmptyObject } = inject('globalFunction'); import config from '@/config.js'; + const matchingDegree = ref(['一般', '良好', '优秀', '极好']); const currentStep = ref(1); const companyCount = ref(0); @@ -162,9 +192,11 @@ const jobIdRef = ref(); const raderData = ref({}); const videoPalyerRef = ref(null); const explainUrlRef = ref(''); +const dataType = ref(1); // 1: 原数据, 2: 第三方数据 onLoad((option) => { if (option.jobId) { + dataType.value = option.dataType ? parseInt(option.dataType) : 1; initLoad(option); } }); @@ -172,6 +204,7 @@ onLoad((option) => { onShow(() => { const option = parseQueryParams(); // 兼容微信内置浏览器 if (option.jobId) { + dataType.value = option.dataType ? parseInt(option.dataType) : 1; initLoad(option); } }); @@ -187,92 +220,165 @@ function initLoad(option) { function seeExplain() { if (jobInfo.value.explainUrl) { videoPalyerRef.value?.open(jobInfo.value.explainUrl); - // console.log(jobInfo.value.explainUrl); - // explainUrlRef.value = jobInfo.value.explainUrl; } } function getDetail(jobId) { - return new Promise((reslove, reject) => { - $api.createRequest(`/app/internal/jobThirdPart/${jobId}`).then((resData) => { - const { gsID, gsmc, zphID} = resData.data; + if (dataType.value === 2) { + // 第三方数据接口 + return new Promise((reslove, reject) => { + $api.createRequest(`/app/internal/jobThirdPart/${jobId}`).then((resData) => { + const { gsID, gsmc, zphID } = resData.data; + jobInfo.value = resData.data; + reslove(resData.data); + getCompanyIsAJobs(gsID, gsmc, zphID); + + if (resData.data.latitude && resData.data.longitude) { + initMapCovers(resData.data.latitude, resData.data.longitude, resData.data.gsmc); + } + }); + }); + } else { + // 原数据接口 + $api.createRequest(`/app/job/${jobId}`).then((resData) => { + const { latitude, longitude, companyName, companyId } = resData.data; jobInfo.value = resData.data; - reslove(resData.data); - getCompanyIsAJobs(gsID, gsmc, zphID); - // getCompetivetuveness(jobId); - return + getCompanyIsAJobs(companyId); + getCompetivetuveness(jobId); + if (latitude && longitude) { - mapCovers.value = [ - { - latitude: latitude, - longitude: longitude, - iconPath: point, - label: { - content: companyName, - textAlign: 'center', - padding: 3, - fontSize: 12, - bgColor: '#FFFFFF', - anchorX: getTextWidth(companyName), // X 轴调整,负数向左 - borderRadius: 5, - }, - width: 34, - }, - ]; + initMapCovers(latitude, longitude, companyName); } }); - }); + } } -function getCompanyIsAJobs(gsID, gsmc, zphID) { - $api.createRequest(`/app/internal/jobThirdPart?gsID=${gsID}&gsmc=${gsmc}&zphID=${zphID}`).then((resData) => { - companyCount.value = resData.total; - }); +function initMapCovers(latitude, longitude, companyName) { + mapCovers.value = [ + { + latitude: latitude, + longitude: longitude, + iconPath: point, + label: { + content: companyName, + textAlign: 'center', + padding: 3, + fontSize: 12, + bgColor: '#FFFFFF', + anchorX: getTextWidth(companyName), + borderRadius: 5, + }, + width: 34, + }, + ]; +} + +function getCompanyIsAJobs(...args) { + if (dataType.value === 2) { + // 第三方数据获取公司职位数量 + const [gsID, gsmc, zphID] = args; + $api.createRequest(`/app/internal/jobThirdPart?gsID=${gsID}&gsmc=${gsmc}&zphID=${zphID}`).then((resData) => { + companyCount.value = resData.total; + }); + } else { + // 原数据获取公司职位数量 + const [companyId] = args; + $api.createRequest(`/app/company/count/${companyId}`).then((resData) => { + companyCount.value = resData.data; + }); + } } function getTextWidth(text, size = 12) { const canvas = document.createElement('canvas'); const context = canvas.getContext('2d'); context.font = `${12}px Arial`; - return -(context.measureText(text).width / 2) - 20; // 计算文字中心点 + return -(context.measureText(text).width / 2) - 20; } function getCompetivetuveness(jobId) { - $api.createRequest(`/app/job/competitiveness/${jobId}`, {}, 'GET').then((resData) => { - raderData.value = resData.data; - currentStep.value = resData.data.matchScore * 0.04; - }); + if (dataType.value !== 2) { + $api.createRequest(`/app/job/competitiveness/${jobId}`, {}, 'GET').then((resData) => { + raderData.value = resData.data; + currentStep.value = resData.data.matchScore * 0.04; + }); + } } // 申请岗位 function jobApply() { - const jobId = jobInfo.value.id; - if (jobInfo.value.isApply) { - const jobUrl = jobInfo.value.jobUrl; - return window.open(jobUrl); - } else { - $api.createRequest(`/app/job/apply/${jobId}`, {}, 'GET').then((resData) => { - getDetail(jobId); - $api.msg('申请成功'); + if (dataType.value === 2) { + $api.msg('敬请期待'); + return + // 第三方数据申请逻辑 + const jobId = jobInfo.value.id; + if (jobInfo.value.isApply) { const jobUrl = jobInfo.value.jobUrl; return window.open(jobUrl); - }); + } else { + $api.createRequest(`/app/job/apply/${jobId}`, {}, 'GET').then((resData) => { + getDetail(jobIdRef.value); + $api.msg('投递成功'); + const jobUrl = jobInfo.value.jobUrl; + return window.open(jobUrl); + }); + } + } else { + // 原数据申请逻辑 + const jobId = jobInfo.value.jobId; + if (jobInfo.value.isApply) { + const jobUrl = jobInfo.value.jobUrl; + return window.open(jobUrl); + } else { + $api.createRequest(`/app/job/apply/${jobId}`, {}, 'GET').then((resData) => { + getDetail(jobId); + $api.msg('申请成功'); + const jobUrl = jobInfo.value.jobUrl; + return window.open(jobUrl); + }); + } } } // 取消/收藏岗位 function jobCollection() { - const jobId = jobInfo.value.jobId; - if (jobInfo.value.isCollection) { - $api.createRequest(`/app/job/collection/${jobId}`, {}, 'DELETE').then((resData) => { - getDetail(jobId); - $api.msg('取消收藏成功'); - }); + if (dataType.value === 2) { + // 第三方数据收藏逻辑 + const id = jobInfo.value.id; + if (jobInfo.value.isCollection) { + $api.createRequest(`/app/job/collection/${id}/2`, {}, 'DELETE').then((resData) => { + getDetail(jobIdRef.value); + $api.msg('取消收藏成功'); + }); + } else { + $api.createRequest(`/app/job/collection/${id}/2`, {}, 'POST').then((resData) => { + getDetail(jobIdRef.value); + $api.msg('收藏成功'); + }); + } } else { - $api.createRequest(`/app/job/collection/${jobId}`, {}, 'POST').then((resData) => { - getDetail(jobId); - $api.msg('收藏成功'); - }); + // 原数据收藏逻辑 + const jobId = jobInfo.value.jobId; + if (jobInfo.value.isCollection) { + $api.createRequest(`/app/job/collection/${jobId}`, {}, 'DELETE').then((resData) => { + getDetail(jobId); + $api.msg('取消收藏成功'); + }); + } else { + $api.createRequest(`/app/job/collection/${jobId}`, {}, 'POST').then((resData) => { + getDetail(jobId); + $api.msg('收藏成功'); + }); + } + } +} + +// 处理公司详情跳转 +function handleCompanyDetail() { + if (dataType.value === 2) { + navTo(`/packageA/pages/UnitDetails/UnitDetails?companyId=${jobInfo.value.gsID}&companyName=${jobInfo.value.gsmc}&zphId=${jobInfo.value.zphID}&dataType=2`); + } else { + navTo(`/packageA/pages/UnitDetails/UnitDetails?companyId=${jobInfo.value.company.companyId}`); } } @@ -293,6 +399,7 @@ function getClass(index) { + \ No newline at end of file diff --git a/packageA/pages/reservation/reservation.vue b/packageA/pages/reservation/reservation.vue index 313a73d..89bf7c7 100644 --- a/packageA/pages/reservation/reservation.vue +++ b/packageA/pages/reservation/reservation.vue @@ -15,24 +15,24 @@ - + - + - {{ item.name }} + {{ item.zphmc }} - {{ item.location }} - - {{ item.zphdz }} + + - + 取消预约 @@ -72,6 +72,7 @@ const ranOptions = ref([ ]); function isTimePassed(timeStr) { + if(!timeStr) return false const targetTime = new Date(timeStr.replace(/-/g, '/')).getTime(); // 兼容格式 const now = Date.now(); return now < targetTime; @@ -88,11 +89,22 @@ function chnageRanOption(item) { } function updateCancel(item) { - const fairId = item.jobFairId; - $api.createRequest(`/app/fair/collection/${fairId}`, {}, 'DELETE').then((resData) => { - getList('refresh'); - $api.msg('取消预约成功'); - }); + const fairId = item.zphID; + uni.showModal({ + title: '提示', + content: '确定要取消预约吗?', + showCancel: true, + success: ({ confirm, cancel }) => { + if(confirm){ + $api.createRequest(`/app/fair/collection/${fairId}`, {}, 'DELETE').then((resData) => { + getList('refresh'); + $api.msg('取消预约成功'); + }); + } + } + }) + + } function getList(type = 'add', loading = true) { @@ -166,6 +178,7 @@ function getList(type = 'add', loading = true) { display: flex align-items: center } + } .card-Title{ font-family: 'PingFangSC-Medium', 'PingFang SC', 'Helvetica Neue', Helvetica, Arial, 'Microsoft YaHei', sans-serif; diff --git a/static/icon/close-blue.png b/static/icon/close-blue.png new file mode 100644 index 0000000000000000000000000000000000000000..024fd7b22a7435a5fd3ce6deaa15c1b7bc8c9860 GIT binary patch literal 2686 zcmW+&dpuO@8eTKACNrZM(@fc6Ff~h}a1f0cmRqwXCzWnWI1wt*7$w&%l5o(P$>k`U z-5$4g(M`1#acbHKIb_%_O+(WKNhxd`I;-=?TJN*o-}61+`#!&SeZMbrr?-$!)29Id zKo=n%K6q^T@lclG?`q$g5BbZn2qyl-_H9WA5w(N} zTs4Hm7ywskQGqlD1|J|6b3^K)ln@m-BFlMa-Nsr^ochuhKQA_3>W{3m9Ij0h)53pO z6^dtr=l0#_)T~XJ0%ro8&rDtYn9$|8?_~(TV$2x@$zxT6kxF1b7&(7ssFbc#Eqb%iSYmQgK=RfdIofBoC!J@Lea;038X$^C){AL&{F2uj zOzY_xM5%Afn*cce<}D*-8_RnMo)f@z%uGS^8c;)?hQE$TFGFC!JK|s_F&h5hegMD(i%w=OXnI`jfJKLx-5PtlI5bw~(;<7%M zD6CMq>39xr+92v1*l$dOqIDlM?+$+^O-x10gxlZMUkK&&!?AUCVVQn{dodhO81DYf zGP)z2Ahc#;?R!Hk7rP zdcZMv4GfQvT9@5)KA^1B*+ z3NpWz&^%bLBoRc$kUG{SjE%dbOXXX>4_`(>2DpUgsG17g4LmgxcbP<#{Z&zs4G6bw z%W~1mv?%Qq1yTK%w(z^}+Qy}Ryr?DnmZK7;@~muM;>PDc=vTM2g&RcR6VPpM$T{ZF zVDy$qL2@@6b3*t-#oT(+VS1bcA*}SAB2}HU;N@1#xqV;J`01TV@0>gp0>z59Qky3x zSpVxwD6f3}Snv?BXcd*;omIN!xgFMzp}c!Dqi=>tMPxkbRcb4taaB^3S2-0ITuB(g znNze<$9QwD3THm}H20>GG=ejy+5#lc^57dhf>5Mvt0~gW*bAxGZ-^h=yPI@79pseT zSv5w+bN6AWyk29spQtetbR_?K1;=jH%}2W2u(|22tX^>v{+q|to>y0Gh@DUZarwWj zgVa^kXBMY{I8%2z(zGiuGE)zbta&Cyn%3-!C~^QK*c%Eo&hqx6m=;asblyo9FN}xQ zWnC(%I-#O;{+4%BR_1W|wW;6mCl8Kc6jPmpM7IacFM;FLs%w(*zF3W((P6 z&hGg*1nmph9_u_JaHyHdXM0$Bt@@GOoX7UCZ}0k%oxQ~NaDKT4hx#WVQ{>9dgzpKt z6J|hnsFj0jTC`zGa59KdPOdY}IPnWF3iXJwn(gPirb(12339s0MiqrWrnOi zI20$?Bltw)1da4}(8iX5wXBWO0y$RXVPk(~a1_Q_R{nPP=D zAdB5Pne#Utd@KxfWZ!PgNGnoMUh-2{Sz*xuuDWIL!`CjZsPhHH6qlX+TrTB`+Wy1A zam0z|>oLV{8(jAby~B_od!uLv2*Swem(Axil6~t?l-KaFoaZ`qRx*}?%4?_Q`cgCz zp}*ncjhcJ=QB5bPBoc%X%C?(YtzI$sX)muI^4XuNu@;?%o7U|8G9L&3x}3rv^Rf^; z{fP7wbJbYQ{h>r#-Yx>jk%UCry}W^>lL*4=+uAxEd9thcqQH?}+ZX9aRx`!5HIhej zVQw}cg+Gx0ps)Qdca#Bg8q9~5oNc+IG>|jlHMqb~Nl%f8xhmzv8JAAvAzppso!p0) z_Cp;hXz-qph1Y#NSq0qG)mSE<{6H7ka@DK-l~J>^X=PNVID127fn$Q}T3q&^`IfVW zMpy=s(EOLrale$)P!Qa7wfb^=Z?Ik_g(?1EChyJn_4J|R)D728`s+&f5C|6@vyKN! z?Vx8kwIM6MFN`W$fm1C?^Yah5%5dsF^Qz>Zb+IEjb*cM+-_;nX6>d6Q9Us$sT~EYf zivKjbqRc<;$s+&%=5Q;$v>`Rn{rAPwcMnZJG@k9c1fPV?Z1$@C-bE1nL}v&>4DZQG zk_Jnx(=|+_^CgKRH@`OdSb&!@I;|pc=C^H$_k4xj7@q&sJT=k%)u@Ck(52>f?d?hU zZnXH%hIW12wD`7bAt3^cgMTgi(RNj`VYRf1L}VwTd#$W%?m4|Kc&Flrsq(fH2W3#hw?|-QD9rX0kCSK@$-tV`+(|fCns1PPH z5=?p?2T`HhI@AZtyV1mhjY}?551~!sys|&+%&0xw%!b;5$x=`=ywVIN=H^9&{(U>q z(*?;&j6eIh)ouEb7oDHnq@E8Kshv`KPOAK@`b-iX<99D@=|92ktQ1iW z`#(8G9j;w$oOq{mvmbR$&@#E@>M*HMwN+mlOfF1(YDu*DFjr?mJ+%YizT&-4FJJ)~ z<*$OOU$FsXwx#ZBIS2$Dd*B;B3j*B&N#s#80_rAIHx*bC?-1Ge))O(8-*Qb%|^=ZgocF%(l6&5G9F_8bYCT#D=odG1+}3 zrHx6tOetM9sV3Q#sI*DRZQPSw8kbVa@BDuM{{DEL?;p?mdwFi3*EiSO(?dtgPzwM6 z9WmkNOWQ~P9V|_HRs>!yrVY5;*TWUK{1h1i0QQX7P2|6K(@4j9-##JlQ1`oySBoNj zm>2X`oFo}n$<~*ORLNHEOHxr#AhY$e*3}ci*DMbddeu+8uv_gpO9AZnOUE;J5F|XU z2e3Ls5R(mLO`{;$#K64&0Gx=Rors+n0t)3#A(26lJ3d-`I=$HQ+<_LqW%sS;Tz0Jc ztJwPJwuWvqzL}S*%=%Vw$kMjY>aO7#^$Dl6g;bHo?9nY_S-Xg915ZPRz2dNSVIvKj zhZ$2oHr(6X&Yq>4zWX2x`s2OEwx`d=>-GLhOAiji7FVqPJJGshy&J9-zauvFZn5>p zW3TcXc2UZXi5F_}ZoB8UIbuvA!_DJK>`o$rivQHCd$PMfV$PJg-7+GS=aef~=ZTj# zRhn`$%tnlFeWxvpm@$wPkS5aA=foW`XUX|py+$DzVdGsu+Dnskv#qhS+ zN7d#O!G_($s7WblIgi1H-PqS_^Q)d1vSF-b`godmEYgxeMvQ)2UH#cu=nQ~t;vUvC z&*NRd>ZBvTsO{6EZ>M1 ztPVQ-b_fw zvQq5P>5N|iLj1d$6V84x@`NO7cgMcE;-V!j!*SoP?Z#0#S)~p>F9avx4Z3DvCDylK(p*D|tz1G%(wndi9OMMi9)k z!YX@h=zFoJ$lkl0p0RcH6ke6lyTb0CA1 zbNP~erz_{7X!H>n`7%=lLNa?o8GrJk1&Tg*hop(cqa=xi`q#50gs<)FDk5g4+DrD+ z_PH??6*ZW^Y+c61)UI6-(+Q5J(gzj??aO*Qw{)X(S}!A%(Vc8@#p$(!S{=Oh4in-B zJ%6yIVQ8Y9hvNw$`y>V3tjf&slUb&H{jl_?c4a2n7kj4F;azJMqh_Qf&5tZK_V{b# zr8Ximovn{J3SAk6Nv2@7v2+}dTmx}J5kH_%gDsql|Cxa~@+H?FEMGvC6UyhDx##7%k6kqXn$16Uou$-Qbmnc0Z;jep^V9Tb(&1(j12IC9jnr zcuZj%j`gj+{jxC`;6Ld^2U z%$agI+z3rtZ>Li}kWF}G4JZp|WHS$G*a|q*TLGIL5sA?MhtFXNR~cq;g)Ljz8ZfeX z5ricXH2_$bE+FNIn1!l{l>qUt!TyysE_;w)oV7ZA03q&0MjFx)i>jwt)apqoTzX^>I%_R9SIQC7@(J0IuS8h3HptxLXA&Ws( z6>ntIE&aOU1w6^?Sl3|-^&z=FOL*y4Nyk)*t1k>A$wki^9#^CFnh?j@YWsmx##96d zW`8Z4xam4f)Z)r+#nkMjSGIgzp5#-s{S}KFhcR~F=*-aIP-5zk{_OD7zT0DaS9xy3 zGCGONgX^x%9b-6J8zO7zo!L5mZ2RHYJ{~dH!9Yr@{(YU2W^!KRT6?h7tw6;A<#Wd^ zQ4@RI)Z>Tx;;oCDIqExWF00=1uGRTXx+Yvdl1Eo`^i*5?6BjB_1CmOA8<_D|NCl=pJOTQDgoEkyTyy+J|JGk|u)oj`MM8l;gS4TBx>D2r z)0qvL36({b_m^Esh&%oA%_cVRkN-&YVE6{JTQ0XPN1tU*sn^vrl684b`4xQr_96g( zGtlt literal 0 HcmV?d00001 diff --git a/static/icon/notice-blue.png b/static/icon/notice-blue.png new file mode 100644 index 0000000000000000000000000000000000000000..373531acf0aed991782c24d4a27c48bf70ad0af8 GIT binary patch literal 3830 zcmbVPXHZk!);zP^mnZ5U#S!+EhHrD0@ei?oM00>ly zi5=H={=4uv?#`xhO1TDg&d%Hz;PjGa06?gkYGULN?ml1Qc79Y>B$0aer0Ph@qg!2% zhGNrv>}~JocoCXKZOV*oF?{=O7jCGxd@g1L0`GobZ)%N-n4aPZkRPPC*u#i}7$_jMB7pb#8{5-2)e>8B^)9DxyjvWEzQ`Ew+}gbI zJSb>L>FK2BuiJsyN)AIhXqIKmWYgc(@#lS8`ORLf%j8*wai5=e2YIG&Dw-}6+AFBc zBUv*I+3NUgkyXy3IP_k|mP47>kmQI{9 z;YObSjvU%1@g}bC$2za<4`B{)Z`=kK*EH9E4M5G!6E5z>55^gsLt`rUG)ZS!IUc~j zPC+Ls-*j%dE|T`CCEt+_B4c4~*F^*-o`{N~S@5{QuMBtXPP@`S`LXWrox9C{Vi`oH z>xA$A1eS03`b8})0|lCC|H;4U(;a5)idAXY`FIX8M!eA3bAw{s*B@+ob@g70YPmEE)4`*-lg3K0 zdrVur@)Y&VBBB{dUYp4S3T~!+d~nY@x?f(UYO~_Fd{(^S*%*xnA7tb~Gq>n>>B0oc zq(I|cD&u&Z;hMY*v+!T`U=6R2XacXMU#wOB<7aDVmOdHWGx_&=P!ACqqwd+8{H#GMjTK%6ndbnMo^=FlP zU3RsFjbA5GPmiC!(!6tALt*8IS4@RN;LRTIN8)g%$3&){{N5c2{dRLaP~GU@73me< zysTSAyd$GD3*ql;GOr_k$+#VTwmbbbubY3l6YnB$l9>uV?>0LflUnLbKt6XM4eq`a zyV_1!$Z6_Y!sp#lW4)YZvF>QYh09jK6IQ7=5+n8?`AO75Qy$4}_%Aj5bE>(uqV6wS z_Te7sN_k083s%th;MW@F{cGz6h08KUAsWS-_0Wj}X_xGn=cWv9@KzC!!RUp+X8{;Y zBQ;xlZ*70$3nlH~>bwd4sJIcgx$1?<@+Mt+j@Kb{^w0K!*n98P!?3n951b9mZvD>Q zWH+l}6Yo<+6yth-dX;MLtIspJ`24ZSMa7%ra*&Z&+1Jj&j8l8t0Xutb_oKq-(Tpq! z^LWhuMOt)-FeT$<_$eg3*efqDPV40f7Zvo`_elSTp#HUMpoH)CdQ~0~FNyty$6FBQ zTXNa^O05JN>sld+)MN~KF(F@zC%EqQYTwl!D0OJ;!t6%ok&-;lCPy`&&b)xDPU2vqdZQP@j@8)G}Lq_YcXLom6f zHsuo%u5@N9;*SL#AiG-p17RYB?qC7mW>)8>D|g24xHs?<588*HIqknKL9=je7;upd zMYW}b=DZsKjPhJ7z2$T(-t#7-JH%cT7rF9aMyuOv@z;c1;>4k1nx4xkA~={y*aB}j zK4%2<|MC+HHlZFxznI})B4 z%X(6fN7IbyL!h(@Y4vtTTZe8(Du6)%KTTjunRF(!^VdHH0XQO5zF^RN9I?D`Atfl%4DfgtJSTlFCCL@Dy=S=IKh&Qf zjae0Br7f}qK%vB4JRT*R?o@96*t@G-6RMI03z@F?|IiZZnk;rYL}2F*0($~MNIbY-391any}N)h zaFSa$fAsNzi!@8grYiHXb^>jxXUE-mHxo0BUol`VjdZ)J^}Hn1`7JJ0eX#g&Y&@Y} z$~wP3pk4)~T4YT zT7z?)qkOS=gIVow?{O4-<4>)af{Gb+Pig9vvU|LOlcPZ@{7jXwU&kCop=uv4f-B~t}NMx2fN}(OyPhGuGWv@qP*2mUi;@%&)@SA)vDkDjz0tZ)} zqr3y$T$9e)4lVee_J-}S59i3q%7Xzlxa~Uk&r|EAsK>UW)j}y}qdc#dvuTXGD z_~04LW*84zU|+>s{(=Jow|$RCga~)qy3G*3t0K~KXBSauY^0h@ zx@07UVA$O5l5w_-(IfAprA2~t^cKU==mUhvQ3kiSk$g#~1Gj%!?-|@L)uhp`>M>>7 zdq)z^FHoMI&ppsa(~g{iap`I7)WUUnU|H=XoBYK)OAlt6G-7ljnTMeovU~wwT4|F0 zG=me)sXMy2bIFC3{q->p?kOtgA$@)LRJT8Ie+#M>Mn}?>BNNu^!s>5mPTBE556?bX z(7PXb8HWw}!G^s28E_+@@VA4oi8~c9uhTkXliMqSeql=cszz{%l{(9fyUS}VQKQ?iu zL2SgyZIW&Nt9|k`(8VsXC*|a%+H)sq9|FcHC5dK#i}38(mA6quVjp^WpY21K24gt#?IvL|#?|^*w7zP~T2=g}uqmWS44XP~jl8+mQ=KbV&DDN9_vLXtmF=<%m9C>F1Yc8c#p`~!MV|e%Fvoi6g$IN>nOZ{Nk z6-AWa^#}!V(Dl`&Z06BT^Dpja6T|iy7pF2q@zF=;1V!zx}L#n%Xh>_Y!D>nlJ)0R3i&r`B!0g7rZ7f2{R2HNvvoRu?(qFoJ}7Snh$a(P(4CPD!PrZ(RR5)HK$ zO!`v$F^Z{NBV}!QD-BDro?hT=d!h(iZ?z&Sf?-ZVe4sLc zi_uW`ibzG)%PauzaAYqDtwLlzy_N2)G*2=Vgz&rMCO}9UsfLDh7jFP|#iqqvT)@RH zMeElAEpOtFbD4L**IJ9Y#+O>Oe`PbRxO(D6iJgToe?vgG`ceDLu5+Ol58V+~xo z+G$E83Nyj~fDeVv{$WkQ;5$=zy)k&&$el>AN%r0pXPVG?0f1QjB0zQ z*VQO4LeEl(NZTy}nSTFxx_90J!)v{%ZGrAEpJLhCL3~yb8=Q{O@f?b)4X-30lfUEv zA`&a-_h)LZVZ}4@&$1u4zHX2$k&RjQ8yT(++xJz|>b)}xHF>AOEWi?ldYj+A&+RxC z!?-&p!`8xLD4s%nAu(K8)*Km7_lzqBGxl5dtvbU0Ex{k*1DQAc{<<7&;R;!RYHDr5 IF+LIhe*yxg;Q#;t literal 0 HcmV?d00001 diff --git a/static/icon/notice-green.png b/static/icon/notice-green.png new file mode 100644 index 0000000000000000000000000000000000000000..d335ce5a8f01cc8fc03cc3245d693ca879dad9b5 GIT binary patch literal 3888 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 Date: Mon, 24 Nov 2025 09:38:56 +0800 Subject: [PATCH 08/10] =?UTF-8?q?fix=20=E5=86=85=E9=83=A8=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E6=94=B6=E8=97=8F=E4=BC=A0=E5=8F=82bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packageA/pages/UnitDetails/UnitDetails.vue | 4 ++-- packageA/pages/post/post.vue | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packageA/pages/UnitDetails/UnitDetails.vue b/packageA/pages/UnitDetails/UnitDetails.vue index c9a1998..af8d916 100644 --- a/packageA/pages/UnitDetails/UnitDetails.vue +++ b/packageA/pages/UnitDetails/UnitDetails.vue @@ -128,12 +128,12 @@ function companyCollection() { // 原数据收藏逻辑 const companyId = companyInfo.value.companyId; if (companyInfo.value.isCollection) { - $api.createRequest(`/app/company/collection/${companyId}`, {}, 'DELETE').then((resData) => { + $api.createRequest(`/app/company/collection/${companyId}/1`, {}, 'DELETE').then((resData) => { getCompanyInfo(companyId); $api.msg('取消收藏成功'); }); } else { - $api.createRequest(`/app/company/collection/${companyId}`, {}, 'POST').then((resData) => { + $api.createRequest(`/app/company/collection/${companyId}/1`, {}, 'POST').then((resData) => { getCompanyInfo(companyId); $api.msg('收藏成功'); }); diff --git a/packageA/pages/post/post.vue b/packageA/pages/post/post.vue index 92f3818..d3932aa 100644 --- a/packageA/pages/post/post.vue +++ b/packageA/pages/post/post.vue @@ -360,12 +360,12 @@ function jobCollection() { // 原数据收藏逻辑 const jobId = jobInfo.value.jobId; if (jobInfo.value.isCollection) { - $api.createRequest(`/app/job/collection/${jobId}`, {}, 'DELETE').then((resData) => { + $api.createRequest(`/app/job/collection/${jobId}/1`, {}, 'DELETE').then((resData) => { getDetail(jobId); $api.msg('取消收藏成功'); }); } else { - $api.createRequest(`/app/job/collection/${jobId}`, {}, 'POST').then((resData) => { + $api.createRequest(`/app/job/collection/${jobId}/1`, {}, 'POST').then((resData) => { getDetail(jobId); $api.msg('收藏成功'); }); From 6af1a5def73f132a3f880daac590c14509226354 Mon Sep 17 00:00:00 2001 From: xiebing Date: Mon, 24 Nov 2025 09:47:03 +0800 Subject: [PATCH 09/10] style --- .../renderCompanyCollectionRecord.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components/renderCompanyCollectionRecord/renderCompanyCollectionRecord.vue b/components/renderCompanyCollectionRecord/renderCompanyCollectionRecord.vue index 12c768b..e07ec8c 100644 --- a/components/renderCompanyCollectionRecord/renderCompanyCollectionRecord.vue +++ b/components/renderCompanyCollectionRecord/renderCompanyCollectionRecord.vue @@ -4,7 +4,7 @@ {{ company.name }} - + {{company.industry}} {{company.scale }} @@ -143,7 +143,7 @@ function nextDetail(company) { } } .card-bottom{ - margin-top: 4rpx + margin-top: 15rpx margin-bottom: 10rpx display: flex justify-content: space-between From 9f92fc47cb9a0559974c85063eb4bde37b85a200 Mon Sep 17 00:00:00 2001 From: Apcallover <1503963513@qq.com> Date: Mon, 24 Nov 2025 14:33:23 +0800 Subject: [PATCH 10/10] =?UTF-8?q?flat:=20=E6=9A=82=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- App.vue | 1 + common/globalFunction.js | 7 +- index.html | 13 +- lib/encryption/sm2.min.js | 7 + {static/js => lib/encryption}/sm4.min.js | 0 static/js/aes.js | 234 ----------------------- utils/request.js | 5 +- 7 files changed, 16 insertions(+), 251 deletions(-) create mode 100644 lib/encryption/sm2.min.js rename {static/js => lib/encryption}/sm4.min.js (100%) delete mode 100644 static/js/aes.js diff --git a/App.vue b/App.vue index 3023406..9a66f58 100644 --- a/App.vue +++ b/App.vue @@ -51,6 +51,7 @@ function getUserInfo() { const sm2_privateKey = config.appInfo.sm2PrivateKey; let sm2_encrypt_result = data.data; let sm2_decrypt_result = sm2_Decrypt(sm2_encrypt_result, sm2_privateKey); + console.log(sm2_decrypt_result); if (typeof sm2_decrypt_result == 'string') sm2_decrypt_result = JSON.parse(sm2_decrypt_result); // 其次,对sm2解密后的结果进行 aes解密 diff --git a/common/globalFunction.js b/common/globalFunction.js index e67a461..a4bf4bd 100644 --- a/common/globalFunction.js +++ b/common/globalFunction.js @@ -1,3 +1,4 @@ +import '@/lib/encryption/sm4.min.js' import useUserStore from "../stores/useUserStore"; import { createRequest, @@ -7,9 +8,6 @@ import streamRequest, { chatRequest } from "../utils/streamRequest.js"; -const sm4 = typeof window.sm4 !== 'undefined' ? window.sm4 : - (typeof window.smCrypto !== 'undefined' ? window.smCrypto.sm4 : null); - export const CloneDeep = (props) => { if (typeof props !== 'object' || props === null) { return props @@ -564,7 +562,6 @@ function aes_Decrypt(word, key) { }) return decrypt.toString(CryptoJS.enc.Utf8) } - export function sm2_Decrypt(word, key) { return SM.decrypt(word, key); } @@ -588,7 +585,7 @@ export function sm4Decrypt(key, value, mode = "hex") { return decrypted } catch (e) { - console.log('解密失败') + console.log('解密失败', e) } } diff --git a/index.html b/index.html index 64927f6..2e04e64 100644 --- a/index.html +++ b/index.html @@ -24,16 +24,11 @@ - - - + - - - - -
- + +
+ \ No newline at end of file diff --git a/lib/encryption/sm2.min.js b/lib/encryption/sm2.min.js new file mode 100644 index 0000000..51e2e8e --- /dev/null +++ b/lib/encryption/sm2.min.js @@ -0,0 +1,7 @@ +/** + * Skipped minification because the original files appears to be already minified. + * Original file: /npm/sm-crypto@0.3.13/dist/sm2.js + * + * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files + */ +!function(t,r){"object"==typeof exports&&"object"==typeof module?module.exports=r():"function"==typeof define&&define.amd?define([],r):"object"==typeof exports?exports.sm2=r():t.sm2=r()}("undefined"!=typeof self?self:this,function(){return function(t){function r(e){if(i[e])return i[e].exports;var n=i[e]={i:e,l:!1,exports:{}};return t[e].call(n.exports,n,n.exports,r),n.l=!0,n.exports}var i={};return r.m=t,r.c=i,r.d=function(t,i,e){r.o(t,i)||Object.defineProperty(t,i,{configurable:!1,enumerable:!0,get:e})},r.n=function(t){var i=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(i,"a",i),i},r.o=function(t,r){return Object.prototype.hasOwnProperty.call(t,r)},r.p="",r(r.s=2)}([function(t,r,i){(function(){function i(t,r,i){null!=t&&("number"==typeof t?this.fromNumber(t,r,i):null==r&&"string"!=typeof t?this.fromString(t,256):this.fromString(t,r))}function e(){return new i(null)}function n(t,r,i,e,n,o){for(;--o>=0;){var s=r*this[t++]+i[e]+n;n=Math.floor(s/67108864),i[e++]=67108863&s}return n}function o(t,r,i,e,n,o){for(var s=32767&r,u=r>>15;--o>=0;){var h=32767&this[t],a=this[t++]>>15,f=u*h+a*s;h=s*h+((32767&f)<<15)+i[e]+(1073741823&n),n=(h>>>30)+(f>>>15)+u*a+(n>>>30),i[e++]=1073741823&h}return n}function s(t,r,i,e,n,o){for(var s=16383&r,u=r>>14;--o>=0;){var h=16383&this[t],a=this[t++]>>14,f=u*h+a*s;h=s*h+((16383&f)<<14)+i[e]+n,n=(h>>28)+(f>>14)+u*a,i[e++]=268435455&h}return n}function u(t){return pr.charAt(t)}function h(t,r){var i=vr[t.charCodeAt(r)];return null==i?-1:i}function a(t){for(var r=this.t-1;r>=0;--r)t[r]=this[r];t.t=this.t,t.s=this.s}function f(t){this.t=1,this.s=t<0?-1:0,t>0?this[0]=t:t<-1?this[0]=t+this.DV:this.t=0}function l(t){var r=e();return r.fromInt(t),r}function c(t,r){var e;if(16==r)e=4;else if(8==r)e=3;else if(256==r)e=8;else if(2==r)e=1;else if(32==r)e=5;else{if(4!=r)return void this.fromRadix(t,r);e=2}this.t=0,this.s=0;for(var n=t.length,o=!1,s=0;--n>=0;){var u=8==e?255&t[n]:h(t,n);u<0?"-"==t.charAt(n)&&(o=!0):(o=!1,0==s?this[this.t++]=u:s+e>this.DB?(this[this.t-1]|=(u&(1<>this.DB-s):this[this.t-1]|=u<=this.DB&&(s-=this.DB))}8==e&&0!=(128&t[0])&&(this.s=-1,s>0&&(this[this.t-1]|=(1<0&&this[this.t-1]==t;)--this.t}function v(t){if(this.s<0)return"-"+this.negate().toString(t);var r;if(16==t)r=4;else if(8==t)r=3;else if(2==t)r=1;else if(32==t)r=5;else{if(4!=t)return this.toRadix(t);r=2}var i,e=(1<0)for(h>h)>0&&(n=!0,o=u(i));s>=0;)h>(h+=this.DB-r)):(i=this[s]>>(h-=r)&e,h<=0&&(h+=this.DB,--s)),i>0&&(n=!0),n&&(o+=u(i));return n?o:"0"}function y(){var t=e();return i.ZERO.subTo(this,t),t}function m(){return this.s<0?this.negate():this}function d(t){var r=this.s-t.s;if(0!=r)return r;var i=this.t;if(0!=(r=i-t.t))return this.s<0?-r:r;for(;--i>=0;)if(0!=(r=this[i]-t[i]))return r;return 0}function g(t){var r,i=1;return 0!=(r=t>>>16)&&(t=r,i+=16),0!=(r=t>>8)&&(t=r,i+=8),0!=(r=t>>4)&&(t=r,i+=4),0!=(r=t>>2)&&(t=r,i+=2),0!=(r=t>>1)&&(t=r,i+=1),i}function T(){return this.t<=0?0:this.DB*(this.t-1)+g(this[this.t-1]^this.s&this.DM)}function F(t,r){var i;for(i=this.t-1;i>=0;--i)r[i+t]=this[i];for(i=t-1;i>=0;--i)r[i]=0;r.t=this.t+t,r.s=this.s}function b(t,r){for(var i=t;i=0;--i)r[i+s+1]=this[i]>>n|u,u=(this[i]&o)<=0;--i)r[i]=0;r[s]=u,r.t=this.t+s+1,r.s=this.s,r.clamp()}function B(t,r){r.s=this.s;var i=Math.floor(t/this.DB);if(i>=this.t)return void(r.t=0);var e=t%this.DB,n=this.DB-e,o=(1<>e;for(var s=i+1;s>e;e>0&&(r[this.t-i-1]|=(this.s&o)<>=this.DB;if(t.t>=this.DB;e+=this.s}else{for(e+=this.s;i>=this.DB;e-=t.s}r.s=e<0?-1:0,e<-1?r[i++]=this.DV+e:e>0&&(r[i++]=e),r.t=i,r.clamp()}function D(t,r){var e=this.abs(),n=t.abs(),o=e.t;for(r.t=o+n.t;--o>=0;)r[o]=0;for(o=0;o=0;)t[i]=0;for(i=0;i=r.DV&&(t[i+r.t]-=r.DV,t[i+r.t+1]=1)}t.t>0&&(t[t.t-1]+=r.am(i,r[i],t,2*i,0,1)),t.s=0,t.clamp()}function q(t,r,n){var o=t.abs();if(!(o.t<=0)){var s=this.abs();if(s.t0?(o.lShiftTo(f,u),s.lShiftTo(f,n)):(o.copyTo(u),s.copyTo(n));var l=u.t,c=u[l-1];if(0!=c){var p=c*(1<1?u[l-2]>>this.F2:0),v=this.FV/p,y=(1<=0&&(n[n.t++]=1,n.subTo(F,n)),i.ONE.dlShiftTo(l,F),F.subTo(u,u);u.t=0;){var b=n[--d]==c?this.DM:Math.floor(n[d]*v+(n[d-1]+m)*y);if((n[d]+=u.am(0,b,n,T,0,l))0&&n.rShiftTo(f,n),h<0&&i.ZERO.subTo(n,n)}}}function S(t){var r=e();return this.abs().divRemTo(t,null,r),this.s<0&&r.compareTo(i.ZERO)>0&&t.subTo(r,r),r}function E(t){this.m=t}function A(t){return t.s<0||t.compareTo(this.m)>=0?t.mod(this.m):t}function P(t){return t}function O(t){t.divRemTo(this.m,null,t)}function R(t,r,i){t.multiplyTo(r,i),this.reduce(i)}function M(t,r){t.squareTo(r),this.reduce(r)}function C(){if(this.t<1)return 0;var t=this[0];if(0==(1&t))return 0;var r=3&t;return r=r*(2-(15&t)*r)&15,r=r*(2-(255&t)*r)&255,r=r*(2-((65535&t)*r&65535))&65535,r=r*(2-t*r%this.DV)%this.DV,r>0?this.DV-r:-r}function H(t){this.m=t,this.mp=t.invDigit(),this.mpl=32767&this.mp,this.mph=this.mp>>15,this.um=(1<0&&this.m.subTo(r,r),r}function V(t){var r=e();return t.copyTo(r),this.reduce(r),r}function N(t){for(;t.t<=this.mt2;)t[t.t++]=0;for(var r=0;r>15)*this.mpl&this.um)<<15)&t.DM;for(i=r+this.m.t,t[i]+=this.m.am(0,e,t,r,0,this.m.t);t[i]>=t.DV;)t[i]-=t.DV,t[++i]++}t.clamp(),t.drShiftTo(this.m.t,t),t.compareTo(this.m)>=0&&t.subTo(this.m,t)}function j(t,r){t.squareTo(r),this.reduce(r)}function L(t,r,i){t.multiplyTo(r,i),this.reduce(i)}function z(){return 0==(this.t>0?1&this[0]:this.s)}function K(t,r){if(t>4294967295||t<1)return i.ONE;var n=e(),o=e(),s=r.convert(this),u=g(t)-1;for(s.copyTo(n);--u>=0;)if(r.sqrTo(n,o),(t&1<0)r.mulTo(o,s,n);else{var h=n;n=o,o=h}return r.revert(n)}function Z(t,r){var i;return i=t<256||r.isEven()?new E(r):new H(r),this.exp(t,i)}function U(){var t=e();return this.copyTo(t),t}function _(){if(this.s<0){if(1==this.t)return this[0]-this.DV;if(0==this.t)return-1}else{if(1==this.t)return this[0];if(0==this.t)return 0}return(this[1]&(1<<32-this.DB)-1)<>24}function Y(){return 0==this.t?this.s:this[0]<<16>>16}function G(t){return Math.floor(Math.LN2*this.DB/Math.log(t))}function J(){return this.s<0?-1:this.t<=0||1==this.t&&this[0]<=0?0:1}function Q(t){if(null==t&&(t=10),0==this.signum()||t<2||t>36)return"0";var r=this.chunkSize(t),i=Math.pow(t,r),n=l(i),o=e(),s=e(),u="";for(this.divRemTo(n,o,s);o.signum()>0;)u=(i+s.intValue()).toString(t).substr(1)+u,o.divRemTo(n,o,s);return s.intValue().toString(t)+u}function W(t,r){this.fromInt(0),null==r&&(r=10);for(var e=this.chunkSize(r),n=Math.pow(r,e),o=!1,s=0,u=0,a=0;a=e&&(this.dMultiply(n),this.dAddOffset(u,0),s=0,u=0))}s>0&&(this.dMultiply(Math.pow(r,s)),this.dAddOffset(u,0)),o&&i.ZERO.subTo(this,this)}function $(t,r,e){if("number"==typeof r)if(t<2)this.fromInt(1);else for(this.fromNumber(t,e),this.testBit(t-1)||this.bitwiseTo(i.ONE.shiftLeft(t-1),ut,this),this.isEven()&&this.dAddOffset(1,0);!this.isProbablePrime(r);)this.dAddOffset(2,0),this.bitLength()>t&&this.subTo(i.ONE.shiftLeft(t-1),this);else{var n=new Array,o=7&t;n.length=1+(t>>3),r.nextBytes(n),o>0?n[0]&=(1<0)for(e>e)!=(this.s&this.DM)>>e&&(r[n++]=i|this.s<=0;)e<8?(i=(this[t]&(1<>(e+=this.DB-8)):(i=this[t]>>(e-=8)&255,e<=0&&(e+=this.DB,--t)),0!=(128&i)&&(i|=-256),0==n&&(128&this.s)!=(128&i)&&++n,(n>0||i!=this.s)&&(r[n++]=i);return r}function rt(t){return 0==this.compareTo(t)}function it(t){return this.compareTo(t)<0?this:t}function et(t){return this.compareTo(t)>0?this:t}function nt(t,r,i){var e,n,o=Math.min(t.t,this.t);for(e=0;e>=16,r+=16),0==(255&t)&&(t>>=8,r+=8),0==(15&t)&&(t>>=4,r+=4),0==(3&t)&&(t>>=2,r+=2),0==(1&t)&&++r,r}function dt(){for(var t=0;t=this.t?0!=this.s:0!=(this[r]&1<>=this.DB;if(t.t>=this.DB;e+=this.s}else{for(e+=this.s;i>=this.DB;e+=t.s}r.s=e<0?-1:0,e>0?r[i++]=e:e<-1&&(r[i++]=this.DV+e),r.t=i,r.clamp()}function It(t){var r=e();return this.addTo(t,r),r}function qt(t){var r=e();return this.subTo(t,r),r}function St(t){var r=e();return this.multiplyTo(t,r),r}function Et(){var t=e();return this.squareTo(t),t}function At(t){var r=e();return this.divRemTo(t,r,null),r}function Pt(t){var r=e();return this.divRemTo(t,null,r),r}function Ot(t){var r=e(),i=e();return this.divRemTo(t,r,i),new Array(r,i)}function Rt(t){this[this.t]=this.am(0,t-1,this,0,0,this.t),++this.t,this.clamp()}function Mt(t,r){if(0!=t){for(;this.t<=r;)this[this.t++]=0;for(this[r]+=t;this[r]>=this.DV;)this[r]-=this.DV,++r>=this.t&&(this[this.t++]=0),++this[r]}}function Ct(){}function Ht(t){return t}function kt(t,r,i){t.multiplyTo(r,i)}function Vt(t,r){t.squareTo(r)}function Nt(t){return this.exp(t,new Ct)}function jt(t,r,i){var e=Math.min(this.t+t.t,r);for(i.s=0,i.t=e;e>0;)i[--e]=0;var n;for(n=i.t-this.t;e=0;)i[e]=0;for(e=Math.max(r-this.t,0);e2*this.m.t)return t.mod(this.m);if(t.compareTo(this.m)<0)return t;var r=e();return t.copyTo(r),this.reduce(r),r}function Zt(t){return t}function Ut(t){for(t.drShiftTo(this.m.t-1,this.r2),t.t>this.m.t+1&&(t.t=this.m.t+1,t.clamp()),this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3),this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);t.compareTo(this.r2)<0;)t.dAddOffset(1,this.m.t+1);for(t.subTo(this.r2,t);t.compareTo(this.m)>=0;)t.subTo(this.m,t)}function _t(t,r){t.squareTo(r),this.reduce(r)}function Xt(t,r,i){t.multiplyTo(r,i),this.reduce(i)}function Yt(t,r){var i,n,o=t.bitLength(),s=l(1);if(o<=0)return s;i=o<18?1:o<48?3:o<144?4:o<768?5:6,n=o<8?new E(r):r.isEven()?new zt(r):new H(r);var u=new Array,h=3,a=i-1,f=(1<1){var c=e();for(n.sqrTo(u[1],c);h<=f;)u[h]=e(),n.mulTo(c,u[h-2],u[h]),h+=2}var p,v,y=t.t-1,m=!0,d=e();for(o=g(t[y])-1;y>=0;){for(o>=a?p=t[y]>>o-a&f:(p=(t[y]&(1<0&&(p|=t[y-1]>>this.DB+o-a)),h=i;0==(1&p);)p>>=1,--h;if((o-=h)<0&&(o+=this.DB,--y),m)u[p].copyTo(s),m=!1;else{for(;h>1;)n.sqrTo(s,d),n.sqrTo(d,s),h-=2;h>0?n.sqrTo(s,d):(v=s,s=d,d=v),n.mulTo(d,u[p],s)}for(;y>=0&&0==(t[y]&1<0&&(r.rShiftTo(o,r),i.rShiftTo(o,i));r.signum()>0;)(n=r.getLowestSetBit())>0&&r.rShiftTo(n,r),(n=i.getLowestSetBit())>0&&i.rShiftTo(n,i),r.compareTo(i)>=0?(r.subTo(i,r),r.rShiftTo(1,r)):(i.subTo(r,i),i.rShiftTo(1,i));return o>0&&i.lShiftTo(o,i),i}function Jt(t){if(t<=0)return 0;var r=this.DV%t,i=this.s<0?t-1:0;if(this.t>0)if(0==r)i=this[0]%t;else for(var e=this.t-1;e>=0;--e)i=(r*i+this[e])%t;return i}function Qt(t){var r=t.isEven();if(this.isEven()&&r||0==t.signum())return i.ZERO;for(var e=t.clone(),n=this.clone(),o=l(1),s=l(0),u=l(0),h=l(1);0!=e.signum();){for(;e.isEven();)e.rShiftTo(1,e),r?(o.isEven()&&s.isEven()||(o.addTo(this,o),s.subTo(t,s)),o.rShiftTo(1,o)):s.isEven()||s.subTo(t,s),s.rShiftTo(1,s);for(;n.isEven();)n.rShiftTo(1,n),r?(u.isEven()&&h.isEven()||(u.addTo(this,u),h.subTo(t,h)),u.rShiftTo(1,u)):h.isEven()||h.subTo(t,h),h.rShiftTo(1,h);e.compareTo(n)>=0?(e.subTo(n,e),r&&o.subTo(u,o),s.subTo(h,s)):(n.subTo(e,n),r&&u.subTo(o,u),h.subTo(s,h))}return 0!=n.compareTo(i.ONE)?i.ZERO:h.compareTo(t)>=0?h.subtract(t):h.signum()<0?(h.addTo(t,h),h.signum()<0?h.add(t):h):h}function Wt(t){var r,i=this.abs();if(1==i.t&&i[0]<=yr[yr.length-1]){for(r=0;r>1)>yr.length&&(t=yr.length);for(var s=e(),u=0;u>8&255,gr[Tr++]^=t>>16&255,gr[Tr++]^=t>>24&255,Tr>=Br&&(Tr-=Br)}function rr(){tr((new Date).getTime())}function ir(){if(null==dr){for(rr(),dr=hr(),dr.init(gr),Tr=0;Tr>>8,gr[Tr++]=255&Fr;Tr=0,rr()}nr.prototype.nextBytes=er,or.prototype.init=sr,or.prototype.next=ur;var Br=256;r=t.exports={default:i,BigInteger:i,SecureRandom:nr}}).call(this)},function(t,r,i){"use strict";function e(t){if(Array.isArray(t)){for(var r=0,i=Array(t.length);r>>32-i}function o(t,r){for(var i=[],e=t.length-1;e>=0;e--)i[e]=255&(t[e]^r[e]);return i}function s(t){return t^n(t,9)^n(t,17)}function u(t){return t^n(t,15)^n(t,23)}function h(t){var r=8*t.length,i=r%512;i=i>=448?512-i%448-1:448-i-1;for(var o=new Array((i-7)/8),h=new Array(8),a=0,c=o.length;a=0;y--)if(r.length>8){var m=r.length-8;h[y]=parseInt(r.substr(m),2),r=r.substr(0,m)}else r.length>0&&(h[y]=parseInt(r,2),r="");for(var d=new Uint8Array([].concat(e(t),[128],o,h)),g=new DataView(d.buffer,0),T=d.length/64,F=new Uint32Array([1937774191,1226093241,388252375,3666478592,2842636476,372324522,3817729613,2969243214]),b=0;b=0&&N<=15?2043430169:2055708042,M=n(n(I,12)+A+n(V,N),7),C=M^n(I,12),H=(N>=0&&N<=15?I^q^S:I&q|I&S|q&S)+E+C+l[N],k=(N>=0&&N<=15?A^P^O:A&P|~A&O)+R+M+f[N],E=S,S=n(q,9),q=I,I=H,R=O,O=n(P,19),P=A,A=s(k);F[0]^=I,F[1]^=q,F[2]^=S,F[3]^=E,F[4]^=A,F[5]^=P,F[6]^=O,F[7]^=R}for(var j=[],L=0,z=F.length;L>>24,(16711680&K)>>>16,(65280&K)>>>8,255&K)}return j}function a(t,r){for(r.length>c&&(r=h(r));r.length2&&void 0!==arguments[2]?arguments[2]:1;t="string"==typeof t?m.hexToArray(m.utf8ToHex(t)):Array.prototype.slice.call(t),r=m.getGlobalCurve().decodePointHex(r);var n=m.generateKeyPairHex(),o=new c(n.privateKey,16),s=n.publicKey;s.length>128&&(s=s.substr(s.length-128));var u=r.multiply(o),h=m.hexToArray(m.leftPad(u.getX().toBigInteger().toRadix(16),64)),a=m.hexToArray(m.leftPad(u.getY().toBigInteger().toRadix(16),64)),f=m.arrayToHex(d([].concat(h,t,a))),l=1,p=0,v=[],y=[].concat(h,a),g=function(){v=d([].concat(e(y),[l>>24&255,l>>16&255,l>>8&255,255&l])),l++,p=0};g();for(var T=0,F=t.length;T2&&void 0!==arguments[2]?arguments[2]:1,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},o=n.output,s=void 0===o?"string":o;r=new c(r,16);var u=t.substr(128,64),h=t.substr(192);i===w&&(u=t.substr(t.length-64),h=t.substr(128,t.length-128-64));var a=m.hexToArray(h),f=m.getGlobalCurve().decodePointHex("04"+t.substr(0,128)),l=f.multiply(r),p=m.hexToArray(m.leftPad(l.getX().toBigInteger().toRadix(16),64)),v=m.hexToArray(m.leftPad(l.getY().toBigInteger().toRadix(16),64)),y=1,g=0,T=[],F=[].concat(p,v),b=function(){T=d([].concat(e(F),[y>>24&255,y>>16&255,y>>8&255,255&y])),y++,g=0};b();for(var B=0,x=a.length;B2&&void 0!==arguments[2]?arguments[2]:{},e=i.pointPool,n=i.der,o=i.hash,s=i.publicKey,u=i.userId,l="string"==typeof t?m.utf8ToHex(t):m.arrayToHex(t);o&&(s=s||a(r),l=h(l,s,u));var p=new c(r,16),y=new c(l,16),d=null,g=null,T=null;do{do{var F=void 0;F=e&&e.length?e.pop():f(),d=F.k,g=y.add(F.x1).mod(b)}while(g.equals(c.ZERO)||g.add(d).equals(b));T=p.add(c.ONE).modInverse(b).multiply(d.subtract(g.multiply(p))).mod(b)}while(T.equals(c.ZERO));return n?v(g,T):m.leftPad(g.toString(16),64)+m.leftPad(T.toString(16),64)}function u(t,r,i){var e=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},n=e.der,o=e.hash,s=e.userId,u="string"==typeof t?m.utf8ToHex(t):m.arrayToHex(t);o&&(u=h(u,i,s));var a=void 0,f=void 0;if(n){var l=y(r);a=l.r,f=l.s}else a=new c(r.substring(0,64),16),f=new c(r.substring(64),16);var p=F.decodePointHex(i),v=new c(u,16),d=a.add(f).mod(b);if(d.equals(c.ZERO))return!1;var g=T.multiply(f).add(p.multiply(d)),w=v.add(g.getX().toBigInteger()).mod(b);return a.equals(w)}function h(t,r){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"1234567812345678";i=m.utf8ToHex(i);var e=m.leftPad(T.curve.a.toBigInteger().toRadix(16),64),n=m.leftPad(T.curve.b.toBigInteger().toRadix(16),64),o=m.leftPad(T.getX().toBigInteger().toRadix(16),64),s=m.leftPad(T.getY().toBigInteger().toRadix(16),64),u=void 0,h=void 0;if(128===r.length)u=r.substr(0,64),h=r.substr(64,64);else{var a=T.curve.decodePointHex(r);u=m.leftPad(a.getX().toBigInteger().toRadix(16),64),h=m.leftPad(a.getY().toBigInteger().toRadix(16),64)}var f=m.hexToArray(i+e+n+o+s+u+h),l=4*i.length;f.unshift(255&l),f.unshift(l>>8&255);var c=d(f);return m.arrayToHex(d(c.concat(m.hexToArray(t))))}function a(t){var r=T.multiply(new c(t,16));return"04"+m.leftPad(r.getX().toBigInteger().toString(16),64)+m.leftPad(r.getY().toBigInteger().toString(16),64)}function f(){var t=m.generateKeyPairHex(),r=F.decodePointHex(t.publicKey);return t.k=new c(t.privateKey,16),t.x1=r.getX().toBigInteger(),t}var l=i(0),c=l.BigInteger,p=i(3),v=p.encodeDer,y=p.decodeDer,m=i(4),d=i(1).sm3,g=m.generateEcparam(),T=g.G,F=g.curve,b=g.n,w=0;t.exports={generateKeyPairHex:m.generateKeyPairHex,compressPublicKeyHex:m.compressPublicKeyHex,comparePublicKeyHex:m.comparePublicKeyHex,doEncrypt:n,doDecrypt:o,doSignature:s,doVerifySignature:u,getPublicKeyFromPrivateKey:a,getPoint:f,verifyPublicKey:m.verifyPublicKey}},function(t,r,i){"use strict";function e(t,r){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!r||"object"!=typeof r&&"function"!=typeof r?t:r}function n(t,r){if("function"!=typeof r&&null!==r)throw new TypeError("Super expression must either be null or a function, not "+typeof r);t.prototype=Object.create(r&&r.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),r&&(Object.setPrototypeOf?Object.setPrototypeOf(t,r):t.__proto__=r)}function o(t,r){if(!(t instanceof r))throw new TypeError("Cannot call a class as a function")}function s(t){var r=t.toString(16);if("-"!==r[0])r.length%2==1?r="0"+r:r.match(/^[0-7]/)||(r="00"+r);else{r=r.substr(1);var i=r.length;i%2==1?i+=1:r.match(/^[0-7]/)||(i+=2);for(var e="",n=0;n>>2]|=(255&t.charCodeAt(e))<<24-e%4*8;for(var n=[],o=0;o>>2]>>>24-o%4*8&255;n.push((s>>>4).toString(16)),n.push((15&s).toString(16))}return n.join("")}function h(t,r){return t.length>=r?t:new Array(r-t.length+1).join("0")+t}function a(t){return t.map(function(t){return t=t.toString(16),1===t.length?"0"+t:t}).join("")}function f(t){for(var r=[],i=0,e=0;e<2*t.length;e+=2)r[e>>>3]|=parseInt(t[i],10)<<24-e%8*4,i++;try{for(var n=[],o=0;o>>2]>>>24-o%4*8&255;n.push(String.fromCharCode(s))}return decodeURIComponent(escape(n.join("")))}catch(t){throw new Error("Malformed UTF-8 data")}}function l(t){var r=[],i=t.length;i%2!=0&&(t=h(t,i+1)),i=t.length;for(var e=0;e0;n--){e=e.twice();var o=r.testBit(n);o!==t.testBit(n)&&(e=e.add(o?this:i))}return e}}]),t}(),l=function(){function t(r,i,n){e(this,t),this.q=r,this.a=this.fromBigInteger(i),this.b=this.fromBigInteger(n),this.infinity=new f(this,null,null)}return n(t,[{key:"equals",value:function(t){return t===this||this.q.equals(t.q)&&this.a.equals(t.a)&&this.b.equals(t.b)}},{key:"fromBigInteger",value:function(t){return new a(this.q,t)}},{key:"decodePointHex",value:function(t){switch(parseInt(t.substr(0,2),16)){case 0:return this.infinity;case 2:case 3:var r=this.fromBigInteger(new s(t.substr(2),16)),i=this.fromBigInteger(r.multiply(r.square()).add(r.multiply(this.a)).add(this.b).toBigInteger().modPow(this.q.divide(new s("4")).add(s.ONE),this.q));return i.toBigInteger().mod(u).equals(new s(t.substr(0,2),16).subtract(u))||(i=i.negate()),new f(this,r,i);case 4:case 6:case 7:var e=(t.length-2)/2,n=t.substr(2,e),o=t.substr(e+2,e);return new f(this,this.fromBigInteger(new s(n,16)),this.fromBigInteger(new s(o,16)));default:return null}}}]),t}();t.exports={ECPointFp:f,ECCurveFp:l}}])}); \ No newline at end of file diff --git a/static/js/sm4.min.js b/lib/encryption/sm4.min.js similarity index 100% rename from static/js/sm4.min.js rename to lib/encryption/sm4.min.js diff --git a/static/js/aes.js b/static/js/aes.js deleted file mode 100644 index 166e3ea..0000000 --- a/static/js/aes.js +++ /dev/null @@ -1,234 +0,0 @@ -;(function (root, factory, undef) { - if (typeof exports === "object") { - // CommonJS - module.exports = exports = factory(require("./core"), require("./enc-base64"), require("./md5"), require("./evpkdf"), require("./cipher-core")); - } - else if (typeof define === "function" && define.amd) { - // AMD - define(["./core", "./enc-base64", "./md5", "./evpkdf", "./cipher-core"], factory); - } - else { - // Global (browser) - factory(root.CryptoJS); - } -}(this, function (CryptoJS) { - - (function () { - // Shortcuts - var C = CryptoJS; - var C_lib = C.lib; - var BlockCipher = C_lib.BlockCipher; - var C_algo = C.algo; - - // Lookup tables - var SBOX = []; - var INV_SBOX = []; - var SUB_MIX_0 = []; - var SUB_MIX_1 = []; - var SUB_MIX_2 = []; - var SUB_MIX_3 = []; - var INV_SUB_MIX_0 = []; - var INV_SUB_MIX_1 = []; - var INV_SUB_MIX_2 = []; - var INV_SUB_MIX_3 = []; - - // Compute lookup tables - (function () { - // Compute double table - var d = []; - for (var i = 0; i < 256; i++) { - if (i < 128) { - d[i] = i << 1; - } else { - d[i] = (i << 1) ^ 0x11b; - } - } - - // Walk GF(2^8) - var x = 0; - var xi = 0; - for (var i = 0; i < 256; i++) { - // Compute sbox - var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4); - sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63; - SBOX[x] = sx; - INV_SBOX[sx] = x; - - // Compute multiplication - var x2 = d[x]; - var x4 = d[x2]; - var x8 = d[x4]; - - // Compute sub bytes, mix columns tables - var t = (d[sx] * 0x101) ^ (sx * 0x1010100); - SUB_MIX_0[x] = (t << 24) | (t >>> 8); - SUB_MIX_1[x] = (t << 16) | (t >>> 16); - SUB_MIX_2[x] = (t << 8) | (t >>> 24); - SUB_MIX_3[x] = t; - - // Compute inv sub bytes, inv mix columns tables - var t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100); - INV_SUB_MIX_0[sx] = (t << 24) | (t >>> 8); - INV_SUB_MIX_1[sx] = (t << 16) | (t >>> 16); - INV_SUB_MIX_2[sx] = (t << 8) | (t >>> 24); - INV_SUB_MIX_3[sx] = t; - - // Compute next counter - if (!x) { - x = xi = 1; - } else { - x = x2 ^ d[d[d[x8 ^ x2]]]; - xi ^= d[d[xi]]; - } - } - }()); - - // Precomputed Rcon lookup - var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36]; - - /** - * AES block cipher algorithm. - */ - var AES = C_algo.AES = BlockCipher.extend({ - _doReset: function () { - var t; - - // Skip reset of nRounds has been set before and key did not change - if (this._nRounds && this._keyPriorReset === this._key) { - return; - } - - // Shortcuts - var key = this._keyPriorReset = this._key; - var keyWords = key.words; - var keySize = key.sigBytes / 4; - - // Compute number of rounds - var nRounds = this._nRounds = keySize + 6; - - // Compute number of key schedule rows - var ksRows = (nRounds + 1) * 4; - - // Compute key schedule - var keySchedule = this._keySchedule = []; - for (var ksRow = 0; ksRow < ksRows; ksRow++) { - if (ksRow < keySize) { - keySchedule[ksRow] = keyWords[ksRow]; - } else { - t = keySchedule[ksRow - 1]; - - if (!(ksRow % keySize)) { - // Rot word - t = (t << 8) | (t >>> 24); - - // Sub word - t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff]; - - // Mix Rcon - t ^= RCON[(ksRow / keySize) | 0] << 24; - } else if (keySize > 6 && ksRow % keySize == 4) { - // Sub word - t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff]; - } - - keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t; - } - } - - // Compute inv key schedule - var invKeySchedule = this._invKeySchedule = []; - for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) { - var ksRow = ksRows - invKsRow; - - if (invKsRow % 4) { - var t = keySchedule[ksRow]; - } else { - var t = keySchedule[ksRow - 4]; - } - - if (invKsRow < 4 || ksRow <= 4) { - invKeySchedule[invKsRow] = t; - } else { - invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[(t >>> 16) & 0xff]] ^ - INV_SUB_MIX_2[SBOX[(t >>> 8) & 0xff]] ^ INV_SUB_MIX_3[SBOX[t & 0xff]]; - } - } - }, - - encryptBlock: function (M, offset) { - this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX); - }, - - decryptBlock: function (M, offset) { - // Swap 2nd and 4th rows - var t = M[offset + 1]; - M[offset + 1] = M[offset + 3]; - M[offset + 3] = t; - - this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX); - - // Inv swap 2nd and 4th rows - var t = M[offset + 1]; - M[offset + 1] = M[offset + 3]; - M[offset + 3] = t; - }, - - _doCryptBlock: function (M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) { - // Shortcut - var nRounds = this._nRounds; - - // Get input, add round key - var s0 = M[offset] ^ keySchedule[0]; - var s1 = M[offset + 1] ^ keySchedule[1]; - var s2 = M[offset + 2] ^ keySchedule[2]; - var s3 = M[offset + 3] ^ keySchedule[3]; - - // Key schedule row counter - var ksRow = 4; - - // Rounds - for (var round = 1; round < nRounds; round++) { - // Shift rows, sub bytes, mix columns, add round key - var t0 = SUB_MIX_0[s0 >>> 24] ^ SUB_MIX_1[(s1 >>> 16) & 0xff] ^ SUB_MIX_2[(s2 >>> 8) & 0xff] ^ SUB_MIX_3[s3 & 0xff] ^ keySchedule[ksRow++]; - var t1 = SUB_MIX_0[s1 >>> 24] ^ SUB_MIX_1[(s2 >>> 16) & 0xff] ^ SUB_MIX_2[(s3 >>> 8) & 0xff] ^ SUB_MIX_3[s0 & 0xff] ^ keySchedule[ksRow++]; - var t2 = SUB_MIX_0[s2 >>> 24] ^ SUB_MIX_1[(s3 >>> 16) & 0xff] ^ SUB_MIX_2[(s0 >>> 8) & 0xff] ^ SUB_MIX_3[s1 & 0xff] ^ keySchedule[ksRow++]; - var t3 = SUB_MIX_0[s3 >>> 24] ^ SUB_MIX_1[(s0 >>> 16) & 0xff] ^ SUB_MIX_2[(s1 >>> 8) & 0xff] ^ SUB_MIX_3[s2 & 0xff] ^ keySchedule[ksRow++]; - - // Update state - s0 = t0; - s1 = t1; - s2 = t2; - s3 = t3; - } - - // Shift rows, sub bytes, add round key - var t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++]; - var t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++]; - var t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++]; - var t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++]; - - // Set output - M[offset] = t0; - M[offset + 1] = t1; - M[offset + 2] = t2; - M[offset + 3] = t3; - }, - - keySize: 256/32 - }); - - /** - * Shortcut functions to the cipher's object interface. - * - * @example - * - * var ciphertext = CryptoJS.AES.encrypt(message, key, cfg); - * var plaintext = CryptoJS.AES.decrypt(ciphertext, key, cfg); - */ - C.AES = BlockCipher._createHelper(AES); - }()); - - - return CryptoJS.AES; - -})); \ No newline at end of file diff --git a/utils/request.js b/utils/request.js index 09d141b..9ee9c0d 100644 --- a/utils/request.js +++ b/utils/request.js @@ -76,8 +76,8 @@ export function createRequest(url, data = {}, method = 'GET', loading = false, h // 响应拦截 if (resData.statusCode === 200) { if (resData.data.encrypted) { - const decryptedData = sm4Decrypt(config - .sm4Config.key, resData.data.encryptedData) + const decryptedData = sm4Decrypt(config.sm4Config.key, resData.data + .encryptedData) resData.data = JSON.parse(decryptedData) } const { @@ -85,7 +85,6 @@ export function createRequest(url, data = {}, method = 'GET', loading = false, h msg } = resData.data if (code === 200) { - console.log(resData.data) resolve(resData.data) return }