Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 5133f9e3d7 | |||
| bb6bf409b7 | |||
| 64a0e68448 | |||
| fa6c552149 | |||
| 074c302077 | |||
| 8800ddb0a0 |
@@ -1,6 +1,6 @@
|
||||
# just a flag
|
||||
ENV = 'production'
|
||||
NODE_ENV = 'production'
|
||||
ENV = 'usa'
|
||||
NODE_ENV = 'usa'
|
||||
# base public path
|
||||
VUE_APP_BASE_PATH = 'https://ei-code-prod.s3.amazonaws.com/2024-04-30/'
|
||||
|
||||
|
||||
+153
-101
@@ -1,169 +1,213 @@
|
||||
<template>
|
||||
<div id="app" style="position: relative">
|
||||
<router-view />
|
||||
<div v-show="show" v-adaptive @click="openI18n" style="position: fixed;bottom: 50px;left: 50px;z-index: 100000;width: 50px;height: 50px;background: #409eff88;line-height: 50px;text-align: center;color:#fff;border-radius: 50%;cursor: pointer">
|
||||
<div
|
||||
v-show="show"
|
||||
v-adaptive
|
||||
@click="openI18n"
|
||||
style="
|
||||
position: fixed;
|
||||
bottom: 50px;
|
||||
left: 50px;
|
||||
z-index: 100000;
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
background: #409eff88;
|
||||
line-height: 50px;
|
||||
text-align: center;
|
||||
color: #fff;
|
||||
border-radius: 50%;
|
||||
cursor: pointer;
|
||||
"
|
||||
>
|
||||
i18n
|
||||
</div>
|
||||
<el-drawer
|
||||
title="国际化"
|
||||
:visible.sync="drawer"
|
||||
direction="rtl"
|
||||
size="80%">
|
||||
<el-drawer title="国际化" :visible.sync="drawer" direction="rtl" size="80%">
|
||||
<div style="width: 320px">
|
||||
<el-form
|
||||
label-width="100px"
|
||||
@submit.native.prevent
|
||||
size="small"
|
||||
>
|
||||
<el-form label-width="100px" @submit.native.prevent size="small">
|
||||
<el-form-item label="关键字">
|
||||
<el-input v-model="key" @input="keyChange"/>
|
||||
<el-input v-model="key" @input="keyChange" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
<el-table
|
||||
:data="tableData"
|
||||
v-adaptive="{bottomOffset:50}"
|
||||
v-adaptive="{ bottomOffset: 50 }"
|
||||
height="100"
|
||||
style="width: 100%">
|
||||
<el-table-column
|
||||
prop="Code"
|
||||
label="标签"
|
||||
width="300">
|
||||
style="width: 100%"
|
||||
>
|
||||
<el-table-column prop="Code" label="标签" width="300">
|
||||
</el-table-column>
|
||||
<!-- <el-table-column-->
|
||||
<!-- prop="Description"-->
|
||||
<!-- label="路由"-->
|
||||
<!-- show-overflow-tooltip-->
|
||||
<!-- width="180">-->
|
||||
<!-- <template slot-scope="scope">-->
|
||||
<!-- {{scope.row.Description}}-->
|
||||
<!-- </template>-->
|
||||
<!-- </el-table-column>-->
|
||||
<el-table-column
|
||||
prop="Value"
|
||||
label="英文">
|
||||
<!-- <el-table-column-->
|
||||
<!-- prop="Description"-->
|
||||
<!-- label="路由"-->
|
||||
<!-- show-overflow-tooltip-->
|
||||
<!-- width="180">-->
|
||||
<!-- <template slot-scope="scope">-->
|
||||
<!-- {{scope.row.Description}}-->
|
||||
<!-- </template>-->
|
||||
<!-- </el-table-column>-->
|
||||
<el-table-column prop="Value" label="英文">
|
||||
<template slot-scope="scope">
|
||||
<el-input v-model="scope.row.Value" @input="(e) => {$set(scope.row, 'Value', e)}" size="mini"></el-input>
|
||||
<el-input
|
||||
v-model="scope.row.Value"
|
||||
@input="
|
||||
(e) => {
|
||||
$set(scope.row, 'Value', e);
|
||||
}
|
||||
"
|
||||
size="mini"
|
||||
></el-input>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="ValueCN"
|
||||
label="中文">
|
||||
<el-table-column prop="ValueCN" label="中文">
|
||||
<template slot-scope="scope">
|
||||
<el-input v-model="scope.row.ValueCN" @input="(e) => {$set(scope.row, 'ValueCN', e)}" size="mini"></el-input>
|
||||
<el-input
|
||||
v-model="scope.row.ValueCN"
|
||||
@input="
|
||||
(e) => {
|
||||
$set(scope.row, 'ValueCN', e);
|
||||
}
|
||||
"
|
||||
size="mini"
|
||||
></el-input>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<div style="text-align: right;padding-top: 10px;padding-right: 10px;">
|
||||
<el-button size="mini" @click="drawer = false">取消
|
||||
</el-button>
|
||||
<el-button size="mini" type="primary" @click="handleSave">保存</el-button>
|
||||
<div style="text-align: right; padding-top: 10px; padding-right: 10px">
|
||||
<el-button size="mini" @click="drawer = false">取消 </el-button>
|
||||
<el-button size="mini" type="primary" @click="handleSave"
|
||||
>保存</el-button
|
||||
>
|
||||
</div>
|
||||
</el-drawer>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { batchAddOrUpdateFrontInternationalization, getFrontInternationalizationList } from '@/api/dictionary/dictionary'
|
||||
import {
|
||||
batchAddOrUpdateFrontInternationalization,
|
||||
getFrontInternationalizationList,
|
||||
} from "@/api/dictionary/dictionary";
|
||||
import Vue from "vue";
|
||||
import i18n from "./lang";
|
||||
export default {
|
||||
name: 'App',
|
||||
data () {
|
||||
name: "App",
|
||||
data() {
|
||||
return {
|
||||
drawer: false,
|
||||
tableData: [],
|
||||
show: false,
|
||||
key: null,
|
||||
arr: []
|
||||
}
|
||||
arr: [],
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
this.show = process.env.VUE_APP_OSS_PATH === '/test/dist'
|
||||
this.show = process.env.VUE_APP_OSS_PATH === "/test/dist";
|
||||
},
|
||||
methods: {
|
||||
changeValue(target, attr, e) {
|
||||
this.$set(target, attr, e)
|
||||
this.$set(target, attr, e);
|
||||
},
|
||||
keyChange(v) {
|
||||
if (this.key) {
|
||||
this.tableData = Object.assign([], this.arr.filter(v => ~v.Code.indexOf(this.key) || ~v.Value.indexOf(this.key) || ~v.ValueCN.indexOf(this.key)))
|
||||
this.tableData = Object.assign(
|
||||
[],
|
||||
this.arr.filter(
|
||||
(v) =>
|
||||
~v.Code.indexOf(this.key) ||
|
||||
~v.Value.indexOf(this.key) ||
|
||||
~v.ValueCN.indexOf(this.key)
|
||||
)
|
||||
);
|
||||
} else {
|
||||
this.tableData = Object.assign([], this.arr)
|
||||
this.tableData = Object.assign([], this.arr);
|
||||
}
|
||||
},
|
||||
handleSave() {
|
||||
this.$confirm('确定修改当前页面国际化内容?').then(() => {
|
||||
batchAddOrUpdateFrontInternationalization(this.tableData).then(async res => {
|
||||
var zhMessages = {}, enMessages = {}
|
||||
var Internationalization = await getFrontInternationalizationList()
|
||||
Vue.prototype.$tl = Internationalization.Result
|
||||
this.tableData.forEach(v => {
|
||||
// zhMessages[v.Description + '_' + v.Code] = v.ValueCN
|
||||
// enMessages[v.Description + '_' + v.Code] = v.Value
|
||||
zhMessages[v.Code] = v.ValueCN
|
||||
enMessages[v.Code] = v.Value
|
||||
})
|
||||
i18n.mergeLocaleMessage('zh', zhMessages)
|
||||
i18n.mergeLocaleMessage('en', enMessages)
|
||||
this.drawer = false
|
||||
this.$message.success('国际化修改成功')
|
||||
})
|
||||
})
|
||||
this.$confirm("确定修改当前页面国际化内容?").then(() => {
|
||||
batchAddOrUpdateFrontInternationalization(this.tableData).then(
|
||||
async (res) => {
|
||||
var zhMessages = {},
|
||||
enMessages = {};
|
||||
var Internationalization = await getFrontInternationalizationList();
|
||||
Vue.prototype.$tl = Internationalization.Result;
|
||||
this.tableData.forEach((v) => {
|
||||
// zhMessages[v.Description + '_' + v.Code] = v.ValueCN
|
||||
// enMessages[v.Description + '_' + v.Code] = v.Value
|
||||
zhMessages[v.Code] = v.ValueCN;
|
||||
enMessages[v.Code] = v.Value;
|
||||
});
|
||||
i18n.mergeLocaleMessage("zh", zhMessages);
|
||||
i18n.mergeLocaleMessage("en", enMessages);
|
||||
this.drawer = false;
|
||||
this.$message.success("国际化修改成功");
|
||||
}
|
||||
);
|
||||
});
|
||||
},
|
||||
openI18n() {
|
||||
this.tableData = []
|
||||
this.key = null
|
||||
this.drawer = true
|
||||
let arr = []
|
||||
let tableData = this.$tl.map(v => {
|
||||
let a = {...v}
|
||||
this.tableData = [];
|
||||
this.key = null;
|
||||
this.drawer = true;
|
||||
let arr = [];
|
||||
let tableData = this.$tl.map((v) => {
|
||||
let a = { ...v };
|
||||
// if (!a.Description) {
|
||||
// a.Description = this.$route.path
|
||||
// }
|
||||
return a
|
||||
})
|
||||
tableData = tableData.filter(v => {
|
||||
return a;
|
||||
});
|
||||
tableData = tableData.filter((v) => {
|
||||
// return ~this.$path.indexOf(v.Description + '_' + v.Code)
|
||||
return ~this.$path.indexOf(v.Code)
|
||||
})
|
||||
this.$path.forEach(v => {
|
||||
let o = tableData.find(a => {
|
||||
return a.Code === v
|
||||
})
|
||||
return ~this.$path.indexOf(v.Code);
|
||||
});
|
||||
this.$path.forEach((v) => {
|
||||
let o = tableData.find((a) => {
|
||||
return a.Code === v;
|
||||
});
|
||||
if (o) {
|
||||
arr.push(o)
|
||||
arr.push(o);
|
||||
} else {
|
||||
arr.push({
|
||||
Code: v,
|
||||
Description: null,
|
||||
Value: null,
|
||||
ValueCN: null
|
||||
})
|
||||
ValueCN: null,
|
||||
});
|
||||
}
|
||||
})
|
||||
this.arr = arr
|
||||
});
|
||||
this.arr = arr;
|
||||
if (this.key) {
|
||||
this.tableData = Object.assign([], this.arr.filter(v => ~v.Code.indexOf(this.key) || ~v.Value.indexOf(this.key) || ~v.ValueCN.indexOf(this.key)))
|
||||
this.tableData = Object.assign(
|
||||
[],
|
||||
this.arr.filter(
|
||||
(v) =>
|
||||
~v.Code.indexOf(this.key) ||
|
||||
~v.Value.indexOf(this.key) ||
|
||||
~v.ValueCN.indexOf(this.key)
|
||||
)
|
||||
);
|
||||
} else {
|
||||
this.tableData = Object.assign([], this.arr)
|
||||
this.tableData = Object.assign([], this.arr);
|
||||
}
|
||||
// console.log(JSON.stringify(this.$path))
|
||||
// console.log(JSON.stringify(this.tableData))
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
.el-tooltip__popper{
|
||||
$light_gray: #606266;
|
||||
.el-tooltip__popper {
|
||||
max-width: 400px;
|
||||
}
|
||||
.my_multiple{
|
||||
.el-input--medium .el-input__inner{
|
||||
height: 36px!important;
|
||||
.my_multiple {
|
||||
.el-input--medium .el-input__inner {
|
||||
height: 36px !important;
|
||||
}
|
||||
.el-select__tags{
|
||||
.el-select__tags {
|
||||
flex-wrap: nowrap;
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
@@ -180,21 +224,29 @@ input[type="number"] {
|
||||
-moz-appearance: textfield !important;
|
||||
}
|
||||
|
||||
.viewer-fixed.viewer-container{
|
||||
.viewer-fixed.viewer-container {
|
||||
z-index: 10000;
|
||||
}
|
||||
textarea{
|
||||
textarea {
|
||||
white-space: break-spaces;
|
||||
word-break: normal;
|
||||
}
|
||||
|
||||
*{
|
||||
word-break: normal!important;
|
||||
* {
|
||||
word-break: normal !important;
|
||||
}
|
||||
.box-body .el-button.is-circle:not(.is-disabled) i:before{
|
||||
.box-body .el-button.is-circle:not(.is-disabled) i:before {
|
||||
color: #428bca;
|
||||
}
|
||||
.box-body .el-button.is-circle i.el-icon-question:before{
|
||||
.box-body .el-button.is-circle i.el-icon-question:before {
|
||||
color: #fff;
|
||||
}
|
||||
.system-title {
|
||||
font-size: 35px;
|
||||
color: $light_gray;
|
||||
text-align: center;
|
||||
font-weight: bold;
|
||||
font-family: 'Times New Roman';
|
||||
text-shadow:1px 0.5px 1.5px #666;
|
||||
}
|
||||
</style>
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 55 KiB |
@@ -1,6 +1,6 @@
|
||||
import dicomParser from "dicom-parser";
|
||||
import dcmjs from './dcmjs'
|
||||
import {encoder} from "./encoder";
|
||||
import { encoder } from "./encoder";
|
||||
|
||||
export const anonymization = function (file, config) {
|
||||
return new Promise(async (resolve, reject) => {
|
||||
@@ -32,7 +32,7 @@ export const anonymization = function (file, config) {
|
||||
if (AnonymizeNotFixed.Group + AnonymizeNotFixed.Element === '00100020') {
|
||||
console.log(`${DicomStoreInfo.TrialCode}_${DicomStoreInfo.SubjectCode}`)
|
||||
if (dataset.dict[AnonymizeNotFixed.Group + AnonymizeNotFixed.Element]) {
|
||||
dataset.dict[AnonymizeNotFixed.Group + AnonymizeNotFixed.Element].Value[0] = `${DicomStoreInfo.TrialCode}-${DicomStoreInfo.SubjectCode}`
|
||||
dataset.dict[AnonymizeNotFixed.Group + AnonymizeNotFixed.Element].Value[0] = `${DicomStoreInfo.TrialCode}-${DicomStoreInfo.SubjectCode}`
|
||||
} else {
|
||||
dataset.dict[AnonymizeNotFixed.Group + AnonymizeNotFixed.Element] = {
|
||||
vr: AnonymizeNotFixed.ValueRepresentation,
|
||||
@@ -55,10 +55,15 @@ export const anonymization = function (file, config) {
|
||||
}
|
||||
}
|
||||
// console.log(dataset)
|
||||
let newDicomFile = dataset.write()
|
||||
const bufferArray = new Uint8Array(newDicomFile)
|
||||
const blob = new Blob([bufferArray], { type: 'application/octet-stream' })
|
||||
resolve({blob, pixelDataElement})
|
||||
try {
|
||||
let newDicomFile = dataset.write()
|
||||
const bufferArray = new Uint8Array(newDicomFile)
|
||||
const blob = new Blob([bufferArray], { type: 'application/octet-stream' })
|
||||
resolve({ blob, pixelDataElement })
|
||||
} catch (err) {
|
||||
console.log(err)
|
||||
resolve(false);
|
||||
}
|
||||
};
|
||||
reader.readAsArrayBuffer(file);
|
||||
} catch (e) {
|
||||
|
||||
@@ -8359,6 +8359,7 @@
|
||||
allowInvalidVRLength: false
|
||||
};
|
||||
var allowInvalidVRLength = writeOptions.allowInvalidVRLength;
|
||||
allowInvalidVRLength = true
|
||||
var valid = true,
|
||||
valarr = Array.isArray(value) ? value : [value],
|
||||
total = 0;
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
<div class="login-l">
|
||||
<div class="login-logo">
|
||||
<img v-if="language === 'zh'" src="@/assets/zzlogo2.png" alt="" />
|
||||
<img v-else-if="NODE_ENV === 'usa'" src="@/assets/zzlogo-usa.png" alt="" />
|
||||
<img v-else src="@/assets/zzlogo4.png" alt="" />
|
||||
</div>
|
||||
<div class="login-image">
|
||||
@@ -16,7 +17,8 @@
|
||||
<div class="login-r">
|
||||
<div class="title-container">
|
||||
<!-- IRC Management System -->
|
||||
<div class="title">{{ $t("login:title:system") }}</div>
|
||||
<div class="system-title" v-if="NODE_ENV==='usa'">{{ $t("login:title:system_title") }}</div>
|
||||
<div class="title" v-else>{{ $t("login:title:system") }}</div>
|
||||
</div>
|
||||
<el-form
|
||||
ref="loginForm"
|
||||
@@ -152,8 +154,9 @@
|
||||
"
|
||||
>
|
||||
<h1 style="text-align: center; margin-bottom: 20px">关于</h1>
|
||||
<p style="margin-bottom: 20px">IRC Imaging System</p>
|
||||
<p style="margin-bottom: 20px">V1.5.0.001</p>
|
||||
<p style="margin-bottom: 20px" v-if="NODE_ENV==='usa'">{{ $t("login:title:system_title") }}</p>
|
||||
<p style="margin-bottom: 20px" v-else>{{ $t("login:title:system") }}</p>
|
||||
<p style="margin-bottom: 20px">V1.5.1.001</p>
|
||||
<p style="margin-bottom: 20px" v-if="language === 'zh'">
|
||||
Copyright © {{ new Date().getFullYear() }} 上海展影医疗科技有限公司
|
||||
版权所有
|
||||
@@ -186,6 +189,7 @@ export default {
|
||||
components: { TopLang, Vcode },
|
||||
data() {
|
||||
return {
|
||||
NODE_ENV: process.env.NODE_ENV,
|
||||
VUE_APP_OSS_CONFIG_REGION: process.env.VUE_APP_OSS_CONFIG_REGION,
|
||||
aboutVisible: false,
|
||||
loginForm: {
|
||||
|
||||
@@ -2,8 +2,13 @@
|
||||
<div class="trials-navbar" style="position: relative">
|
||||
<div class="leftMenu">
|
||||
<img v-if="language === 'zh'" src="@/assets/zzlogo2.png" alt="">
|
||||
<img v-else-if="NODE_ENV === 'usa'" src="@/assets/zzlogo-usa.png" alt="" />
|
||||
<img v-else src="@/assets/zzlogo4.png" alt="">
|
||||
<span style="white-space:nowrap;">
|
||||
<span style="white-space:nowrap;" class="system-title" v-if="NODE_ENV==='usa'">
|
||||
<!-- 中心影像系统(EICS) -->
|
||||
{{ $t('trials:trials:title:eics_title') }}
|
||||
</span>
|
||||
<span style="white-space:nowrap;" v-else>
|
||||
<!-- 中心影像系统(EICS) -->
|
||||
{{ $t('trials:trials:title:eics') }}
|
||||
</span>
|
||||
@@ -74,7 +79,8 @@ export default {
|
||||
isReviewer: false,
|
||||
userTypeShortName: zzSessionStorage.getItem('userTypeShortName'),
|
||||
notice: '',
|
||||
VUE_APP_OSS_CONFIG_REGION: process.env.VUE_APP_OSS_CONFIG_REGION
|
||||
VUE_APP_OSS_CONFIG_REGION: process.env.VUE_APP_OSS_CONFIG_REGION,
|
||||
NODE_ENV: process.env.NODE_ENV,
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
|
||||
@@ -192,7 +192,11 @@ export default {
|
||||
this.getList()
|
||||
// 保存成功
|
||||
this.$message.success(this.$t('common:message:savedSuccessfully'))
|
||||
this.$emit('nextStep', 'approval')
|
||||
if(res.Result.IsHaveSPMOrCPM){
|
||||
this.$emit('nextStep', 'approval')
|
||||
}else{
|
||||
this.$emit('nextStep', 'confirmation')
|
||||
}
|
||||
}
|
||||
}).catch(() => {
|
||||
this.loading = false
|
||||
|
||||
@@ -147,7 +147,10 @@ export default {
|
||||
this.activeStatus = step
|
||||
},
|
||||
nextStep(stepName) {
|
||||
this.activeStatus = this.activeStatus === 3 ? 3 : this.activeStatus + 1
|
||||
this.activeStatus = this.activeStatus === 3 ? 3 : this.activeStatus + 1;
|
||||
if(stepName==='confirmation'){
|
||||
this.activeStatus = 3;
|
||||
}
|
||||
this.TrialMaxState = this.activeStatus
|
||||
this.$nextTick(
|
||||
function() {
|
||||
|
||||
Reference in New Issue
Block a user