From c9c4826274c82e02e6d7ee5ba465a24cfa7d55c8 Mon Sep 17 00:00:00 2001 From: wangxiaoshuang <825034831@qq.com> Date: Wed, 18 Dec 2024 17:08:27 +0800 Subject: [PATCH 001/194] =?UTF-8?q?=E5=AF=B9=E4=BA=8EDICOM=E5=92=8C?= =?UTF-8?q?=E9=9D=9EDICOM=E7=9A=84Tab=E5=8F=AF=E4=BB=A5=E6=A0=B9=E6=8D=AE?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E6=9D=A5=E6=8E=A7=E5=88=B6=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/permission.js | 1 - .../trial-config/components/processConfig.vue | 34 ++++++++++++++++++ .../crc-question/components/chatForm.vue | 9 +++++ .../crc-upload/components/historyChat.vue | 7 ++++ .../trials-panel/visit/crc-upload/index.vue | 36 +++++++++++++++---- .../trials-panel/visit/qc-check/index.vue | 23 +++++++++--- 6 files changed, 98 insertions(+), 12 deletions(-) diff --git a/src/permission.js b/src/permission.js index 92ec36ab..755d8f65 100644 --- a/src/permission.js +++ b/src/permission.js @@ -26,7 +26,6 @@ router.beforeEach(async (to, from, next) => { to.query.trialId !== store.state.trials.config.trialId ) { - console.log(to.query.path) let res = await getTrialExtralConfig({ TrialId: to.query.trialId, }) diff --git a/src/views/trials/trials-panel/setting/trial-config/components/processConfig.vue b/src/views/trials/trials-panel/setting/trial-config/components/processConfig.vue index 007e6450..beb797dd 100644 --- a/src/views/trials/trials-panel/setting/trial-config/components/processConfig.vue +++ b/src/views/trials/trials-panel/setting/trial-config/components/processConfig.vue @@ -121,6 +121,24 @@ + + + + + {{ item.label }} + + + -

{{ $t('trials:crcUpload:label:dicom') }}

- +

+ {{ $t('trials:crcUpload:label:dicom') }} +

+ -

+

{{ $t('trials:crcUpload:label:noneDicom') }}

- +
-

{{ $t('trials:audit:tab:dicoms') }}

- +

+ {{ $t('trials:audit:tab:dicoms') }} +

+
-

+

{{ $t('trials:audit:tab:nonDicoms') }}

- + Date: Wed, 18 Dec 2024 18:05:28 +0800 Subject: [PATCH 002/194] =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E6=A0=87=E5=87=86?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E6=9B=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../template/components/CriterionQuestionForm.vue | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/views/dictionary/template/components/CriterionQuestionForm.vue b/src/views/dictionary/template/components/CriterionQuestionForm.vue index 8cb54177..1d9010aa 100644 --- a/src/views/dictionary/template/components/CriterionQuestionForm.vue +++ b/src/views/dictionary/template/components/CriterionQuestionForm.vue @@ -890,6 +890,7 @@ export default { mounted() { this.initForm() this.getCalculateQuestions('number') + }, methods: { typeValueChange(v) { @@ -905,6 +906,14 @@ export default { } }) }, + getBasicConfigSelect() { + getCriterionDictionaryList({ + CriterionId: this.criterionId, + SystemCriterionId: this.criterionId + }).then(res => { + this.dicList = res.Result + }) + }, getCalculateQuestions(type) { getSystemCalculateQuestions({ systemCriterionId: this.criterionId, @@ -944,6 +953,7 @@ export default { await this.getParentQuestions() await this.getLesionTypeDictionary() await this.getLesionType() + await this.getBasicConfigSelect() if (Object.keys(this.data).length > 0) { for (const k in this.form) { if (this.data.hasOwnProperty(k)) { From 97caeae753594f330ad9b52b5542915a6f4a2e9e Mon Sep 17 00:00:00 2001 From: caiyiling <1321909229@qq.com> Date: Thu, 19 Dec 2024 11:02:34 +0800 Subject: [PATCH 003/194] =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E6=A0=87=E5=87=86?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E6=9B=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/CriterionQuestionForm.vue | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/views/dictionary/template/components/CriterionQuestionForm.vue b/src/views/dictionary/template/components/CriterionQuestionForm.vue index 1d9010aa..25bad6b7 100644 --- a/src/views/dictionary/template/components/CriterionQuestionForm.vue +++ b/src/views/dictionary/template/components/CriterionQuestionForm.vue @@ -446,6 +446,7 @@ /> + + + + + + Date: Thu, 19 Dec 2024 11:45:21 +0800 Subject: [PATCH 004/194] =?UTF-8?q?=E5=88=97=E8=A1=A8label=E5=90=8D?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dictionary/attachment/components/CommonTemplate/index.vue | 2 +- .../dictionary/attachment/components/EmailTemplate/index.vue | 2 +- .../attachment/components/SignatureTemplate/index.vue | 2 +- .../dictionary/attachment/components/UploadTemplate/index.vue | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/views/dictionary/attachment/components/CommonTemplate/index.vue b/src/views/dictionary/attachment/components/CommonTemplate/index.vue index 8e9e6fe1..fbe06690 100644 --- a/src/views/dictionary/attachment/components/CommonTemplate/index.vue +++ b/src/views/dictionary/attachment/components/CommonTemplate/index.vue @@ -98,7 +98,7 @@ diff --git a/src/views/dictionary/attachment/components/EmailTemplate/index.vue b/src/views/dictionary/attachment/components/EmailTemplate/index.vue index 4cc5ab80..cedddeff 100644 --- a/src/views/dictionary/attachment/components/EmailTemplate/index.vue +++ b/src/views/dictionary/attachment/components/EmailTemplate/index.vue @@ -108,7 +108,7 @@ diff --git a/src/views/dictionary/attachment/components/SignatureTemplate/index.vue b/src/views/dictionary/attachment/components/SignatureTemplate/index.vue index d2af93cc..c98c3435 100644 --- a/src/views/dictionary/attachment/components/SignatureTemplate/index.vue +++ b/src/views/dictionary/attachment/components/SignatureTemplate/index.vue @@ -105,7 +105,7 @@ diff --git a/src/views/dictionary/attachment/components/UploadTemplate/index.vue b/src/views/dictionary/attachment/components/UploadTemplate/index.vue index 4f497239..03626142 100644 --- a/src/views/dictionary/attachment/components/UploadTemplate/index.vue +++ b/src/views/dictionary/attachment/components/UploadTemplate/index.vue @@ -111,7 +111,7 @@ From 2c0c2e8111073deb412045614d0f5083e3f0844d Mon Sep 17 00:00:00 2001 From: wangxiaoshuang <825034831@qq.com> Date: Fri, 20 Dec 2024 11:03:46 +0800 Subject: [PATCH 005/194] =?UTF-8?q?=E5=9F=B9=E8=AE=AD=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E5=88=9B=E5=BB=BA=E6=97=B6=E9=97=B4=EF=BC=8C?= =?UTF-8?q?=E4=B8=8D=E5=B1=95=E7=A4=BA=E6=9B=B4=E6=96=B0=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/SignatureTemplate/index.vue | 4 +- src/views/login/index.vue | 1 - .../trials-panel/setting/attachment/index.vue | 165 ++++++++++++------ 3 files changed, 114 insertions(+), 56 deletions(-) diff --git a/src/views/dictionary/attachment/components/SignatureTemplate/index.vue b/src/views/dictionary/attachment/components/SignatureTemplate/index.vue index c98c3435..66c2b629 100644 --- a/src/views/dictionary/attachment/components/SignatureTemplate/index.vue +++ b/src/views/dictionary/attachment/components/SignatureTemplate/index.vue @@ -104,8 +104,8 @@ diff --git a/src/views/login/index.vue b/src/views/login/index.vue index 468f4b66..95879c6f 100644 --- a/src/views/login/index.vue +++ b/src/views/login/index.vue @@ -456,7 +456,6 @@ export default { }, // 输入框输入事件 setPassword(val) { - console.log(val) if (this.isShowPassword) { this.loginForm.password = val } else { diff --git a/src/views/trials/trials-panel/setting/attachment/index.vue b/src/views/trials/trials-panel/setting/attachment/index.vue index ba88606c..2afacd59 100644 --- a/src/views/trials/trials-panel/setting/attachment/index.vue +++ b/src/views/trials/trials-panel/setting/attachment/index.vue @@ -1,5 +1,5 @@ From 862c6d64ccc4e4d186d2b6dbe38c7cf7fd596641 Mon Sep 17 00:00:00 2001 From: wangxiaoshuang <825034831@qq.com> Date: Mon, 23 Dec 2024 13:13:44 +0800 Subject: [PATCH 006/194] =?UTF-8?q?=E7=AE=80=E5=8E=86=E5=8C=BB=E9=99=A2?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E7=BB=B4=E6=8A=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../institutions/components/HospitalForm.vue | 137 ++++++++---- .../components/EducationTraining.vue | 102 +++++++-- src/views/reviewers/components/Employment.vue | 197 +++++++++++++++--- .../components/info/continuingTraining.vue | 94 +++++++-- .../curriculumVitae/components/info/info.vue | 155 +++++++++++--- 5 files changed, 550 insertions(+), 135 deletions(-) diff --git a/src/views/dictionary/institutions/components/HospitalForm.vue b/src/views/dictionary/institutions/components/HospitalForm.vue index 504d4c89..70d647af 100644 --- a/src/views/dictionary/institutions/components/HospitalForm.vue +++ b/src/views/dictionary/institutions/components/HospitalForm.vue @@ -9,8 +9,19 @@ >
- - + + @@ -20,10 +31,16 @@ - + - + @@ -45,10 +62,22 @@
- - - - - {{ isEN ? item.HospitalName : item.HospitalNameCN }} - - - + @change="handleChange" + > + + + - + - + { RankOther: '', RankOtherCN: '', HospitalId: '', + HospitalName: null, + HospitalNameCN: null, WorkPartTime: null, WorkPartTimeEn: null, UniversityAffiliated: null, @@ -616,11 +632,18 @@ export default { trigger: 'blur', }, ], - HospitalId: [ + HospitalName: [ { required: true, - message: this.$t('common:ruleMessage:select'), - trigger: 'blur', + message: this.$t('common:ruleMessage:specify'), + trigger: ['blur', 'change'], + }, + ], + HospitalNameCN: [ + { + required: true, + message: this.$t('common:ruleMessage:specify'), + trigger: ['blur', 'change'], }, ], UniversityAffiliated: [ @@ -648,16 +671,72 @@ export default { loading: false, dictionaryList: {}, otherId: 'ef84e9cb-f1a6-49d7-b6da-34be2c12abd5', + hospitalSelectList: [], } }, computed: { ...mapGetters(['hospitalList']), }, + watch: { + hospitalList: { + handler() { + if (!Array.isArray(this.hospitalList) || this.hospitalList.length <= 0) + return false + this.hospitalSelectList = [] + this.hospitalList.forEach((item) => { + if (this.isEN) { + this.hospitalSelectList.push({ + value: item.HospitalName, + ...item, + }) + } else { + this.hospitalSelectList.push({ + value: item.HospitalNameCN, + ...item, + }) + } + }) + }, + deep: true, + }, + }, mounted() { this.getDicData() store.dispatch('global/getHospital') }, methods: { + handleChange(v) { + if (v) return + this.form.UniversityAffiliated = null + this.form.City = null + this.form.UniversityAffiliatedCN = null + this.form.CityCN = null + }, + querySearch(queryString, cb) { + var hospitalList = this.hospitalSelectList + var results = queryString + ? hospitalList.filter(this.createFilter(queryString)) + : hospitalList + // 调用 callback 返回建议列表的数据 + cb(results) + }, + createFilter(queryString) { + return (hospitalList) => { + if (this.isEN) { + return ( + hospitalList.HospitalName.toLowerCase().indexOf( + queryString.toLowerCase() + ) >= 0 + ) + } else { + return ( + hospitalList.HospitalNameCN.toLowerCase().indexOf( + queryString.toLowerCase() + ) >= 0 + ) + } + } + }, openEdit() { this.form = defaultForm() Object.keys(this.form).forEach((key) => { @@ -666,8 +745,6 @@ export default { } }) this.model_cfg.visible = true - console.log(this.form) - console.log(this.DATA) }, handleCancle() { this.form = defaultForm() @@ -680,8 +757,13 @@ export default { if (this.reviewerId) { this.form.Id = this.reviewerId } + let data = Object.assign({}, this.form) + if (!this.hospitalList.find((item) => item.Id === data.HospitalId)) { + data.HospitalName = data.HospitalId + data.HospitalId = null + } this.loading = true - let res = await addOrUpdateDoctorBasicInfoAndEmployment(this.form) + let res = await addOrUpdateDoctorBasicInfoAndEmployment(data) this.loading = false if (res.IsSuccess) { this.$emit('update:reviewerId', res.Result.Id) @@ -701,13 +783,18 @@ export default { }) .catch(() => {}) }, - handleHospitalChange(value) { - const item = this.hospitalList.filter((item) => item.Id === value) - if (item.length) { - this.form.UniversityAffiliated = item[0].UniversityAffiliated - this.form.City = item[0].City - this.form.UniversityAffiliatedCN = item[0].UniversityAffiliatedCN - this.form.CityCN = item[0].CityCN + handleSelect(value) { + const item = value + if (item) { + this.form.UniversityAffiliated = item.UniversityAffiliated + this.form.City = item.City + this.form.UniversityAffiliatedCN = item.UniversityAffiliatedCN + this.form.CityCN = item.CityCN + } else { + this.form.UniversityAffiliated = null + this.form.City = null + this.form.UniversityAffiliatedCN = null + this.form.CityCN = null } }, }, From 5866535fb509de619e5e4eca416b8a6696ad3501 Mon Sep 17 00:00:00 2001 From: caiyiling <1321909229@qq.com> Date: Mon, 23 Dec 2024 13:34:46 +0800 Subject: [PATCH 007/194] =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E6=A0=87=E5=87=86?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E6=9B=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/CriterionQuestionForm.vue | 33 ++++++++++++---- .../template/components/TableQsForm.vue | 38 ++++++++++++++----- 2 files changed, 55 insertions(+), 16 deletions(-) diff --git a/src/views/dictionary/template/components/CriterionQuestionForm.vue b/src/views/dictionary/template/components/CriterionQuestionForm.vue index 25bad6b7..74f8191a 100644 --- a/src/views/dictionary/template/components/CriterionQuestionForm.vue +++ b/src/views/dictionary/template/components/CriterionQuestionForm.vue @@ -877,6 +877,7 @@ export default { btnLoading: false, parentOptions: [], parentTriggerValOptions: [], + reParentTriggerValOptions: [], groupOptions: [], isParentExistGroup: false, lesionTypes: [], @@ -1001,8 +1002,15 @@ export default { }) if (index !== -1) { if (this.parentOptions[index].QuestionGenre === 3) { - this.parentTriggerValOptions = - this.$d[this.parentOptions[index].DictionaryCode] + // this.parentTriggerValOptions = + // this.$d[this.parentOptions[index].DictionaryCode] + let dicCode = this.parentOptions[index].DictionaryCode + let res = await getCriterionDictionary({ReadingCriterionId: this.data.ReadingQuestionCriterionSystemId,DictionaryCode: dicCode}) + + this.parentTriggerValOptions = res.Result[dicCode].map(i=>{ + return {id: i.Id, label: this.$i18n.locale === 'zh' ? i.ValueCN : i.Value, value: i.Code} + }) + } else { const options = [] this.parentOptions[index].TypeValue.split('|').forEach( @@ -1020,8 +1028,13 @@ export default { }) if (index !== -1) { if (this.parentOptions[index].QuestionGenre === 3) { - this.reParentTriggerValOptions = - this.$d[this.parentOptions[index].DictionaryCode] + // this.reParentTriggerValOptions = + // this.$d[this.parentOptions[index].DictionaryCode] + let dicCode = this.parentOptions[index].DictionaryCode + let res = await getCriterionDictionary({ReadingCriterionId: this.data.ReadingQuestionCriterionSystemId,DictionaryCode: dicCode}) + this.reParentTriggerValOptions = res.Result[dicCode].map(i=>{ + return {id: i.Id, label: this.$i18n.locale === 'zh' ? i.ValueCN : i.Value, value: i.Code} + }) } else { const options = [] this.parentOptions[index].TypeValue.split('|').forEach( @@ -1212,15 +1225,21 @@ export default { } form.ParentTriggerValue = '' }, - relevanceQuestionChange(val, form) { + async relevanceQuestionChange(val, form) { if (val) { var index = this.parentOptions.findIndex((item) => { return item.QuestionId === val }) if (index !== -1) { if (this.parentOptions[index].QuestionGenre === 3) { - this.reParentTriggerValOptions = - this.$d[this.parentOptions[index].DictionaryCode] + // this.reParentTriggerValOptions = + // this.$d[this.parentOptions[index].DictionaryCode] + let dicCode = this.parentOptions[index].DictionaryCode + let res = await getCriterionDictionary({ReadingCriterionId: this.data.ReadingQuestionCriterionSystemId,DictionaryCode: dicCode}) + + this.reParentTriggerValOptions = res.Result[dicCode].map(i=>{ + return {id: i.Id, label: this.$i18n.locale === 'zh' ? i.ValueCN : i.Value, value: i.Code} + }) } else { var options = [] this.parentOptions[index].TypeValue.split('|').forEach( diff --git a/src/views/dictionary/template/components/TableQsForm.vue b/src/views/dictionary/template/components/TableQsForm.vue index cde88917..69e50bc4 100644 --- a/src/views/dictionary/template/components/TableQsForm.vue +++ b/src/views/dictionary/template/components/TableQsForm.vue @@ -710,7 +710,13 @@ export default { }) if (index !== -1) { if (this.parentOptions[index].QuestionGenre === 3) { - this.parentTriggerValOptions = this.$d[this.parentOptions[index].DictionaryCode] + // this.parentTriggerValOptions = this.$d[this.parentOptions[index].DictionaryCode] + let dicCode = this.parentOptions[index].DictionaryCode + let res = await getCriterionDictionary({ReadingCriterionId: this.criterionId, DictionaryCode: dicCode}) + + this.parentTriggerValOptions = res.Result[dicCode].map(i=>{ + return {id: i.Id, label: this.$i18n.locale === 'zh' ? i.ValueCN : i.Value, value: i.Code} + }) } else { const options = [] this.parentOptions[index].TypeValue.split('|').forEach((item, index) => { @@ -726,8 +732,12 @@ export default { }) if (i !== -1) { if (this.parentOptions[i].QuestionGenre === 3) { - console.log(this.$d[this.parentOptions[i].DictionaryCode]) - this.reParentTriggerValOptions = this.$d[this.parentOptions[i].DictionaryCode] + // this.reParentTriggerValOptions = this.$d[this.parentOptions[i].DictionaryCode] + let dicCode = this.parentOptions[i].DictionaryCode + let res = await getCriterionDictionary({ReadingCriterionId: this.criterionId, DictionaryCode: dicCode}) + this.reParentTriggerValOptions = res.Result[dicCode].map(i=>{ + return {id: i.Id, label: this.$i18n.locale === 'zh' ? i.ValueCN : i.Value, value: i.Code} + }) } else { const options = [] this.parentOptions[i].TypeValue.split('|').forEach((item, index) => { @@ -805,14 +815,20 @@ export default { form.RelevanceValue = '' } }, - parentQuestionChange(val, form) { + async parentQuestionChange(val, form) { if (val) { var index = this.parentOptions.findIndex(item => { return item.QuestionId === val }) if (index !== -1) { if (this.parentOptions[index].QuestionGenre === 3) { - this.parentTriggerValOptions = this.$d[this.parentOptions[index].DictionaryCode] + // this.parentTriggerValOptions = this.$d[this.parentOptions[index].DictionaryCode] + let dicCode = this.parentOptions[index].DictionaryCode + let res = await getCriterionDictionary({ReadingCriterionId: this.criterionId, DictionaryCode: dicCode}) + + this.parentTriggerValOptions = res.Result[dicCode].map(i=>{ + return {id: i.Id, label: this.$i18n.locale === 'zh' ? i.ValueCN : i.Value, value: i.Code} + }) } else { const options = [] this.parentOptions[index].TypeValue.split('|').forEach((item, index) => { @@ -824,16 +840,20 @@ export default { } form.ParentTriggerValue = '' }, - relevanceQuestionChange(val, form) { + async relevanceQuestionChange(val, form) { if (val) { var index = this.parentOptions.findIndex(item => { return item.QuestionId === val }) - console.log(this.$d[this.parentOptions[index].DictionaryCode], this.parentOptions[index].QuestionGenre) if (index !== -1) { if (this.parentOptions[index].QuestionGenre === 3) { - console.log(this.$d[this.parentOptions[index].DictionaryCode]) - this.reParentTriggerValOptions = this.$d[this.parentOptions[index].DictionaryCode] + // this.reParentTriggerValOptions = this.$d[this.parentOptions[index].DictionaryCode] + let dicCode = this.parentOptions[index].DictionaryCode + let res = await getCriterionDictionary({ReadingCriterionId: this.criterionId, DictionaryCode: dicCode}) + + this.reParentTriggerValOptions = res.Result[dicCode].map(i=>{ + return {id: i.Id, label: this.$i18n.locale === 'zh' ? i.ValueCN : i.Value, value: i.Code} + }) } else { const options = [] this.parentOptions[index].TypeValue.split('|').forEach((item, index) => { From d9091fbb79add9078332c4e97b7edad19a55ea98 Mon Sep 17 00:00:00 2001 From: wangxiaoshuang <825034831@qq.com> Date: Mon, 23 Dec 2024 13:59:35 +0800 Subject: [PATCH 008/194] =?UTF-8?q?SPM/CPM=E5=A2=9E=E5=8A=A0=20=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=E5=AE=A1=E6=89=B9=E4=B8=8E=E5=90=A6=E7=9A=84=E6=8E=A7?= =?UTF-8?q?=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/trials.js | 8 ++ .../components/staffExternalForm.vue | 101 +++++++++++++++++- 2 files changed, 105 insertions(+), 4 deletions(-) diff --git a/src/api/trials.js b/src/api/trials.js index 26fd4bb2..d3df4757 100644 --- a/src/api/trials.js +++ b/src/api/trials.js @@ -3914,4 +3914,12 @@ export function getVisitClinicalDataName(data) { method: 'post', data }) +} +// 修改外部人员权限配置 +export function configTrialSPMInfo(data) { + return request({ + url: `/TrialConfig/configTrialSPMInfo`, + method: 'post', + data + }) } \ No newline at end of file diff --git a/src/views/trials/trials-panel/setting/personnel-manage/components/staffExternalForm.vue b/src/views/trials/trials-panel/setting/personnel-manage/components/staffExternalForm.vue index d6071671..afe0f3f5 100644 --- a/src/views/trials/trials-panel/setting/personnel-manage/components/staffExternalForm.vue +++ b/src/views/trials/trials-panel/setting/personnel-manage/components/staffExternalForm.vue @@ -19,8 +19,12 @@ {{ $t('common:button:reset') }} + + + {{ $t('trials:staff:button:permissionConfiguration') }} + - + {{ $t('trials:staff:button:sendEmail') }} @@ -113,12 +117,52 @@
+ + + + + \ No newline at end of file diff --git a/src/store/modules/user.js b/src/store/modules/user.js index a2cf9be9..5b57f3fc 100644 --- a/src/store/modules/user.js +++ b/src/store/modules/user.js @@ -1,5 +1,5 @@ import { getToken, setToken, removeToken, setName, removeName } from '@/utils/auth' -import { login, loginOut, getUserMenuTree, getUserPermissions } from '@/api/user' +import { login, loginOut, getUserMenuTree, getUserPermissions, getUserLoginRoleList, loginSelectUserRole } from '@/api/user' import { resetRouter } from '@/router' import md5 from 'js-md5' @@ -16,13 +16,17 @@ const getDefaultState = () => { TotalNeedSignSystemDocCount: eval(process.env.VUE_APP_WORD_FOR_PERMISSION) ? null : 0, TotalNeedSignTrialDocCount: eval(process.env.VUE_APP_WORD_FOR_PERMISSION) ? null : 0, TrialStatusStr: null, - isTestUser: false + isTestUser: false, + roles: [] } } const state = getDefaultState() const mutations = { + SET_ROLES: (state, roles) => { + state.roles = roles + }, RESET_STATE: (state) => { Object.assign(state, getDefaultState()) }, @@ -78,6 +82,9 @@ const mutations = { } const actions = { + setRoles({ commit }, roles) { + commit('SET_ROLES', roles) + }, changeUserName({ commit }, userName) { commit('SET_USERNAME', userName) }, @@ -91,7 +98,7 @@ const actions = { if (UserId) { data.UserId = UserId; } - login(data).then(async response => { + getUserLoginRoleList(data).then(async response => { if (response.IsSuccess) { zzSessionStorage.removeItem('lastWorkbench') zzSessionStorage.setItem('my_username', username.trim()) @@ -99,6 +106,7 @@ const actions = { zzSessionStorage.setItem('my_EMail', response.Result.BasicInfo.EMail) localStorage.setItem('CompanyInfo', JSON.stringify(response.Result.CompanyInfo)) const data = response.Result + commit('SET_ROLES', data.BasicInfo.AccountList) if (data.BasicInfo.IsFirstAdd || data.BasicInfo.LoginState === 1) { try { zzSessionStorage.setItem('userId', data.BasicInfo.Id) @@ -127,12 +135,12 @@ const actions = { zzSessionStorage.setItem('userTypeShortName', user.userTypeShortName) zzSessionStorage.setItem('userId', user.id) zzSessionStorage.setItem('userTypeEnumInt', user.userTypeEnumInt) - var permissions = await getUserPermissions() - var menuTree = await getUserMenuTree() - commit('SET_TREE', menuTree.Result) - commit('SET_PERMISSIONS', permissions.Result) - zzSessionStorage.setItem('newTree', JSON.stringify(menuTree.Result)) - zzSessionStorage.setItem('permissions', JSON.stringify(permissions.Result)) + // var permissions = await getUserPermissions() + // var menuTree = await getUserMenuTree() + // commit('SET_TREE', menuTree.Result) + // commit('SET_PERMISSIONS', permissions.Result) + // zzSessionStorage.setItem('newTree', JSON.stringify(menuTree.Result)) + // zzSessionStorage.setItem('permissions', JSON.stringify(permissions.Result)) } catch (e) { console.log(e) } @@ -146,6 +154,39 @@ const actions = { }) }) }, + loginByRole({ commit }, userInfo) { + const { UserTypeId } = userInfo + let params = { + UserTypeId + } + return new Promise((resolve, reject) => { + + loginSelectUserRole(params).then(async response => { + if (response.IsSuccess) { + const data = response.Result + + try { + commit('SET_TOKEN', data) + setToken(data) + var permissions = await getUserPermissions() + var menuTree = await getUserMenuTree() + commit('SET_TREE', menuTree.Result) + commit('SET_PERMISSIONS', permissions.Result) + zzSessionStorage.setItem('newTree', JSON.stringify(menuTree.Result)) + zzSessionStorage.setItem('permissions', JSON.stringify(permissions.Result)) + } catch (e) { + console.log(e) + } + resolve(response.Result) + + } else { + reject(response.ErrorMessage) + } + }).catch(() => { + reject() + }) + }) + }, setTree({ commit }, tree) { commit('SET_TREE', tree) }, diff --git a/src/views/login/index.vue b/src/views/login/index.vue index 2286bd3a..a069c363 100644 --- a/src/views/login/index.vue +++ b/src/views/login/index.vue @@ -243,6 +243,7 @@ + @@ -253,9 +254,10 @@ import TopLang from './topLang' import Vcode from 'vue-puzzle-vcode' import browserTip from '@/views/dictionary/template/browser/tip.vue' import Img1 from '@/assets/pic-2.png' +import toggleRole from '@/components/toggleRole' export default { name: 'Login', - components: { TopLang, Vcode, browserTip }, + components: { TopLang, Vcode, browserTip, toggleRole }, data() { return { NODE_ENV: process.env.NODE_ENV, // process.env.NODE_ENV @@ -298,6 +300,7 @@ export default { isShow: false, showCode: false, Img1, + toggleRoleVisible: false, } }, computed: { @@ -416,31 +419,49 @@ export default { // this.$alert(this.$t('login:message:login4'), this.$t('common:title:warning')) this.$message.warning(this.$t('login:message:login4')) } - this.$store.dispatch('permission/generateRoutes').then((res) => { - this.loading = false - if (res && res.length > 0) { - this.$store.dispatch('global/getNoticeList') - this.$router.addRoutes(res) - if (this.loginType === 'DevOps') { - this.$router.replace({ path: res[0].path }) - return - } - if (this.hasPermi(['role:radmin'])) { - this.$router.replace({ path: res[0].path }) - return - } - if ( - this.hasPermi(['role:air', 'role:rpm', 'role:rcrc', 'role:rir']) - ) { - this.$router.replace({ path: '/trials/trials-list' }) + return (this.toggleRoleVisible = true) + }) + .catch(() => { + this.showCode = true + this.loading = false + }) + }, + loginByRole(UserTypeId) { + this.$store + .dispatch('user/loginByRole', { UserTypeId }) + .then((res) => { + if (res) { + this.$store.dispatch('permission/generateRoutes').then((res) => { + this.loading = false + if (res && res.length > 0) { + this.$store.dispatch('global/getNoticeList') + this.$router.addRoutes(res) + if (this.loginType === 'DevOps') { + this.$router.replace({ path: res[0].path }) + return + } + if (this.hasPermi(['role:radmin'])) { + this.$router.replace({ path: res[0].path }) + return + } + if ( + this.hasPermi([ + 'role:air', + 'role:rpm', + 'role:rcrc', + 'role:rir', + ]) + ) { + this.$router.replace({ path: '/trials/trials-list' }) + } else { + this.$router.replace({ path: '/trials' }) + } } else { - this.$router.replace({ path: '/trials' }) + // 此账户暂未配置菜单权限,请联系管理员处理后再登录。 + this.$message.warning(this.$t('login:message:login2')) } - } else { - // 此账户暂未配置菜单权限,请联系管理员处理后再登录。 - this.$message.warning(this.$t('login:message:login2')) - } - }) + }) + } }) .catch(() => { this.showCode = true diff --git a/src/views/trials/trials-panel/setting/personnel-manage/components/staffExternalForm.vue b/src/views/trials/trials-panel/setting/personnel-manage/components/staffExternalForm.vue index afe0f3f5..29522388 100644 --- a/src/views/trials/trials-panel/setting/personnel-manage/components/staffExternalForm.vue +++ b/src/views/trials/trials-panel/setting/personnel-manage/components/staffExternalForm.vue @@ -225,7 +225,7 @@ export default { // 保存权限配置 async savePermission(){ try{ - let validate = this.$refs.permissionForm.validate(); + let validate =await this.$refs.permissionForm.validate(); if(!validate) return false; this.assignLoadStatus = true; let data = Object.assign({ Id: this.trialId },this.permission) From 177510643da3f6b22d197c851b7b0ae39c879cfc Mon Sep 17 00:00:00 2001 From: wangxiaoshuang <825034831@qq.com> Date: Mon, 23 Dec 2024 18:05:21 +0800 Subject: [PATCH 011/194] =?UTF-8?q?=E5=88=86=E8=A7=92=E8=89=B2=E7=99=BB?= =?UTF-8?q?=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/toggleRole/index.vue | 12 ++++++++---- src/store/getters.js | 1 + src/store/modules/permission.js | 1 + src/store/modules/user.js | 20 ++++++++++++++------ src/views/login/index.vue | 14 +++++++++++--- 5 files changed, 35 insertions(+), 13 deletions(-) diff --git a/src/components/toggleRole/index.vue b/src/components/toggleRole/index.vue index c928068a..b792865b 100644 --- a/src/components/toggleRole/index.vue +++ b/src/components/toggleRole/index.vue @@ -8,14 +8,15 @@ append-to-body :title="$t('toggleRole:tip:title')" center + top="30vh" :show-close="false" @close="cancel" > @@ -37,7 +38,11 @@ export default { props: { visible: { type: Boolean, - default: true, + default: false, + }, + loading: { + type: Boolean, + default: false, }, }, data() { @@ -45,7 +50,6 @@ export default { form: { UserTypeId: null, }, - loading: false, } }, computed: { diff --git a/src/store/getters.js b/src/store/getters.js index 9f5c1c33..30e43422 100644 --- a/src/store/getters.js +++ b/src/store/getters.js @@ -7,6 +7,7 @@ const getters = { tree: state => state.user.tree, userName: state => state.user.userName, userId: state => state.user.userId, + userRoleId: state => state.user.userRoleId, routes: state => state.permission.routes, asyncRoutes: state => state.permission.addRoutes, visitedViews: state => state.tagsView.visitedViews, diff --git a/src/store/modules/permission.js b/src/store/modules/permission.js index aef32a5b..5afee253 100644 --- a/src/store/modules/permission.js +++ b/src/store/modules/permission.js @@ -118,6 +118,7 @@ const actions = { return new Promise(resolve => { var newTree = JSON.parse(zzSessionStorage.getItem('newTree')) const sidebarRoutes = filterAsyncRouter(newTree || []) + console.log(sidebarRoutes, 'sidebarRoutes') commit('SET_ROUTES', sidebarRoutes) resolve(sidebarRoutes) }) diff --git a/src/store/modules/user.js b/src/store/modules/user.js index 5b57f3fc..196f0186 100644 --- a/src/store/modules/user.js +++ b/src/store/modules/user.js @@ -9,6 +9,7 @@ const getDefaultState = () => { name: '', userName: '', userId: '', + userRoleId: '', avatar: '', permissions: [], tree: [], @@ -53,6 +54,9 @@ const mutations = { SET_USERID: (state, id) => { state.userId = id }, + SET_USEROLEID: (state, id) => { + state.userRoleId = id + }, SET_ISTESTUSER: (state, isTestUser) => { state.isTestUser = eval(isTestUser) }, @@ -127,13 +131,13 @@ const actions = { zzSessionStorage.setItem('isTestUser', data.BasicInfo.IsTestUser) commit('SET_ISTESTUSER', data.BasicInfo.IsTestUser) commit('SET_USERNAME', data.BasicInfo.UserName) - commit('SET_USERID', data.BasicInfo.Id) + commit('SET_USERID', data.BasicInfo.IdentityUserId) setToken(data.JWTStr) setName(data.BasicInfo.RealName) const userString = decodeURIComponent(escape(window.atob(data.JWTStr.split('.')[1].replace(/-/g, '+').replace(/_/g, '/')))) const user = JSON.parse(userString) zzSessionStorage.setItem('userTypeShortName', user.userTypeShortName) - zzSessionStorage.setItem('userId', user.id) + zzSessionStorage.setItem('userId', user.identityUserId) zzSessionStorage.setItem('userTypeEnumInt', user.userTypeEnumInt) // var permissions = await getUserPermissions() // var menuTree = await getUserMenuTree() @@ -155,9 +159,9 @@ const actions = { }) }, loginByRole({ commit }, userInfo) { - const { UserTypeId } = userInfo + const { userRoleId } = userInfo let params = { - UserTypeId + userRoleId } return new Promise((resolve, reject) => { @@ -166,6 +170,8 @@ const actions = { const data = response.Result try { + commit('SET_USEROLEID', userRoleId) + zzSessionStorage.setItem('userRoleId', userRoleId) commit('SET_TOKEN', data) setToken(data) var permissions = await getUserPermissions() @@ -212,14 +218,16 @@ const actions = { commit('SET_ISTESTUSER', zzSessionStorage.getItem('isTestUser')) const user = JSON.parse(userString) commit('SET_NAME', zzSessionStorage.getItem('realName')) - commit('SET_USERID', user.id) + commit('SET_USEROLEID', user.userRoleId) + commit('SET_USERID', user.identityUserId) commit('SET_USERNAME', zzSessionStorage.getItem('userName')) commit('SET_NEED_SIGN_SYSTEM_DOC_COUNT', parseInt(zzSessionStorage.getItem('TotalNeedSignSystemDocCount'))) commit('SET_NEED_SIGN_TRIALS_DOC_COUNT', parseInt(zzSessionStorage.getItem('TotalNeedSignTrialDocCount'))) console.log(zzSessionStorage.getItem('TotalNeedSignSystemDocCount')) console.log(zzSessionStorage.getItem('TotalNeedSignTrialDocCount')) zzSessionStorage.setItem('userName', user.name) - zzSessionStorage.setItem('userId', user.id) + zzSessionStorage.setItem('userId', user.identityUserId) + zzSessionStorage.setItem('userRoleId', user.userRoleId) zzSessionStorage.setItem('userTypeShortName', user.userTypeShortName) zzSessionStorage.setItem('userTypeEnumInt', user.userTypeEnumInt) return user diff --git a/src/views/login/index.vue b/src/views/login/index.vue index a069c363..cbc18c50 100644 --- a/src/views/login/index.vue +++ b/src/views/login/index.vue @@ -243,7 +243,11 @@ - + @@ -301,6 +305,7 @@ export default { showCode: false, Img1, toggleRoleVisible: false, + toggleRoleLoading: false, } }, computed: { @@ -426,10 +431,12 @@ export default { this.loading = false }) }, - loginByRole(UserTypeId) { + loginByRole(userRoleId) { + this.toggleRoleLoading = true this.$store - .dispatch('user/loginByRole', { UserTypeId }) + .dispatch('user/loginByRole', { userRoleId }) .then((res) => { + this.toggleRoleLoading = false if (res) { this.$store.dispatch('permission/generateRoutes').then((res) => { this.loading = false @@ -466,6 +473,7 @@ export default { .catch(() => { this.showCode = true this.loading = false + this.toggleRoleLoading = false }) }, onSuccess() { From a95a129dde9b2ebe33b605883826d6e7bb8844bd Mon Sep 17 00:00:00 2001 From: wangxiaoshuang <825034831@qq.com> Date: Tue, 24 Dec 2024 16:21:23 +0800 Subject: [PATCH 012/194] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E5=86=85=E5=88=87?= =?UTF-8?q?=E6=8D=A2=E8=A7=92=E8=89=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README-zh.md | 3 + public/index.html | 1 - src/api/admin.js | 2 +- src/components/toggleRole/index.vue | 31 ++- src/const/check/index.js | 1 - src/permission.js | 1 + src/store/getters.js | 2 +- src/store/modules/permission.js | 1 - src/store/modules/user.js | 51 ++-- src/views/login/index.vue | 80 ++++--- .../trials-layout/components/topLang.vue | 1 - .../trials-layout/components/trialsNavbar.vue | 226 ++++++++++++------ src/views/trials/trials-myinfo/account.vue | 59 +++++ src/views/trials/trials-workbench/index.vue | 2 - 14 files changed, 331 insertions(+), 130 deletions(-) diff --git a/README-zh.md b/README-zh.md index e472d1d6..9e111c1e 100644 --- a/README-zh.md +++ b/README-zh.md @@ -5,3 +5,6 @@ npm install # 启动服务 npm run dev +# v1.9.0修改 +1. 角色修改,全局userId实际意义修改为userRoleId(用户角色id),新增identityUserId(新的用户id) + diff --git a/public/index.html b/public/index.html index 0c22a84a..8703f504 100644 --- a/public/index.html +++ b/public/index.html @@ -30,7 +30,6 @@ <% } else { %> \ No newline at end of file diff --git a/src/layout/components/Navbar.vue b/src/layout/components/Navbar.vue index d8a1ad17..49442e19 100644 --- a/src/layout/components/Navbar.vue +++ b/src/layout/components/Navbar.vue @@ -69,7 +69,7 @@ export default { ...mapGetters(['sidebar', 'name', 'device']) }, created() { - this.isReviewer = JSON.parse(zzSessionStorage.getItem('IsReviewer')) + // this.isReviewer = JSON.parse(zzSessionStorage.getItem('IsReviewer')) }, methods: { ...mapMutations({ setLanguage: 'lang/setLanguage' }), diff --git a/src/views/admin/user/components/UserInfo.vue b/src/views/admin/user/components/UserInfo.vue index c77558a7..5b2057d5 100644 --- a/src/views/admin/user/components/UserInfo.vue +++ b/src/views/admin/user/components/UserInfo.vue @@ -5,7 +5,7 @@ :model="user" :rules="userFormRules" label-width="150px" - style="width:800px;" + style="width: 800px" >
@@ -25,7 +25,7 @@ - + Male Female @@ -37,13 +37,24 @@ - - + + - + - +
Affiliation
- + Internal External - + @@ -78,19 +100,24 @@ type="primary" size="small" :disabled="isDisabled" - style="margin:10px 15px" + style="margin: 10px 15px" @click="handleSave" - >Save + >Save - diff --git a/src/views/login/index.vue b/src/views/login/index.vue index e14181dc..f37debd8 100644 --- a/src/views/login/index.vue +++ b/src/views/login/index.vue @@ -244,6 +244,7 @@
{{ $t('system:userlist:title:Information') }}
- + - + - + - + + + {{ $t('common:button:confirm') }} + +
+ + + + + + + + +
+ + + {{ $t('common:button:confirm') }} + + + + {{ $t('common:button:cancel') }} + +
+
+ + + \ No newline at end of file diff --git a/src/views/system/user/list/index.vue b/src/views/system/user/list/index.vue index f00d9a15..36a149a9 100644 --- a/src/views/system/user/list/index.vue +++ b/src/views/system/user/list/index.vue @@ -35,6 +35,16 @@ + @@ -115,7 +125,7 @@ export default { showOverflowTooltip: true, }, { - prop: 'RealName', + prop: 'FullName', label: this.$t('system:userlist:table:RealName'), minWidth: 120, sortable: 'custom', @@ -154,6 +164,7 @@ export default { prop: 'UserType', label: this.$t('system:userlist:table:UserType'), minWidth: 100, + slot: 'UserTypeSlot', sortable: 'custom', showOverflowTooltip: true, }, diff --git a/src/views/trials/trials-layout/components/trialsNavbar.vue b/src/views/trials/trials-layout/components/trialsNavbar.vue index c98a697c..48b0f80d 100644 --- a/src/views/trials/trials-layout/components/trialsNavbar.vue +++ b/src/views/trials/trials-layout/components/trialsNavbar.vue @@ -104,6 +104,7 @@ /> { + .then(async (res) => { if (res && res.length > 0) { - this.$store.dispatch('global/getNoticeList') + await this.$store.dispatch('global/getNoticeList') this.$router.addRoutes(res) this.toggleRoleLoading = false if (this.loginType === 'DevOps') { diff --git a/src/views/trials/trials-myinfo/index.vue b/src/views/trials/trials-myinfo/index.vue index 488c1954..3f5b19f7 100644 --- a/src/views/trials/trials-myinfo/index.vue +++ b/src/views/trials/trials-myinfo/index.vue @@ -107,11 +107,11 @@ export default { spinner: 'el-icon-loading', background: 'rgba(0, 0, 0, 0.07)', }) - getUser(this.userId) + getUser() .then(async (res) => { this.user = res.Result /* eslint-disable */ - zzSessionStorage.setItem('realName', this.user.RealName) + zzSessionStorage.setItem('Name', this.user.FullName) await store.dispatch('user/updateInfo') loading.close() }) diff --git a/src/views/trials/trials-workbench/index.vue b/src/views/trials/trials-workbench/index.vue index ae323a63..b96ef01c 100644 --- a/src/views/trials/trials-workbench/index.vue +++ b/src/views/trials/trials-workbench/index.vue @@ -490,7 +490,7 @@ export default { }, methods: { getUserInfo() { - getUser(this.userId).then(async res => { + getUser().then(async res => { this.user = res.Result }).catch(() => { loading.close() }) }, diff --git a/src/views/user/myInfo.vue b/src/views/user/myInfo.vue index 2dfecd78..94561ea4 100644 --- a/src/views/user/myInfo.vue +++ b/src/views/user/myInfo.vue @@ -17,36 +17,78 @@ {{ $t('trials:trials-myinfo:title:basicInfo') }} - + - - + + - - + + - + Male Female - - + + - - + + - - + + @@ -68,39 +110,97 @@ - + {{ user.UserName }} - + - + {{ $t('trials:trials-myinfo:button:update') }} - + {{ user.Phone }} - + - + {{ $t('trials:trials-myinfo:button:update') }} - + {{ user.EMail }} - - - {{ sendTitle }} + + + {{ sendTitle }} - - + + - + {{ $t('trials:trials-myinfo:button:update') }} @@ -111,18 +211,52 @@ {{ $t('trials:trials-myinfo:title:updatePaasord') }} - + - - + + - - + + - - + + From dec01d779d0aba8517c7ad0e9453ebfa92825aac Mon Sep 17 00:00:00 2001 From: wangxiaoshuang <825034831@qq.com> Date: Wed, 25 Dec 2024 11:42:11 +0800 Subject: [PATCH 014/194] =?UTF-8?q?=E7=BC=96=E8=BE=91=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E8=A7=92=E8=89=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/system/user/components/UserInfo.vue | 2 +- src/views/system/user/components/roleList.vue | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/views/system/user/components/UserInfo.vue b/src/views/system/user/components/UserInfo.vue index 22c477ab..84c03f80 100644 --- a/src/views/system/user/components/UserInfo.vue +++ b/src/views/system/user/components/UserInfo.vue @@ -281,7 +281,7 @@ export default { this.user.Roles.push(item.UserTypeId) } this.user.UserRoleList.push({ - UserTypeEnum: item.UserTypeEnum, + UserTypeEnum: item.UserType, UserTypeId: item.UserTypeId, IsUserRoleDisabled: item.IsUserRoleDisabled, UserTypeShortName: item.UserTypeShortName, diff --git a/src/views/system/user/components/roleList.vue b/src/views/system/user/components/roleList.vue index 06d2e0e8..d4138223 100644 --- a/src/views/system/user/components/roleList.vue +++ b/src/views/system/user/components/roleList.vue @@ -181,7 +181,7 @@ export default { arr.forEach((item) => { this.list.push({ UserTypeEnum: item.UserTypeEnum, - UserTypeId: item.UserTypeId, + UserTypeId: item.Id, IsUserRoleDisabled: false, UserTypeShortName: item.UserTypeShortName, }) From f637f746cbdb2ec4df56351274e89b8c3f8fcf0b Mon Sep 17 00:00:00 2001 From: wangxiaoshuang <825034831@qq.com> Date: Wed, 25 Dec 2024 13:27:31 +0800 Subject: [PATCH 015/194] =?UTF-8?q?=E9=87=8D=E7=BD=AE=E5=AF=86=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/forgetpassword/index.vue | 21 +++++++++++-------- src/views/system/user/components/roleList.vue | 1 + 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/views/forgetpassword/index.vue b/src/views/forgetpassword/index.vue index 1f18d6f4..d66f6c34 100644 --- a/src/views/forgetpassword/index.vue +++ b/src/views/forgetpassword/index.vue @@ -76,7 +76,8 @@ > - + - - + --> { this.formLoading = false - this.users = res.Result - if (this.users.length === 1) { - this.form.UserId = this.users[0].UserId - this.form.UserType = this.users[0].UserType - } + this.form.UserId = res.Result.Id + this.form.UserName = res.Result.UserName + // this.users = res.Result + // if (this.users.length === 1) { + // this.form.UserId = this.users[0].UserId + // this.form.UserType = this.users[0].UserType + // } // 验证成功 this.$message.success( this.$t('passwordReset:message:verifiedSuccessfully') diff --git a/src/views/system/user/components/roleList.vue b/src/views/system/user/components/roleList.vue index d4138223..f8b14998 100644 --- a/src/views/system/user/components/roleList.vue +++ b/src/views/system/user/components/roleList.vue @@ -7,6 +7,7 @@ :close-on-click-modal="false" :close-on-press-escape="false" append-to-body + :show-close="false" :title="$t('system:userlist:roleList:title')" :before-close="cancel" > From 9bdb8f64b3b23ef2b0c9c4c0f049e01ff6e6d581 Mon Sep 17 00:00:00 2001 From: wangxiaoshuang <825034831@qq.com> Date: Wed, 25 Dec 2024 14:10:31 +0800 Subject: [PATCH 016/194] 1 --- src/views/email-recompose/index.vue | 1 - src/views/system/user/components/UserInfo.vue | 1 - src/views/system/user/components/roleList.vue | 1 - 3 files changed, 3 deletions(-) diff --git a/src/views/email-recompose/index.vue b/src/views/email-recompose/index.vue index 9a11ceb9..ba74eceb 100644 --- a/src/views/email-recompose/index.vue +++ b/src/views/email-recompose/index.vue @@ -95,7 +95,6 @@ export default { : 'zh' /* eslint-disable */ var reg1 = /^[a-zA-Z0-9_]{4,16}$/ //密码必须是8位以上、必须含有字母、数字、特殊符号 - console.log(!reg1.test(value)) if (!reg1.test(value)) { callback( lang === 'zh' diff --git a/src/views/system/user/components/UserInfo.vue b/src/views/system/user/components/UserInfo.vue index 84c03f80..6c21913b 100644 --- a/src/views/system/user/components/UserInfo.vue +++ b/src/views/system/user/components/UserInfo.vue @@ -300,7 +300,6 @@ export default { : 'zh' /* eslint-disable */ var reg1 = /^[a-zA-Z0-9_]{4,16}$/ //密码必须是8位以上、必须含有字母、数字、特殊符号 - console.log(!reg1.test(value)) if (!reg1.test(value)) { callback( lang === 'zh' diff --git a/src/views/system/user/components/roleList.vue b/src/views/system/user/components/roleList.vue index f8b14998..f79c7e92 100644 --- a/src/views/system/user/components/roleList.vue +++ b/src/views/system/user/components/roleList.vue @@ -168,7 +168,6 @@ export default { roles.push(item.UserTypeId) } }) - console.log(roles) this.$emit('update:roles', roles) this.$emit('update:visible', false) }, From b233535d9554b00feb6d16f77861852874299bae Mon Sep 17 00:00:00 2001 From: wangxiaoshuang <825034831@qq.com> Date: Wed, 25 Dec 2024 14:47:12 +0800 Subject: [PATCH 017/194] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E8=A7=92=E8=89=B2?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/trials.js | 9 + .../personnel-manage/components/staff.vue | 369 +++++++++++++++--- 2 files changed, 314 insertions(+), 64 deletions(-) diff --git a/src/api/trials.js b/src/api/trials.js index d3df4757..26bba548 100644 --- a/src/api/trials.js +++ b/src/api/trials.js @@ -3922,4 +3922,13 @@ export function configTrialSPMInfo(data) { method: 'post', data }) +} + +// 项目添加角色修改权限 +export function updateTrialUserRole(data) { + return request({ + url: `/TrialMaintenance/updateTrialUserRole`, + method: 'put', + data + }) } \ No newline at end of file diff --git a/src/views/trials/trials-panel/setting/personnel-manage/components/staff.vue b/src/views/trials/trials-panel/setting/personnel-manage/components/staff.vue index 5fb31630..4ddfcaaf 100644 --- a/src/views/trials/trials-panel/setting/personnel-manage/components/staff.vue +++ b/src/views/trials/trials-panel/setting/personnel-manage/components/staff.vue @@ -16,7 +16,12 @@ - - + + @@ -42,14 +52,20 @@ {{ $t('common:button:search') }} - + {{ $t('common:button:reset') }} @@ -57,7 +73,9 @@ + > + + @@ -156,7 +195,11 @@ width="160" > @@ -168,25 +211,29 @@ width="160" > - + /> --> - + /> --> @@ -207,30 +256,60 @@ - From 7ed4dd7e24f104e31f56894910b6f590a94d7acc Mon Sep 17 00:00:00 2001 From: wangxiaoshuang <825034831@qq.com> Date: Wed, 25 Dec 2024 14:51:36 +0800 Subject: [PATCH 018/194] 1 --- src/views/system/user/components/UserInfo.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/views/system/user/components/UserInfo.vue b/src/views/system/user/components/UserInfo.vue index 6c21913b..1f8de2ec 100644 --- a/src/views/system/user/components/UserInfo.vue +++ b/src/views/system/user/components/UserInfo.vue @@ -281,7 +281,7 @@ export default { this.user.Roles.push(item.UserTypeId) } this.user.UserRoleList.push({ - UserTypeEnum: item.UserType, + UserTypeEnum: item.UserTypeEnum, UserTypeId: item.UserTypeId, IsUserRoleDisabled: item.IsUserRoleDisabled, UserTypeShortName: item.UserTypeShortName, From 9d3ba7eb578163d6c82154b0848f636b8f7c8234 Mon Sep 17 00:00:00 2001 From: wangxiaoshuang <825034831@qq.com> Date: Wed, 25 Dec 2024 15:55:36 +0800 Subject: [PATCH 019/194] 1 --- .../trials-layout/components/trialsNavbar.vue | 1 - .../personnel-manage/components/site.vue | 2 +- .../components/staffExternalForm.vue | 2 +- .../personnel-manage/components/staffForm.vue | 158 ++++++++++++------ 4 files changed, 106 insertions(+), 57 deletions(-) diff --git a/src/views/trials/trials-layout/components/trialsNavbar.vue b/src/views/trials/trials-layout/components/trialsNavbar.vue index 48b0f80d..e8404a87 100644 --- a/src/views/trials/trials-layout/components/trialsNavbar.vue +++ b/src/views/trials/trials-layout/components/trialsNavbar.vue @@ -154,7 +154,6 @@ export default { }, created() { // this.isReviewer = JSON.parse(zzSessionStorage.getItem('IsReviewer')) - console.log(this.$route.path, 'this.$route.path') this.changeRoute(this.$route) }, methods: { diff --git a/src/views/trials/trials-panel/setting/personnel-manage/components/site.vue b/src/views/trials/trials-panel/setting/personnel-manage/components/site.vue index fed20e1a..8a7224b0 100644 --- a/src/views/trials/trials-panel/setting/personnel-manage/components/site.vue +++ b/src/views/trials/trials-panel/setting/personnel-manage/components/site.vue @@ -412,7 +412,7 @@ > - +
{{ $t('trials:staff:table:name') }}: - + {{ $t('trials:staff:table:uid') }}: - + {{ $t('trials:staff:table:organization') }}: - + {{ $t('trials:staff:table:userType') }}: - + - + {{ $t('common:button:search') }} - + {{ $t('common:button:reset') }} - + {{ $t('common:button:add') }}
@@ -101,17 +139,25 @@ sortable="custom" min-width="100" /> - - + diff --git a/src/views/trials/trials-panel/reading/dicoms/components/MRIPDFF/QuestionList.vue b/src/views/trials/trials-panel/reading/dicoms/components/MRIPDFF/QuestionList.vue new file mode 100644 index 00000000..b306cb62 --- /dev/null +++ b/src/views/trials/trials-panel/reading/dicoms/components/MRIPDFF/QuestionList.vue @@ -0,0 +1,616 @@ + + + diff --git a/src/views/trials/trials-panel/reading/dicoms/components/ReportPage.vue b/src/views/trials/trials-panel/reading/dicoms/components/ReportPage.vue index 2e7c5019..4f9b4432 100644 --- a/src/views/trials/trials-panel/reading/dicoms/components/ReportPage.vue +++ b/src/views/trials/trials-panel/reading/dicoms/components/ReportPage.vue @@ -373,13 +373,13 @@ export default { }) }, async beforeLeave() { - if (this.questionFormChangeState && this.CriterionType !== 2) { - var msg = this.$t('trials:readingReport:message:msg5') - var isgo = await this.myConfirm(msg) - if (!isgo) { - return Promise.resolve(true) - } - } + // if (this.questionFormChangeState && this.CriterionType !== 2) { + // var msg = this.$t('trials:readingReport:message:msg5') + // var isgo = await this.myConfirm(msg) + // if (!isgo) { + // return Promise.resolve(true) + // } + // } var list = null DicomEvent.$emit('getAllUnSaveLesions', val => { list = val diff --git a/src/views/trials/trials-panel/reading/dicoms/tools/Probe/ProbeTool.js b/src/views/trials/trials-panel/reading/dicoms/tools/Probe/ProbeTool.js new file mode 100644 index 00000000..92caea2c --- /dev/null +++ b/src/views/trials/trials-panel/reading/dicoms/tools/Probe/ProbeTool.js @@ -0,0 +1,404 @@ +import * as cornerstoneTools from 'cornerstone-tools' +const external = cornerstoneTools.external +// State +const getToolState = cornerstoneTools.getToolState +const textStyle = cornerstoneTools.textStyle +const toolColors = cornerstoneTools.toolColors +const toolStyle = cornerstoneTools.toolStyle +// Drawing +const getNewContext = cornerstoneTools.import('drawing/getNewContext') +const draw = cornerstoneTools.import('drawing/draw') +const drawHandles = cornerstoneTools.import('drawing/drawHandles') +const drawTextBox = cornerstoneTools.import('drawing/drawTextBox') +// Utilities +const getRGBPixels = cornerstoneTools.import('util/getRGBPixels') +const calculateSUV = cornerstoneTools.import('util/calculateSUV') +// import { probeCursor } from '../cursors/index.js'; +// import { getLogger } from '../../util/logger.js'; +const throttle = cornerstoneTools.import('util/throttle') +const getModule = cornerstoneTools.getModule +const getPixelSpacing = cornerstoneTools.import('util/getPixelSpacing') +// import numbersWithCommas from './../../util/numbersWithCommas.js'; +const numbersWithCommas = cornerstoneTools.import('util/numbersWithCommas') +// const logger = getLogger('tools:annotation:ProbeTool'); +import calculateEllipseStatistics from './calculateEllipseStatistics' +import getCircleCoords from './getCircleCoords' +/** + * @public + * @class ProbeTool + * @memberof Tools.Annotation + * @classdesc Tool which provides a probe of the image data at the + * desired position. + * @extends Tools.Base.BaseAnnotationTool + */ +export default class ProbeTool extends cornerstoneTools.ProbeTool { + constructor(props = {}) { + const defaultProps = { + name: 'Probe', + supportedInteractionTypes: ['Mouse', 'Touch'], + // svgCursor: probeCursor, + configuration: { + drawHandles: true, + renderDashed: false, + handleRadius: 0, + fixedRadius: 0, + hideHandlesIfMoving: false, + digits: 1, + showRadius: false, + }, + }; + + super(props, defaultProps); + + this.throttledUpdateCachedStats = throttle(this.updateCachedStats, 110); + } + + createNewMeasurement(eventData) { + const goodEventData = + eventData && eventData.currentPoints && eventData.currentPoints.image; + + if (!goodEventData) { + logger.error( + `required eventData not supplied to tool ${this.name}'s createNewMeasurement` + ); + + return; + } + + return { + visible: true, + active: true, + color: undefined, + invalidated: true, + handles: { + // start: { + // x: eventData.currentPoints.image.x, + // y: eventData.currentPoints.image.y, + // highlight: true, + // active: false, + // }, + end: { + x: eventData.currentPoints.image.x, + y: eventData.currentPoints.image.y, + highlight: true, + active: true, + radius: 0 + }, + }, + }; + } + + /** + * + * + * @param {*} element + * @param {*} data + * @param {*} coords + * @returns {Boolean} + */ + pointNearTool(element, data, coords) { + const hasEndHandle = data && data.handles && data.handles.end; + const validParameters = hasEndHandle; + + if (!validParameters) { + logger.warn( + `invalid parameters supplied to tool ${this.name}'s pointNearTool` + ); + } + + if (!validParameters || data.visible === false) { + return false; + } + + const probeCoords = external.cornerstone.pixelToCanvas( + element, + data.handles.end + ); + + return external.cornerstoneMath.point.distance(probeCoords, coords) < 5; + } + // pointNearTool(element, data, coords) { + // const hasEndHandle = data && data.handles && data.handles.end; + // const validParameters = hasEndHandle; + + // if (!validParameters) { + // logger.warn( + // `invalid parameters supplied to tool ${this.name}'s pointNearTool` + // ); + // } + + // if (!validParameters || data.visible === false) { + // return false; + // } + // // data.handles.end.x = data.handles.end.x + 10 + // let endCoords = { + // x: data.handles.end.x + 50, + // y: data.handles.end.y, + // highlight: data.handles.end.highlight, + // active: data.handles.end.active, + // } + // const probeCoords = external.cornerstone.pixelToCanvas( + // element, + // endCoords + // ); + + // return external.cornerstoneMath.point.distance(probeCoords, coords) < 5; + // } + + // updateCachedStats(image, element, data) { + // const x = Math.round(data.handles.end.x); + // const y = Math.round(data.handles.end.y); + + // const stats = {}; + + // if (x >= 0 && y >= 0 && x < image.columns && y < image.rows) { + // stats.x = x; + // stats.y = y; + + // if (image.color) { + // stats.storedPixels = getRGBPixels(element, x, y, 1, 1); + // } else { + // stats.storedPixels = external.cornerstone.getStoredPixels( + // element, + // x, + // y, + // 1, + // 1 + // ); + // stats.sp = stats.storedPixels[0]; + // stats.mo = stats.sp * image.slope + image.intercept; + // stats.suv = calculateSUV(image, stats.sp); + // } + // } + + // data.cachedStats = stats; + // data.invalidated = false; + // } + updateCachedStats(image, element, data) { + const seriesModule = + external.cornerstone.metaData.get('generalSeriesModule', image.imageId) || + {}; + const modality = seriesModule.modality; + const pixelSpacing = getPixelSpacing(image); + const { fixedRadius, digits } = this.configuration; + const stats = _calculateStats( + image, + element, + data.handles, + modality, + pixelSpacing, + fixedRadius, + digits + ); + + data.cachedStats = stats; + data.invalidated = false; + } + + renderToolData(evt) { + const eventData = evt.detail; + const { fixedRadius, renderDashed } = this.configuration; + const toolData = getToolState(evt.currentTarget, this.name); + + if (!toolData) { + return; + } + + // We have tool data for this element - iterate over each one and draw it + const context = getNewContext(eventData.canvasContext.canvas); + const { image, element } = eventData; + const fontHeight = textStyle.getFontSize(); + const lineDash = getModule('globalConfiguration').configuration.lineDash; + const pixelSpacing = getPixelSpacing(image); + // Meta + const seriesModule = + external.cornerstone.metaData.get('generalSeriesModule', image.imageId) || + {}; + + // Pixel Spacing + const modality = seriesModule.modality; + const hasPixelSpacing = pixelSpacing && pixelSpacing.rowPixelSpacing && pixelSpacing.colPixelSpacing; + for (let i = 0; i < toolData.data.length; i++) { + const data = toolData.data[i]; + if (data.visible === false) { + continue; + } + + draw(context, context => { + const color = toolColors.getColorIfActive(data); + + if (this.configuration.drawHandles) { + // Draw the handles + let radius = getCanvasRadius(data.handles, fixedRadius, element, pixelSpacing) + data.handles.end.radius = radius + const handleOptions = { handleRadius: radius, color }; + + if (renderDashed) { + handleOptions.lineDash = lineDash; + } + drawHandles(context, eventData, data.handles, handleOptions); + } + + // Update textbox stats + if (data.invalidated === true) { + if (data.cachedStats) { + this.throttledUpdateCachedStats(image, element, data); + } else { + this.updateCachedStats(image, element, data); + } + } + + // let text, str; + let textLines = [] + const { x, y, area, mean, radius } = data.cachedStats; + + if (x >= 0 && y >= 0 && x < image.columns && y < image.rows) { + // text = `${x}, ${y}`; + if (data.remark) { + textLines.push(`${data.remark}`) + } + if (!image.color) { + // Draw text + let unit = _getUnit(modality, this.configuration.showHounsfieldUnits); + + // textLines.push(_formatArea(area, hasPixelSpacing)); + if (mean) { + // str += `mean: ${parseFloat(mean.toFixed(3))}`; + textLines.push(`Mean: ${mean} ${unit}`) + } + // if (radius) { + // str += `radius: ${parseFloat(radius.toFixed(3))}`; + // textLines.push(`radius: ${parseFloat(radius.toFixed(3))}`) + // } + } + let r = getPixelRadius(fixedRadius, pixelSpacing) + // Coords for text + const coords = { + // Translate the x/y away from the cursor + x: data.handles.end.x + r, + y: data.handles.end.y - r, + }; + const textCoords = external.cornerstone.pixelToCanvas( + eventData.element, + coords + ); + drawTextBox( + context, + textLines, + textCoords.x, + textCoords.y , + color + ); + // drawTextBox(context, '', textCoords.x, textCoords.y, color); + } + }); + } + } +} +function _getUnit(modality, showHounsfieldUnits) { + return modality === 'CT' && showHounsfieldUnits !== false ? 'HU' : ''; +} +function _formatArea(area, hasPixelSpacing) { + const suffix = hasPixelSpacing + ? ` mm${String.fromCharCode(178)}` + : ` px${String.fromCharCode(178)}`; + + return `Area: ${numbersWithCommas(area.toFixed(2))}${suffix}`; +} +function getCanvasRadius(handles, fixedRadius, element, pixelSpacing) { + let startCoords = { + x: handles.end.x, + y: handles.end.y + } + const handleCanvasStartCoords = external.cornerstone.pixelToCanvas( + element, + startCoords + ); + let r = getPixelRadius(fixedRadius, pixelSpacing) + let endCoords = { + x: handles.end.x + r, + y: handles.end.y + } + const handleCanvasEndCoords = external.cornerstone.pixelToCanvas( + element, + endCoords + ); + return Math.abs(handleCanvasEndCoords.x - handleCanvasStartCoords.x) +} +function getPixelRadius(r, pixelSpacing) { + return r / ((pixelSpacing && pixelSpacing.colPixelSpacing) || 1) +} +function _calculateStats(image, element, handles, modality, pixelSpacing, fixedRadius, digits) { + // Retrieve the bounds of the ellipse in image coordinates + let startCoords = { + x: handles.end.x, + y: handles.end.y + } + let r = getPixelRadius(fixedRadius, pixelSpacing) + let endCoords = { + x: handles.end.x + r, + y: handles.end.y + } + const circleCoordinates = getCircleCoords(startCoords, endCoords); + + // Retrieve the array of pixels that the ellipse bounds cover + const pixels = external.cornerstone.getPixels( + element, + circleCoordinates.left, + circleCoordinates.top, + circleCoordinates.width, + circleCoordinates.height + ); + + // Calculate the mean & standard deviation from the pixels and the ellipse details. + const ellipseMeanStdDev = calculateEllipseStatistics( + pixels, + circleCoordinates + ); + + let meanStdDevSUV; + + if (modality === 'PT') { + meanStdDevSUV = { + mean: calculateSUV(image, ellipseMeanStdDev.mean, true) || 0, + stdDev: calculateSUV(image, ellipseMeanStdDev.stdDev, true) || 0, + }; + } + + const radius = + (circleCoordinates.width * + ((pixelSpacing && pixelSpacing.colPixelSpacing) || 1)) / + 2; + const perimeter = 2 * Math.PI * radius; + const area = + Math.PI * + ((circleCoordinates.width * + ((pixelSpacing && pixelSpacing.colPixelSpacing) || 1)) / + 2) * + ((circleCoordinates.height * + ((pixelSpacing && pixelSpacing.rowPixelSpacing) || 1)) / + 2); + const x = Math.round(handles.end.x); + const y = Math.round(handles.end.y); + + const stats = {}; + + if (x >= 0 && y >= 0 && x < image.columns && y < image.rows) { + stats.x = x; + stats.y = y; + } + return { + area: area || 0, + radius: radius || 0, + perimeter: perimeter || 0, + mean: ellipseMeanStdDev.mean.toFixed(digits) || 0, + stdDev: ellipseMeanStdDev.stdDev.toFixed(digits) || 0, + min: ellipseMeanStdDev.min.toFixed(digits) || 0, + max: ellipseMeanStdDev.max.toFixed(digits) || 0, + meanStdDevSUV, + x: stats.x, + y: stats.y + }; +} + + diff --git a/src/views/trials/trials-panel/reading/dicoms/tools/Probe/calculateEllipseStatistics.js b/src/views/trials/trials-panel/reading/dicoms/tools/Probe/calculateEllipseStatistics.js new file mode 100644 index 00000000..867437f5 --- /dev/null +++ b/src/views/trials/trials-panel/reading/dicoms/tools/Probe/calculateEllipseStatistics.js @@ -0,0 +1,67 @@ +import pointInEllipse from './pointInEllipse.js'; + +/** + * Calculates the statistics of an elliptical region of interest. + * + * @private + * @function calculateEllipseStatistics + * + * @param {number[]} sp - Array of the image data's pixel values. + * @param {Object} ellipse - { top, left, height, width } - An object describing the ellipse. + * @returns {Object} { count, mean, variance, stdDev, min, max } + */ +export default function(sp, ellipse) { + let sum = 0; + let sumSquared = 0; + let count = 0; + let index = 0; + let min = null; + let max = null; + + for (let y = ellipse.top; y < ellipse.top + ellipse.height; y++) { + for (let x = ellipse.left; x < ellipse.left + ellipse.width; x++) { + const point = { + x, + y, + }; + + if (pointInEllipse(ellipse, point)) { + if (min === null) { + min = sp[index]; + max = sp[index]; + } + + sum += sp[index]; + sumSquared += sp[index] * sp[index]; + min = Math.min(min, sp[index]); + max = Math.max(max, sp[index]); + count++; + } + + index++; + } + } + + if (count === 0) { + return { + count, + mean: 0.0, + variance: 0.0, + stdDev: 0.0, + min: 0.0, + max: 0.0, + }; + } + + const mean = sum / count; + const variance = sumSquared / count - mean * mean; + + return { + count, + mean, + variance, + stdDev: Math.sqrt(variance), + min, + max, + }; +} diff --git a/src/views/trials/trials-panel/reading/dicoms/tools/Probe/getCircleCoords.js b/src/views/trials/trials-panel/reading/dicoms/tools/Probe/getCircleCoords.js new file mode 100644 index 00000000..ddc90942 --- /dev/null +++ b/src/views/trials/trials-panel/reading/dicoms/tools/Probe/getCircleCoords.js @@ -0,0 +1,21 @@ +import * as cornerstoneTools from 'cornerstone-tools' +const external = cornerstoneTools.external + +/** + * Retrieve the bounds of the circle in image coordinates + * + * @param {*} startHandle + * @param {*} endHandle + * @returns {{ left: number, top: number, width: number, height: number }} + */ +export default function getCircleCoords(startHandle, endHandle) { + const { distance } = external.cornerstoneMath.point + const radius = distance(startHandle, endHandle) + + return { + left: Math.floor(Math.min(startHandle.x - radius, endHandle.x)), + top: Math.floor(Math.min(startHandle.y - radius, endHandle.y)), + width: radius * 2, + height: radius * 2 + } +} diff --git a/src/views/trials/trials-panel/reading/dicoms/tools/Probe/pointInEllipse.js b/src/views/trials/trials-panel/reading/dicoms/tools/Probe/pointInEllipse.js new file mode 100644 index 00000000..e7a09e2e --- /dev/null +++ b/src/views/trials/trials-panel/reading/dicoms/tools/Probe/pointInEllipse.js @@ -0,0 +1,39 @@ +/** + * Returns true if a point is within an ellipse + * @export @public @method + * @name pointInEllipse + * + * @param {Object} ellipse Object defining the ellipse. + * @param {Object} location The location of the point. + * @returns {boolean} True if the point is within the ellipse. + */ +export default function(ellipse, location) { + const xRadius = ellipse.width / 2; + const yRadius = ellipse.height / 2; + + if (xRadius <= 0.0 || yRadius <= 0.0) { + return false; + } + + const center = { + x: ellipse.left + xRadius, + y: ellipse.top + yRadius, + }; + + /* This is a more general form of the circle equation + * + * X^2/a^2 + Y^2/b^2 <= 1 + */ + + const normalized = { + x: location.x - center.x, + y: location.y - center.y, + }; + + const inEllipse = + (normalized.x * normalized.x) / (xRadius * xRadius) + + (normalized.y * normalized.y) / (yRadius * yRadius) <= + 1.0; + + return inEllipse; +} From 7882c9b631efc11a60fbd8f824a3dd85e57d941b Mon Sep 17 00:00:00 2001 From: wangxiaoshuang <825034831@qq.com> Date: Thu, 26 Dec 2024 11:02:58 +0800 Subject: [PATCH 025/194] =?UTF-8?q?=E9=93=BE=E6=8E=A5=E8=B7=B3=E8=BD=AC?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E8=B4=A6=E5=8F=B7=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/email-recompose/index.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/views/email-recompose/index.vue b/src/views/email-recompose/index.vue index ba74eceb..21c1ce7b 100644 --- a/src/views/email-recompose/index.vue +++ b/src/views/email-recompose/index.vue @@ -29,9 +29,9 @@
- + From 9cd540d1ecce4d33ea68ab7f0624c46a3f9e1cf2 Mon Sep 17 00:00:00 2001 From: wangxiaoshuang <825034831@qq.com> Date: Thu, 26 Dec 2024 12:29:55 +0800 Subject: [PATCH 026/194] =?UTF-8?q?=E5=88=87=E6=8D=A2=E8=A7=92=E8=89=B2?= =?UTF-8?q?=E8=B7=B3=E8=BD=AC=E9=A1=B5=E9=9D=A2=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/permission.js | 2 ++ src/store/getters.js | 1 + src/store/modules/user.js | 6 ++++++ .../trials-layout/components/trialsNavbar.vue | 19 +++++++++++++++---- 4 files changed, 24 insertions(+), 4 deletions(-) diff --git a/src/permission.js b/src/permission.js index 185ace75..a5bb41b2 100644 --- a/src/permission.js +++ b/src/permission.js @@ -1,4 +1,5 @@ import router from './router' +import { resetRouter } from '@/router' import store from './store' // import { Message } from 'element-ui' import NProgress from 'nprogress' @@ -80,6 +81,7 @@ router.beforeEach(async (to, from, next) => { await store.dispatch('user/getInfo') await store.dispatch('user/getUserInfo') const accessRoutes = await store.dispatch('permission/generateRoutes') + resetRouter() router.addRoutes(accessRoutes) next({ ...to, replace: true }) } catch (error) { diff --git a/src/store/getters.js b/src/store/getters.js index 6ab90e66..eb877042 100644 --- a/src/store/getters.js +++ b/src/store/getters.js @@ -3,6 +3,7 @@ const getters = { device: state => state.app.device, token: state => state.user.token, name: state => state.user.name, + userTypeShortName: state => state.user.userTypeShortName, permissions: state => state.user.permissions, tree: state => state.user.tree, userName: state => state.user.userName, diff --git a/src/store/modules/user.js b/src/store/modules/user.js index 5d725e21..b99d4dcb 100644 --- a/src/store/modules/user.js +++ b/src/store/modules/user.js @@ -8,6 +8,7 @@ const getDefaultState = () => { return { token: getToken(), name: '', + userTypeShortName: "", userName: '', userId: '', identityUserId: '', @@ -40,6 +41,9 @@ const mutations = { SET_NAME: (state, name) => { state.name = name }, + SET_USERTYPESHORTNAME: (state, userTypeShortName) => { + state.userTypeShortName = userTypeShortName + }, SET_USERNAME: (state, name) => { state.userName = name }, @@ -176,6 +180,7 @@ const actions = { const userString = decodeURIComponent(escape(window.atob(data.split('.')[1].replace(/-/g, '+').replace(/_/g, '/')))) const user = JSON.parse(userString) zzSessionStorage.setItem('userTypeShortName', user.userTypeShortName) + commit('SET_USERTYPESHORTNAME', user.userTypeShortName) commit('SET_NAME', user.fullName) setName(user.fullName) var permissions = await getUserPermissions() @@ -222,6 +227,7 @@ const actions = { commit('SET_ISTESTUSER', zzSessionStorage.getItem('isTestUser')) const user = JSON.parse(userString) commit('SET_NAME', zzSessionStorage.getItem('Name')) + commit('SET_USERTYPESHORTNAME', user.userTypeShortName) commit('SET_IDENTITYUSERID', user.identityUserId) commit('SET_USERID', user.userRoleId) commit('SET_USERNAME', zzSessionStorage.getItem('userName')) diff --git a/src/views/trials/trials-layout/components/trialsNavbar.vue b/src/views/trials/trials-layout/components/trialsNavbar.vue index e8404a87..44b1e9b1 100644 --- a/src/views/trials/trials-layout/components/trialsNavbar.vue +++ b/src/views/trials/trials-layout/components/trialsNavbar.vue @@ -116,6 +116,7 @@ import { mapGetters, mapMutations } from 'vuex' import TopLang from './topLang' import NoticeMarquee from './noticeMarquee' +import { resetRouter } from '@/router' import toggleRole from '@/components/toggleRole' export default { components: { TopLang, NoticeMarquee, toggleRole }, @@ -123,7 +124,7 @@ export default { return { activeIndex: '2', isReviewer: false, - userTypeShortName: zzSessionStorage.getItem('userTypeShortName'), + // userTypeShortName: zzSessionStorage.getItem('userTypeShortName'), notice: '', VUE_APP_OSS_CONFIG_REGION: process.env.VUE_APP_OSS_CONFIG_REGION, NODE_ENV: process.env.NODE_ENV, @@ -139,6 +140,7 @@ export default { 'device', 'TotalNeedSignSystemDocCount', 'language', + 'userTypeShortName', ]), roles() { return this.$store.state.user.roles @@ -244,6 +246,7 @@ export default { .dispatch('permission/generateRoutes') .then(async (res) => { if (res && res.length > 0) { + resetRouter() await this.$store.dispatch('global/getNoticeList') this.$router.addRoutes(res) this.toggleRoleLoading = false @@ -263,11 +266,19 @@ export default { 'role:rir', ]) ) { - this.$router.replace({ path: '/trials/trials-list' }) + history.replaceState(null, null, '/trials/trials-list') + history.go(0) + // this.$router.replace({ path: '/trials/trials-list' }) } else { - this.$router.replace({ path: '/trials' }) + history.replaceState(null, null, '/trials') + history.go(0) + // this.$router.replace({ path: '/trials/trials-workbench' }) } - window.location.reload() + this.toggleRoleVisible = false + this.toggleRoleLoading = false + this.$nextTick(() => { + window.location.reload() + }) } else { // 此账户暂未配置菜单权限,请联系管理员处理后再登录。 this.toggleRoleLoading = false From 940a860352df4e0c8d4e7f56db9a947a6c78850d Mon Sep 17 00:00:00 2001 From: wangxiaoshuang <825034831@qq.com> Date: Thu, 26 Dec 2024 13:29:02 +0800 Subject: [PATCH 027/194] =?UTF-8?q?=E9=80=80=E5=87=BA=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E6=96=B0=E5=A2=9E=E5=8F=82=E6=95=B0IdentityU?= =?UTF-8?q?serId?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/store/modules/user.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/store/modules/user.js b/src/store/modules/user.js index b99d4dcb..dae8780b 100644 --- a/src/store/modules/user.js +++ b/src/store/modules/user.js @@ -261,7 +261,8 @@ const actions = { try { removeToken() // must remove token first await loginOut({ - Userd: zzSessionStorage.getItem('userId') + UserRoleId: zzSessionStorage.getItem('userId'), + IdentityUserId: zzSessionStorage.getItem('identityUserId'), }) resetRouter() removeName() From 5dedcbc2efecbda52590153a3f8a8f8831d8cc2b Mon Sep 17 00:00:00 2001 From: wangxiaoshuang <825034831@qq.com> Date: Thu, 26 Dec 2024 13:53:52 +0800 Subject: [PATCH 028/194] =?UTF-8?q?=E5=BD=B1=E5=83=8F=E4=B8=8A=E4=BC=A0?= =?UTF-8?q?=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/trials/trials-panel/visit/crc-upload/index.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/views/trials/trials-panel/visit/crc-upload/index.vue b/src/views/trials/trials-panel/visit/crc-upload/index.vue index b04baaec..a0ed9df3 100644 --- a/src/views/trials/trials-panel/visit/crc-upload/index.vue +++ b/src/views/trials/trials-panel/visit/crc-upload/index.vue @@ -742,10 +742,10 @@
- + Date: Thu, 26 Dec 2024 14:07:21 +0800 Subject: [PATCH 029/194] 1 --- .../reading/dicoms/components/MRIPDFF/QuestionForm.vue | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/views/trials/trials-panel/reading/dicoms/components/MRIPDFF/QuestionForm.vue b/src/views/trials/trials-panel/reading/dicoms/components/MRIPDFF/QuestionForm.vue index 92df7c74..884a8368 100644 --- a/src/views/trials/trials-panel/reading/dicoms/components/MRIPDFF/QuestionForm.vue +++ b/src/views/trials/trials-panel/reading/dicoms/components/MRIPDFF/QuestionForm.vue @@ -47,7 +47,7 @@ - 定位 + 返回 i.tableQuestionId === qs.Id) let params = {} - if (i > -1 && this.markList[i].measureData) { + if (i > -1 && this.markList[i].measureData && this.markList[i].measureData.MeasureData) { let measureData = this.markList[i].measureData.MeasureData // 上传截图 DicomEvent.$emit('getScreenshots', { questionId: this.parentQsId, rowIndex: this.questionForm.RowIndex, visitTaskId: this.visitTaskId, lesionName: measureData.OrderMarkName, lesionType: null, isMarked: !!measureData }, async val => { From d645df58c2b41cb6d0e8b4daa5e9b21c52582929 Mon Sep 17 00:00:00 2001 From: wangxiaoshuang <825034831@qq.com> Date: Thu, 26 Dec 2024 14:13:20 +0800 Subject: [PATCH 030/194] =?UTF-8?q?=E7=AE=A1=E7=90=86=E7=AB=AF=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E4=BF=AE=E6=94=B9=E8=A7=92=E8=89=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/admin.js | 9 +++ src/views/system/user/components/UserInfo.vue | 59 +++++++++++++++++-- src/views/system/user/components/roleList.vue | 48 +++++++++------ 3 files changed, 95 insertions(+), 21 deletions(-) diff --git a/src/api/admin.js b/src/api/admin.js index 3f8c1073..71a658c3 100644 --- a/src/api/admin.js +++ b/src/api/admin.js @@ -325,3 +325,12 @@ export function useUserIDGetDoctorID(data) { data }) } + +// 管理端修改用户角色 +export function updateUserRoleInfo(data) { + return request({ + url: `/User/updateUserRoleInfo`, + method: 'put', + data + }) +} diff --git a/src/views/system/user/components/UserInfo.vue b/src/views/system/user/components/UserInfo.vue index 1f8de2ec..db0d0c04 100644 --- a/src/views/system/user/components/UserInfo.vue +++ b/src/views/system/user/components/UserInfo.vue @@ -85,11 +85,32 @@ style="width: 100%" :disabled="user.CanEditUserType === false || type === 1" @change="handleChange" + v-if="type === 0" > - \ No newline at end of file diff --git a/src/views/trials/trials-panel/setting/personnel-manage/components/staffExternalForm.vue b/src/views/trials/trials-panel/setting/personnel-manage/components/staffExternalForm.vue index b068b91c..cb616a7d 100644 --- a/src/views/trials/trials-panel/setting/personnel-manage/components/staffExternalForm.vue +++ b/src/views/trials/trials-panel/setting/personnel-manage/components/staffExternalForm.vue @@ -1,6 +1,6 @@ - + From 89be8d8a1255ec8e76bda6f451955eee0350cd69 Mon Sep 17 00:00:00 2001 From: wangxiaoshuang <825034831@qq.com> Date: Fri, 17 Jan 2025 10:00:43 +0800 Subject: [PATCH 150/194] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E5=9F=B9=E8=AE=AD?= =?UTF-8?q?=E8=AE=B0=E5=BD=95=E5=88=97=E8=A1=A8=E6=B7=BB=E5=8A=A0=E5=88=9B?= =?UTF-8?q?=E5=BB=BA=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../trials-workbench/components/NeedSignedTrialDoc.vue | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/views/trials/trials-workbench/components/NeedSignedTrialDoc.vue b/src/views/trials/trials-workbench/components/NeedSignedTrialDoc.vue index bd102f68..342e71ad 100644 --- a/src/views/trials/trials-workbench/components/NeedSignedTrialDoc.vue +++ b/src/views/trials/trials-workbench/components/NeedSignedTrialDoc.vue @@ -57,6 +57,12 @@ show-overflow-tooltip sortable="custom" /> + Date: Fri, 17 Jan 2025 10:23:22 +0800 Subject: [PATCH 151/194] 1 --- src/views/trials/trials-panel/site/index.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/views/trials/trials-panel/site/index.vue b/src/views/trials/trials-panel/site/index.vue index 0a4d43ef..f2791057 100644 --- a/src/views/trials/trials-panel/site/index.vue +++ b/src/views/trials/trials-panel/site/index.vue @@ -125,7 +125,7 @@ From 4cef62ccbabc38254c83fa55183e68772f920788 Mon Sep 17 00:00:00 2001 From: wangxiaoshuang <825034831@qq.com> Date: Fri, 17 Jan 2025 10:32:06 +0800 Subject: [PATCH 152/194] =?UTF-8?q?=E4=B8=AD=E5=BF=83=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E5=8F=82=E4=B8=8E=E4=BA=BA=E5=91=98=E5=8E=BB=E9=99=A4=E6=8E=92?= =?UTF-8?q?=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/trials/trials-panel/site/index.vue | 1 - 1 file changed, 1 deletion(-) diff --git a/src/views/trials/trials-panel/site/index.vue b/src/views/trials/trials-panel/site/index.vue index f2791057..f5dda6db 100644 --- a/src/views/trials/trials-panel/site/index.vue +++ b/src/views/trials/trials-panel/site/index.vue @@ -98,7 +98,6 @@ min-width="150" :label="$t('trials:site:table:staff')" show-overflow-tooltip - sortable="custom" > @@ -427,7 +434,23 @@ fullscreen custom-class="base-dialog-wrapper" > -
+
+
+

邮件内容模版(CN)

+
+
+
+

邮件内容模版(EN)

+ +
+
@@ -487,6 +510,7 @@ export default { attachmentVisible: false, previewVisible: false, previewHTML: null, + previewHTMLEN: null, } }, computed: { @@ -574,8 +598,9 @@ export default { closeDialog() { this.editVisible = false }, - preview(html) { + preview(html, htmlEN) { this.previewHTML = html + this.previewHTMLEN = htmlEN this.previewVisible = true }, // 导出 From 3a76a7c24d85001403ea3614697de6c9027da544 Mon Sep 17 00:00:00 2001 From: wangxiaoshuang <825034831@qq.com> Date: Fri, 17 Jan 2025 13:43:31 +0800 Subject: [PATCH 154/194] 1 --- src/views/dictionary/template/email/components/EmailList.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/views/dictionary/template/email/components/EmailList.vue b/src/views/dictionary/template/email/components/EmailList.vue index 88c20c5e..d881977d 100644 --- a/src/views/dictionary/template/email/components/EmailList.vue +++ b/src/views/dictionary/template/email/components/EmailList.vue @@ -448,7 +448,7 @@

邮件内容模版(EN)

- +
From 8ad77f1679bb2d3ce1a6726a9c4b1c690156c019 Mon Sep 17 00:00:00 2001 From: wangxiaoshuang <825034831@qq.com> Date: Mon, 20 Jan 2025 11:23:09 +0800 Subject: [PATCH 155/194] =?UTF-8?q?=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 --- src/views/email-recompose/index.vue | 12 +- src/views/error.vue | 7 +- .../enrollment/components/Approval.vue | 104 +++++-- .../enrollment/components/Confirmation.vue | 11 +- .../enrollment/components/Selection.vue | 11 +- .../enrollment/components/Submission.vue | 11 +- .../attachments/enrollment/index.vue | 276 +++++++++++------- 7 files changed, 276 insertions(+), 156 deletions(-) diff --git a/src/views/email-recompose/index.vue b/src/views/email-recompose/index.vue index 29f809a9..49e12126 100644 --- a/src/views/email-recompose/index.vue +++ b/src/views/email-recompose/index.vue @@ -180,9 +180,9 @@ export default { this.$i18n.locale = this.$route.query.lang this.setLanguage(this.$route.query.lang) this.$updateDictionary() - if (!this.password.NewUserName) { - this.$alert(this.$t('recompose:message:warning')) - } + // if (!this.password.NewUserName) { + // this.$alert(this.$t('recompose:message:warning')) + // } }, methods: { ...mapMutations({ setLanguage: 'lang/setLanguage' }), @@ -194,8 +194,10 @@ export default { } else { this.$router.push(`/login`) } - this.$i18n.locale = 'zh' - this.setLanguage('zh') + if (!this.$i18n.locale) { + this.$i18n.locale = 'zh' + this.setLanguage('zh') + } this.$updateDictionary() }, save() { diff --git a/src/views/error.vue b/src/views/error.vue index db3aa915..47389a41 100644 --- a/src/views/error.vue +++ b/src/views/error.vue @@ -2,7 +2,8 @@
- 404 + + 404 404 404 @@ -56,8 +57,10 @@ export default { .pic-404 { position: relative; float: left; - width: 400px; + width: 500px; + height: 300px; overflow: hidden; + margin-right: 10px; &__parent { width: 100%; } diff --git a/src/views/trials/trials-panel/attachments/enrollment/components/Approval.vue b/src/views/trials/trials-panel/attachments/enrollment/components/Approval.vue index 5dd4dce1..88000983 100644 --- a/src/views/trials/trials-panel/attachments/enrollment/components/Approval.vue +++ b/src/views/trials/trials-panel/attachments/enrollment/components/Approval.vue @@ -1,14 +1,14 @@ diff --git a/src/views/trials/trials-panel/attachments/enrollment/components/Confirmation.vue b/src/views/trials/trials-panel/attachments/enrollment/components/Confirmation.vue index e914972b..c5e3b65b 100644 --- a/src/views/trials/trials-panel/attachments/enrollment/components/Confirmation.vue +++ b/src/views/trials/trials-panel/attachments/enrollment/components/Confirmation.vue @@ -50,13 +50,14 @@ - + /> - + /> - + />
- - {{$fd('Indication', trialInfo.IndicationEnum)}}{{trialInfo.Indication ? '-' + trialInfo.Indication : '' }} -
- -
- - {{ + $t('trials:trials-list:form:indication:') + }} + {{ $fd('Indication', trialInfo.IndicationEnum) + }}{{ + trialInfo.Indication ? '-' + trialInfo.Indication : '' + }} - {{ trialInfo.DeclarationTypeEnumList.map(v => $fd('DeclarationType', v)).join(', ') }} - -
-
- - - {{ (trialInfo.CriterionList && trialInfo.CriterionList.length>0)? trialInfo.CriterionList.join(', '): '' }} - - -
-
+
+ + + {{ + trialInfo.DeclarationTypeEnumList.map((v) => + $fd('DeclarationType', v) + ).join(', ') + }} + +
+
+ + + {{ + trialInfo.CriterionList && trialInfo.CriterionList.length > 0 + ? trialInfo.CriterionList.join(', ') + : '' + }} + +
+
- - {{$fd('YesOrNoForInt', trialInfo.Expedited)}} + + {{ $fd('YesOrNoForInt', trialInfo.Expedited) }}
- + {{ trialInfo.TotalReviewers }}
- - {{ trialInfo.AttendedReviewerTypeEnumList.map(v => $fd('AttendedReviewerType', v)).join(', ') }} -
-
+ + {{ + trialInfo.AttendedReviewerTypeEnumList.map((v) => + $fd('AttendedReviewerType', v) + ).join(', ') + }}
+
@@ -60,7 +93,12 @@
- +
@@ -127,18 +169,30 @@ export default { trialInfo: null, TrialId: '', activeStatus: null, - TrialMaxState: 0 + TrialMaxState: 0, } }, mounted() { this.TrialId = this.$route.query.trialId this.initPage() }, + computed: { + isEN() { + return this.$i18n.locale !== 'zh' + }, + }, methods: { initPage() { - getTrialInfoAndMaxTrialState(this.TrialId).then(res => { + getTrialInfoAndMaxTrialState(this.TrialId).then((res) => { this.trialInfo = res.Result.TrialView - var activeStatus = res.Result.TrialMaxState < 1 ? 0 : res.Result.TrialMaxState < 5 ? 1 : res.Result.TrialMaxState < 8 ? 2 : 3 + var activeStatus = + res.Result.TrialMaxState < 1 + ? 0 + : res.Result.TrialMaxState < 5 + ? 1 + : res.Result.TrialMaxState < 8 + ? 2 + : 3 this.activeStatus = activeStatus this.TrialMaxState = activeStatus }) @@ -147,95 +201,93 @@ export default { this.activeStatus = step }, nextStep(stepName) { - this.activeStatus = this.activeStatus === 3 ? 3 : this.activeStatus + 1; - if(stepName==='confirmation'){ - this.activeStatus = 3; + this.activeStatus = this.activeStatus === 3 ? 3 : this.activeStatus + 1 + if (stepName === 'confirmation') { + this.activeStatus = 3 } this.TrialMaxState = this.activeStatus this.$nextTick( - function() { + function () { this.$refs[stepName].getList() }.bind(this) ) - } - - } + }, + }, } From 70735f2c479817666acacca8c00d0677a4a48831 Mon Sep 17 00:00:00 2001 From: wangxiaoshuang <825034831@qq.com> Date: Mon, 20 Jan 2025 13:19:51 +0800 Subject: [PATCH 156/194] =?UTF-8?q?=E9=87=8D=E7=BD=AE=E5=AF=86=E7=A0=81?= =?UTF-8?q?=E5=AE=8C=E6=88=90=E5=90=8E=E5=9B=BD=E9=99=85=E5=8C=96=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/recompose/index.vue | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/views/recompose/index.vue b/src/views/recompose/index.vue index 99544b63..7f43ecbb 100644 --- a/src/views/recompose/index.vue +++ b/src/views/recompose/index.vue @@ -144,8 +144,10 @@ export default { } else { this.$router.push(`/login`) } - this.$i18n.locale = 'zh' - this.setLanguage('zh') + if (!this.$i18n.locale) { + this.$i18n.locale = 'zh' + this.setLanguage('zh') + } this.$updateDictionary() }, save() { From 13191c914e4d18aa9b68a144450719aaf11eecfb Mon Sep 17 00:00:00 2001 From: caiyiling <1321909229@qq.com> Date: Mon, 20 Jan 2025 13:49:16 +0800 Subject: [PATCH 157/194] =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E9=98=85=E7=89=87?= =?UTF-8?q?=E6=A0=87=E5=87=86=E9=85=8D=E7=BD=AE=E9=A1=B5=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=E6=9B=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/dictionary/template/components/AddCriterion.vue | 2 +- src/views/dictionary/template/components/CriterionsTmp.vue | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/views/dictionary/template/components/AddCriterion.vue b/src/views/dictionary/template/components/AddCriterion.vue index 5d7f4d57..249cd998 100644 --- a/src/views/dictionary/template/components/AddCriterion.vue +++ b/src/views/dictionary/template/components/AddCriterion.vue @@ -50,7 +50,7 @@ - +
diff --git a/src/views/dictionary/template/components/CriterionsTmp.vue b/src/views/dictionary/template/components/CriterionsTmp.vue index 629d700b..e54ace34 100644 --- a/src/views/dictionary/template/components/CriterionsTmp.vue +++ b/src/views/dictionary/template/components/CriterionsTmp.vue @@ -141,8 +141,8 @@ sortable="custom" /> Date: Mon, 20 Jan 2025 14:05:36 +0800 Subject: [PATCH 158/194] =?UTF-8?q?=E7=99=BB=E5=BD=95=E9=A1=B5=E5=9B=BD?= =?UTF-8?q?=E9=99=85=E5=8C=96=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/login/index.vue | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/views/login/index.vue b/src/views/login/index.vue index 81003a5c..cbd8136e 100644 --- a/src/views/login/index.vue +++ b/src/views/login/index.vue @@ -343,9 +343,9 @@ export default { this.setLanguage('en') this.$updateDictionary() } else { - // this.$i18n.locale = 'zh' - // this.setLanguage('zh') - // this.$updateDictionary() + this.$i18n.locale = 'zh' + this.setLanguage('zh') + this.$updateDictionary() } } this.$refs.browserTip.open() From 3441793bcb1cf683d8a4d041d6f7b66f86702802 Mon Sep 17 00:00:00 2001 From: caiyiling <1321909229@qq.com> Date: Mon, 20 Jan 2025 14:29:17 +0800 Subject: [PATCH 159/194] =?UTF-8?q?=E8=BF=94=E5=9B=9E=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E6=A0=B7=E5=BC=8F=E6=9B=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/TrialsTab/index.vue | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/components/TrialsTab/index.vue b/src/components/TrialsTab/index.vue index f49aafe6..981871c4 100644 --- a/src/components/TrialsTab/index.vue +++ b/src/components/TrialsTab/index.vue @@ -22,11 +22,14 @@ -
+ - {{ $t('trials:trials:title:back') }} -
+
+ From 73e0a13e91909313b73083817e6d7f1af2ff9cd8 Mon Sep 17 00:00:00 2001 From: wangxiaoshuang <825034831@qq.com> Date: Mon, 20 Jan 2025 15:47:31 +0800 Subject: [PATCH 160/194] =?UTF-8?q?=E7=AE=80=E5=8E=86=E8=8B=B1=E6=96=87?= =?UTF-8?q?=E5=A7=93=E5=90=8D=E5=B1=95=E7=A4=BA=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../curriculumVitae/components/info/info.vue | 12 +++--------- src/views/reviewers/curriculumVitae/preview.vue | 5 +++-- 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/src/views/reviewers/curriculumVitae/components/info/info.vue b/src/views/reviewers/curriculumVitae/components/info/info.vue index 94f94864..68a6ef80 100644 --- a/src/views/reviewers/curriculumVitae/components/info/info.vue +++ b/src/views/reviewers/curriculumVitae/components/info/info.vue @@ -6,7 +6,7 @@