From 00d277dd39d1c1f7f9d8e28980bbea5a41437bfe Mon Sep 17 00:00:00 2001 From: wuhongjian Date: Fri, 16 Dec 2022 17:27:57 +0800 Subject: [PATCH 01/27] =?UTF-8?q?=E8=B7=B3=E8=BD=AC=E9=97=AE=E9=A2=98?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/AbilityRanking.vue | 12 +- .../components/CapabilityRequirements.vue | 12 +- .../newHome/components/LatestCapabilities.vue | 36 +- .../newHome/components/PopularAbility.vue | 537 +++++++++--------- .../components/RecommendationAbility.vue | 12 +- 5 files changed, 325 insertions(+), 284 deletions(-) diff --git a/front/src/views/abilityStatistics/components/AbilityRanking.vue b/front/src/views/abilityStatistics/components/AbilityRanking.vue index 33aaac78..43e43c8c 100644 --- a/front/src/views/abilityStatistics/components/AbilityRanking.vue +++ b/front/src/views/abilityStatistics/components/AbilityRanking.vue @@ -138,12 +138,20 @@ //查看详情方法 function viewDetails(id) { console.log('id=========>', id) - router.push({ - path: '/details', + // router.push({ + // path: '/details', + // query: { + // id: id, + // }, + // }) + const detailPage = router.resolve({ + path: '/details', // 跳转的页面路由 query: { id: id, + hiddenBackFlag: true, }, }) + window.open(detailPage.href, '_blank') } // 获取榜单数据 const praiseList = ref([]) diff --git a/front/src/views/abilityStatistics/components/CapabilityRequirements.vue b/front/src/views/abilityStatistics/components/CapabilityRequirements.vue index 1e081145..34d63e7b 100644 --- a/front/src/views/abilityStatistics/components/CapabilityRequirements.vue +++ b/front/src/views/abilityStatistics/components/CapabilityRequirements.vue @@ -59,12 +59,20 @@ //查看详情方法 function viewDetails(id) { console.log('id=========>', id) - router.push({ - path: '/demandDetails', + // router.push({ + // path: '/demandDetails', + // query: { + // id: id, + // }, + // }) + const detailPage = router.resolve({ + path: '/demandDetails', // 跳转的页面路由 query: { id: id, + // hiddenBackFlag: true, }, }) + window.open(detailPage.href, '_blank') } function jumpPage() { router.push({ diff --git a/front/src/views/newHome/components/LatestCapabilities.vue b/front/src/views/newHome/components/LatestCapabilities.vue index 4f83e330..77381fa6 100644 --- a/front/src/views/newHome/components/LatestCapabilities.vue +++ b/front/src/views/newHome/components/LatestCapabilities.vue @@ -8,13 +8,13 @@
- +
{{ item.name }}
- {{ item.deptName }} -
+ {{ item.deptName }} +
{{ item.description || '暂无描述' }}
@@ -81,18 +81,26 @@ query: { // select: '组件服务', select: DETAIL_PAGE_CONTENT_DEFAULT_TAB, - orderField:'tdr.create_date' + orderField: 'tdr.create_date', }, }) } const selectOne = (id) => { console.log('点击===============》', id) - router.push({ - path: '/details', + // router.push({ + // path: '/details', + // query: { + // id: id, + // }, + // }) + const detailPage = router.resolve({ + path: '/details', // 跳转的页面路由 query: { id: id, + hiddenBackFlag: true, }, }) + window.open(detailPage.href, '_blank') } diff --git a/front/src/views/newHome/components/RecommendationAbility.vue b/front/src/views/newHome/components/RecommendationAbility.vue index 1f5dc17d..1b9d6987 100644 --- a/front/src/views/newHome/components/RecommendationAbility.vue +++ b/front/src/views/newHome/components/RecommendationAbility.vue @@ -104,12 +104,20 @@ } const selectOne = (id) => { console.log('点击===============》', id) - router.push({ - path: '/details', + // router.push({ + // path: '/details', + // query: { + // id: id, + // }, + // }) + const detailPage = router.resolve({ + path: '/details', // 跳转的页面路由 query: { id: id, + hiddenBackFlag: true, }, }) + window.open(detailPage.href, '_blank') } From f368998a6d8a353cb9acf0f8c11ad6cbe481e941 Mon Sep 17 00:00:00 2001 From: a0049873 <79py69t9wb@privaterelay.appleid.com> Date: Fri, 23 Dec 2022 16:58:27 +0800 Subject: [PATCH 04/27] =?UTF-8?q?BUG=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../views/modules/abilityStatistics/index.vue | 273 +++++++++--------- 1 file changed, 132 insertions(+), 141 deletions(-) diff --git a/back/src/views/modules/abilityStatistics/index.vue b/back/src/views/modules/abilityStatistics/index.vue index 5ba4e2af..119c6abe 100644 --- a/back/src/views/modules/abilityStatistics/index.vue +++ b/back/src/views/modules/abilityStatistics/index.vue @@ -180,7 +180,7 @@ - + - + @@ -277,7 +277,7 @@ export default { provideSelects: [], departmentSelects: [], departmentSelects1: [], - provideSelects1:[], + provideSelects1: [], exportExcel: CONFIGITEM.configData[CONFIGITEM.version].apiURL + '/census/center/export', exportExcelCondition: '', exportExcelType: '', @@ -468,7 +468,6 @@ export default { this.detailsVisible = false }, handleCurrentChange (val) { - this.currentPage = val // todo if (this.departmentId === 3) { @@ -477,10 +476,8 @@ export default { if (this.departmentId === 4) { this.getTwoDetail(val) } - }, - // 组件服务部门发布情况--改为能力上架统计 getFirstTree (page) { if (this.examineStatus == '-1') { @@ -508,55 +505,52 @@ export default { } }) .then((res) => { - if (res.data.code !== 0) { - this.tableData =[] - this.tableDataClone = [] - this.total = 0 - return this.$message.error("服务器内部异常") - - }else{ - const result = res.data.data - for (let i = 0; i < result.length; i++) { - if (!result[i].hasOwnProperty('yyzy')) { - result[i].yyzy = 0 + this.tableData = [] + this.tableDataClone = [] + this.total = 0 + return this.$message.error('服务器内部异常') + } else { + const result = res.data.data + for (let i = 0; i < result.length; i++) { + if (!result[i].hasOwnProperty('yyzy')) { + result[i].yyzy = 0 + } + if (!result[i].hasOwnProperty('kfzj')) { + result[i].kfzj = 0 + } + if (!result[i].hasOwnProperty('znsf')) { + result[i].znsf = 0 + } + if (!result[i].hasOwnProperty('tcfw')) { + result[i].tcfw = 0 + } + if (!result[i].hasOwnProperty('ywzj')) { + result[i].ywzj = 0 + } + if (!result[i].hasOwnProperty('hys')) { + result[i].hys = 0 + } + // result[i].zj = + // parseInt(result[i].yyzy) + + // parseInt(result[i].kfzj) + + // parseInt(result[i].znsf) + + // parseInt(result[i].ywzj) + + // parseInt(result[i].tcfw) + + // parseInt(result[i].hys) } - if (!result[i].hasOwnProperty('kfzj')) { - result[i].kfzj = 0 - } - if (!result[i].hasOwnProperty('znsf')) { - result[i].znsf = 0 - } - if (!result[i].hasOwnProperty('tcfw')) { - result[i].tcfw = 0 - } - if (!result[i].hasOwnProperty('ywzj')) { - result[i].ywzj = 0 - } - if (!result[i].hasOwnProperty('hys')) { - result[i].hys = 0 - } - result[i].zj = - parseInt(result[i].yyzy) + - parseInt(result[i].kfzj) + - parseInt(result[i].znsf) + - parseInt(result[i].ywzj) + - parseInt(result[i].tcfw) + - parseInt(result[i].hys) + this.tableData = res.data.data + this.tableDataClone = res.data.data + this.total = res.data.data.total + this.exportExcelCondition = qs.stringify({ + approveStatus: this.status, + deptId: this.abilityDepartment, + startDate: this.startDate, + endDate: this.endDate, + resourceName: this.resourceName + }) } - this.tableData = res.data.data - this.tableDataClone = res.data.data - this.total = res.data.data.total - this.exportExcelCondition = qs.stringify({ - approveStatus: this.status, - deptId: this.abilityDepartment, - startDate: this.startDate, - endDate: this.endDate, - resourceName: this.resourceName - }) - } }) - }, // 组件服务部门使用情况列表-改为能力使用统计 getSecondTree (page) { @@ -586,52 +580,57 @@ export default { }) .then((res) => { if (res.data.code !== 0) { - this.tableData =[] - this.tableDataClone = [] - this.total = 0 - return this.$message.error("服务器内部异常") - - }else{ - const result = res.data.data - for (let i = 0; i < result.length; i++) { - if (!result[i].hasOwnProperty('yyzy')) { - result[i].yyzy = 0 + this.tableData = [] + this.tableDataClone = [] + this.total = 0 + return this.$message.error('服务器内部异常') + } else { + const result = res.data.data + for (let i = 0; i < result.length; i++) { + if (!result[i].hasOwnProperty('yyzy')) { + result[i].yyzy = 0 + } + if (!result[i].hasOwnProperty('kfzj')) { + result[i].kfzj = 0 + } + if (!result[i].hasOwnProperty('znsf')) { + result[i].znsf = 0 + } + if (!result[i].hasOwnProperty('tcfw')) { + result[i].tcfw = 0 + } + if (!result[i].hasOwnProperty('ywzj')) { + result[i].ywzj = 0 + } + if (!result[i].hasOwnProperty('hys')) { + result[i].hys = 0 + } + if (!result[i].hasOwnProperty('yzy')) { + result[i].yzy = 0 + } + if (!result[i].hasOwnProperty('ysp')) { + result[i].ysp = 0 + } + // result[i].zj = + // parseInt(result[i].yyzy) + + // parseInt(result[i].kfzj) + + // parseInt(result[i].znsf) + + // parseInt(result[i].ywzj) + + // parseInt(result[i].tcfw) + + // parseInt(result[i].hys) } - if (!result[i].hasOwnProperty('kfzj')) { - result[i].kfzj = 0 - } - if (!result[i].hasOwnProperty('znsf')) { - result[i].znsf = 0 - } - if (!result[i].hasOwnProperty('tcfw')) { - result[i].tcfw = 0 - } - if (!result[i].hasOwnProperty('ywzj')) { - result[i].ywzj = 0 - } - if (!result[i].hasOwnProperty('hys')) { - result[i].hys = 0 - } - result[i].zj = - parseInt(result[i].yyzy) + - parseInt(result[i].kfzj) + - parseInt(result[i].znsf) + - parseInt(result[i].ywzj) + - parseInt(result[i].tcfw) + - parseInt(result[i].hys) - } - this.tableData = res.data.data - this.tableDataClone = res.data.data - this.total = res.data.data.total - this.exportExcelCondition = qs.stringify({ - approveStatus: this.status, - deptId: this.abilityDepartment, - startDate: this.startDate, - endDate: this.endDate, - resourceName: this.resourceName + this.tableData = res.data.data + this.tableDataClone = res.data.data + this.total = res.data.data.total + this.exportExcelCondition = qs.stringify({ + approveStatus: this.status, + deptId: this.abilityDepartment, + startDate: this.startDate, + endDate: this.endDate, + resourceName: this.resourceName - }) - } + }) + } }) }, // 点击查看详情 @@ -705,28 +704,26 @@ export default { }) .then((res) => { if (res.data.code !== 0) { - this.tableData =[] - this.tableDataClone = [] - this.total = 0 - return this.$message.error("服务器内部异常") - - }else{ - this.tableData = res.data.data.list - this.tableDataClone = res.data.data.list - this.total = res.data.data.total - this.exportExcelCondition = qs.stringify({ - approveStatus: this.status, - deptId: this.abilityDepartment, - startDate: this.startDate, - endDate: this.endDate, - resourceName: this.resourceName - }) - } + this.tableData = [] + this.tableDataClone = [] + this.total = 0 + return this.$message.error('服务器内部异常') + } else { + this.tableData = res.data.data.list + this.tableDataClone = res.data.data.list + this.total = res.data.data.total + this.exportExcelCondition = qs.stringify({ + approveStatus: this.status, + deptId: this.abilityDepartment, + startDate: this.startDate, + endDate: this.endDate, + resourceName: this.resourceName + }) + } }) }, // 能力使用明细 getTwoDetail (page) { - var passAndReview = '' // 转变"通过"字段为通过 if (this.examineStatus == '-1') { this.status = '' @@ -756,31 +753,27 @@ export default { } }) .then((res) => { - if (res.data.code !== 0) { - this.tableData =[] - this.tableDataClone = [] - this.total = 0 - return this.$message.error("服务器内部异常") - - }else{ - this.tableData = res.data.data.list - this.tableDataClone = res.data.data.list - this.total = res.data.data.total - this.exportExcelCondition = qs.stringify({ - approveStatus: this.status, - deptId: this.abilityDepartment, - startDate: this.startDate, - endDate: this.endDate, - resourceName: this.resourceName, - provideDept: this.provideDepartment - }) - } - + this.tableData = [] + this.tableDataClone = [] + this.total = 0 + return this.$message.error('服务器内部异常') + } else { + this.tableData = res.data.data.list + this.tableDataClone = res.data.data.list + this.total = res.data.data.total + this.exportExcelCondition = qs.stringify({ + approveStatus: this.status, + deptId: this.abilityDepartment, + startDate: this.startDate, + endDate: this.endDate, + resourceName: this.resourceName, + provideDept: this.provideDepartment + }) + } }) }, - - + handleClick (row) { if (this.choseId === 0) { if (this.departmentId === 1) { @@ -809,8 +802,6 @@ export default { // 根据不同的type查询不同的表格数据 handleChose (index) { - - this.checked = false this.departmentId = index this.currentPage = 1 @@ -878,8 +869,8 @@ export default { }, // 明细按钮函数//明细按钮函数//明细按钮函数//明细按钮函数//明细按钮函数//明细按钮函数 goToDetail () { - this.abilityDepartment='' - this.provideDepartment='' + this.abilityDepartment = '' + this.provideDepartment = '' this.currentPage = 1 this.pageSize = 10 @@ -895,8 +886,8 @@ export default { }, // 返回按钮 goToBack () { - this.abilityDepartment='' - this.provideDepartment='' + this.abilityDepartment = '' + this.provideDepartment = '' this.checked = false this.currentPage = 1, From d9a0403981baa2dcb503950ec76a3e9a23d512f4 Mon Sep 17 00:00:00 2001 From: gongjiale <942894820@qq.com> Date: Mon, 26 Dec 2022 09:20:30 +0800 Subject: [PATCH 05/27] 1 --- .../modules/ability/assignedScene/index.vue | 98 +++++++++++++++++-- 1 file changed, 89 insertions(+), 9 deletions(-) diff --git a/back/src/views/modules/ability/assignedScene/index.vue b/back/src/views/modules/ability/assignedScene/index.vue index f5de944a..d1165cc4 100644 --- a/back/src/views/modules/ability/assignedScene/index.vue +++ b/back/src/views/modules/ability/assignedScene/index.vue @@ -1,6 +1,21 @@ + + + \ No newline at end of file diff --git a/back/src/views/modules/ability/assignedScene/city-add.vue b/back/src/views/modules/ability/assignedScene/city-add.vue new file mode 100644 index 00000000..ef905e15 --- /dev/null +++ b/back/src/views/modules/ability/assignedScene/city-add.vue @@ -0,0 +1,839 @@ + + + + + + + + \ No newline at end of file diff --git a/back/src/views/modules/ability/assignedScene/components/ability-add.vue b/back/src/views/modules/ability/assignedScene/components/ability-add.vue new file mode 100644 index 00000000..cb8a5fc5 --- /dev/null +++ b/back/src/views/modules/ability/assignedScene/components/ability-add.vue @@ -0,0 +1,239 @@ + + + \ No newline at end of file diff --git a/back/src/views/modules/ability/assignedScene/components/scene-one-input.vue b/back/src/views/modules/ability/assignedScene/components/scene-one-input.vue index 9664655f..2b906467 100644 --- a/back/src/views/modules/ability/assignedScene/components/scene-one-input.vue +++ b/back/src/views/modules/ability/assignedScene/components/scene-one-input.vue @@ -1,20 +1,39 @@ @@ -115,6 +134,31 @@ export default { } \ No newline at end of file From a3381da1e0f894ac4562e99c98354164c9cf051f Mon Sep 17 00:00:00 2001 From: gongjiale <942894820@qq.com> Date: Mon, 26 Dec 2022 09:35:20 +0800 Subject: [PATCH 08/27] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- back/src/views/modules/abilityStatistics/index.vue | 2 -- 1 file changed, 2 deletions(-) diff --git a/back/src/views/modules/abilityStatistics/index.vue b/back/src/views/modules/abilityStatistics/index.vue index e2eaba25..60313801 100644 --- a/back/src/views/modules/abilityStatistics/index.vue +++ b/back/src/views/modules/abilityStatistics/index.vue @@ -181,7 +181,6 @@ - - From ed8fed60b5d8276df2acd6f046286850e1beedc3 Mon Sep 17 00:00:00 2001 From: wuhongjian Date: Mon, 26 Dec 2022 16:13:15 +0800 Subject: [PATCH 09/27] =?UTF-8?q?254=E9=97=AE=E9=A2=98=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- back/src/App.vue | 4 ++-- back/src/i18n/zh-CN.js | 3 ++- back/src/views/modules/activiti/RoomExamineAdminDone.vue | 4 +++- .../views/modules/hasToDoTasks/AbilityResourceShelf.vue | 7 +++++-- .../views/modules/hasToDoTasks/AbilityResourcesRemoved.vue | 7 +++++-- .../hasToDoTasks/ApplicationForCompetencyRequirements.vue | 7 +++++-- back/src/views/modules/hasToDoTasks/CommentModeration.vue | 7 +++++-- .../views/modules/hasToDoTasks/CompetencyApplication.vue | 7 +++++-- 8 files changed, 32 insertions(+), 14 deletions(-) diff --git a/back/src/App.vue b/back/src/App.vue index 36cb8b9d..482fc825 100644 --- a/back/src/App.vue +++ b/back/src/App.vue @@ -24,7 +24,7 @@ line-height: 32px !important; justify-content: center !important; min-width: 80px !important; - border-radius:2px !important; + border-radius:2px !important; } */ /* .el-button--primary { vertical-align: middle !important; @@ -34,7 +34,7 @@ line-height: 32px !important; justify-content: center !important; min-width: 80px !important; - border-radius:2px !important; + border-radius:2px !important; } */ diff --git a/back/src/views/main-navbar.vue b/back/src/views/main-navbar.vue index 0df84d2c..bd089054 100644 --- a/back/src/views/main-navbar.vue +++ b/back/src/views/main-navbar.vue @@ -105,8 +105,9 @@ import { messages } from '@/i18n' import screenfull from 'screenfull' import UpdatePassword from './main-navbar-update-password' import { clearLoginInfo } from '@/utils' -// import Cookies from 'js-cookie' -// var socket = null +import Cookies from 'js-cookie' +import bus from '@/views/bus.js' +var socket = null export default { inject: ['refresh'], data () { @@ -120,29 +121,38 @@ export default { UpdatePassword }, created () { - // var vue = this - // socket = new WebSocket(`${window.SITE_CONFIG['socketURL']}?token=${Cookies.get('token')}`) - // socket.onopen = function () {} - // socket.onerror = function () { - // vue.$notify.error({ - // title: vue.$t('notice.disconnect'), - // message: vue.$t('notice.disconnectMessage') - // }) - // } - // socket.onmessage = function (evt) { - // const result = JSON.parse(evt.data) - - // // 如果是有新文本通知,则提示有新通知 - // if (result.type === 0) { - // vue.messageTip = true - // vue.$notify({ - // title: vue.$t('notice.new'), - // message: result.msg, - // type: 'info', - // duration: 5000 - // }) - // } - // } + const that = this + socket = new WebSocket(`${window.SITE_CONFIG.websocketURL}?token=${Cookies.get('ucsToken')}`) + socket.onopen = function () {} + socket.onerror = function () {} + socket.onmessage = function (res) { + switch (that.$route.name) { + case 'myAgent-CompetencyApplication': + console.log('websocket,11') + bus.$emit('competencyApplicationInit') + break + case 'myAgent-AbilityResourceShelf': + console.log('websocket,22') + bus.$emit('abilityResourceShelfInit') + break + case 'myAgent-ApplicationforCompetencyRequirements': + console.log('websocket,33') + bus.$emit('applicationforRequirementsInit') + break + case 'myAgent-AbilityResourcesRemoved': + console.log('websocket,44') + bus.$emit('AbilityResourcesRemovedInit') + break + case 'myAgent-CommentModeration': + console.log('websocket,55') + bus.$emit('commentInit') + break + case 'activiti-RoomExamineAdmin': + console.log('websocket,66') + bus.$emit('roomExamineAdminInit') + break + } + } // 未读通知数 this.getUnReadCount() diff --git a/back/src/views/modules/activiti/RoomExamineAdmin.vue b/back/src/views/modules/activiti/RoomExamineAdmin.vue index 214018a1..78fdadb9 100644 --- a/back/src/views/modules/activiti/RoomExamineAdmin.vue +++ b/back/src/views/modules/activiti/RoomExamineAdmin.vue @@ -215,6 +215,7 @@ diff --git a/back/src/views/modules/putOnTheShelf/components/inputSelectCheckbox.vue b/back/src/views/modules/putOnTheShelf/components/inputSelectCheckbox.vue index 3f4e7f4a..91b1b6c7 100644 --- a/back/src/views/modules/putOnTheShelf/components/inputSelectCheckbox.vue +++ b/back/src/views/modules/putOnTheShelf/components/inputSelectCheckbox.vue @@ -26,7 +26,7 @@ js: :placeholder="'请选择' + name"> {{ itemSelect.dictLabel }} @@ -38,9 +38,9 @@ js: filterable placeholder="请输入关键词" @change="changeIiem(name,data.note1)" - :loading="loading"> + > @@ -56,7 +56,7 @@ js: > {{ itemSelect.dictLabel }} @@ -66,7 +66,7 @@ js: v-else-if="type === 'checkBox'" > - {{val.dictLabel}} + {{val.dictLabel}}
@@ -96,7 +96,7 @@ export default { }, props: { type: String, - data: Array, + data: Object, name: String, value: String, changeField: Array, @@ -107,6 +107,7 @@ export default { }, data () { return { + optionsCopy:[], // 多选放数据的数组 valueCheckBox: [], // 单选数据 @@ -133,7 +134,7 @@ export default { res.data.list.forEach((element) => { dataList.push(element) }) - this.options = dataList + this.optionsCopy = dataList }) .catch(() => {}) } else if (this.data.name === '归属部门' || this.data.name === '所属产品线') { @@ -142,10 +143,9 @@ export default { res.data.data.forEach((element) => { dataList.push(element) }) - this.options = dataList + this.optionsCopy = dataList if (!this.data.note1) { this.$http.get('/sys/user/info').then(({ data: res }) => { - console.log(res.data) this.data.note1 = res.data.deptId }) } @@ -159,7 +159,6 @@ export default { // this.options = dataList if (this.data.note1 == null) { this.$http.get('/sys/user/info').then(({ data: res }) => { - console.log(res.data) this.data.note1 = res.data.realName || '' }) } @@ -173,11 +172,12 @@ export default { // this.options = dataList if (this.data.note1 == null) { this.$http.get('/sys/user/info').then(({ data: res }) => { - console.log(res.data) this.data.note1 = res.data.mobile || '' }) } // }) + }else{ + this.optionsCopy=this.options } }, chekBoxChange (list) { @@ -199,7 +199,6 @@ export default { }, showTypeClick (e) { this.showType = e - console.log(e) this.$emit('show-type', this.showType) } }, diff --git a/back/src/views/modules/putOnTheShelf/components/special.vue b/back/src/views/modules/putOnTheShelf/components/special.vue index 54a6e5be..d9e8d17e 100644 --- a/back/src/views/modules/putOnTheShelf/components/special.vue +++ b/back/src/views/modules/putOnTheShelf/components/special.vue @@ -6,76 +6,71 @@ * @Description: 多条数据特殊处理 -->