cornerstone3D库升级及其他文件调整
continuous-integration/drone/push Build is failing
Details
continuous-integration/drone/push Build is failing
Details
parent
0f50ff6ded
commit
4da35daa3c
296
.eslintrc.js
296
.eslintrc.js
|
@ -1,48 +1,58 @@
|
|||
module.exports = {
|
||||
root: true,
|
||||
parserOptions: {
|
||||
parser: 'babel-eslint',
|
||||
parser: '@babel/eslint-parser',
|
||||
sourceType: 'module'
|
||||
},
|
||||
globals: {
|
||||
"zzSessionStorage": true
|
||||
'zzSessionStorage': true
|
||||
},
|
||||
env: {
|
||||
browser: true,
|
||||
node: true,
|
||||
es6: true
|
||||
},
|
||||
extends: ["plugin:vue/recommended"],
|
||||
extends: ['plugin:vue/recommended'],
|
||||
|
||||
// add your custom rules here
|
||||
//it is base on https://github.com/vuejs/eslint-config-vue
|
||||
// it is base on https://github.com/vuejs/eslint-config-vue
|
||||
rules: {
|
||||
"vue/max-attributes-per-line": [
|
||||
2,
|
||||
// "rule-name": "off"
|
||||
// "vue/max-attributes-per-line": [
|
||||
// 2,
|
||||
// {
|
||||
// singleline: 10,
|
||||
// multiline: {
|
||||
// max: 1,
|
||||
// allowFirstLine: false
|
||||
// }
|
||||
// }
|
||||
// ],
|
||||
'vue/max-attributes-per-line': [
|
||||
'error',
|
||||
{
|
||||
singleline: 10,
|
||||
multiline: {
|
||||
max: 1,
|
||||
allowFirstLine: false
|
||||
max: 1
|
||||
}
|
||||
}
|
||||
],
|
||||
"vue/singleline-html-element-content-newline": "off",
|
||||
"vue/multiline-html-element-content-newline": "off",
|
||||
"vue/name-property-casing": ["error", "PascalCase"],
|
||||
"vue/no-v-html": "off",
|
||||
"accessor-pairs": 2,
|
||||
"arrow-spacing": [
|
||||
'vue/singleline-html-element-content-newline': 'off',
|
||||
'vue/multiline-html-element-content-newline': 'off',
|
||||
'vue/name-property-casing': ['error', 'PascalCase'],
|
||||
'vue/no-v-html': 'off',
|
||||
'accessor-pairs': 2,
|
||||
'arrow-spacing': [
|
||||
2,
|
||||
{
|
||||
before: true,
|
||||
after: true
|
||||
}
|
||||
],
|
||||
"block-spacing": [2, "always"],
|
||||
"brace-style": [
|
||||
'block-spacing': [2, 'always'],
|
||||
'brace-style': [
|
||||
2,
|
||||
"1tbs",
|
||||
'1tbs',
|
||||
{
|
||||
allowSingleLine: true
|
||||
}
|
||||
|
@ -50,31 +60,31 @@ module.exports = {
|
|||
camelcase: [
|
||||
0,
|
||||
{
|
||||
properties: "always"
|
||||
properties: 'always'
|
||||
}
|
||||
],
|
||||
"comma-dangle": [2, "never"],
|
||||
"comma-spacing": [
|
||||
'comma-dangle': [2, 'never'],
|
||||
'comma-spacing': [
|
||||
2,
|
||||
{
|
||||
before: false,
|
||||
after: true
|
||||
}
|
||||
],
|
||||
"comma-style": [2, "last"],
|
||||
"constructor-super": 2,
|
||||
curly: [2, "multi-line"],
|
||||
"dot-location": [2, "property"],
|
||||
"eol-last": 2,
|
||||
eqeqeq: ["error", "always", { null: "ignore" }],
|
||||
"generator-star-spacing": [
|
||||
'comma-style': [2, 'last'],
|
||||
'constructor-super': 2,
|
||||
curly: [2, 'multi-line'],
|
||||
'dot-location': [2, 'property'],
|
||||
'eol-last': 2,
|
||||
eqeqeq: ['error', 'always', { null: 'ignore' }],
|
||||
'generator-star-spacing': [
|
||||
2,
|
||||
{
|
||||
before: true,
|
||||
after: true
|
||||
}
|
||||
],
|
||||
"handle-callback-err": [2, "^(err|error)$"],
|
||||
'handle-callback-err': [2, '^(err|error)$'],
|
||||
indent: [
|
||||
2,
|
||||
2,
|
||||
|
@ -82,197 +92,197 @@ module.exports = {
|
|||
SwitchCase: 1
|
||||
}
|
||||
],
|
||||
"jsx-quotes": [2, "prefer-single"],
|
||||
"key-spacing": [
|
||||
'jsx-quotes': [2, 'prefer-single'],
|
||||
'key-spacing': [
|
||||
2,
|
||||
{
|
||||
beforeColon: false,
|
||||
afterColon: true
|
||||
}
|
||||
],
|
||||
"keyword-spacing": [
|
||||
'keyword-spacing': [
|
||||
2,
|
||||
{
|
||||
before: true,
|
||||
after: true
|
||||
}
|
||||
],
|
||||
"new-cap": [
|
||||
'new-cap': [
|
||||
2,
|
||||
{
|
||||
newIsCap: true,
|
||||
capIsNew: false
|
||||
}
|
||||
],
|
||||
"new-parens": 2,
|
||||
"no-array-constructor": 2,
|
||||
"no-caller": 2,
|
||||
"no-console": "off",
|
||||
"no-class-assign": 2,
|
||||
"no-cond-assign": 2,
|
||||
"no-const-assign": 2,
|
||||
"no-control-regex": 0,
|
||||
"no-delete-var": 2,
|
||||
"no-dupe-args": 2,
|
||||
"no-dupe-class-members": 2,
|
||||
"no-dupe-keys": 2,
|
||||
"no-duplicate-case": 2,
|
||||
"no-empty-character-class": 2,
|
||||
"no-empty-pattern": 2,
|
||||
"no-eval": 2,
|
||||
"no-ex-assign": 2,
|
||||
"no-extend-native": 2,
|
||||
"no-extra-bind": 2,
|
||||
"no-extra-boolean-cast": 2,
|
||||
"no-extra-parens": [2, "functions"],
|
||||
"no-fallthrough": 2,
|
||||
"no-floating-decimal": 2,
|
||||
"no-func-assign": 2,
|
||||
"no-implied-eval": 2,
|
||||
"no-inner-declarations": [2, "functions"],
|
||||
"no-invalid-regexp": 2,
|
||||
"no-irregular-whitespace": 2,
|
||||
"no-iterator": 2,
|
||||
"no-label-var": 2,
|
||||
"no-labels": [
|
||||
'new-parens': 2,
|
||||
'no-array-constructor': 2,
|
||||
'no-caller': 2,
|
||||
'no-console': 'off',
|
||||
'no-class-assign': 2,
|
||||
'no-cond-assign': 2,
|
||||
'no-const-assign': 2,
|
||||
'no-control-regex': 0,
|
||||
'no-delete-var': 2,
|
||||
'no-dupe-args': 2,
|
||||
'no-dupe-class-members': 2,
|
||||
'no-dupe-keys': 2,
|
||||
'no-duplicate-case': 2,
|
||||
'no-empty-character-class': 2,
|
||||
'no-empty-pattern': 2,
|
||||
'no-eval': 2,
|
||||
'no-ex-assign': 2,
|
||||
'no-extend-native': 2,
|
||||
'no-extra-bind': 2,
|
||||
'no-extra-boolean-cast': 2,
|
||||
'no-extra-parens': [2, 'functions'],
|
||||
'no-fallthrough': 2,
|
||||
'no-floating-decimal': 2,
|
||||
'no-func-assign': 2,
|
||||
'no-implied-eval': 2,
|
||||
'no-inner-declarations': [2, 'functions'],
|
||||
'no-invalid-regexp': 2,
|
||||
'no-irregular-whitespace': 2,
|
||||
'no-iterator': 2,
|
||||
'no-label-var': 2,
|
||||
'no-labels': [
|
||||
2,
|
||||
{
|
||||
allowLoop: false,
|
||||
allowSwitch: false
|
||||
}
|
||||
],
|
||||
"no-lone-blocks": 2,
|
||||
"no-mixed-spaces-and-tabs": 2,
|
||||
"no-multi-spaces": 2,
|
||||
"no-multi-str": 2,
|
||||
"no-multiple-empty-lines": [
|
||||
'no-lone-blocks': 2,
|
||||
'no-mixed-spaces-and-tabs': 2,
|
||||
'no-multi-spaces': 2,
|
||||
'no-multi-str': 2,
|
||||
'no-multiple-empty-lines': [
|
||||
2,
|
||||
{
|
||||
max: 1
|
||||
}
|
||||
],
|
||||
"no-native-reassign": 2,
|
||||
"no-negated-in-lhs": 2,
|
||||
"no-new-object": 2,
|
||||
"no-new-require": 2,
|
||||
"no-new-symbol": 2,
|
||||
"no-new-wrappers": 2,
|
||||
"no-obj-calls": 2,
|
||||
"no-octal": 2,
|
||||
"no-octal-escape": 2,
|
||||
"no-path-concat": 2,
|
||||
"no-proto": 2,
|
||||
"no-redeclare": 2,
|
||||
"no-regex-spaces": 2,
|
||||
"no-return-assign": [2, "except-parens"],
|
||||
"no-self-assign": 2,
|
||||
"no-self-compare": 2,
|
||||
"no-sequences": 2,
|
||||
"no-shadow-restricted-names": 2,
|
||||
"no-spaced-func": 2,
|
||||
"no-sparse-arrays": 2,
|
||||
"no-this-before-super": 2,
|
||||
"no-throw-literal": 2,
|
||||
"no-trailing-spaces": 2,
|
||||
"no-undef": 2,
|
||||
"no-undef-init": 2,
|
||||
"no-unexpected-multiline": 2,
|
||||
"no-unmodified-loop-condition": 2,
|
||||
"no-unneeded-ternary": [
|
||||
'no-native-reassign': 2,
|
||||
'no-negated-in-lhs': 2,
|
||||
'no-new-object': 2,
|
||||
'no-new-require': 2,
|
||||
'no-new-symbol': 2,
|
||||
'no-new-wrappers': 2,
|
||||
'no-obj-calls': 2,
|
||||
'no-octal': 2,
|
||||
'no-octal-escape': 2,
|
||||
'no-path-concat': 2,
|
||||
'no-proto': 2,
|
||||
'no-redeclare': 2,
|
||||
'no-regex-spaces': 2,
|
||||
'no-return-assign': [2, 'except-parens'],
|
||||
'no-self-assign': 2,
|
||||
'no-self-compare': 2,
|
||||
'no-sequences': 2,
|
||||
'no-shadow-restricted-names': 2,
|
||||
'no-spaced-func': 2,
|
||||
'no-sparse-arrays': 2,
|
||||
'no-this-before-super': 2,
|
||||
'no-throw-literal': 2,
|
||||
'no-trailing-spaces': 2,
|
||||
'no-undef': 2,
|
||||
'no-undef-init': 2,
|
||||
'no-unexpected-multiline': 2,
|
||||
'no-unmodified-loop-condition': 2,
|
||||
'no-unneeded-ternary': [
|
||||
2,
|
||||
{
|
||||
defaultAssignment: false
|
||||
}
|
||||
],
|
||||
"no-unreachable": 2,
|
||||
"no-unsafe-finally": 2,
|
||||
"no-unused-vars": [
|
||||
'no-unreachable': 2,
|
||||
'no-unsafe-finally': 2,
|
||||
'no-unused-vars': [
|
||||
2,
|
||||
{
|
||||
vars: "all",
|
||||
args: "none"
|
||||
vars: 'all',
|
||||
args: 'none'
|
||||
}
|
||||
],
|
||||
"no-useless-call": 2,
|
||||
"no-useless-computed-key": 2,
|
||||
"no-useless-constructor": 2,
|
||||
"no-useless-escape": 0,
|
||||
"no-whitespace-before-property": 2,
|
||||
"no-with": 2,
|
||||
"one-var": [
|
||||
'no-useless-call': 2,
|
||||
'no-useless-computed-key': 2,
|
||||
'no-useless-constructor': 2,
|
||||
'no-useless-escape': 0,
|
||||
'no-whitespace-before-property': 2,
|
||||
'no-with': 2,
|
||||
'one-var': [
|
||||
2,
|
||||
{
|
||||
initialized: "never"
|
||||
initialized: 'never'
|
||||
}
|
||||
],
|
||||
"operator-linebreak": [
|
||||
'operator-linebreak': [
|
||||
2,
|
||||
"after",
|
||||
'after',
|
||||
{
|
||||
overrides: {
|
||||
"?": "before",
|
||||
":": "before"
|
||||
'?': 'before',
|
||||
':': 'before'
|
||||
}
|
||||
}
|
||||
],
|
||||
"padded-blocks": [2, "never"],
|
||||
'padded-blocks': [2, 'never'],
|
||||
quotes: [
|
||||
2,
|
||||
"single",
|
||||
'single',
|
||||
{
|
||||
avoidEscape: true,
|
||||
allowTemplateLiterals: true
|
||||
}
|
||||
],
|
||||
semi: [2, "never"],
|
||||
"semi-spacing": [
|
||||
semi: [2, 'never'],
|
||||
'semi-spacing': [
|
||||
2,
|
||||
{
|
||||
before: false,
|
||||
after: true
|
||||
}
|
||||
],
|
||||
"space-before-blocks": [2, "always"],
|
||||
"space-before-function-paren": [2, "never"],
|
||||
"space-in-parens": [2, "never"],
|
||||
"space-infix-ops": 2,
|
||||
"space-unary-ops": [
|
||||
'space-before-blocks': [2, 'always'],
|
||||
'space-before-function-paren': [2, 'never'],
|
||||
'space-in-parens': [2, 'never'],
|
||||
'space-infix-ops': 2,
|
||||
'space-unary-ops': [
|
||||
2,
|
||||
{
|
||||
words: true,
|
||||
nonwords: false
|
||||
}
|
||||
],
|
||||
"spaced-comment": [
|
||||
'spaced-comment': [
|
||||
2,
|
||||
"always",
|
||||
'always',
|
||||
{
|
||||
markers: [
|
||||
"global",
|
||||
"globals",
|
||||
"eslint",
|
||||
"eslint-disable",
|
||||
"*package",
|
||||
"!",
|
||||
","
|
||||
'global',
|
||||
'globals',
|
||||
'eslint',
|
||||
'eslint-disable',
|
||||
'*package',
|
||||
'!',
|
||||
','
|
||||
]
|
||||
}
|
||||
],
|
||||
"template-curly-spacing": [2, "never"],
|
||||
"use-isnan": 2,
|
||||
"valid-typeof": 2,
|
||||
"wrap-iife": [2, "any"],
|
||||
"yield-star-spacing": [2, "both"],
|
||||
yoda: [2, "never"],
|
||||
"prefer-const": 2,
|
||||
//"no-debugger": process.env.NODE_ENV === "production" ? 2 : 0,
|
||||
"object-curly-spacing": [
|
||||
'template-curly-spacing': [2, 'never'],
|
||||
'use-isnan': 2,
|
||||
'valid-typeof': 2,
|
||||
'wrap-iife': [2, 'any'],
|
||||
'yield-star-spacing': [2, 'both'],
|
||||
yoda: [2, 'never'],
|
||||
'prefer-const': 2,
|
||||
// "no-debugger": process.env.NODE_ENV === "production" ? 2 : 0,
|
||||
'object-curly-spacing': [
|
||||
2,
|
||||
"always",
|
||||
'always',
|
||||
{
|
||||
objectsInObjects: false
|
||||
}
|
||||
],
|
||||
"array-bracket-spacing": [2, "never"]
|
||||
'array-bracket-spacing': [2, 'never']
|
||||
}
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,10 +1,12 @@
|
|||
module.exports = {
|
||||
presets: [
|
||||
'@vue/cli-plugin-babel/preset',
|
||||
// '@vue/cli-plugin-babel/preset',
|
||||
// ["@babel/preset-env", { "modules": false }]
|
||||
'@babel/preset-env'
|
||||
],
|
||||
plugins: [
|
||||
'@babel/plugin-proposal-optional-chaining',
|
||||
'@babel/plugin-proposal-nullish-coalescing-operator'
|
||||
'@vue/babel-plugin-transform-vue-jsx'
|
||||
// '@babel/plugin-proposal-optional-chaining',
|
||||
// '@babel/plugin-proposal-nullish-coalescing-operator'
|
||||
]
|
||||
}
|
||||
|
|
File diff suppressed because it is too large
Load Diff
136
package.json
136
package.json
|
@ -14,23 +14,20 @@
|
|||
"i18n:en": "node i18nGenerate.js lang=en keyCol=5 valCol=7"
|
||||
},
|
||||
"dependencies": {
|
||||
"@aws-sdk/client-s3": "^3.370.0",
|
||||
"@aws-sdk/client-s3": "^3.701.0",
|
||||
"@cornerstonejs/adapters": "^2.19.7",
|
||||
"@cornerstonejs/calculate-suv": "^1.1.0",
|
||||
"@cornerstonejs/core": "^1.27.4",
|
||||
"@cornerstonejs/dicom-image-loader": "^1.27.4",
|
||||
"@cornerstonejs/streaming-image-volume-loader": "1.23.2",
|
||||
"@cornerstonejs/tools": "^1.27.4",
|
||||
"@ffmpeg/core": "^0.10.0",
|
||||
"@ffmpeg/ffmpeg": "^0.10.1",
|
||||
"@microsoft/signalr": "^6.0.8",
|
||||
"@riophae/vue-treeselect": "0.4.0",
|
||||
"@cornerstonejs/core": "^2.19.7",
|
||||
"@cornerstonejs/dicom-image-loader": "^2.19.7",
|
||||
"@cornerstonejs/tools": "^2.19.7",
|
||||
"@icr/polyseg-wasm": "^0.4.0",
|
||||
"@microsoft/signalr": "^8.0.7",
|
||||
"@riophae/vue-treeselect": "^0.4.0",
|
||||
"@vue-office/docx": "^1.6.2",
|
||||
"@vue-office/excel": "^1.7.11",
|
||||
"@vue/composition-api": "^1.7.2",
|
||||
"ali-oss": "^6.17.1",
|
||||
"axios": "0.18.1",
|
||||
"babel-eslint": "7.2.3",
|
||||
"copy-webpack-plugin": "^4.5.2",
|
||||
"axios": "^0.18.1",
|
||||
"core-js": "^3.8.3",
|
||||
"cornerstone-core": "^2.6.1",
|
||||
"cornerstone-math": "^0.1.10",
|
||||
|
@ -41,67 +38,68 @@
|
|||
"dicom-parser": "^1.8.9",
|
||||
"dicomedit": "^0.1.0",
|
||||
"echarts": "^4.8.0",
|
||||
"element-ui": "^2.15.8",
|
||||
"exceljs": "^4.1.0",
|
||||
"element-ui": "^2.15.14",
|
||||
"exceljs": "^4.4.0",
|
||||
"file-saver": "^2.0.5",
|
||||
"hammerjs": "^2.0.8",
|
||||
"html2canvas": "^1.4.1",
|
||||
"js-md5": "^0.7.3",
|
||||
"js-md5": "^0.8.3",
|
||||
"jsencrypt": "^3.3.2",
|
||||
"jszip": "^3.7.1",
|
||||
"moment": "^2.27.0",
|
||||
"node-polyfill-webpack-plugin": "^2.0.1",
|
||||
"node-sass": "^4.14.1",
|
||||
"normalize.css": "7.0.0",
|
||||
"nprogress": "0.2.0",
|
||||
"path-to-regexp": "2.4.0",
|
||||
"pdfobject": "^2.2.8",
|
||||
"popper.js": "^1.16.1",
|
||||
"qrcodejs2": "0.0.2",
|
||||
"sass-loader": "^8.0.0",
|
||||
"screenfull": "^4.2.0",
|
||||
"sortablejs": "^1.15.0",
|
||||
"jszip": "^3.10.1",
|
||||
"minio": "^7.1.3",
|
||||
"moment": "^2.30.1",
|
||||
"moment-timezone": "^0.5.46",
|
||||
"node-xlsx": "^0.24.0",
|
||||
"normalize.css": "^8.0.1",
|
||||
"nprogress": "^0.2.0",
|
||||
"path-to-regexp": "^0.1.10",
|
||||
"pdfobject": "^2.3.0",
|
||||
"qrcodejs2": "^0.0.2",
|
||||
"screenfull": "^6.0.2",
|
||||
"sortablejs": "^1.15.5",
|
||||
"streamsaver": "^2.0.6",
|
||||
"v-viewer": "^1.6.4",
|
||||
"svg-sprite-loader": "^4.1.3",
|
||||
"svgo": "^1.2.2",
|
||||
"v-viewer": "^1.7.4",
|
||||
"vcrontab": "^0.3.5",
|
||||
"vue": "^2.6.11",
|
||||
"vue-clipboard2": "^0.3.1",
|
||||
"vue-contextmenujs": "^1.3.13",
|
||||
"vue": "^2.6.14",
|
||||
"vue-clipboard2": "^0.3.3",
|
||||
"vue-contextmenujs": "^1.4.11",
|
||||
"vue-count-to": "^1.0.13",
|
||||
"vue-demi": "^0.14.6",
|
||||
"vue-i18n": "^8.7.0",
|
||||
"vue-pdf": "^4.3.0",
|
||||
"vue-demi": "^0.14.10",
|
||||
"vue-i18n": "^8.28.2",
|
||||
"vue-puzzle-vcode": "^1.1.10",
|
||||
"vue-router": "3.0.6",
|
||||
"vue-seamless-scroll": "^1.1.21",
|
||||
"vue-router": "^3.0.6",
|
||||
"vue-seamless-scroll": "^1.1.23",
|
||||
"vuedraggable": "^2.24.3",
|
||||
"vuex": "3.1.0",
|
||||
"webpack-aliyun-oss": "^0.4.9"
|
||||
"vuex": "^3.1.0",
|
||||
"webpack-aliyun-oss": "^0.3.13"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6",
|
||||
"@babel/plugin-proposal-optional-chaining": "^7.21.0",
|
||||
"@vue/cli-plugin-babel": "~4.5.4",
|
||||
"@vue/cli-plugin-eslint": "~4.5.4",
|
||||
"@vue/cli-service": "~4.5.4",
|
||||
"autoprefixer": "^9.5.1",
|
||||
"aws-sdk": "^2.1532.0",
|
||||
"babel-eslint": "^10.1.0",
|
||||
"chalk": "2.4.2",
|
||||
"connect": "3.6.6",
|
||||
"eslint": "^6.7.2",
|
||||
"eslint-plugin-vue": "^6.2.2",
|
||||
"html-webpack-plugin": "3.2.0",
|
||||
"minio": "^7.1.3",
|
||||
"moment-timezone": "^0.5.45",
|
||||
"node-xlsx": "^0.21.0",
|
||||
"runjs": "^4.3.2",
|
||||
"script-ext-html-webpack-plugin": "2.1.3",
|
||||
"script-loader": "0.7.2",
|
||||
"serve-static": "^1.13.2",
|
||||
"svg-sprite-loader": "4.1.3",
|
||||
"svgo": "1.2.2",
|
||||
"vue-template-compiler": "^2.6.11"
|
||||
"@babel/core": "^7.12.16",
|
||||
"@babel/eslint-parser": "^7.12.16",
|
||||
"@babel/plugin-transform-class-static-block": "^7.26.0",
|
||||
"@vue/babel-plugin-transform-vue-jsx": "^1.4.0",
|
||||
"@vue/cli-plugin-babel": "~5.0.0",
|
||||
"@vue/cli-plugin-eslint": "~5.0.0",
|
||||
"@vue/cli-service": "~5.0.0",
|
||||
"autoprefixer": "^10.4.20",
|
||||
"clean-webpack-plugin": "^4.0.0",
|
||||
"copy-webpack-plugin": "^12.0.2",
|
||||
"css-minimizer-webpack-plugin": "^7.0.0",
|
||||
"eslint": "^7.32.0",
|
||||
"eslint-plugin-vue": "^8.0.3",
|
||||
"html-webpack-plugin": "^5.6.3",
|
||||
"mini-css-extract-plugin": "^2.9.2",
|
||||
"node-polyfill-webpack-plugin": "^4.0.0",
|
||||
"path-browserify": "^1.0.1",
|
||||
"process": "^0.11.10",
|
||||
"sass": "^1.63.2",
|
||||
"sass-loader": "^10.4.1",
|
||||
"terser-webpack-plugin": "^5.3.10",
|
||||
"vue-template-compiler": "^2.6.14",
|
||||
"webpack": "^5.96.1",
|
||||
"webpack-bundle-analyzer": "^4.10.2"
|
||||
},
|
||||
"eslintConfig": {
|
||||
"root": true,
|
||||
|
@ -109,19 +107,19 @@
|
|||
"node": true
|
||||
},
|
||||
"extends": [
|
||||
"plugin:vue/essential"
|
||||
"plugin:vue/essential",
|
||||
"eslint:recommended"
|
||||
],
|
||||
"parserOptions": {
|
||||
"parser": "babel-eslint"
|
||||
"parser": "@babel/eslint-parser",
|
||||
"requireConfigFile": false
|
||||
},
|
||||
"rules": {}
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8.9",
|
||||
"npm": ">= 3.0.0"
|
||||
},
|
||||
"browserslist": [
|
||||
"> 1%",
|
||||
"last 2 versions"
|
||||
"last 2 versions",
|
||||
"not dead",
|
||||
"not op_mini all"
|
||||
]
|
||||
}
|
||||
|
|
|
@ -593,7 +593,7 @@ export default {
|
|||
<style lang="scss" scoped>
|
||||
.my_dialog{
|
||||
.criterion-form-item{
|
||||
>>>.el-form-item__content{
|
||||
::v-deep .el-form-item__content{
|
||||
width: auto;
|
||||
}
|
||||
}
|
||||
|
@ -614,7 +614,7 @@ export default {
|
|||
margin-bottom: 0px;
|
||||
}
|
||||
.disabled{
|
||||
>>>.el-upload--picture-card {
|
||||
::v-deep .el-upload--picture-card {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -222,7 +222,7 @@ export default {
|
|||
<style lang="scss" scoped>
|
||||
.my_dialog{
|
||||
.criterion-form-item{
|
||||
>>>.el-form-item__content{
|
||||
::v-deep .el-form-item__content{
|
||||
width: auto;
|
||||
}
|
||||
}
|
||||
|
@ -233,7 +233,7 @@ export default {
|
|||
flex-direction: row;
|
||||
align-items: flex-start;
|
||||
}
|
||||
>>>.el-form-item__content{
|
||||
::v-deep .el-form-item__content{
|
||||
width: 500px;
|
||||
}
|
||||
.el-input{
|
||||
|
@ -243,7 +243,7 @@ export default {
|
|||
margin-bottom: 0px;
|
||||
}
|
||||
.disabled{
|
||||
>>>.el-upload--picture-card {
|
||||
::v-deep .el-upload--picture-card {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -112,11 +112,11 @@ export default {
|
|||
margin: auto;
|
||||
}
|
||||
|
||||
/deep/ .el-radio__original {
|
||||
::v-deep .el-radio__original {
|
||||
display: none !important; /* 隐藏原生 radio 输入,但仍然允许交互 */
|
||||
}
|
||||
|
||||
/deep/.el-radio:focus:not(.is-focus):not(:active):not(.is-disabled)
|
||||
::v-deep.el-radio:focus:not(.is-focus):not(:active):not(.is-disabled)
|
||||
.el-radio__inner {
|
||||
box-shadow: none !important;
|
||||
}
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
import { mapGetters } from 'vuex'
|
||||
import Logo from './Logo'
|
||||
import SidebarItem from './SidebarItem'
|
||||
import variables from '@/styles/variables.scss'
|
||||
import variables from '@/styles/variables.module.scss'
|
||||
|
||||
export default {
|
||||
components: { SidebarItem, Logo },
|
||||
|
|
|
@ -73,7 +73,7 @@ export default {
|
|||
position: relative;
|
||||
overflow: hidden;
|
||||
width: 100%;
|
||||
/deep/ {
|
||||
::v-deep {
|
||||
.el-scrollbar__bar {
|
||||
bottom: 0px;
|
||||
}
|
||||
|
|
|
@ -57,7 +57,7 @@ export default {
|
|||
|
||||
<style lang="scss" scoped>
|
||||
@import "~@/styles/mixin.scss";
|
||||
@import "~@/styles/variables.scss";
|
||||
@import "~@/styles/variables.module.scss";
|
||||
|
||||
.app-wrapper {
|
||||
@include clearfix;
|
||||
|
|
|
@ -50,6 +50,11 @@ export const constantRoutes = [
|
|||
component: () => import('@/views/login/index'),
|
||||
hidden: true
|
||||
},
|
||||
{
|
||||
path: '/test',
|
||||
component: () => import('@/views/test/index'),
|
||||
hidden: true
|
||||
},
|
||||
{
|
||||
path: '/resetpassword',
|
||||
component: () => import('@/views/forgetpassword/index'),
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
@import "./variables.scss";
|
||||
@import "./variables.module.scss";
|
||||
@import "./mixin.scss";
|
||||
@import "./transition.scss";
|
||||
@import "./element-ui.scss";
|
||||
|
|
|
@ -71,29 +71,49 @@ $sideBarWidth: 200px;
|
|||
border: none;
|
||||
height: 100%;
|
||||
width: 100% !important;
|
||||
background-color: $menuBg;
|
||||
}
|
||||
|
||||
// menu hover
|
||||
.submenu-title-noDropdown,
|
||||
.el-submenu__title {
|
||||
color: $menuText !important;
|
||||
&:hover {
|
||||
background-color: $menuHover !important;
|
||||
color: $menuActiveText !important;
|
||||
}
|
||||
}
|
||||
|
||||
.is-active>.el-submenu__title {
|
||||
color: $subMenuActiveText !important;
|
||||
}
|
||||
|
||||
& .nest-menu .el-submenu>.el-submenu__title,
|
||||
& .el-submenu .el-menu-item {
|
||||
.el-menu-item {
|
||||
color: $menuText !important;
|
||||
}
|
||||
.el-menu-item:focus,
|
||||
.el-menu-item:hover {
|
||||
background-color: $subMenuBg !important;
|
||||
color: $menuActiveText !important;
|
||||
}
|
||||
.el-submenu .el-menu-item {
|
||||
min-width: $sideBarWidth !important;
|
||||
background-color: $subMenuBg !important;
|
||||
|
||||
&:hover {
|
||||
background-color: $subMenuHover !important;
|
||||
|
||||
}
|
||||
}
|
||||
// &.nest-menu .el-submenu>.el-submenu__title,
|
||||
// &.el-submenu .el-menu-item {
|
||||
// min-width: $sideBarWidth !important;
|
||||
// background-color: $subMenuBg !important;
|
||||
|
||||
// &:hover {
|
||||
// background-color: $subMenuHover !important;
|
||||
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
.hideSidebar {
|
||||
|
|
|
@ -27,7 +27,7 @@ export default {
|
|||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
/deep/ .el-collapse-item__header{
|
||||
::v-deep .el-collapse-item__header{
|
||||
background-color: #e9eef1;
|
||||
padding: 0 10px;
|
||||
}
|
||||
|
|
|
@ -195,7 +195,7 @@ export default {
|
|||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
/deep/ .el-collapse-item__header{
|
||||
::v-deep .el-collapse-item__header{
|
||||
background-color: #e9eef1;
|
||||
padding: 0 10px;
|
||||
}
|
||||
|
|
|
@ -60,7 +60,7 @@
|
|||
</el-form-item>
|
||||
<el-form-item v-if="form.Id !== ''" label="是否废除: ">
|
||||
<el-radio-group v-model="form.IsDeleted">
|
||||
<el-radio v-for="item of $d.YesOrNo" :label="item.value">{{ item.label }}</el-radio>
|
||||
<el-radio v-for="item of $d.YesOrNo" :key="`IsDeleted${item.value}`" :label="item.value">{{ item.label }}</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="描述">
|
||||
|
|
|
@ -78,7 +78,7 @@
|
|||
<el-form-item v-if="form.Id !== ''" label="是否废除: ">
|
||||
<el-radio-group v-model="form.IsDeleted">
|
||||
|
||||
<el-radio v-for="item of $d.YesOrNo" :label="item.value">{{ item.label }}</el-radio>
|
||||
<el-radio v-for="item of $d.YesOrNo" :key="`IsDeleted${item.value}`" :label="item.value">{{ item.label }}</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="描述">
|
||||
|
|
|
@ -1,411 +0,0 @@
|
|||
<template>
|
||||
<div class="app-container my_menu">
|
||||
<el-form :inline="true">
|
||||
<el-form-item label="操作名">
|
||||
<el-input
|
||||
v-model="queryParams.menuName"
|
||||
placeholder="请输入操作名"
|
||||
clearable
|
||||
size="small"
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="模块">
|
||||
<el-select v-model="queryParams.visible" placeholder="模块" clearable size="small" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
||||
<el-button type="primary" icon="el-icon-plus" size="mini" @click="handleAdd">新增</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div>
|
||||
<el-button
|
||||
type="info"
|
||||
plain
|
||||
icon="el-icon-sort"
|
||||
size="mini"
|
||||
@click="toggleExpandAll"
|
||||
>展开/折叠</el-button>
|
||||
</div>
|
||||
<el-table
|
||||
v-if="refreshTable"
|
||||
v-loading="loading"
|
||||
:data="menuList"
|
||||
:default-expand-all="isExpandAll"
|
||||
row-key="Id"
|
||||
:tree-props="{children: 'Children', hasChildren: 'hasChildren'}"
|
||||
>
|
||||
<el-table-column prop="ModuleTypeValueCN" label="模块" align="left" min-width="230px" />
|
||||
<el-table-column prop="OptTypeValueCN" label="操作类型" min-width="120px" />
|
||||
<el-table-column prop="ChildrenTypeValueCN" label="操作子类" min-width="120px" show-overflow-tooltip />
|
||||
<el-table-column prop="Description" label="操作名称" :show-overflow-tooltip="true" min-width="200px" />
|
||||
<el-table-column prop="Code" label="字段名" min-width="120px" :show-overflow-tooltip="true" />
|
||||
<el-table-column prop="Value" label="字段英文" min-width="120px" :show-overflow-tooltip="true" />
|
||||
<el-table-column prop="ValueCN" label="字段中文" min-width="120px" :show-overflow-tooltip="true" />
|
||||
<el-table-column label="启用" align="center" prop="CreateTime" min-width="80">
|
||||
<template slot-scope="scope">
|
||||
<el-tag v-if="scope.row.IsEnable" size="success">启用</el-tag>
|
||||
<el-tag v-else size="danger">禁用</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="是否使用父数据" align="center" prop="CreateTime" min-width="130">
|
||||
<template slot-scope="scope">
|
||||
<el-tag v-if="scope.row.IsShowParent" size="success">父数据</el-tag>
|
||||
<el-tag v-else size="danger">子数据</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center" min-width="180" class-name="small-padding fixed-width">
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-edit"
|
||||
@click="handleUpdate(scope.row)"
|
||||
>修改</el-button>
|
||||
<el-button
|
||||
size="mini"
|
||||
type="text"
|
||||
v-if="scope.row.ConfigType === 'M'"
|
||||
icon="el-icon-plus"
|
||||
@click="handleAdd(scope.row)"
|
||||
>新增</el-button>
|
||||
<el-button
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-delete"
|
||||
@click="handleDelete(scope.row)"
|
||||
>删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<!-- 添加或修改菜单对话框 -->
|
||||
<el-dialog :title="title" :close-on-click-modal="false" :visible.sync="open" width="680px" append-to-body>
|
||||
<el-form ref="form" :model="form" label-width="100px">
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="选择操作">
|
||||
<treeselect
|
||||
v-model="form.ParentId"
|
||||
:options="menuOptions"
|
||||
:normalizer="normalizer"
|
||||
:show-count="true"
|
||||
placeholder="选择上级操作"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12" v-show="form.ConfigType === 'M'">
|
||||
<el-form-item label="模块" prop="menuType">
|
||||
<el-select v-model="form.ModuleTypeId" placeholder="模块" clearable size="small" @change="changeDescription">
|
||||
<el-option v-for="item of dict.type.ModuleType" :value="item.value" :label="item.raw.ValueCN"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12" v-show="form.ConfigType === 'M'">
|
||||
<el-form-item label="操作类型" prop="menuType">
|
||||
<el-select v-model="form.OptTypeId" placeholder="操作类型" clearable size="small" @change="changeDescription">
|
||||
<el-option v-for="item of dict.type.OptType" :value="item.value" :label="item.raw.ValueCN"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12" v-show="form.ConfigType === 'M'">
|
||||
<el-form-item label="操作子类" prop="menuType">
|
||||
<el-select v-model="form.ChildrenTypeId" placeholder="操作子类" clearable size="small" @change="changeDescription">
|
||||
<el-option v-for="item of dict.type.ChildrenType" :value="item.value" :label="item.raw.ValueCN"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12" v-show="form.ConfigType == 'M'">
|
||||
<el-form-item label="名称" prop="Description">
|
||||
<el-input v-model="form.Description" placeholder="请输入名称" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="显示排序" prop="ShowOrder">
|
||||
<el-input-number v-model="form.Sort" controls-position="right" :min="0" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item>
|
||||
<span slot="label">
|
||||
是否启用
|
||||
</span>
|
||||
<el-switch
|
||||
v-model="form.IsEnable"
|
||||
:active-value="true"
|
||||
:inactive-value="false"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12" v-show="form.ConfigType === 'C'">
|
||||
<el-form-item>
|
||||
<span slot="label">
|
||||
继承父数据
|
||||
</span>
|
||||
<el-switch
|
||||
v-model="form.IsShowParent"
|
||||
:active-value="true"
|
||||
:inactive-value="false"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24" v-show="form.ConfigType === 'C'">
|
||||
<el-form-item label="字段key">
|
||||
<el-input v-model="form.Code" placeholder="请输入字段key" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12" v-show="form.ConfigType === 'C'">
|
||||
<el-form-item label="字段英文">
|
||||
<el-input v-model="form.Value" placeholder="请输入字段英文" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12" v-show="form.ConfigType === 'C'">
|
||||
<el-form-item label="字段中文">
|
||||
<el-input v-model="form.ValueCN" placeholder="请输入字段中文" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24" v-show="form.ConfigType === 'C'">
|
||||
<el-form-item label="枚举类型">
|
||||
<el-radio-group v-model="form.EnumType">
|
||||
<el-radio :label="null">无</el-radio>
|
||||
<el-radio label="E">枚举</el-radio>
|
||||
<el-radio label="D">字典</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24" v-show="form.ConfigType === 'C' && form.EnumType === 'E'">
|
||||
<el-form-item label="枚举">
|
||||
<el-input v-model="form.EnumList" placeholder="请输入枚举" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24" v-show="form.ConfigType === 'C' && form.EnumType === 'D'">
|
||||
<el-form-item label="字典code">
|
||||
<el-input v-model="form.dictionaryKey" placeholder="请输入字典code" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="submitForm">确 定</el-button>
|
||||
<el-button @click="cancel">取 消</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { getFrontAuditConfigList, addOrUpdateFrontAuditConfig, deleteFrontAuditConfig } from '@/api/dictionary/checkConfig'
|
||||
import Treeselect from '@riophae/vue-treeselect'
|
||||
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
|
||||
import IconSelect from '@/components/IconSelect'
|
||||
|
||||
export default {
|
||||
name: 'checkConfig',
|
||||
dicts: [ 'OptType', 'ModuleType', 'ChildrenType' ],
|
||||
components: { Treeselect, IconSelect },
|
||||
data() {
|
||||
return {
|
||||
// 遮罩层
|
||||
loading: true,
|
||||
// 菜单表格树数据
|
||||
menuList: [],
|
||||
// 菜单树选项
|
||||
menuOptions: [],
|
||||
// 弹出层标题
|
||||
title: '',
|
||||
// 是否显示弹出层
|
||||
open: false,
|
||||
// 菜单状态数据字典
|
||||
visibleOptions: [],
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
menuName: undefined,
|
||||
visible: undefined,
|
||||
},
|
||||
// 是否展开,默认全部折叠
|
||||
isExpandAll: false,
|
||||
// 重新渲染表格状态
|
||||
refreshTable: true,
|
||||
// 表单参数
|
||||
form: {},
|
||||
// 表单校验
|
||||
rules: {
|
||||
MenuName: [
|
||||
{ required: true, message: '菜单名称不能为空', trigger: 'blur' }
|
||||
],
|
||||
ShowOrder: [
|
||||
{ required: true, message: '菜单顺序不能为空', trigger: 'blur' }
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getList()
|
||||
// this.getDicts("sys_show_hide").then(response => {
|
||||
// this.visibleOptions = response.data;
|
||||
// });
|
||||
},
|
||||
methods: {
|
||||
toggleExpandAll() {
|
||||
this.refreshTable = false
|
||||
this.isExpandAll = !this.isExpandAll
|
||||
this.$nextTick(() => {
|
||||
this.refreshTable = true
|
||||
})
|
||||
},
|
||||
normalizer(node) {
|
||||
if (node.Children && !node.Children.length) {
|
||||
delete node.Children
|
||||
}
|
||||
return {
|
||||
id: node.Id,
|
||||
label: node.Description,
|
||||
children: node.Children
|
||||
}
|
||||
},
|
||||
toTree(arr, ParentId) {
|
||||
function loop(ParentId) {
|
||||
const res = []
|
||||
for (let i = 0; i < arr.length; i++) {
|
||||
const item = arr[i]
|
||||
item.hasChildren = false
|
||||
if (item.ParentId !== ParentId) {
|
||||
continue
|
||||
}
|
||||
item.Children = loop(item.Id)
|
||||
res.push(item)
|
||||
}
|
||||
return res
|
||||
}
|
||||
return loop(ParentId)
|
||||
},
|
||||
// 选择图标
|
||||
selected(name) {
|
||||
this.form.MenuIcon = name
|
||||
},
|
||||
/** 查询菜单列表 */
|
||||
getList() {
|
||||
this.loading = true
|
||||
getFrontAuditConfigList(this.queryParams).then(res => {
|
||||
this.menuList = this.toTree(res.Result, '00000000-0000-0000-0000-000000000000')
|
||||
const menu = { Id: '00000000-0000-0000-0000-000000000000', Description: '操作', Children: [] }
|
||||
menu.Children = this.menuList
|
||||
this.menuOptions = Object.assign([], [menu])
|
||||
this.loading = false
|
||||
}).catch(function() {})
|
||||
},
|
||||
/** 查询菜单下拉树结构 */
|
||||
getTreeselect() {
|
||||
this.loading = true
|
||||
getFrontAuditConfigList({}).then(res => {
|
||||
const menu = { Id: '00000000-0000-0000-0000-000000000000', Description: '操作', Children: [] }
|
||||
menu.Children = this.toTree(res.Result, '00000000-0000-0000-0000-000000000000')
|
||||
this.menuOptions = Object.assign([], [menu])
|
||||
this.loading = false
|
||||
}).catch(function() {})
|
||||
},
|
||||
// 菜单显示状态字典翻译
|
||||
visibleFormat(row, column) {
|
||||
if (row.MenuType === 'F') {
|
||||
return ''
|
||||
}
|
||||
return this.selectDictLabel(this.visibleOptions, row.visible)
|
||||
},
|
||||
// 取消按钮
|
||||
cancel() {
|
||||
this.open = false
|
||||
this.reset()
|
||||
},
|
||||
// 表单重置
|
||||
reset() {
|
||||
this.form = {
|
||||
Id: null,
|
||||
ParentId: null,
|
||||
ConfigType: 'M',
|
||||
Description: null,
|
||||
IsEnable: true,
|
||||
ModuleTypeId: null,
|
||||
OptTypeId: null,
|
||||
ChildrenTypeId: null,
|
||||
IsShowParent: false,
|
||||
Sort: 0,
|
||||
Code: null,
|
||||
Value: null,
|
||||
ValueCN: null,
|
||||
EnumType: null
|
||||
}
|
||||
this.resetForm('form')
|
||||
},
|
||||
findName (id, dict, type) {
|
||||
if (id) {
|
||||
return this.dict.type[dict].find(v => {
|
||||
return v.value === id
|
||||
}).raw[type]
|
||||
}
|
||||
return ''
|
||||
},
|
||||
changeDescription () {
|
||||
this.form.Description = this.findName(this.form.OptTypeId, 'OptType', 'ValueCN') + this.findName(this.form.ModuleTypeId, 'ModuleType', 'ValueCN') + this.findName(this.form.ChildrenTypeId, 'ChildrenType', 'ValueCN')
|
||||
},
|
||||
/** 搜索按钮操作 */
|
||||
handleQuery() {
|
||||
this.getList()
|
||||
},
|
||||
/** 新增按钮操作 */
|
||||
handleAdd(row) {
|
||||
this.reset()
|
||||
this.getTreeselect()
|
||||
if (row != null) {
|
||||
this.form.ParentId = row.Id
|
||||
this.form.ModuleTypeId = row.ModuleTypeId
|
||||
this.form.OptTypeId = row.OptTypeId
|
||||
this.form.ChildrenTypeId = row.ChildrenTypeId
|
||||
if (row.ModuleTypeId && row.OptTypeId && row.ChildrenTypeId) {
|
||||
this.form.ConfigType = 'C'
|
||||
}
|
||||
this.form.Description = row.OptTypeValueCN + row.ModuleTypeValueCN + row.ChildrenTypeValueCN
|
||||
}
|
||||
this.open = true
|
||||
this.title = '添加'
|
||||
},
|
||||
/** 修改按钮操作 */
|
||||
handleUpdate(row) {
|
||||
this.reset()
|
||||
this.getTreeselect()
|
||||
this.form = Object.assign({}, row)
|
||||
this.open = true
|
||||
this.title = '修改'
|
||||
},
|
||||
/** 提交按钮 */
|
||||
submitForm: function() {
|
||||
this.$refs['form'].validate(valid => {
|
||||
if (valid) {
|
||||
addOrUpdateFrontAuditConfig(this.form).then(response => {
|
||||
this.$message.success(this.$t('common:message:savedSuccessfully'))
|
||||
this.open = false
|
||||
this.getList()
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
/** 删除按钮操作 */
|
||||
handleDelete(row) {
|
||||
this.$confirm('是否确认删除名称为"' + row.Description + '"的数据项?', '警告', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(function() {
|
||||
return deleteFrontAuditConfig(row.Id)
|
||||
}).then(() => {
|
||||
this.getList()
|
||||
this.$message.success('删除成功')
|
||||
}).catch(function() {})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="scss">
|
||||
.vue-treeselect div{
|
||||
line-height: 40px;
|
||||
}
|
||||
</style>
|
|
@ -340,7 +340,7 @@ export default {
|
|||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.upload-container{
|
||||
/deep/ .el-upload {
|
||||
::v-deep .el-upload {
|
||||
width: 100%;
|
||||
text-align: left;
|
||||
}
|
||||
|
|
|
@ -265,7 +265,7 @@ export default {
|
|||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
/deep/ .el-form-item__content{
|
||||
::v-deep .el-form-item__content{
|
||||
width: calc(100% - 110px);
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -231,7 +231,7 @@ export default {
|
|||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
/deep/ .el-form-item__content{
|
||||
::v-deep .el-form-item__content{
|
||||
width: calc(100% - 110px);
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -396,7 +396,7 @@ export default {
|
|||
flex-direction: row;
|
||||
align-items: flex-start;
|
||||
}
|
||||
/deep/ .el-form-item__content{
|
||||
::v-deep .el-form-item__content{
|
||||
width: 500px;
|
||||
}
|
||||
.el-input{
|
||||
|
@ -406,7 +406,7 @@ export default {
|
|||
margin-bottom: 0px;
|
||||
}
|
||||
.disabled{
|
||||
/deep/ .el-upload--picture-card {
|
||||
::v-deep .el-upload--picture-card {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -190,7 +190,7 @@ export default {
|
|||
margin-bottom: 0px;
|
||||
}
|
||||
.disabled{
|
||||
/deep/ .el-upload--picture-card {
|
||||
::v-deep .el-upload--picture-card {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -79,7 +79,7 @@
|
|||
</el-form-item>
|
||||
<el-form-item v-if="form.Id !== ''" label="是否废除: ">
|
||||
<el-radio-group v-model="form.IsDeleted">
|
||||
<el-radio v-for="item of $d.YesOrNo" :label="item.value">{{ item.label }}</el-radio>
|
||||
<el-radio v-for="item of $d.YesOrNo" :key="`IsDeleted${item.value}`" :label="item.value">{{ item.label }}</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="描述">
|
||||
|
|
|
@ -419,7 +419,7 @@ export default {
|
|||
}
|
||||
</style>
|
||||
<style scoped>
|
||||
/*/deep/ .is-error{*/
|
||||
/*::v-deep .is-error{*/
|
||||
/* margin-bottom: 40px;*/
|
||||
/*}*/
|
||||
.is-error.my_new_pwd {
|
||||
|
|
|
@ -220,7 +220,7 @@ export default {
|
|||
border-radius: 10px;
|
||||
background: #d0d0d0;
|
||||
}
|
||||
/deep/ .el-card__body {
|
||||
::v-deep .el-card__body {
|
||||
padding: 0px;
|
||||
}
|
||||
}
|
||||
|
@ -234,7 +234,7 @@ export default {
|
|||
width: 220px;
|
||||
height: 100%;
|
||||
|
||||
/deep/ .el-card__body {
|
||||
::v-deep .el-card__body {
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
display: flex;
|
||||
|
@ -254,13 +254,13 @@ export default {
|
|||
overflow-y: auto;
|
||||
}
|
||||
|
||||
// /deep/ .el-tabs{
|
||||
// ::v-deep .el-tabs{
|
||||
// height: 100%;
|
||||
// }
|
||||
// /deep/ .el-tabs__header{
|
||||
// ::v-deep .el-tabs__header{
|
||||
// height: 40px;
|
||||
// }
|
||||
// /deep/ .el-tabs__content{
|
||||
// ::v-deep .el-tabs__content{
|
||||
// flex: 1;
|
||||
// overflow-y: auto;
|
||||
// padding: 0;
|
||||
|
@ -299,7 +299,7 @@ export default {
|
|||
flex: 1;
|
||||
height: 100%;
|
||||
margin-left: 10px;
|
||||
/deep/ .el-card__body {
|
||||
::v-deep .el-card__body {
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
}
|
||||
|
|
|
@ -271,7 +271,7 @@ export default {
|
|||
padding: 5px 20px;
|
||||
margin-top: 5px;
|
||||
background: #fff;
|
||||
/deep/.el-form-item {
|
||||
::v-deep.el-form-item {
|
||||
padding-bottom: 20px;
|
||||
|
||||
}
|
||||
|
@ -285,10 +285,10 @@ export default {
|
|||
}
|
||||
}
|
||||
.form-label-width{
|
||||
/deep/.el-form-item__label{
|
||||
::v-deep.el-form-item__label{
|
||||
width: 140px;
|
||||
}
|
||||
/deep/.el-form-item__content{
|
||||
::v-deep.el-form-item__content{
|
||||
margin-left: 140px;
|
||||
}
|
||||
}
|
||||
|
@ -297,7 +297,7 @@ export default {
|
|||
text-align: center;
|
||||
}
|
||||
|
||||
/deep/.el-form-item {
|
||||
::v-deep.el-form-item {
|
||||
margin-bottom: 0px;
|
||||
padding-top: 5px;
|
||||
border-bottom: 1px solid #f5f7fa;
|
||||
|
|
|
@ -156,7 +156,7 @@ export default {
|
|||
<style lang="scss" scoped>
|
||||
.equipment_form_content{
|
||||
padding: 0 10px;
|
||||
/deep/.el-form-item {
|
||||
::v-deep.el-form-item {
|
||||
margin-bottom: 0px;
|
||||
padding: 5px 0 20px 0;
|
||||
border-bottom: 1px solid #f5f7fa;
|
||||
|
|
|
@ -292,7 +292,7 @@ export default {
|
|||
<style lang="scss" scoped>
|
||||
.participants_form_content{
|
||||
padding: 0 10px;
|
||||
/deep/.el-form-item {
|
||||
::v-deep.el-form-item {
|
||||
margin-bottom: 0px;
|
||||
padding: 5px 0 20px 0;
|
||||
border-bottom: 1px solid #f5f7fa;
|
||||
|
|
|
@ -306,7 +306,7 @@ export default {
|
|||
<style lang="scss" scoped>
|
||||
.participants_form_content{
|
||||
padding: 0 10px;
|
||||
/deep/.el-form-item {
|
||||
::v-deep.el-form-item {
|
||||
margin-bottom: 0px;
|
||||
padding: 5px 0 20px 0;
|
||||
border-bottom: 1px solid #f5f7fa;
|
||||
|
|
|
@ -375,7 +375,7 @@ export default {
|
|||
padding: 5px 20px;
|
||||
margin-top: 5px;
|
||||
background: #fff;
|
||||
/deep/.el-form-item {
|
||||
::v-deep.el-form-item {
|
||||
padding-bottom: 20px;
|
||||
}
|
||||
}
|
||||
|
@ -392,7 +392,7 @@ export default {
|
|||
text-align: center;
|
||||
}
|
||||
|
||||
/deep/.el-form-item {
|
||||
::v-deep.el-form-item {
|
||||
margin-bottom: 0px;
|
||||
padding-top: 5px;
|
||||
border-bottom: 1px solid #f5f7fa;
|
||||
|
|
|
@ -338,19 +338,19 @@ export default {
|
|||
padding-bottom: 20px;
|
||||
overflow-y: auto;
|
||||
}
|
||||
>>>.el-card__body{
|
||||
::v-deep .el-card__body{
|
||||
padding: 10px;
|
||||
}
|
||||
// >>>.el-dialog__body{
|
||||
// padding: 10px 20px 20px 20px;
|
||||
// }
|
||||
|
||||
>>>.full-dialog-container{
|
||||
::v-deep .full-dialog-container{
|
||||
.el-dialog__body{
|
||||
height: calc(100% - 80px);
|
||||
}
|
||||
}
|
||||
>>>.dialog-container{
|
||||
::v-deep .dialog-container{
|
||||
// margin-top: 50px !important;
|
||||
width:75%;
|
||||
height:80%;
|
||||
|
|
|
@ -387,19 +387,19 @@ export default {
|
|||
padding-bottom: 20px;
|
||||
overflow-y: auto;
|
||||
}
|
||||
/deep/.el-card__body{
|
||||
::v-deep.el-card__body{
|
||||
padding: 10px;
|
||||
}
|
||||
// >>>.el-dialog__body{
|
||||
// padding: 10px 20px 20px 20px;
|
||||
// }
|
||||
|
||||
/deep/.full-dialog-container{
|
||||
::v-deep.full-dialog-container{
|
||||
.el-dialog__body{
|
||||
height: calc(100% - 80px);
|
||||
}
|
||||
}
|
||||
/deep/.dialog-container{
|
||||
::v-deep.dialog-container{
|
||||
// margin-top: 50px !important;
|
||||
width:75%;
|
||||
height:80%;
|
||||
|
|
|
@ -206,7 +206,7 @@ export default {
|
|||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
/deep/ .el-collapse-item__header{
|
||||
::v-deep .el-collapse-item__header{
|
||||
background-color: #e9eef1;
|
||||
padding: 0 10px;
|
||||
}
|
||||
|
|
|
@ -124,7 +124,7 @@ export default {
|
|||
.el-tabs{
|
||||
height: 100%;
|
||||
.el-tabs__content{
|
||||
height: calc(100%-50px);
|
||||
height: calc(100% - 50px);
|
||||
overflow-y: auto;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -163,7 +163,7 @@ export default {
|
|||
.el-tabs {
|
||||
height: 100%;
|
||||
.el-tabs__content {
|
||||
height: calc(100%-50px);
|
||||
height: calc(100% - 50px);
|
||||
overflow-y: auto;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -187,7 +187,7 @@ export default {
|
|||
.el-tabs {
|
||||
height: 100%;
|
||||
.el-tabs__content {
|
||||
height: calc(100%-50px);
|
||||
height: calc(100% - 50px);
|
||||
overflow-y: auto;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -526,7 +526,7 @@ export default {
|
|||
}
|
||||
</script>
|
||||
<style scoped lang="scss">
|
||||
/deep/ .box-body .search .base-search-form .el-form-item {
|
||||
::v-deep .box-body .search .base-search-form .el-form-item {
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -0,0 +1,105 @@
|
|||
<template>
|
||||
<div class="grid-container" :style="gridStyle">
|
||||
<div
|
||||
v-for="(cell, index) in cells"
|
||||
:key="index"
|
||||
class="grid-cell"
|
||||
:style="cellStyle"
|
||||
@dblclick="toggleFullScreen(index)"
|
||||
>
|
||||
<div v-if="fullScreenIndex === index" class="full-screen">
|
||||
<div class="content">
|
||||
<canvas class="canvas" :ref="`canvas-${fullScreenIndex}`"></canvas>
|
||||
<!-- 这里可以放置单元格的内容 -->
|
||||
<!-- Cell {{ index + 1 }} -->
|
||||
<!-- <button @click="toggleFullScreen(null)">Exit Full Screen</button> -->
|
||||
</div>
|
||||
</div>
|
||||
<div v-else class="content">
|
||||
<!-- Cell {{ index + 1 }} -->
|
||||
<canvas class="canvas" :ref="`canvas-${index}`"></canvas>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
props: {
|
||||
rows: {
|
||||
type: Number,
|
||||
default: 1,
|
||||
},
|
||||
cols: {
|
||||
type: Number,
|
||||
default: 1,
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
fullScreenIndex: null,
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
gridStyle() {
|
||||
return {
|
||||
display: 'grid',
|
||||
gridTemplateRows: `repeat(${this.rows}, 1fr)`,
|
||||
gridTemplateColumns: `repeat(${this.cols}, 1fr)`,
|
||||
height: '100vh',
|
||||
width: '100vw',
|
||||
};
|
||||
},
|
||||
cellStyle() {
|
||||
return {
|
||||
border: '1px solid #ccc',
|
||||
display: 'flex',
|
||||
alignItems: 'center',
|
||||
justifyContent: 'center',
|
||||
};
|
||||
},
|
||||
cells() {
|
||||
return Array(this.rows * this.cols).fill(0);
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
toggleFullScreen(index) {
|
||||
this.fullScreenIndex = this.fullScreenIndex === index ? null : index;
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.grid-container {
|
||||
display: grid;
|
||||
height: 100vh;
|
||||
width: 100vw;
|
||||
}
|
||||
|
||||
.grid-cell {
|
||||
border: 1px solid #ccc;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.full-screen {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
background: white;
|
||||
z-index: 1000;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.content {
|
||||
/* text-align: center; */
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
</style>
|
|
@ -0,0 +1,25 @@
|
|||
<template>
|
||||
<div>
|
||||
<!-- <label>行数: </label>
|
||||
<input v-model.number="rows" type="number" min="1" max="3" />
|
||||
<label>列数: </label>
|
||||
<input v-model.number="cols" type="number" min="1" max="3" /> -->
|
||||
<GridLayout :rows="rows" :cols="cols" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import GridLayout from './GridLayout.vue';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
GridLayout,
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
rows: 2,
|
||||
cols: 2,
|
||||
};
|
||||
},
|
||||
};
|
||||
</script>
|
|
@ -158,7 +158,7 @@ export default {
|
|||
// border: 1px solid #e0e0e0;
|
||||
max-height: 650px;
|
||||
overflow-y: auto;
|
||||
// /deep/ .el-form-item__label{
|
||||
// ::v-deep .el-form-item__label{
|
||||
// color: #fff;
|
||||
// }
|
||||
}
|
||||
|
|
|
@ -73,10 +73,10 @@ export default {
|
|||
width: 100%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
/deep/ .el-dialog__header{
|
||||
::v-deep .el-dialog__header{
|
||||
padding: 10px;
|
||||
}
|
||||
/deep/ .el-dialog__body{
|
||||
::v-deep .el-dialog__body{
|
||||
padding: 10px 20px;
|
||||
line-height: 25px;
|
||||
}
|
||||
|
|
|
@ -44,7 +44,7 @@ export default {
|
|||
overflow: hidden;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
/deep/.el-card__body {
|
||||
::v-deep.el-card__body {
|
||||
padding: 0px;
|
||||
}
|
||||
.trials-tab{
|
||||
|
|
|
@ -29,7 +29,7 @@ export default {
|
|||
|
||||
<style lang="scss" scoped>
|
||||
@import "~@/styles/mixin.scss";
|
||||
@import "~@/styles/variables.scss";
|
||||
@import "~@/styles/variables.module.scss";
|
||||
|
||||
.trials-wrapper {
|
||||
@include clearfix;
|
||||
|
@ -39,10 +39,10 @@ export default {
|
|||
.trials-container {
|
||||
padding: 10px;
|
||||
height: 100%;
|
||||
/deep/ .el-tag {
|
||||
::v-deep .el-tag {
|
||||
background-color: transparent;
|
||||
}
|
||||
/deep/ .el-tag--danger {
|
||||
::v-deep .el-tag--danger {
|
||||
color: #f56c6c;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -787,22 +787,22 @@ export default {
|
|||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
/deep/ .hidden-row{
|
||||
::v-deep .hidden-row{
|
||||
display: none;
|
||||
}
|
||||
/deep/ .el-dialog__body {
|
||||
::v-deep .el-dialog__body {
|
||||
padding: 15px 20px;
|
||||
}
|
||||
|
||||
/deep/ .el-tag--danger.el-tag--dark {
|
||||
::v-deep .el-tag--danger.el-tag--dark {
|
||||
// background-color: #f56c6c!important;
|
||||
border-color: none!important;
|
||||
// color: #fff!important;
|
||||
}
|
||||
/deep/ #TaskAllocationRuleList thead .el-checkbox__inner{
|
||||
::v-deep #TaskAllocationRuleList thead .el-checkbox__inner{
|
||||
display: none;
|
||||
}
|
||||
/deep/ .el-descriptions-item__label.has-colon:after{
|
||||
::v-deep .el-descriptions-item__label.has-colon:after{
|
||||
display: none;
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -60,7 +60,7 @@ export default {
|
|||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
/deep/ .el-collapse-item__header {
|
||||
::v-deep .el-collapse-item__header {
|
||||
background-color: #e9eef1;
|
||||
padding: 0 10px;
|
||||
}
|
||||
|
|
|
@ -936,14 +936,14 @@ export default {
|
|||
margin: 10px 0;
|
||||
}
|
||||
.disabled {
|
||||
/deep/ .el-upload--picture-card {
|
||||
::v-deep .el-upload--picture-card {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
/deep/ .el-upload-list__item {
|
||||
::v-deep .el-upload-list__item {
|
||||
transition: none !important;
|
||||
}
|
||||
/deep/ .el-upload-list__item-thumbnail {
|
||||
::v-deep .el-upload-list__item-thumbnail {
|
||||
/* 图片在方框内显示长边 */
|
||||
object-fit: scale-down !important;
|
||||
}
|
||||
|
|
|
@ -1642,22 +1642,22 @@ export default {
|
|||
color: #f56c6c;
|
||||
font-size: 10px;
|
||||
}
|
||||
/deep/ .hidden-row {
|
||||
::v-deep .hidden-row {
|
||||
display: none;
|
||||
}
|
||||
/deep/ .el-dialog__body {
|
||||
::v-deep .el-dialog__body {
|
||||
padding: 15px 20px;
|
||||
}
|
||||
|
||||
/deep/ .el-tag--danger.el-tag--dark {
|
||||
::v-deep .el-tag--danger.el-tag--dark {
|
||||
// background-color: #f56c6c!important;
|
||||
border-color: none !important;
|
||||
// color: #fff!important;
|
||||
}
|
||||
/deep/ #TaskAllocationRuleList thead .el-checkbox__inner {
|
||||
::v-deep #TaskAllocationRuleList thead .el-checkbox__inner {
|
||||
display: none;
|
||||
}
|
||||
/deep/ .el-descriptions-item__label.has-colon:after {
|
||||
::v-deep .el-descriptions-item__label.has-colon:after {
|
||||
display: none;
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -2793,12 +2793,12 @@ export default {
|
|||
|
||||
}
|
||||
.personal_config {
|
||||
/deep/ .el-tabs__content{
|
||||
::v-deep .el-tabs__content{
|
||||
height: 450px;
|
||||
overflow-y: auto;
|
||||
}
|
||||
}
|
||||
/deep/ .manuals-dialog-container{
|
||||
::v-deep .manuals-dialog-container{
|
||||
margin-top: 50px !important;
|
||||
width:75%;
|
||||
height:80%;
|
||||
|
@ -2810,7 +2810,7 @@ export default {
|
|||
position: relative;
|
||||
}
|
||||
}
|
||||
/deep/ .manuals-full-dialog-container{
|
||||
::v-deep .manuals-full-dialog-container{
|
||||
.el-dialog__body{
|
||||
padding: 10px;
|
||||
height: calc(100% - 50px) !important;
|
||||
|
@ -2827,23 +2827,23 @@ export default {
|
|||
background-color: #000000;
|
||||
}
|
||||
.series-table{
|
||||
/deep/.el-table{
|
||||
::v-deep.el-table{
|
||||
background-color: #1e1e1e !important;
|
||||
color: #dfdfdf;
|
||||
}
|
||||
/deep/.el-table td.el-table__cell, .el-table th.el-table__cell.is-leaf{
|
||||
::v-deep.el-table td.el-table__cell, .el-table th.el-table__cell.is-leaf{
|
||||
border-bottom: 1px solid #dfdfdf;
|
||||
}
|
||||
.el-table--border::after, .el-table--group::after, .el-table::before{
|
||||
background-color: #1e1e1e;
|
||||
}
|
||||
/deep/.el-table__header-wrapper{
|
||||
::v-deep.el-table__header-wrapper{
|
||||
th{
|
||||
background-color: #1e1e1e !important;
|
||||
color: #dfdfdf;
|
||||
}
|
||||
}
|
||||
/deep/.el-table__body-wrapper{
|
||||
::v-deep.el-table__body-wrapper{
|
||||
tr{
|
||||
background-color: #1e1e1e !important;
|
||||
color: #dfdfdf;
|
||||
|
@ -2852,7 +2852,7 @@ export default {
|
|||
background-color: #1e1e1e !important;
|
||||
}
|
||||
}
|
||||
/deep/.el-table__empty-block{
|
||||
::v-deep.el-table__empty-block{
|
||||
background-color: #1e1e1e !important;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -319,23 +319,23 @@ export default {
|
|||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.series-table{
|
||||
/deep/.el-table{
|
||||
::v-deep.el-table{
|
||||
background-color: #1e1e1e !important;
|
||||
color: #dfdfdf;
|
||||
}
|
||||
/deep/.el-table td.el-table__cell, .el-table th.el-table__cell.is-leaf{
|
||||
::v-deep.el-table td.el-table__cell, .el-table th.el-table__cell.is-leaf{
|
||||
border-bottom: 1px solid #dfdfdf;
|
||||
}
|
||||
.el-table--border::after, .el-table--group::after, .el-table::before{
|
||||
background-color: #1e1e1e;
|
||||
}
|
||||
/deep/.el-table__header-wrapper{
|
||||
::v-deep.el-table__header-wrapper{
|
||||
th{
|
||||
background-color: #1e1e1e !important;
|
||||
color: #dfdfdf;
|
||||
}
|
||||
}
|
||||
/deep/.el-table__body-wrapper{
|
||||
::v-deep.el-table__body-wrapper{
|
||||
tr{
|
||||
background-color: #1e1e1e !important;
|
||||
color: #dfdfdf;
|
||||
|
@ -344,7 +344,7 @@ export default {
|
|||
background-color: #1e1e1e !important;
|
||||
}
|
||||
}
|
||||
/deep/.el-table__empty-block{
|
||||
::v-deep.el-table__empty-block{
|
||||
background-color: #1e1e1e !important;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -346,6 +346,7 @@ import {
|
|||
// CONSTANTS,
|
||||
setVolumesForViewports,
|
||||
volumeLoader,
|
||||
resetInitialization,
|
||||
getRenderingEngine,
|
||||
eventTarget,
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
|
@ -385,7 +386,7 @@ import { mat4, vec3 } from 'gl-matrix'
|
|||
import html2canvas from 'html2canvas'
|
||||
// import vtkColorTransferFunction from '@kitware/vtk.js/Rendering/Core/ColorTransferFunction'
|
||||
// import vtkMath from '@kitware/vtk.js/Common/Core/Math'
|
||||
import CircleROITool from './tools/CircleROITool'
|
||||
// import CircleROITool from './tools/CircleROITool'
|
||||
// import ScaleOverlayTool from './tools/ScaleOverlayTool'
|
||||
const { registerColormap, getColormapNames, getColormap } = csUtils.colormap
|
||||
const {
|
||||
|
@ -394,15 +395,17 @@ const {
|
|||
WindowLevelTool,
|
||||
PanTool,
|
||||
ZoomTool,
|
||||
StackScrollMouseWheelTool,
|
||||
// StackScrollMouseWheelTool,
|
||||
StackScrollTool,
|
||||
synchronizers,
|
||||
MIPJumpToClickTool,
|
||||
VolumeRotateMouseWheelTool,
|
||||
// VolumeRotateMouseWheelTool,
|
||||
VolumeRotateTool,
|
||||
OrientationMarkerTool,
|
||||
// SynchronizerManager,
|
||||
// LengthTool,
|
||||
EllipticalROITool,
|
||||
// CircleROITool,
|
||||
CircleROITool,
|
||||
CrosshairsTool,
|
||||
TrackballRotateTool,
|
||||
ProbeTool,
|
||||
|
@ -634,9 +637,12 @@ export default {
|
|||
this.screenshotWindow.close()
|
||||
}
|
||||
cornerstoneTools.destroy()
|
||||
eventTarget.reset()
|
||||
cache.purgeCache()
|
||||
// eventTarget.reset()
|
||||
// cache.purgeCache()
|
||||
// renderingEngine.destroy()
|
||||
resetInitialization()
|
||||
renderingEngine.destroy()
|
||||
cache.purgeCache()
|
||||
imageLoader.unregisterAllImageLoaders()
|
||||
ToolGroupManager.destroyToolGroup('volume')
|
||||
FusionEvent.$off('getAnnotations')
|
||||
|
@ -953,8 +959,15 @@ export default {
|
|||
measureData.frame = 0
|
||||
measureData.data = annotation
|
||||
measureData.type = metadata.toolName
|
||||
measureData.suvMax = data.cachedStats[`volumeId:${ptVolumeId}`] && data.cachedStats[`volumeId:${ptVolumeId}`].max ? data.cachedStats[`volumeId:${ptVolumeId}`].max.toFixed(this.digitPlaces) : null
|
||||
measureData.modalityUnit = data.cachedStats[`volumeId:${ptVolumeId}`].modalityUnit
|
||||
let obj = null
|
||||
for (let key in data.cachedStats) {
|
||||
if (key.includes(`volumeId:${ptVolumeId}`)) {
|
||||
obj = data.cachedStats[key]
|
||||
break;
|
||||
}
|
||||
}
|
||||
measureData.suvMax = obj && obj.max ? obj.max.toFixed(this.digitPlaces) : null
|
||||
measureData.modalityUnit = obj.modalityUnit
|
||||
if (data.remark === 'Liver' || data.remark === 'Mediastinum') {
|
||||
this.$refs['questions'].setMeasuredData(measureData)
|
||||
this.isNonTargetMeasurement = false
|
||||
|
@ -1046,9 +1059,9 @@ export default {
|
|||
setUpToolGroups() {
|
||||
cornerstoneTools.addTool(WindowLevelTool)
|
||||
cornerstoneTools.addTool(ZoomTool)
|
||||
cornerstoneTools.addTool(StackScrollMouseWheelTool)
|
||||
cornerstoneTools.addTool(StackScrollTool)
|
||||
cornerstoneTools.addTool(MIPJumpToClickTool)
|
||||
cornerstoneTools.addTool(VolumeRotateMouseWheelTool)
|
||||
cornerstoneTools.addTool(VolumeRotateTool)
|
||||
cornerstoneTools.addTool(EllipticalROITool)
|
||||
cornerstoneTools.addTool(CircleROITool)
|
||||
cornerstoneTools.addTool(CrosshairsTool)
|
||||
|
@ -1070,7 +1083,7 @@ export default {
|
|||
toolGroups.forEach((toolGroup) => {
|
||||
toolGroup.addTool(PanTool.toolName)
|
||||
toolGroup.addTool(ZoomTool.toolName)
|
||||
toolGroup.addTool(StackScrollMouseWheelTool.toolName)
|
||||
toolGroup.addTool(StackScrollTool.toolName)
|
||||
toolGroup.addTool(EllipticalROITool.toolName)
|
||||
toolGroup.addTool(CircleROITool.toolName, {
|
||||
getTextLines: this.getTextLines
|
||||
|
@ -1083,7 +1096,7 @@ export default {
|
|||
|
||||
fusionToolGroup.addTool(PanTool.toolName)
|
||||
fusionToolGroup.addTool(ZoomTool.toolName)
|
||||
fusionToolGroup.addTool(StackScrollMouseWheelTool.toolName)
|
||||
fusionToolGroup.addTool(StackScrollTool.toolName)
|
||||
fusionToolGroup.addTool(EllipticalROITool.toolName, {
|
||||
volumeId: ptVolumeId
|
||||
})
|
||||
|
@ -1124,7 +1137,10 @@ export default {
|
|||
]
|
||||
})
|
||||
|
||||
toolGroup.setToolActive(StackScrollMouseWheelTool.toolName)
|
||||
// toolGroup.setToolActive(StackScrollTool.toolName)
|
||||
toolGroup.setToolActive(StackScrollTool.toolName, {
|
||||
bindings: [{ mouseButton: MouseBindings.Wheel }],
|
||||
});
|
||||
// toolGroup.setToolPassive(EllipticalROITool.toolName)
|
||||
if (this.readingTaskState === 2) {
|
||||
toolGroup.setToolEnabled(CircleROITool.toolName)
|
||||
|
@ -1189,7 +1205,10 @@ export default {
|
|||
mipToolGroup = ToolGroupManager.getToolGroup(mipToolGroupUID)
|
||||
}
|
||||
|
||||
mipToolGroup.addTool('VolumeRotateMouseWheel')
|
||||
mipToolGroup.addTool(VolumeRotateTool.toolName)
|
||||
mipToolGroup.setToolActive(VolumeRotateTool.toolName, {
|
||||
bindings: [{ mouseButton: MouseBindings.Wheel }],
|
||||
});
|
||||
mipToolGroup.addTool('MIPJumpToClickTool', {
|
||||
//
|
||||
toolGroupId: ptToolGroupId
|
||||
|
@ -1206,7 +1225,7 @@ export default {
|
|||
})
|
||||
// As the Stack Scroll mouse wheel is a tool using the `mouseWheelCallback`
|
||||
// hook instead of mouse buttons, it does not need to assign any mouse button.
|
||||
mipToolGroup.setToolActive('VolumeRotateMouseWheel')
|
||||
// mipToolGroup.setToolActive('VolumeRotateMouseWheel')
|
||||
// mipToolGroup.addTool(OrientationMarkerTool.toolName)
|
||||
// mipToolGroup.setToolActive(OrientationMarkerTool.toolName)
|
||||
mipToolGroup.addViewport(viewportIds.PETMIP.CORONAL, renderingEngineId)
|
||||
|
@ -1480,9 +1499,10 @@ export default {
|
|||
// Set the volumes to load
|
||||
this.ptVolume.load()
|
||||
this.ctVolume.load()
|
||||
const windowCenter = this.ctVolume.cornerstoneImageMetaData.windowCenter[0]
|
||||
const windowWidth = this.ctVolume.cornerstoneImageMetaData.windowWidth[0]
|
||||
setCtMappingRange(windowWidth, windowCenter)
|
||||
console.log(this.ctVolume.cornerstoneImageMetaData)
|
||||
// const windowCenter = this.ctVolume.cornerstoneImageMetaData.windowCenter[0]
|
||||
// const windowWidth = this.ctVolume.cornerstoneImageMetaData.windowWidth[0]
|
||||
// setCtMappingRange(windowWidth, windowCenter)
|
||||
// Set volumes on the viewports
|
||||
await setVolumesForViewports(
|
||||
renderingEngine,
|
||||
|
@ -2191,7 +2211,7 @@ export default {
|
|||
}
|
||||
},
|
||||
async receiveMsg(event) {
|
||||
console.log(event.data.type)
|
||||
// console.log(event.data.type)
|
||||
if (event.data.type === 'readingPageUpdate') {
|
||||
// this.$refs['questions'].initList()
|
||||
this.$refs['tableQuestions'].initList(true)
|
||||
|
@ -2250,7 +2270,7 @@ export default {
|
|||
height: 100%;
|
||||
background-color: #000;
|
||||
padding: 5px 2px;
|
||||
/deep/.el-dialog {
|
||||
::v-deep.el-dialog {
|
||||
background: #1e1e1e;
|
||||
border: 1px solid #ddd;
|
||||
color: #ddd;
|
||||
|
@ -2490,7 +2510,7 @@ export default {
|
|||
|
||||
}
|
||||
.colorBar{
|
||||
/deep/ .el-input--mini .el-input__inner{
|
||||
::v-deep .el-input--mini .el-input__inner{
|
||||
height: 25px;
|
||||
line-height: 25px;
|
||||
border: none;
|
||||
|
|
|
@ -507,7 +507,7 @@ export default {
|
|||
margin-bottom: 0px;
|
||||
}
|
||||
.disabled{
|
||||
/deep/ .el-upload--picture-card {
|
||||
::v-deep .el-upload--picture-card {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
@ -516,13 +516,13 @@ export default {
|
|||
flex-direction: column;
|
||||
align-items: flex-start;
|
||||
}
|
||||
/deep/ .el-input.is-disabled .el-input__inner{
|
||||
::v-deep .el-input.is-disabled .el-input__inner{
|
||||
background-color: #646464a1;
|
||||
}
|
||||
/deep/ .el-input-group__append, .el-input-group__prepend{
|
||||
::v-deep .el-input-group__append, .el-input-group__prepend{
|
||||
padding: 0 5px;
|
||||
}
|
||||
/deep/ .el-select.is-disabled .el-input__inner{
|
||||
::v-deep .el-select.is-disabled .el-input__inner{
|
||||
background-color: #646464a1;
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -761,30 +761,30 @@ export default {
|
|||
<style lang="scss" scoped>
|
||||
.ecrf-wrapper{
|
||||
|
||||
/deep/ .el-form-item__label{
|
||||
::v-deep .el-form-item__label{
|
||||
color: #c3c3c3;
|
||||
text-align: left;
|
||||
}
|
||||
/deep/ .el-input__inner{
|
||||
::v-deep .el-input__inner{
|
||||
background-color: transparent;
|
||||
color: #ddd;
|
||||
border: 1px solid #5e5e5e;
|
||||
}
|
||||
/deep/ .el-textarea__inner{
|
||||
::v-deep .el-textarea__inner{
|
||||
background-color: transparent;
|
||||
color: #ddd;
|
||||
border: 1px solid #5e5e5e;
|
||||
}
|
||||
/deep/ .el-form-item{
|
||||
::v-deep .el-form-item{
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: flex-start;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
/deep/ .el-form-item__content{
|
||||
::v-deep .el-form-item__content{
|
||||
flex: 1;
|
||||
}
|
||||
/deep/ .el-button--mini, .el-button--mini.is-round {
|
||||
::v-deep .el-button--mini, .el-button--mini.is-round {
|
||||
padding: 7px 10px;
|
||||
}
|
||||
.el-form-item__content
|
||||
|
|
|
@ -1055,34 +1055,34 @@ export default {
|
|||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.measurement-form{
|
||||
/deep/ .el-form-item__label{
|
||||
::v-deep .el-form-item__label{
|
||||
color: #c3c3c3;
|
||||
// text-align: left;
|
||||
}
|
||||
/deep/ .el-input .el-input__inner{
|
||||
::v-deep .el-input .el-input__inner{
|
||||
background-color: transparent;
|
||||
color: #ddd;
|
||||
border: 1px solid #5e5e5e;
|
||||
}
|
||||
/deep/ .el-form-item{
|
||||
::v-deep .el-form-item{
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: flex-start;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
/deep/ .el-form-item__content{
|
||||
::v-deep .el-form-item__content{
|
||||
flex: 1;
|
||||
}
|
||||
/deep/ .el-input.is-disabled .el-input__inner{
|
||||
::v-deep .el-input.is-disabled .el-input__inner{
|
||||
background-color: #646464a1;
|
||||
}
|
||||
/deep/ .el-input-group__append, .el-input-group__prepend{
|
||||
::v-deep .el-input-group__append, .el-input-group__prepend{
|
||||
padding: 0 10px;
|
||||
}
|
||||
/deep/ .el-select.is-disabled .el-input__inner{
|
||||
::v-deep .el-select.is-disabled .el-input__inner{
|
||||
background-color: #646464a1;
|
||||
}
|
||||
/deep/ .el-button--mini, .el-button--mini.is-round {
|
||||
::v-deep .el-button--mini, .el-button--mini.is-round {
|
||||
padding: 7px 10px;
|
||||
}
|
||||
.el-form-item__content
|
||||
|
@ -1090,7 +1090,7 @@ export default {
|
|||
width: 100%;
|
||||
}
|
||||
.input-width1{
|
||||
width: calc(100% -60px)!important;
|
||||
width: calc(100% - 60px)!important;
|
||||
}
|
||||
.input-width2{
|
||||
width: 100% !important;
|
||||
|
|
|
@ -855,12 +855,12 @@ export default {
|
|||
.el-collapse{
|
||||
border-bottom:none;
|
||||
border-top:none;
|
||||
/deep/ .el-collapse-item{
|
||||
::v-deep .el-collapse-item{
|
||||
background-color: #000!important;
|
||||
color: #ddd;
|
||||
|
||||
}
|
||||
/deep/ .el-collapse-item__header{
|
||||
::v-deep .el-collapse-item__header{
|
||||
background-color: #000!important;
|
||||
color: #ddd;
|
||||
border-bottom-color:#5a5a5a;
|
||||
|
@ -868,11 +868,11 @@ export default {
|
|||
height: 35px;
|
||||
line-height: 35px;
|
||||
}
|
||||
/deep/ .el-collapse-item__wrap{
|
||||
::v-deep .el-collapse-item__wrap{
|
||||
background-color: #000!important;
|
||||
color: #ddd;
|
||||
}
|
||||
/deep/ .el-collapse-item__content{
|
||||
::v-deep .el-collapse-item__content{
|
||||
width:260px;
|
||||
position: absolute;
|
||||
top: 0px;
|
||||
|
|
|
@ -200,7 +200,7 @@ export default {
|
|||
mounted() {
|
||||
const digitPlaces = parseInt(this.$route.query.digitPlaces)
|
||||
this.digitPlaces = digitPlaces === -1 ? 2 : digitPlaces
|
||||
// console.log(toolsUtilities)
|
||||
console.log(toolsUtilities)
|
||||
this.subjectCode = this.$route.query.subjectCode
|
||||
var element = document.getElementById(`viewport${this.index}`)
|
||||
|
||||
|
@ -346,7 +346,7 @@ export default {
|
|||
index[2] = Math.floor(index[2])
|
||||
this.mousePosition.index = index
|
||||
|
||||
this.mousePosition.value = this.getValue(this.volume, worldPoint)
|
||||
// this.mousePosition.value = this.getValue(this.volume, worldPoint)
|
||||
}
|
||||
},
|
||||
getValue(volume, worldPos) {
|
||||
|
@ -364,7 +364,7 @@ export default {
|
|||
|
||||
const yMultiple = dimensions[0]
|
||||
const zMultiple = dimensions[0] * dimensions[1]
|
||||
|
||||
// const scalarIndex = index[2] * zMultiple + index[1] * yMultiple + index[0];
|
||||
const value = scalarData[index[2] * zMultiple + index[1] * yMultiple + index[0]]
|
||||
|
||||
return value
|
||||
|
@ -492,7 +492,7 @@ export default {
|
|||
this.rotate(angle)
|
||||
this.rotateBarLeft = x
|
||||
},
|
||||
scroll(index) {
|
||||
async scroll(index) {
|
||||
renderingEngine = getRenderingEngine(this.renderingEngineId)
|
||||
viewport = renderingEngine.getViewport(this.viewportId)
|
||||
const actorEntries = viewport.getActors()
|
||||
|
@ -500,11 +500,14 @@ export default {
|
|||
if (!actorEntries) {
|
||||
return
|
||||
}
|
||||
const delta = index - this.seriesInfo.imageIdIndex
|
||||
toolsUtilities.scroll(viewport, {
|
||||
delta,
|
||||
volumeId: actorEntries.uid
|
||||
})
|
||||
// const delta = index - this.seriesInfo.imageIdIndex
|
||||
await utilities.jumpToSlice(viewport.element, {
|
||||
imageIndex: index,
|
||||
});
|
||||
// toolsUtilities.scroll(viewport, {
|
||||
// delta,
|
||||
// volumeId: actorEntries.uid
|
||||
// })
|
||||
renderingEngine.render()
|
||||
},
|
||||
rotateBarMouseup(e) {
|
||||
|
|
|
@ -70,30 +70,30 @@ export default {
|
|||
<style lang="scss" scoped>
|
||||
.ecrf-wrapper{
|
||||
|
||||
/deep/ .el-form-item__label{
|
||||
::v-deep .el-form-item__label{
|
||||
color: #c3c3c3;
|
||||
text-align: left;
|
||||
}
|
||||
/deep/ .el-input__inner{
|
||||
::v-deep .el-input__inner{
|
||||
background-color: transparent;
|
||||
color: #ddd;
|
||||
border: 1px solid #5e5e5e;
|
||||
}
|
||||
/deep/ .el-textarea__inner{
|
||||
::v-deep .el-textarea__inner{
|
||||
background-color: transparent;
|
||||
color: #ddd;
|
||||
border: 1px solid #5e5e5e;
|
||||
}
|
||||
/deep/ .el-form-item{
|
||||
::v-deep .el-form-item{
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: flex-start;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
/deep/ .el-form-item__content{
|
||||
::v-deep .el-form-item__content{
|
||||
flex: 1;
|
||||
}
|
||||
/deep/ .el-button--mini, .el-button--mini.is-round {
|
||||
::v-deep .el-button--mini, .el-button--mini.is-round {
|
||||
padding: 7px 10px;
|
||||
}
|
||||
.el-form-item__content
|
||||
|
|
|
@ -112,30 +112,30 @@ export default {
|
|||
<style lang="scss" scoped>
|
||||
.ecrf-wrapper{
|
||||
|
||||
/deep/ .el-form-item__label{
|
||||
::v-deep .el-form-item__label{
|
||||
color: #c3c3c3;
|
||||
text-align: left;
|
||||
}
|
||||
/deep/ .el-input__inner{
|
||||
::v-deep .el-input__inner{
|
||||
background-color: transparent;
|
||||
color: #ddd;
|
||||
border: 1px solid #5e5e5e;
|
||||
}
|
||||
/deep/ .el-textarea__inner{
|
||||
::v-deep .el-textarea__inner{
|
||||
background-color: transparent;
|
||||
color: #ddd;
|
||||
border: 1px solid #5e5e5e;
|
||||
}
|
||||
/deep/ .el-form-item{
|
||||
::v-deep .el-form-item{
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: flex-start;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
/deep/ .el-form-item__content{
|
||||
::v-deep .el-form-item__content{
|
||||
flex: 1;
|
||||
}
|
||||
/deep/ .el-button--mini, .el-button--mini.is-round {
|
||||
::v-deep .el-button--mini, .el-button--mini.is-round {
|
||||
padding: 7px 10px;
|
||||
}
|
||||
.el-form-item__content
|
||||
|
|
|
@ -272,7 +272,7 @@ export default {
|
|||
}
|
||||
.lesion_list{
|
||||
position: relative;
|
||||
/deep/ .el-table, .el-table__expanded-cell {
|
||||
::v-deep .el-table, .el-table__expanded-cell {
|
||||
background-color: #000;
|
||||
color: #fff;
|
||||
border-color:#444444;
|
||||
|
@ -293,25 +293,25 @@ export default {
|
|||
}
|
||||
|
||||
|
||||
/deep/ .el-table th, .el-table tr {
|
||||
::v-deep .el-table th, .el-table tr {
|
||||
background-color: #000;
|
||||
color: #fff;
|
||||
border-color:#444444;
|
||||
}
|
||||
/deep/ .el-table__body tr > td{
|
||||
::v-deep .el-table__body tr > td{
|
||||
background-color:#000 !important;
|
||||
color: #fff;
|
||||
border-color:#444444;
|
||||
}
|
||||
// /deep/ .el-table__body tr:hover > td{
|
||||
// ::v-deep .el-table__body tr:hover > td{
|
||||
// background-color:#858282 !important;
|
||||
// color: #fff;
|
||||
// border-color:#444444;
|
||||
// }
|
||||
/deep/ .el-table--border th.gutter:last-of-type{
|
||||
::v-deep .el-table--border th.gutter:last-of-type{
|
||||
border: none;
|
||||
}
|
||||
/deep/ .el-card__header{
|
||||
::v-deep .el-card__header{
|
||||
border: none;
|
||||
padding: 10px;
|
||||
}
|
||||
|
@ -319,12 +319,12 @@ export default {
|
|||
.el-collapse{
|
||||
border-bottom:none;
|
||||
border-top:none;
|
||||
/deep/ .el-collapse-item{
|
||||
::v-deep .el-collapse-item{
|
||||
background-color: #000!important;
|
||||
color: #ddd;
|
||||
|
||||
}
|
||||
/deep/ .el-collapse-item__header{
|
||||
::v-deep .el-collapse-item__header{
|
||||
background-color: #000!important;
|
||||
color: #ddd;
|
||||
border-bottom-color:#5a5a5a;
|
||||
|
@ -332,11 +332,11 @@ export default {
|
|||
height: 35px;
|
||||
line-height: 35px;
|
||||
}
|
||||
/deep/ .el-collapse-item__wrap{
|
||||
::v-deep .el-collapse-item__wrap{
|
||||
background-color: #000!important;
|
||||
color: #ddd;
|
||||
}
|
||||
/deep/ .el-collapse-item__content{
|
||||
::v-deep .el-collapse-item__content{
|
||||
width:260px;
|
||||
position: absolute;
|
||||
top: 0px;
|
||||
|
|
|
@ -492,7 +492,7 @@ export default {
|
|||
this.rotate(angle)
|
||||
this.rotateBarLeft = x
|
||||
},
|
||||
scroll(index) {
|
||||
async scroll(index) {
|
||||
renderingEngine = getRenderingEngine(this.renderingEngineId)
|
||||
viewport = renderingEngine.getViewport(this.viewportId)
|
||||
const actorEntries = viewport.getActors()
|
||||
|
@ -500,11 +500,14 @@ export default {
|
|||
if (!actorEntries) {
|
||||
return
|
||||
}
|
||||
const delta = index - this.seriesInfo.imageIdIndex
|
||||
toolsUtilities.scroll(viewport, {
|
||||
delta,
|
||||
volumeId: actorEntries.uid
|
||||
})
|
||||
// const delta = index - this.seriesInfo.imageIdIndex
|
||||
// toolsUtilities.scroll(viewport, {
|
||||
// delta,
|
||||
// volumeId: actorEntries.uid
|
||||
// })
|
||||
await utilities.jumpToSlice(viewport.element, {
|
||||
imageIndex: index,
|
||||
});
|
||||
renderingEngine.render()
|
||||
},
|
||||
rotateBarMouseup(e) {
|
||||
|
|
|
@ -1903,7 +1903,7 @@ export default {
|
|||
height: 100%;
|
||||
background-color: #000;
|
||||
padding: 5px 2px;
|
||||
/deep/.el-dialog {
|
||||
::v-deep.el-dialog {
|
||||
background: #1e1e1e;
|
||||
border: 1px solid #ddd;
|
||||
color: #ddd;
|
||||
|
@ -2143,7 +2143,7 @@ export default {
|
|||
|
||||
}
|
||||
.colorBar{
|
||||
/deep/ .el-input--mini .el-input__inner{
|
||||
::v-deep .el-input--mini .el-input__inner{
|
||||
height: 25px;
|
||||
line-height: 25px;
|
||||
border: none;
|
||||
|
|
|
@ -1,90 +1,234 @@
|
|||
import { Enums } from '@cornerstonejs/core'
|
||||
import { Enums, utilities } from '@cornerstonejs/core'
|
||||
|
||||
const { CalibrationTypes } = Enums
|
||||
const PIXEL_UNITS = 'px'
|
||||
const { CalibrationTypes } = Enums;
|
||||
const PIXEL_UNITS = 'px';
|
||||
const SUPPORTED_REGION_DATA_TYPES = [
|
||||
1, // Tissue
|
||||
2, // Color Flow
|
||||
3, // PW Spectral Doppler
|
||||
4, // CW Spectral Doppler
|
||||
];
|
||||
const SUPPORTED_LENGTH_VARIANT = [
|
||||
'3,3', // x: cm & y:cm
|
||||
'4,7', // x: seconds & y : cm/sec
|
||||
];
|
||||
const SUPPORTED_PROBE_VARIANT = [
|
||||
'4,3', // x: seconds & y : cm
|
||||
'4,7', // x: seconds & y : cm/sec
|
||||
];
|
||||
const UNIT_MAPPING = {
|
||||
0: 'px',
|
||||
1: 'percent',
|
||||
2: 'dB',
|
||||
3: 'cm',
|
||||
4: 'seconds',
|
||||
5: 'hertz',
|
||||
6: 'dB/seconds',
|
||||
7: 'cm/sec',
|
||||
8: 'cm\xb2',
|
||||
9: 'cm\xb2/s',
|
||||
0xc: 'degrees',
|
||||
};
|
||||
|
||||
/**
|
||||
* Extracts the length units and the type of calibration for those units
|
||||
* into the response. The length units will typically be either mm or px
|
||||
* while the calibration type can be any of a number of different calibraiton types.
|
||||
*
|
||||
* Volumetric images have no calibration type, so are just the raw mm.
|
||||
*
|
||||
* TODO: Handle region calibration
|
||||
*
|
||||
* @param handles - used to detect if the spacing information is different
|
||||
* between various points (eg angled ERMF or US Region).
|
||||
* Currently unused, but needed for correct US Region handling
|
||||
* @param image - to extract the calibration from
|
||||
* image.calibration - calibration value to extract units form
|
||||
* @returns String containing the units and type of calibration
|
||||
*/
|
||||
const getCalibratedLengthUnits = (handles, image) => {
|
||||
const { calibration, hasPixelSpacing } = image
|
||||
// Anachronistic - moving to using calibration consistently, but not completed yet
|
||||
const units = hasPixelSpacing ? 'mm' : PIXEL_UNITS
|
||||
if (!calibration || !calibration.type) {
|
||||
return units
|
||||
const EPS = 1e-3;
|
||||
const SQUARE = '\xb2';
|
||||
const getCalibratedLengthUnitsAndScale = (image, handles) => {
|
||||
const { calibration, hasPixelSpacing } = image;
|
||||
let unit = hasPixelSpacing ? 'mm' : PIXEL_UNITS;
|
||||
let areaUnit = unit + SQUARE;
|
||||
let scale = 1;
|
||||
let calibrationType = '';
|
||||
|
||||
if (
|
||||
!calibration ||
|
||||
(!calibration.type && !calibration.sequenceOfUltrasoundRegions)
|
||||
) {
|
||||
return { unit, areaUnit, scale };
|
||||
}
|
||||
|
||||
if (calibration.type === CalibrationTypes.UNCALIBRATED) {
|
||||
return PIXEL_UNITS
|
||||
return { unit: PIXEL_UNITS, areaUnit: PIXEL_UNITS + SQUARE, scale };
|
||||
}
|
||||
// TODO - handle US regions properly
|
||||
if (calibration.SequenceOfUltrasoundRegions) {
|
||||
return 'US Region'
|
||||
|
||||
if (calibration.sequenceOfUltrasoundRegions) {
|
||||
let imageIndex1, imageIndex2;
|
||||
if (Array.isArray(handles) && handles.length === 2) {
|
||||
[imageIndex1, imageIndex2] = handles;
|
||||
} else if (typeof handles === 'function') {
|
||||
const points = handles();
|
||||
imageIndex1 = points[0];
|
||||
imageIndex2 = points[1];
|
||||
}
|
||||
return `${units} ${calibration.type}`
|
||||
}
|
||||
|
||||
const SQUARE = '\xb2'
|
||||
/**
|
||||
* Extracts the area units, including the squared sign plus calibration type.
|
||||
*/
|
||||
const getCalibratedAreaUnits = (handles, image) => {
|
||||
const { calibration, hasPixelSpacing } = image
|
||||
const units = (hasPixelSpacing ? 'mm' : PIXEL_UNITS) + SQUARE
|
||||
if (!calibration || !calibration.type) {
|
||||
return units
|
||||
let regions = calibration.sequenceOfUltrasoundRegions.filter(
|
||||
(region) =>
|
||||
imageIndex1[0] >= region.regionLocationMinX0 &&
|
||||
imageIndex1[0] <= region.regionLocationMaxX1 &&
|
||||
imageIndex1[1] >= region.regionLocationMinY0 &&
|
||||
imageIndex1[1] <= region.regionLocationMaxY1 &&
|
||||
imageIndex2[0] >= region.regionLocationMinX0 &&
|
||||
imageIndex2[0] <= region.regionLocationMaxX1 &&
|
||||
imageIndex2[1] >= region.regionLocationMinY0 &&
|
||||
imageIndex2[1] <= region.regionLocationMaxY1
|
||||
);
|
||||
|
||||
// If we are not in a region at all we should show the underlying calibration
|
||||
// which might be the mm spacing for the image
|
||||
if (!regions?.length) {
|
||||
return { unit, areaUnit, scale };
|
||||
}
|
||||
if (calibration.SequenceOfUltrasoundRegions) {
|
||||
return 'US Region'
|
||||
|
||||
// if we are in a region then it is the question of whether we support it
|
||||
// or not. If we do not support it we should show px
|
||||
|
||||
regions = regions.filter(
|
||||
(region) =>
|
||||
SUPPORTED_REGION_DATA_TYPES.includes(region.regionDataType) &&
|
||||
SUPPORTED_LENGTH_VARIANT.includes(
|
||||
`${region.physicalUnitsXDirection},${region.physicalUnitsYDirection}`
|
||||
)
|
||||
);
|
||||
|
||||
if (!regions.length) {
|
||||
return {
|
||||
unit: PIXEL_UNITS,
|
||||
areaUnit: PIXEL_UNITS + SQUARE,
|
||||
scale,
|
||||
};
|
||||
}
|
||||
return `${units} ${calibration.type}`
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the scale divisor for converting from internal spacing to
|
||||
* image spacing for calibrated images.
|
||||
*/
|
||||
// Todo: expand on this logic
|
||||
const region = regions[0];
|
||||
|
||||
const getCalibratedScale = (image) => {
|
||||
let scale = null
|
||||
if (image.calibration && image.calibration.scale) {
|
||||
scale = image.calibration.scale
|
||||
const physicalDeltaX = Math.abs(region.physicalDeltaX);
|
||||
const physicalDeltaY = Math.abs(region.physicalDeltaY);
|
||||
|
||||
// if we are in a supported region then we should check if the
|
||||
// physicalDeltaX and physicalDeltaY are the same. If they are not
|
||||
// then we should show px again, but if they are the same then we should
|
||||
// show the units
|
||||
const isSamePhysicalDelta = utilities.isEqual(
|
||||
physicalDeltaX,
|
||||
physicalDeltaY,
|
||||
EPS
|
||||
);
|
||||
|
||||
if (isSamePhysicalDelta) {
|
||||
// 1 to 1 aspect ratio, we use just one of them
|
||||
scale = 1 / physicalDeltaX;
|
||||
calibrationType = 'US Region';
|
||||
unit = UNIT_MAPPING[region.physicalUnitsXDirection] || 'unknown';
|
||||
areaUnit = unit + SQUARE;
|
||||
} else {
|
||||
// here we are showing at the aspect ratio of the physical delta
|
||||
// if they are not the same, then we should show px, but the correct solution
|
||||
// is to grab each point separately and scale them individually
|
||||
// Todo: implement this
|
||||
return {
|
||||
unit: PIXEL_UNITS,
|
||||
areaUnit: PIXEL_UNITS + SQUARE,
|
||||
scale,
|
||||
};
|
||||
}
|
||||
return scale || 1
|
||||
}
|
||||
|
||||
/** Gets the aspect ratio of the screen display relative to the image
|
||||
* display in order to square up measurement values.
|
||||
* That is, suppose the spacing on the image is 1, 0.5 (x,y spacing)
|
||||
* This is displayed at 1, 1 spacing on screen, then the
|
||||
* aspect value will be 1/0.5 = 2
|
||||
*/
|
||||
|
||||
const getCalibratedAspect = (image) => {
|
||||
let aspect = null
|
||||
if (image.calibration && image.calibration.aspect) {
|
||||
aspect = image.calibration.aspect
|
||||
} else if (calibration.scale) {
|
||||
scale = calibration.scale;
|
||||
}
|
||||
return aspect || 1
|
||||
}
|
||||
|
||||
export default getCalibratedLengthUnits
|
||||
// everything except REGION/Uncalibrated
|
||||
const types = [
|
||||
CalibrationTypes.ERMF,
|
||||
CalibrationTypes.USER,
|
||||
CalibrationTypes.ERROR,
|
||||
CalibrationTypes.PROJECTION,
|
||||
];
|
||||
|
||||
if (types.includes(calibration?.type)) {
|
||||
calibrationType = calibration.type;
|
||||
}
|
||||
|
||||
return {
|
||||
unit: unit + (calibrationType ? ` ${calibrationType}` : ''),
|
||||
areaUnit: areaUnit + (calibrationType ? ` ${calibrationType}` : ''),
|
||||
scale,
|
||||
};
|
||||
};
|
||||
|
||||
const getCalibratedProbeUnitsAndValue = (image, handles) => {
|
||||
const [imageIndex] = handles;
|
||||
const { calibration } = image;
|
||||
let units = ['raw'];
|
||||
let values = [null];
|
||||
let calibrationType = '';
|
||||
|
||||
if (
|
||||
!calibration ||
|
||||
(!calibration.type && !calibration.sequenceOfUltrasoundRegions)
|
||||
) {
|
||||
return { units, values };
|
||||
// Todo: add support for other scenarios
|
||||
}
|
||||
|
||||
if (calibration.sequenceOfUltrasoundRegions) {
|
||||
// for Probe tool
|
||||
const supportedRegionsMetadata =
|
||||
calibration.sequenceOfUltrasoundRegions.filter(
|
||||
(region) =>
|
||||
SUPPORTED_REGION_DATA_TYPES.includes(region.regionDataType) &&
|
||||
SUPPORTED_PROBE_VARIANT.includes(
|
||||
`${region.physicalUnitsXDirection},${region.physicalUnitsYDirection}`
|
||||
)
|
||||
);
|
||||
|
||||
if (!supportedRegionsMetadata?.length) {
|
||||
return { units, values };
|
||||
}
|
||||
|
||||
const region = supportedRegionsMetadata.find(
|
||||
(region) =>
|
||||
imageIndex[0] >= region.regionLocationMinX0 &&
|
||||
imageIndex[0] <= region.regionLocationMaxX1 &&
|
||||
imageIndex[1] >= region.regionLocationMinY0 &&
|
||||
imageIndex[1] <= region.regionLocationMaxY1
|
||||
);
|
||||
|
||||
if (!region) {
|
||||
return { units, values };
|
||||
}
|
||||
|
||||
// Todo: I think this is a ok assumption for now that if the referencePixelX0 and referencePixelY0
|
||||
// are not defined, then we can assume 0 for them
|
||||
const { referencePixelX0 = 0, referencePixelY0 = 0 } = region;
|
||||
const { physicalDeltaX, physicalDeltaY } = region;
|
||||
|
||||
const yValue =
|
||||
(imageIndex[1] - region.regionLocationMinY0 - referencePixelY0) *
|
||||
physicalDeltaY;
|
||||
|
||||
const xValue =
|
||||
(imageIndex[0] - region.regionLocationMinX0 - referencePixelX0) *
|
||||
physicalDeltaX;
|
||||
|
||||
calibrationType = 'US Region';
|
||||
values = [xValue, yValue];
|
||||
units = [
|
||||
UNIT_MAPPING[region.physicalUnitsXDirection],
|
||||
UNIT_MAPPING[region.physicalUnitsYDirection],
|
||||
];
|
||||
}
|
||||
|
||||
return {
|
||||
units,
|
||||
values,
|
||||
calibrationType,
|
||||
};
|
||||
};
|
||||
|
||||
const getCalibratedAspect = (image) => image.calibration?.aspect || 1;
|
||||
|
||||
// export default getCalibratedLengthUnits
|
||||
|
||||
export {
|
||||
getCalibratedAreaUnits,
|
||||
getCalibratedLengthUnits,
|
||||
getCalibratedScale,
|
||||
getCalibratedAspect
|
||||
getCalibratedLengthUnitsAndScale,
|
||||
getCalibratedAspect,
|
||||
getCalibratedProbeUnitsAndValue,
|
||||
}
|
||||
|
|
|
@ -0,0 +1,55 @@
|
|||
import { metaData } from '@cornerstonejs/core';
|
||||
|
||||
|
||||
/**
|
||||
* Determines the appropriate pixel value units based on the image modality and options.
|
||||
* @param modality - The modality of the image (e.g., 'CT', 'PT').
|
||||
* @param imageId - The unique identifier for the image.
|
||||
* @param options - Additional options for determining pixel units.
|
||||
* @returns The appropriate pixel value units as a string.
|
||||
*/
|
||||
function getPixelValueUnits(
|
||||
modality,
|
||||
imageId,
|
||||
options
|
||||
) {
|
||||
if (modality === 'CT') {
|
||||
return 'HU';
|
||||
} else if (modality === 'PT') {
|
||||
return _handlePTModality(imageId, options);
|
||||
} else {
|
||||
return '';
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Handles the determination of pixel value units for PT (Positron Emission Tomography) modality.
|
||||
* @param imageId - The unique identifier for the image.
|
||||
* @param options - Additional options for determining pixel units.
|
||||
* @returns The appropriate pixel value units for PT modality as a string.
|
||||
*/
|
||||
function _handlePTModality(
|
||||
imageId,
|
||||
options
|
||||
) {
|
||||
if (!options.isPreScaled) {
|
||||
return 'raw';
|
||||
}
|
||||
|
||||
if (options.isSuvScaled) {
|
||||
return 'SUV';
|
||||
}
|
||||
|
||||
const generalSeriesModule = metaData.get('generalSeriesModule', imageId);
|
||||
|
||||
// It might be possible that the reference ImageId is not the one
|
||||
// that is being displayed. So we need to get the modality from imageId again
|
||||
if (generalSeriesModule?.modality === 'PT') {
|
||||
const petSeriesModule = metaData.get('petSeriesModule', imageId);
|
||||
return petSeriesModule?.units || 'unitless';
|
||||
}
|
||||
|
||||
return 'unknown';
|
||||
}
|
||||
|
||||
export { getPixelValueUnits };
|
|
@ -1,14 +1,27 @@
|
|||
import initProviders from './initProviders'
|
||||
import initCornerstoneDICOMImageLoader from './initCornerstoneDICOMImageLoader'
|
||||
// import initCornerstoneDICOMImageLoader from './initCornerstoneDICOMImageLoader'
|
||||
import initVolumeLoader from './initVolumeLoader'
|
||||
import { init as csRenderInit } from '@cornerstonejs/core'
|
||||
import { init as csToolsInit } from '@cornerstonejs/tools'
|
||||
import {
|
||||
init as csRenderInit,
|
||||
imageLoader,
|
||||
volumeLoader,
|
||||
metaData,
|
||||
} from '@cornerstonejs/core';
|
||||
import * as cornerstoneTools from '@cornerstonejs/tools';
|
||||
import * as cornerstone from '@cornerstonejs/core';
|
||||
import { init as csToolsInit } from '@cornerstonejs/tools';
|
||||
import cornerstoneDICOMImageLoader from '@cornerstonejs/dicom-image-loader';
|
||||
|
||||
window.cornerstone = cornerstone;
|
||||
window.cornerstoneTools = cornerstoneTools;
|
||||
export default async function initLibraries() {
|
||||
initProviders()
|
||||
initCornerstoneDICOMImageLoader()
|
||||
initVolumeLoader()
|
||||
await csRenderInit()
|
||||
await csToolsInit()
|
||||
initProviders();
|
||||
cornerstoneDICOMImageLoader.init();
|
||||
initVolumeLoader();
|
||||
await csRenderInit({
|
||||
// peerImport,
|
||||
// ...(config?.core ? config.core : {}),
|
||||
});
|
||||
await csToolsInit();
|
||||
}
|
||||
|
||||
|
|
|
@ -1,19 +1,14 @@
|
|||
import { volumeLoader } from '@cornerstonejs/core'
|
||||
import {
|
||||
cornerstoneStreamingImageVolumeLoader,
|
||||
cornerstoneStreamingDynamicImageVolumeLoader
|
||||
} from '@cornerstonejs/streaming-image-volume-loader'
|
||||
volumeLoader,
|
||||
cornerstoneStreamingImageVolumeLoader
|
||||
} from '@cornerstonejs/core';
|
||||
|
||||
export default function initVolumeLoader() {
|
||||
volumeLoader.registerUnknownVolumeLoader(
|
||||
cornerstoneStreamingImageVolumeLoader
|
||||
)
|
||||
);
|
||||
volumeLoader.registerVolumeLoader(
|
||||
'cornerstoneStreamingImageVolume',
|
||||
cornerstoneStreamingImageVolumeLoader
|
||||
)
|
||||
volumeLoader.registerVolumeLoader(
|
||||
'cornerstoneStreamingDynamicImageVolume',
|
||||
cornerstoneStreamingDynamicImageVolumeLoader
|
||||
)
|
||||
);
|
||||
}
|
||||
|
|
|
@ -25,20 +25,12 @@ const { isAnnotationLocked } = annotation.locking
|
|||
const drawHandlesSvg = drawing.drawHandles
|
||||
const drawCircleSvg = drawing.drawCircle
|
||||
const drawLinkedTextBoxSvg = drawing.drawLinkedTextBox
|
||||
const { triggerAnnotationRenderForViewportIds } = utilities
|
||||
const { triggerAnnotationRenderForViewportIds, } = utilities
|
||||
const { getTextBoxCoordsCanvas } = utilities.drawing
|
||||
const { getViewportIdsWithToolToRender } = utilities.viewportFilters
|
||||
// const getCanvasCircleRadius
|
||||
// const getCanvasCircleCorners
|
||||
// const { getCanvasCircleRadius, getCanvasCircleCorners } = utilities.math.circle
|
||||
import {
|
||||
getCalibratedLengthUnits,
|
||||
getCalibratedAreaUnits,
|
||||
getCalibratedScale,
|
||||
getCalibratedAspect
|
||||
getCalibratedAspect, getCalibratedLengthUnitsAndScale
|
||||
} from './../js/getCalibratedUnits'
|
||||
import { getModalityUnit } from './../js/getModalityUnit'
|
||||
import { pointInShapeCallback } from './../js/pointInShapeCallback'
|
||||
import { vec3 } from 'gl-matrix'
|
||||
class CircleROITool extends cornerstoneTools.CircleROITool {
|
||||
static toolName;
|
||||
|
@ -114,7 +106,8 @@ class CircleROITool extends cornerstoneTools.CircleROITool {
|
|||
viewPlaneNormal: [...viewPlaneNormal],
|
||||
viewUp: [...viewUp],
|
||||
FrameOfReferenceUID,
|
||||
referencedImageId
|
||||
referencedImageId,
|
||||
...viewport.getViewReference({ points: [worldPos] }),
|
||||
},
|
||||
data: {
|
||||
label: '',
|
||||
|
@ -126,15 +119,15 @@ class CircleROITool extends cornerstoneTools.CircleROITool {
|
|||
topLeft: [0, 0, 0],
|
||||
topRight: [0, 0, 0],
|
||||
bottomLeft: [0, 0, 0],
|
||||
bottomRight: [0, 0, 0]
|
||||
}
|
||||
bottomRight: [0, 0, 0],
|
||||
},
|
||||
},
|
||||
points: [[...worldPos], [...worldPos]],
|
||||
activeHandleIndex: 1
|
||||
activeHandleIndex: null,
|
||||
},
|
||||
cachedStats: {}
|
||||
}
|
||||
}
|
||||
cachedStats: {},
|
||||
},
|
||||
};
|
||||
addAnnotation(annotation, element)
|
||||
|
||||
const viewportIdsToRender = getViewportIdsWithToolToRender(
|
||||
|
@ -193,17 +186,21 @@ class CircleROITool extends cornerstoneTools.CircleROITool {
|
|||
const { annotationUID, data } = annotation
|
||||
const { handles } = data
|
||||
// const { points, activeHandleIndex } = handles
|
||||
const { points } = handles
|
||||
var activeHandleIndex = null
|
||||
if (annotation.highlighted && !annotation.isLocked && annotation.isVisible) {
|
||||
activeHandleIndex = 1
|
||||
}
|
||||
const { points, activeHandleIndex } = handles
|
||||
// var activeHandleIndex = null
|
||||
// if (annotation.highlighted && !annotation.isLocked && annotation.isVisible) {
|
||||
// activeHandleIndex = 1
|
||||
// }
|
||||
|
||||
styleSpecifier.annotationUID = annotationUID
|
||||
const { color, lineWidth, lineDash } = this.getAnnotationStyle({
|
||||
annotation,
|
||||
styleSpecifier,
|
||||
});
|
||||
|
||||
const lineWidth = this.getStyle('lineWidth', styleSpecifier, annotation)
|
||||
const lineDash = this.getStyle('lineDash', styleSpecifier, annotation)
|
||||
const color = this.getStyle('color', styleSpecifier, annotation)
|
||||
// const lineWidth = this.getStyle('lineWidth', styleSpecifier, annotation)
|
||||
// const lineDash = this.getStyle('lineDash', styleSpecifier, annotation)
|
||||
// const color = this.getStyle('color', styleSpecifier, annotation)
|
||||
|
||||
const canvasCoordinates = points.map((p) =>
|
||||
viewport.worldToCanvas(p)
|
||||
|
@ -214,15 +211,15 @@ class CircleROITool extends cornerstoneTools.CircleROITool {
|
|||
|
||||
const { centerPointRadius } = this.configuration
|
||||
|
||||
const modalityUnitOptions = {
|
||||
isPreScaled: utilities.viewport.isViewportPreScaled(viewport, targetId),
|
||||
// const modalityUnitOptions = {
|
||||
// isPreScaled: utilities.viewport.isViewportPreScaled(viewport, targetId),
|
||||
|
||||
isSuvScaled: this.isSuvScaled(
|
||||
viewport,
|
||||
targetId,
|
||||
annotation.metadata.referencedImageId
|
||||
)
|
||||
}
|
||||
// isSuvScaled: this.isSuvScaled(
|
||||
// viewport,
|
||||
// targetId,
|
||||
// annotation.metadata.referencedImageId
|
||||
// )
|
||||
// }
|
||||
|
||||
// If cachedStats does not exist, or the unit is missing (as part of import/hydration etc.),
|
||||
// force to recalculate the stats from the points
|
||||
|
@ -246,7 +243,7 @@ class CircleROITool extends cornerstoneTools.CircleROITool {
|
|||
viewport,
|
||||
renderingEngine,
|
||||
enabledElement,
|
||||
modalityUnitOptions
|
||||
// modalityUnitOptions
|
||||
)
|
||||
} else if (annotation.invalidated) {
|
||||
this._throttledCalculateCachedStats(
|
||||
|
@ -254,7 +251,7 @@ class CircleROITool extends cornerstoneTools.CircleROITool {
|
|||
viewport,
|
||||
renderingEngine,
|
||||
enabledElement,
|
||||
modalityUnitOptions
|
||||
// modalityUnitOptions
|
||||
)
|
||||
|
||||
// If the invalidated data is as a result of volumeViewport manipulation
|
||||
|
@ -424,155 +421,164 @@ class CircleROITool extends cornerstoneTools.CircleROITool {
|
|||
annotation,
|
||||
viewport,
|
||||
renderingEngine,
|
||||
enabledElement,
|
||||
modalityUnitOptions
|
||||
enabledElement
|
||||
) => {
|
||||
const data = annotation.data
|
||||
const { viewportId, renderingEngineId } = enabledElement
|
||||
const data = annotation.data;
|
||||
const { element } = viewport;
|
||||
|
||||
const { points } = data.handles
|
||||
const { points } = data.handles;
|
||||
|
||||
const canvasCoordinates = points.map((p) => viewport.worldToCanvas(p))
|
||||
const { viewPlaneNormal, viewUp } = viewport.getCamera()
|
||||
const canvasCoordinates = points.map((p) => viewport.worldToCanvas(p));
|
||||
const { viewPlaneNormal, viewUp } = viewport.getCamera();
|
||||
|
||||
const [topLeftCanvas, bottomRightCanvas] = (
|
||||
getCanvasCircleCorners(canvasCoordinates)
|
||||
)
|
||||
);
|
||||
|
||||
const topLeftWorld = viewport.canvasToWorld(topLeftCanvas)
|
||||
const bottomRightWorld = viewport.canvasToWorld(bottomRightCanvas)
|
||||
const { cachedStats } = data
|
||||
const topLeftWorld = viewport.canvasToWorld(topLeftCanvas);
|
||||
const bottomRightWorld = viewport.canvasToWorld(bottomRightCanvas);
|
||||
const { cachedStats } = data;
|
||||
|
||||
const targetIds = Object.keys(cachedStats);
|
||||
const worldPos1 = topLeftWorld;
|
||||
const worldPos2 = bottomRightWorld;
|
||||
|
||||
const targetIds = Object.keys(cachedStats)
|
||||
const worldPos1 = topLeftWorld
|
||||
const worldPos2 = bottomRightWorld
|
||||
for (let i = 0; i < targetIds.length; i++) {
|
||||
const targetId = targetIds[i]
|
||||
const targetId = targetIds[i];
|
||||
|
||||
const image = this.getTargetIdImage(targetId, renderingEngine)
|
||||
const image = this.getTargetImageData(targetId);
|
||||
|
||||
// If image does not exists for the targetId, skip. This can be due
|
||||
// to various reasons such as if the target was a volumeViewport, and
|
||||
// the volumeViewport has been decached in the meantime.
|
||||
if (!image) {
|
||||
continue
|
||||
continue;
|
||||
}
|
||||
|
||||
const { dimensions, imageData, metadata } = image
|
||||
const { dimensions, imageData, metadata, voxelManager } = image;
|
||||
|
||||
const worldPos1Index = transformWorldToIndex(imageData, worldPos1)
|
||||
const pos1Index = transformWorldToIndex(imageData, worldPos1);
|
||||
|
||||
worldPos1Index[0] = Math.floor(worldPos1Index[0])
|
||||
worldPos1Index[1] = Math.floor(worldPos1Index[1])
|
||||
worldPos1Index[2] = Math.floor(worldPos1Index[2])
|
||||
pos1Index[0] = Math.floor(pos1Index[0]);
|
||||
pos1Index[1] = Math.floor(pos1Index[1]);
|
||||
pos1Index[2] = Math.floor(pos1Index[2]);
|
||||
|
||||
const worldPos2Index = transformWorldToIndex(imageData, worldPos2)
|
||||
const pos2Index = transformWorldToIndex(imageData, worldPos2);
|
||||
|
||||
worldPos2Index[0] = Math.floor(worldPos2Index[0])
|
||||
worldPos2Index[1] = Math.floor(worldPos2Index[1])
|
||||
worldPos2Index[2] = Math.floor(worldPos2Index[2])
|
||||
pos2Index[0] = Math.floor(pos2Index[0]);
|
||||
pos2Index[1] = Math.floor(pos2Index[1]);
|
||||
pos2Index[2] = Math.floor(pos2Index[2]);
|
||||
|
||||
// Check if one of the indexes are inside the volume, this then gives us
|
||||
// Some area to do stats over.
|
||||
|
||||
if (this._isInsideVolume(worldPos1Index, worldPos2Index, dimensions)) {
|
||||
const iMin = Math.min(worldPos1Index[0], worldPos2Index[0])
|
||||
const iMax = Math.max(worldPos1Index[0], worldPos2Index[0])
|
||||
if (this._isInsideVolume(pos1Index, pos2Index, dimensions)) {
|
||||
const iMin = Math.min(pos1Index[0], pos2Index[0]);
|
||||
const iMax = Math.max(pos1Index[0], pos2Index[0]);
|
||||
|
||||
const jMin = Math.min(worldPos1Index[1], worldPos2Index[1])
|
||||
const jMax = Math.max(worldPos1Index[1], worldPos2Index[1])
|
||||
const jMin = Math.min(pos1Index[1], pos2Index[1]);
|
||||
const jMax = Math.max(pos1Index[1], pos2Index[1]);
|
||||
|
||||
const kMin = Math.min(worldPos1Index[2], worldPos2Index[2])
|
||||
const kMax = Math.max(worldPos1Index[2], worldPos2Index[2])
|
||||
const kMin = Math.min(pos1Index[2], pos2Index[2]);
|
||||
const kMax = Math.max(pos1Index[2], pos2Index[2]);
|
||||
|
||||
const boundsIJK = [
|
||||
[iMin, iMax],
|
||||
[jMin, jMax],
|
||||
[kMin, kMax]
|
||||
]
|
||||
[kMin, kMax],
|
||||
];
|
||||
|
||||
const center = [
|
||||
(topLeftWorld[0] + bottomRightWorld[0]) / 2,
|
||||
(topLeftWorld[1] + bottomRightWorld[1]) / 2,
|
||||
(topLeftWorld[2] + bottomRightWorld[2]) / 2
|
||||
]
|
||||
(topLeftWorld[2] + bottomRightWorld[2]) / 2,
|
||||
];
|
||||
|
||||
const ellipseObj = {
|
||||
center,
|
||||
xRadius: Math.abs(topLeftWorld[0] - bottomRightWorld[0]) / 2,
|
||||
yRadius: Math.abs(topLeftWorld[1] - bottomRightWorld[1]) / 2,
|
||||
zRadius: Math.abs(topLeftWorld[2] - bottomRightWorld[2]) / 2
|
||||
}
|
||||
zRadius: Math.abs(topLeftWorld[2] - bottomRightWorld[2]) / 2,
|
||||
};
|
||||
|
||||
const { worldWidth, worldHeight } = getWorldWidthAndHeightFromTwoPoints(
|
||||
viewPlaneNormal,
|
||||
viewUp,
|
||||
worldPos1,
|
||||
worldPos2
|
||||
)
|
||||
const isEmptyArea = worldWidth === 0 && worldHeight === 0
|
||||
const scale = getCalibratedScale(image)
|
||||
const aspect = getCalibratedAspect(image)
|
||||
);
|
||||
const isEmptyArea = worldWidth === 0 && worldHeight === 0;
|
||||
const handles = [pos1Index, pos2Index];
|
||||
const { scale, unit, areaUnit } = getCalibratedLengthUnitsAndScale(
|
||||
image,
|
||||
handles
|
||||
);
|
||||
const aspect = getCalibratedAspect(image);
|
||||
const area = Math.abs(
|
||||
Math.PI *
|
||||
(worldWidth / scale / 2) *
|
||||
(worldHeight / aspect / scale / 2)
|
||||
)
|
||||
);
|
||||
|
||||
const modalityUnit = getModalityUnit(
|
||||
const pixelUnitsOptions = {
|
||||
isPreScaled: isViewportPreScaled(viewport, targetId),
|
||||
isSuvScaled: this.isSuvScaled(
|
||||
viewport,
|
||||
targetId,
|
||||
annotation.metadata.referencedImageId
|
||||
),
|
||||
};
|
||||
|
||||
const modalityUnit = getPixelValueUnits(
|
||||
metadata.Modality,
|
||||
annotation.metadata.referencedImageId,
|
||||
modalityUnitOptions
|
||||
)
|
||||
const pointsInShape = pointInShapeCallback(
|
||||
imageData,
|
||||
(pointLPS, pointIJK) => pointInEllipse(ellipseObj, pointLPS),
|
||||
this.configuration.statsCalculator.statsCallback,
|
||||
boundsIJK
|
||||
)
|
||||
pixelUnitsOptions
|
||||
);
|
||||
|
||||
const stats = this.configuration.statsCalculator.getStatistics()
|
||||
const pointsInShape = voxelManager.forEach(
|
||||
this.configuration.statsCalculator.statsCallback,
|
||||
{
|
||||
isInObject: (pointLPS) =>
|
||||
pointInEllipse(ellipseObj, pointLPS, { fast: true }),
|
||||
boundsIJK,
|
||||
imageData,
|
||||
returnPoints: this.configuration.storePointData,
|
||||
}
|
||||
);
|
||||
|
||||
const stats = this.configuration.statsCalculator.getStatistics();
|
||||
|
||||
cachedStats[targetId] = {
|
||||
Modality: metadata.Modality,
|
||||
area,
|
||||
mean: stats[1] && stats[1].value ? stats[1].value : null,
|
||||
max: stats[0] && stats[0].value ? stats[0].value : null,
|
||||
stdDev: stats[2] && stats[2].value ? stats[2].value : null,
|
||||
statsArray: stats,
|
||||
pointsInShape: pointsInShape,
|
||||
mean: stats.mean?.value,
|
||||
max: stats.max?.value,
|
||||
pointsInShape,
|
||||
stdDev: stats.stdDev?.value,
|
||||
statsArray: stats.array,
|
||||
isEmptyArea,
|
||||
areaUnit: getCalibratedAreaUnits(null, image),
|
||||
areaUnit,
|
||||
radius: worldWidth / 2 / scale,
|
||||
radiusUnit: getCalibratedLengthUnits(null, image),
|
||||
radiusUnit: unit,
|
||||
perimeter: (2 * Math.PI * (worldWidth / 2)) / scale,
|
||||
modalityUnit
|
||||
}
|
||||
annotation.isHandleOutsideImage = false
|
||||
modalityUnit,
|
||||
};
|
||||
} else {
|
||||
this.isHandleOutsideImage = true
|
||||
this.isHandleOutsideImage = true;
|
||||
|
||||
cachedStats[targetId] = {
|
||||
Modality: metadata.Modality,
|
||||
areaUnit: getCalibratedAreaUnits(null, image)
|
||||
}
|
||||
annotation.isHandleOutsideImage = true
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
annotation.invalidated = false
|
||||
annotation.invalidated = false;
|
||||
|
||||
// Dispatching annotation modified
|
||||
const eventType = Enums.Events.ANNOTATION_MODIFIED
|
||||
triggerAnnotationModified(annotation, element);
|
||||
|
||||
const eventDetail = {
|
||||
annotation,
|
||||
viewportId,
|
||||
renderingEngineId
|
||||
}
|
||||
triggerEvent(eventTarget, eventType, eventDetail)
|
||||
|
||||
return cachedStats
|
||||
}
|
||||
return cachedStats;
|
||||
};
|
||||
}
|
||||
|
||||
function getCanvasCircleCorners(
|
||||
|
|
|
@ -2168,29 +2168,29 @@ export default {
|
|||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.measurement-form{
|
||||
/deep/ .el-form-item__label{
|
||||
::v-deep .el-form-item__label{
|
||||
color: #c3c3c3;
|
||||
}
|
||||
/deep/ .el-input .el-input__inner{
|
||||
::v-deep .el-input .el-input__inner{
|
||||
background-color: transparent;
|
||||
color: #ddd;
|
||||
border: 1px solid #5e5e5e;
|
||||
}
|
||||
/deep/ .el-form-item{
|
||||
::v-deep .el-form-item{
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: flex-start;
|
||||
}
|
||||
/deep/ .el-form-item__content{
|
||||
::v-deep .el-form-item__content{
|
||||
flex: 1;
|
||||
}
|
||||
/deep/ .el-input.is-disabled .el-input__inner{
|
||||
::v-deep .el-input.is-disabled .el-input__inner{
|
||||
background-color: #646464a1;
|
||||
}
|
||||
/deep/ .el-select.is-disabled .el-input__inner{
|
||||
::v-deep .el-select.is-disabled .el-input__inner{
|
||||
background-color: #646464a1;
|
||||
}
|
||||
/deep/ .el-button--mini, .el-button--mini.is-round {
|
||||
::v-deep .el-button--mini, .el-button--mini.is-round {
|
||||
padding: 7px 10px;
|
||||
}
|
||||
.el-form-item__content
|
||||
|
@ -2198,7 +2198,7 @@ export default {
|
|||
width: 100%;
|
||||
}
|
||||
.input-width1{
|
||||
width: calc(100% -60px)!important;
|
||||
width: calc(100% - 60px)!important;
|
||||
}
|
||||
.input-width2{
|
||||
width: 100% !important;
|
||||
|
|
|
@ -1233,12 +1233,12 @@ export default {
|
|||
.el-collapse{
|
||||
border-bottom:none;
|
||||
border-top:none;
|
||||
/deep/ .el-collapse-item{
|
||||
::v-deep .el-collapse-item{
|
||||
background-color: #000!important;
|
||||
color: #ddd;
|
||||
|
||||
}
|
||||
/deep/ .el-collapse-item__header{
|
||||
::v-deep .el-collapse-item__header{
|
||||
background-color: #000!important;
|
||||
color: #ddd;
|
||||
border-bottom-color:#5a5a5a;
|
||||
|
@ -1246,11 +1246,11 @@ export default {
|
|||
height: 35px;
|
||||
line-height: 35px;
|
||||
}
|
||||
/deep/ .el-collapse-item__wrap{
|
||||
::v-deep .el-collapse-item__wrap{
|
||||
background-color: #000!important;
|
||||
color: #ddd;
|
||||
}
|
||||
/deep/ .el-collapse-item__content{
|
||||
::v-deep .el-collapse-item__content{
|
||||
width:260px;
|
||||
position: absolute;
|
||||
top: 0px;
|
||||
|
|
|
@ -782,32 +782,32 @@ export default {
|
|||
}
|
||||
.lesion_list{
|
||||
position: relative;
|
||||
/deep/ .el-form-item__label{
|
||||
::v-deep .el-form-item__label{
|
||||
color: #c3c3c3;
|
||||
text-align: left;
|
||||
}
|
||||
/deep/ .el-input .el-input__inner{
|
||||
::v-deep .el-input .el-input__inner{
|
||||
background-color: transparent;
|
||||
color: #ddd;
|
||||
border: 1px solid #5e5e5e;
|
||||
}
|
||||
/deep/ .el-textarea__inner{
|
||||
::v-deep .el-textarea__inner{
|
||||
background-color: transparent;
|
||||
color: #ddd;
|
||||
border: 1px solid #5e5e5e;
|
||||
}
|
||||
/deep/ .el-form-item{
|
||||
::v-deep .el-form-item{
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: flex-start;
|
||||
}
|
||||
/deep/ .el-form-item__content{
|
||||
::v-deep .el-form-item__content{
|
||||
flex: 1;
|
||||
}
|
||||
/deep/ .el-input.is-disabled .el-input__inner{
|
||||
::v-deep .el-input.is-disabled .el-input__inner{
|
||||
background-color: #646464a1;
|
||||
}
|
||||
/deep/ .el-select.is-disabled .el-input__inner{
|
||||
::v-deep .el-select.is-disabled .el-input__inner{
|
||||
background-color: #646464a1;
|
||||
}
|
||||
|
||||
|
@ -825,48 +825,48 @@ export default {
|
|||
border-radius: 10px;
|
||||
background: #d0d0d0;
|
||||
}
|
||||
/deep/ .el-table,
|
||||
::v-deep .el-table,
|
||||
.el-table__expanded-cell {
|
||||
background-color: #000;
|
||||
color: #fff;
|
||||
border-color: #444444;
|
||||
}
|
||||
/deep/ .el-table th,
|
||||
::v-deep .el-table th,
|
||||
.el-table tr {
|
||||
background-color: #000;
|
||||
color: #fff;
|
||||
border-color: #444444;
|
||||
}
|
||||
/deep/ .el-table__body tr > td {
|
||||
::v-deep .el-table__body tr > td {
|
||||
background-color: #000 !important;
|
||||
color: #fff;
|
||||
border-color: #444444;
|
||||
}
|
||||
/deep/ .el-table__body tr:hover > td {
|
||||
::v-deep .el-table__body tr:hover > td {
|
||||
background-color: #858282 !important;
|
||||
color: #fff;
|
||||
border-color: #444444;
|
||||
}
|
||||
/deep/ .el-table--border th.gutter:last-of-type {
|
||||
::v-deep .el-table--border th.gutter:last-of-type {
|
||||
border: none;
|
||||
}
|
||||
/deep/ .el-table__fixed-right {
|
||||
::v-deep .el-table__fixed-right {
|
||||
height: 100% !important;
|
||||
}
|
||||
// /deep/ .el-table .cell {
|
||||
// ::v-deep .el-table .cell {
|
||||
// line-height: 20px;
|
||||
// }
|
||||
/deep/ .el-table__cell {
|
||||
::v-deep .el-table__cell {
|
||||
padding: 5px 0;
|
||||
}
|
||||
/deep/.el-table__fixed-right-patch {
|
||||
::v-deep.el-table__fixed-right-patch {
|
||||
background-color: #000 !important;
|
||||
border-color: #444444;
|
||||
}
|
||||
/deep/.el-table__fixed-body-wrapper tr:hover > td {
|
||||
::v-deep.el-table__fixed-body-wrapper tr:hover > td {
|
||||
background-color: #000 !important;
|
||||
}
|
||||
/deep/.el-table--scrollable-x .el-table__body-wrapper {
|
||||
::v-deep.el-table--scrollable-x .el-table__body-wrapper {
|
||||
z-index: 2;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -273,7 +273,7 @@ export default {
|
|||
margin-bottom: 0px;
|
||||
}
|
||||
.disabled{
|
||||
/deep/ .el-upload--picture-card {
|
||||
::v-deep .el-upload--picture-card {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
@ -282,16 +282,16 @@ export default {
|
|||
flex-direction: column !important;
|
||||
align-items: flex-start;
|
||||
}
|
||||
/deep/ .el-input.is-disabled .el-input__inner{
|
||||
::v-deep .el-input.is-disabled .el-input__inner{
|
||||
background-color: #646464a1;
|
||||
}
|
||||
/deep/ .el-input-group__append, .el-input-group__prepend{
|
||||
::v-deep .el-input-group__append, .el-input-group__prepend{
|
||||
padding: 0 10px;
|
||||
}
|
||||
/deep/ .el-form-item__content {
|
||||
::v-deep .el-form-item__content {
|
||||
width: 100%;
|
||||
}
|
||||
/deep/ .el-select.is-disabled .el-input__inner{
|
||||
::v-deep .el-select.is-disabled .el-input__inner{
|
||||
background-color: #646464a1;
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -1838,33 +1838,33 @@ export default {
|
|||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.measurement-form{
|
||||
/deep/ .el-form-item__label{
|
||||
::v-deep .el-form-item__label{
|
||||
color: #c3c3c3;
|
||||
}
|
||||
/deep/ .el-input .el-input__inner{
|
||||
::v-deep .el-input .el-input__inner{
|
||||
background-color: transparent;
|
||||
color: #ddd;
|
||||
border: 1px solid #5e5e5e;
|
||||
}
|
||||
/deep/ .el-form-item{
|
||||
::v-deep .el-form-item{
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: flex-start;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
/deep/ .el-form-item__content{
|
||||
::v-deep .el-form-item__content{
|
||||
flex: 1;
|
||||
}
|
||||
/deep/ .el-input.is-disabled .el-input__inner{
|
||||
::v-deep .el-input.is-disabled .el-input__inner{
|
||||
background-color: #646464a1;
|
||||
}
|
||||
/deep/ .el-input-group__append, .el-input-group__prepend{
|
||||
::v-deep .el-input-group__append, .el-input-group__prepend{
|
||||
padding: 0 10px;
|
||||
}
|
||||
/deep/ .el-select.is-disabled .el-input__inner{
|
||||
::v-deep .el-select.is-disabled .el-input__inner{
|
||||
background-color: #646464a1;
|
||||
}
|
||||
/deep/ .el-button--mini, .el-button--mini.is-round {
|
||||
::v-deep .el-button--mini, .el-button--mini.is-round {
|
||||
padding: 7px 10px;
|
||||
}
|
||||
.el-form-item__content
|
||||
|
@ -1872,13 +1872,13 @@ export default {
|
|||
width: 100%;
|
||||
}
|
||||
.input-width1{
|
||||
width: calc(100% -60px)!important;
|
||||
width: calc(100% - 60px)!important;
|
||||
}
|
||||
.input-width2{
|
||||
width: 100% !important;
|
||||
}
|
||||
.suv_viewer{
|
||||
/deep/ .viewer-play {
|
||||
::v-deep .viewer-play {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1407,12 +1407,12 @@ export default {
|
|||
.el-collapse{
|
||||
border-bottom:none;
|
||||
border-top:none;
|
||||
/deep/ .el-collapse-item{
|
||||
::v-deep .el-collapse-item{
|
||||
background-color: #000!important;
|
||||
color: #ddd;
|
||||
|
||||
}
|
||||
/deep/ .el-collapse-item__header{
|
||||
::v-deep .el-collapse-item__header{
|
||||
background-color: #000!important;
|
||||
color: #ddd;
|
||||
border-bottom-color:#5a5a5a;
|
||||
|
@ -1420,11 +1420,11 @@ export default {
|
|||
height: 35px;
|
||||
line-height: 35px;
|
||||
}
|
||||
/deep/ .el-collapse-item__wrap{
|
||||
::v-deep .el-collapse-item__wrap{
|
||||
background-color: #000!important;
|
||||
color: #ddd;
|
||||
}
|
||||
/deep/ .el-collapse-item__content{
|
||||
::v-deep .el-collapse-item__content{
|
||||
width:260px;
|
||||
position: absolute;
|
||||
top: 0px;
|
||||
|
@ -1440,24 +1440,24 @@ export default {
|
|||
}
|
||||
.merge-table{
|
||||
padding:0 10px;
|
||||
/deep/.el-table{
|
||||
::v-deep.el-table{
|
||||
background-color: #1e1e1e !important;
|
||||
color: #383838;
|
||||
}
|
||||
/deep/.el-table td.el-table__cell, .el-table th.el-table__cell.is-leaf{
|
||||
::v-deep.el-table td.el-table__cell, .el-table th.el-table__cell.is-leaf{
|
||||
border-bottom: 1px solid #383838;
|
||||
}
|
||||
.el-table--border::after, .el-table--group::after, .el-table::before{
|
||||
background-color: #1e1e1e;
|
||||
}
|
||||
/deep/.el-table__header-wrapper{
|
||||
::v-deep.el-table__header-wrapper{
|
||||
th{
|
||||
background-color: #1e1e1e !important;
|
||||
color: #dfdfdf;
|
||||
border-bottom: 1px solid #383838;
|
||||
}
|
||||
}
|
||||
/deep/.el-table__body-wrapper{
|
||||
::v-deep.el-table__body-wrapper{
|
||||
tr{
|
||||
background-color: #1e1e1e !important;
|
||||
color: #dfdfdf;
|
||||
|
@ -1466,7 +1466,7 @@ export default {
|
|||
background-color: #1e1e1e !important;
|
||||
}
|
||||
}
|
||||
/deep/.el-table__empty-block{
|
||||
::v-deep.el-table__empty-block{
|
||||
background-color: #1e1e1e !important;
|
||||
}
|
||||
.merge-label{
|
||||
|
|
|
@ -837,32 +837,32 @@ export default {
|
|||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.measurement-form{
|
||||
/deep/ .el-form-item__label{
|
||||
::v-deep .el-form-item__label{
|
||||
color: #c3c3c3;
|
||||
}
|
||||
/deep/ .el-input .el-input__inner{
|
||||
::v-deep .el-input .el-input__inner{
|
||||
background-color: transparent;
|
||||
color: #ddd;
|
||||
border: 1px solid #5e5e5e;
|
||||
}
|
||||
/deep/ .el-form-item{
|
||||
::v-deep .el-form-item{
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: flex-start;
|
||||
}
|
||||
/deep/ .el-form-item__content{
|
||||
::v-deep .el-form-item__content{
|
||||
flex: 1;
|
||||
}
|
||||
/deep/ .el-input.is-disabled .el-input__inner{
|
||||
::v-deep .el-input.is-disabled .el-input__inner{
|
||||
background-color: #646464a1;
|
||||
}
|
||||
/deep/ .el-select.is-disabled .el-input__inner{
|
||||
::v-deep .el-select.is-disabled .el-input__inner{
|
||||
background-color: #646464a1;
|
||||
}
|
||||
/deep/ .el-button--mini, .el-button--mini.is-round {
|
||||
::v-deep .el-button--mini, .el-button--mini.is-round {
|
||||
padding: 7px 10px;
|
||||
}
|
||||
/deep/ .el-input-group__append, .el-input-group__prepend {
|
||||
::v-deep .el-input-group__append, .el-input-group__prepend {
|
||||
padding: 0 10px;
|
||||
}
|
||||
.el-form-item__content
|
||||
|
@ -870,7 +870,7 @@ export default {
|
|||
width: 100%;
|
||||
}
|
||||
.input-width1{
|
||||
width: calc(100% -60px)!important;
|
||||
width: calc(100% - 60px)!important;
|
||||
}
|
||||
.input-width2{
|
||||
width: 100% !important;
|
||||
|
|
|
@ -583,12 +583,12 @@ export default {
|
|||
.el-collapse{
|
||||
border-bottom:none;
|
||||
border-top:none;
|
||||
/deep/ .el-collapse-item{
|
||||
::v-deep .el-collapse-item{
|
||||
background-color: #000!important;
|
||||
color: #ddd;
|
||||
|
||||
}
|
||||
/deep/ .el-collapse-item__header{
|
||||
::v-deep .el-collapse-item__header{
|
||||
background-color: #000!important;
|
||||
color: #ddd;
|
||||
border-bottom-color:#5a5a5a;
|
||||
|
@ -596,11 +596,11 @@ export default {
|
|||
height: 35px;
|
||||
line-height: 35px;
|
||||
}
|
||||
/deep/ .el-collapse-item__wrap{
|
||||
::v-deep .el-collapse-item__wrap{
|
||||
background-color: #000!important;
|
||||
color: #ddd;
|
||||
}
|
||||
/deep/ .el-collapse-item__content{
|
||||
::v-deep .el-collapse-item__content{
|
||||
width:260px;
|
||||
position: absolute;
|
||||
top: 0px;
|
||||
|
|
|
@ -795,32 +795,32 @@ export default {
|
|||
}
|
||||
.lesion_list{
|
||||
position: relative;
|
||||
/deep/ .el-form-item__label{
|
||||
::v-deep .el-form-item__label{
|
||||
color: #c3c3c3;
|
||||
text-align: left;
|
||||
}
|
||||
/deep/ .el-input .el-input__inner{
|
||||
::v-deep .el-input .el-input__inner{
|
||||
background-color: transparent;
|
||||
color: #ddd;
|
||||
border: 1px solid #5e5e5e;
|
||||
}
|
||||
/deep/ .el-textarea__inner{
|
||||
::v-deep .el-textarea__inner{
|
||||
background-color: transparent;
|
||||
color: #ddd;
|
||||
border: 1px solid #5e5e5e;
|
||||
}
|
||||
/deep/ .el-form-item{
|
||||
::v-deep .el-form-item{
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: flex-start;
|
||||
}
|
||||
/deep/ .el-form-item__content{
|
||||
::v-deep .el-form-item__content{
|
||||
flex: 1;
|
||||
}
|
||||
/deep/ .el-input.is-disabled .el-input__inner{
|
||||
::v-deep .el-input.is-disabled .el-input__inner{
|
||||
background-color: #646464a1;
|
||||
}
|
||||
/deep/ .el-select.is-disabled .el-input__inner{
|
||||
::v-deep .el-select.is-disabled .el-input__inner{
|
||||
background-color: #646464a1;
|
||||
}
|
||||
|
||||
|
@ -838,48 +838,48 @@ export default {
|
|||
border-radius: 10px;
|
||||
background: #d0d0d0;
|
||||
}
|
||||
/deep/ .el-table,
|
||||
::v-deep .el-table,
|
||||
.el-table__expanded-cell {
|
||||
background-color: #000;
|
||||
color: #fff;
|
||||
border-color: #444444;
|
||||
}
|
||||
/deep/ .el-table th,
|
||||
::v-deep .el-table th,
|
||||
.el-table tr {
|
||||
background-color: #000;
|
||||
color: #fff;
|
||||
border-color: #444444;
|
||||
}
|
||||
/deep/ .el-table__body tr > td {
|
||||
::v-deep .el-table__body tr > td {
|
||||
background-color: #000 !important;
|
||||
color: #fff;
|
||||
border-color: #444444;
|
||||
}
|
||||
/deep/ .el-table__body tr:hover > td {
|
||||
::v-deep .el-table__body tr:hover > td {
|
||||
background-color: #858282 !important;
|
||||
color: #fff;
|
||||
border-color: #444444;
|
||||
}
|
||||
/deep/ .el-table--border th.gutter:last-of-type {
|
||||
::v-deep .el-table--border th.gutter:last-of-type {
|
||||
border: none;
|
||||
}
|
||||
/deep/ .el-table__fixed-right {
|
||||
::v-deep .el-table__fixed-right {
|
||||
height: 100% !important;
|
||||
}
|
||||
// /deep/ .el-table .cell {
|
||||
// ::v-deep .el-table .cell {
|
||||
// line-height: 20px;
|
||||
// }
|
||||
/deep/ .el-table__cell {
|
||||
::v-deep .el-table__cell {
|
||||
padding: 5px 0;
|
||||
}
|
||||
/deep/.el-table__fixed-right-patch {
|
||||
::v-deep.el-table__fixed-right-patch {
|
||||
background-color: #000 !important;
|
||||
border-color: #444444;
|
||||
}
|
||||
/deep/.el-table__fixed-body-wrapper tr:hover > td {
|
||||
::v-deep.el-table__fixed-body-wrapper tr:hover > td {
|
||||
background-color: #000 !important;
|
||||
}
|
||||
/deep/.el-table--scrollable-x .el-table__body-wrapper {
|
||||
::v-deep.el-table--scrollable-x .el-table__body-wrapper {
|
||||
z-index: 2;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -273,7 +273,7 @@ export default {
|
|||
margin-bottom: 0px;
|
||||
}
|
||||
.disabled{
|
||||
/deep/ .el-upload--picture-card {
|
||||
::v-deep .el-upload--picture-card {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
@ -282,16 +282,16 @@ export default {
|
|||
flex-direction: column !important;
|
||||
align-items: flex-start;
|
||||
}
|
||||
/deep/ .el-input.is-disabled .el-input__inner{
|
||||
::v-deep .el-input.is-disabled .el-input__inner{
|
||||
background-color: #646464a1;
|
||||
}
|
||||
/deep/ .el-input-group__append, .el-input-group__prepend{
|
||||
::v-deep .el-input-group__append, .el-input-group__prepend{
|
||||
padding: 0 10px;
|
||||
}
|
||||
/deep/ .el-form-item__content {
|
||||
::v-deep .el-form-item__content {
|
||||
width: 100%;
|
||||
}
|
||||
/deep/ .el-select.is-disabled .el-input__inner{
|
||||
::v-deep .el-select.is-disabled .el-input__inner{
|
||||
background-color: #646464a1;
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -892,26 +892,26 @@ export default {
|
|||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.measurement-form{
|
||||
/deep/ .el-form-item__label{
|
||||
::v-deep .el-form-item__label{
|
||||
color: #c3c3c3;
|
||||
}
|
||||
/deep/ .el-input .el-input__inner{
|
||||
::v-deep .el-input .el-input__inner{
|
||||
background-color: transparent;
|
||||
color: #ddd;
|
||||
border: 1px solid #5e5e5e;
|
||||
}
|
||||
/deep/ .el-form-item{
|
||||
::v-deep .el-form-item{
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: flex-start;
|
||||
}
|
||||
/deep/ .el-form-item__content{
|
||||
::v-deep .el-form-item__content{
|
||||
flex: 1;
|
||||
}
|
||||
/deep/ .el-input.is-disabled .el-input__inner{
|
||||
::v-deep .el-input.is-disabled .el-input__inner{
|
||||
background-color: #646464a1;
|
||||
}
|
||||
/deep/ .el-select.is-disabled .el-input__inner{
|
||||
::v-deep .el-select.is-disabled .el-input__inner{
|
||||
background-color: #646464a1;
|
||||
}
|
||||
.el-form-item__content
|
||||
|
@ -919,7 +919,7 @@ export default {
|
|||
width: 100%;
|
||||
}
|
||||
.input-width1{
|
||||
width: calc(100% -60px)!important;
|
||||
width: calc(100% - 60px)!important;
|
||||
}
|
||||
.input-width2{
|
||||
width: 100% !important;
|
||||
|
|
|
@ -855,12 +855,12 @@ export default {
|
|||
.el-collapse{
|
||||
border-bottom:none;
|
||||
border-top:none;
|
||||
/deep/ .el-collapse-item{
|
||||
::v-deep .el-collapse-item{
|
||||
background-color: #000!important;
|
||||
color: #ddd;
|
||||
|
||||
}
|
||||
/deep/ .el-collapse-item__header{
|
||||
::v-deep .el-collapse-item__header{
|
||||
background-color: #000!important;
|
||||
color: #ddd;
|
||||
border-bottom-color:#5a5a5a;
|
||||
|
@ -868,11 +868,11 @@ export default {
|
|||
height: 35px;
|
||||
line-height: 35px;
|
||||
}
|
||||
/deep/ .el-collapse-item__wrap{
|
||||
::v-deep .el-collapse-item__wrap{
|
||||
background-color: #000!important;
|
||||
color: #ddd;
|
||||
}
|
||||
/deep/ .el-collapse-item__content{
|
||||
::v-deep .el-collapse-item__content{
|
||||
width:260px;
|
||||
position: absolute;
|
||||
top: 0px;
|
||||
|
|
|
@ -483,7 +483,7 @@ export default {
|
|||
margin-bottom: 0px;
|
||||
}
|
||||
.disabled{
|
||||
/deep/ .el-upload--picture-card {
|
||||
::v-deep .el-upload--picture-card {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
@ -492,16 +492,16 @@ export default {
|
|||
flex-direction: column !important;
|
||||
align-items: flex-start;
|
||||
}
|
||||
/deep/ .el-input.is-disabled .el-input__inner{
|
||||
::v-deep .el-input.is-disabled .el-input__inner{
|
||||
background-color: #646464a1;
|
||||
}
|
||||
/deep/ .el-input-group__append, .el-input-group__prepend{
|
||||
::v-deep .el-input-group__append, .el-input-group__prepend{
|
||||
padding: 0 10px;
|
||||
}
|
||||
/deep/ .el-form-item__content {
|
||||
::v-deep .el-form-item__content {
|
||||
width: 100%;
|
||||
}
|
||||
/deep/ .el-select.is-disabled .el-input__inner{
|
||||
::v-deep .el-select.is-disabled .el-input__inner{
|
||||
background-color: #646464a1;
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -857,34 +857,34 @@ export default {
|
|||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.ecrf-wrapper{
|
||||
/deep/ .el-form-item__label{
|
||||
::v-deep .el-form-item__label{
|
||||
color: #c3c3c3;
|
||||
text-align: left;
|
||||
}
|
||||
/deep/ .el-input__inner{
|
||||
::v-deep .el-input__inner{
|
||||
background-color: transparent;
|
||||
color: #ddd;
|
||||
border: 1px solid #5e5e5e;
|
||||
}
|
||||
/deep/ .el-textarea__inner{
|
||||
::v-deep .el-textarea__inner{
|
||||
background-color: transparent;
|
||||
color: #ddd;
|
||||
border: 1px solid #5e5e5e;
|
||||
}
|
||||
|
||||
/deep/ .el-form-item{
|
||||
::v-deep .el-form-item{
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: flex-start;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
/deep/ .el-form-item__content{
|
||||
::v-deep .el-form-item__content{
|
||||
flex: 1;
|
||||
}
|
||||
/deep/ .el-button--mini, .el-button--mini.is-round {
|
||||
::v-deep .el-button--mini, .el-button--mini.is-round {
|
||||
padding: 7px 10px;
|
||||
}
|
||||
/deep/ .el-form-item__content
|
||||
::v-deep .el-form-item__content
|
||||
.el-select{
|
||||
width: 100%;
|
||||
}
|
||||
|
|
|
@ -586,7 +586,7 @@ export default {
|
|||
// border: 1px solid #ccc;
|
||||
|
||||
}
|
||||
/deep/.el-tabs{
|
||||
::v-deep.el-tabs{
|
||||
box-sizing: border-box;
|
||||
padding: 0 5px;
|
||||
height: 100%;
|
||||
|
@ -629,7 +629,7 @@ export default {
|
|||
background-color: #607d8b!important;
|
||||
border: 1px solid #607d8b!important;
|
||||
}
|
||||
/deep/.el-progress__text{
|
||||
::v-deep.el-progress__text{
|
||||
color: #ccc;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
|
|
@ -1501,29 +1501,29 @@ export default {
|
|||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.measurement-form{
|
||||
/deep/ .el-form-item__label{
|
||||
::v-deep .el-form-item__label{
|
||||
color: #c3c3c3;
|
||||
}
|
||||
/deep/ .el-input .el-input__inner{
|
||||
::v-deep .el-input .el-input__inner{
|
||||
background-color: transparent;
|
||||
color: #ddd;
|
||||
border: 1px solid #5e5e5e;
|
||||
}
|
||||
/deep/ .el-form-item{
|
||||
::v-deep .el-form-item{
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: flex-start;
|
||||
}
|
||||
/deep/ .el-form-item__content{
|
||||
::v-deep .el-form-item__content{
|
||||
flex: 1;
|
||||
}
|
||||
/deep/ .el-input.is-disabled .el-input__inner{
|
||||
::v-deep .el-input.is-disabled .el-input__inner{
|
||||
background-color: #646464a1;
|
||||
}
|
||||
/deep/ .el-select.is-disabled .el-input__inner{
|
||||
::v-deep .el-select.is-disabled .el-input__inner{
|
||||
background-color: #646464a1;
|
||||
}
|
||||
/deep/ .el-button--mini, .el-button--mini.is-round {
|
||||
::v-deep .el-button--mini, .el-button--mini.is-round {
|
||||
padding: 7px 10px;
|
||||
}
|
||||
.el-form-item__content
|
||||
|
@ -1531,7 +1531,7 @@ export default {
|
|||
width: 100%;
|
||||
}
|
||||
.input-width1{
|
||||
width: calc(100% -60px)!important;
|
||||
width: calc(100% - 60px)!important;
|
||||
}
|
||||
.input-width2{
|
||||
width: 100% !important;
|
||||
|
|
|
@ -1115,12 +1115,12 @@ export default {
|
|||
.el-collapse{
|
||||
border-bottom:none;
|
||||
border-top:none;
|
||||
/deep/ .el-collapse-item{
|
||||
::v-deep .el-collapse-item{
|
||||
background-color: #000!important;
|
||||
color: #ddd;
|
||||
|
||||
}
|
||||
/deep/ .el-collapse-item__header{
|
||||
::v-deep .el-collapse-item__header{
|
||||
background-color: #000!important;
|
||||
color: #ddd;
|
||||
border-bottom-color:#5a5a5a;
|
||||
|
@ -1128,11 +1128,11 @@ export default {
|
|||
height: 35px;
|
||||
line-height: 35px;
|
||||
}
|
||||
/deep/ .el-collapse-item__wrap{
|
||||
::v-deep .el-collapse-item__wrap{
|
||||
background-color: #000!important;
|
||||
color: #ddd;
|
||||
}
|
||||
/deep/ .el-collapse-item__content{
|
||||
::v-deep .el-collapse-item__content{
|
||||
width:260px;
|
||||
position: absolute;
|
||||
top: 0px;
|
||||
|
|
|
@ -1182,29 +1182,29 @@ export default {
|
|||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.measurement-form{
|
||||
/deep/ .el-form-item__label{
|
||||
::v-deep .el-form-item__label{
|
||||
color: #c3c3c3;
|
||||
}
|
||||
/deep/ .el-input .el-input__inner{
|
||||
::v-deep .el-input .el-input__inner{
|
||||
background-color: transparent;
|
||||
color: #ddd;
|
||||
border: 1px solid #5e5e5e;
|
||||
}
|
||||
/deep/ .el-form-item{
|
||||
::v-deep .el-form-item{
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: flex-start;
|
||||
}
|
||||
/deep/ .el-form-item__content{
|
||||
::v-deep .el-form-item__content{
|
||||
flex: 1;
|
||||
}
|
||||
/deep/ .el-input.is-disabled .el-input__inner{
|
||||
::v-deep .el-input.is-disabled .el-input__inner{
|
||||
background-color: #646464a1;
|
||||
}
|
||||
/deep/ .el-select.is-disabled .el-input__inner{
|
||||
::v-deep .el-select.is-disabled .el-input__inner{
|
||||
background-color: #646464a1;
|
||||
}
|
||||
/deep/ .el-button--mini, .el-button--mini.is-round {
|
||||
::v-deep .el-button--mini, .el-button--mini.is-round {
|
||||
padding: 7px 10px;
|
||||
}
|
||||
.el-form-item__content
|
||||
|
@ -1212,7 +1212,7 @@ export default {
|
|||
width: 100%;
|
||||
}
|
||||
.input-width1{
|
||||
width: calc(100% -60px)!important;
|
||||
width: calc(100% - 60px)!important;
|
||||
}
|
||||
.input-width2{
|
||||
width: 100% !important;
|
||||
|
|
|
@ -1044,12 +1044,12 @@ export default {
|
|||
.el-collapse{
|
||||
border-bottom:none;
|
||||
border-top:none;
|
||||
/deep/ .el-collapse-item{
|
||||
::v-deep .el-collapse-item{
|
||||
background-color: #000!important;
|
||||
color: #ddd;
|
||||
|
||||
}
|
||||
/deep/ .el-collapse-item__header{
|
||||
::v-deep .el-collapse-item__header{
|
||||
background-color: #000!important;
|
||||
color: #ddd;
|
||||
border-bottom-color:#5a5a5a;
|
||||
|
@ -1057,11 +1057,11 @@ export default {
|
|||
height: 35px;
|
||||
line-height: 35px;
|
||||
}
|
||||
/deep/ .el-collapse-item__wrap{
|
||||
::v-deep .el-collapse-item__wrap{
|
||||
background-color: #000!important;
|
||||
color: #ddd;
|
||||
}
|
||||
/deep/ .el-collapse-item__content{
|
||||
::v-deep .el-collapse-item__content{
|
||||
width:260px;
|
||||
position: absolute;
|
||||
top: 0px;
|
||||
|
|
|
@ -904,57 +904,57 @@ export default {
|
|||
background-color: #000;
|
||||
color: #ffffff;
|
||||
border:none;
|
||||
/deep/ .el-card__body{
|
||||
::v-deep .el-card__body{
|
||||
flex: 1;
|
||||
}
|
||||
}
|
||||
|
||||
// /deep/ .el-table__cell{
|
||||
// ::v-deep .el-table__cell{
|
||||
// background-color: #000;
|
||||
// color: #ffffff;
|
||||
// }
|
||||
// /deep/ .el-table{
|
||||
// ::v-deep .el-table{
|
||||
// background-color: #000;
|
||||
// color: #ffffff;
|
||||
// }
|
||||
// /deep/ .el-table__cell{
|
||||
// ::v-deep .el-table__cell{
|
||||
// background-color: #000;
|
||||
// color: #ffffff;
|
||||
// }
|
||||
|
||||
/deep/ .el-table, .el-table__expanded-cell {
|
||||
::v-deep .el-table, .el-table__expanded-cell {
|
||||
background-color: #000;
|
||||
color: #fff;
|
||||
border-color:#444444;
|
||||
}
|
||||
|
||||
/deep/ .el-table th, .el-table tr {
|
||||
::v-deep .el-table th, .el-table tr {
|
||||
background-color: #000;
|
||||
color: #fff;
|
||||
border-color:#444444;
|
||||
}
|
||||
/deep/ .el-table__body tr > td{
|
||||
::v-deep .el-table__body tr > td{
|
||||
background-color:#000 !important;
|
||||
color: #fff;
|
||||
border-color:#444444;
|
||||
}
|
||||
/deep/ .el-table__body tr:hover > td{
|
||||
::v-deep .el-table__body tr:hover > td{
|
||||
background-color:#858282 !important;
|
||||
color: #fff;
|
||||
border-color:#444444;
|
||||
}
|
||||
/deep/ .el-table--border th.gutter:last-of-type{
|
||||
::v-deep .el-table--border th.gutter:last-of-type{
|
||||
border: none;
|
||||
}
|
||||
/deep/ .el-card__header{
|
||||
::v-deep .el-card__header{
|
||||
border: none;
|
||||
padding: 10px;
|
||||
}
|
||||
}
|
||||
/deep/ .el-switch__label{
|
||||
::v-deep .el-switch__label{
|
||||
color:#fff;
|
||||
}
|
||||
/deep/ .el-switch__label.is-active{
|
||||
::v-deep .el-switch__label.is-active{
|
||||
color: #428bca;
|
||||
}
|
||||
.colorOfRed{
|
||||
|
|
|
@ -918,7 +918,7 @@ export default {
|
|||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.study-wrapper{
|
||||
/deep/ .el-progress-bar__inner{
|
||||
::v-deep .el-progress-bar__inner{
|
||||
transition: width 0s ease;
|
||||
}
|
||||
width:100%;
|
||||
|
@ -941,7 +941,7 @@ export default {
|
|||
background-color: #607d8b!important;
|
||||
border: 1px solid #607d8b!important;
|
||||
}
|
||||
/deep/.el-progress__text{
|
||||
::v-deep.el-progress__text{
|
||||
color: #ccc;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
@ -1011,7 +1011,7 @@ export default {
|
|||
|
||||
}
|
||||
}
|
||||
/deep/.el-collapse{
|
||||
::v-deep.el-collapse{
|
||||
border: none;
|
||||
.el-collapse-item{
|
||||
background-color: #000!important;
|
||||
|
@ -1032,7 +1032,7 @@ export default {
|
|||
}
|
||||
}
|
||||
.sr-wrapper{
|
||||
/deep/.el-dialog{
|
||||
::v-deep.el-dialog{
|
||||
background: #fff !important;
|
||||
border: 1px solid #ddd;
|
||||
// color: #ddd;
|
||||
|
@ -1040,12 +1040,12 @@ export default {
|
|||
color:#fff;
|
||||
}
|
||||
}
|
||||
/deep/.sr-dialog-container{
|
||||
::v-deep.sr-dialog-container{
|
||||
margin-top: 50px !important;
|
||||
width:75%;
|
||||
height:80%;
|
||||
}
|
||||
/deep/.el-dialog__body{
|
||||
::v-deep.el-dialog__body{
|
||||
padding: 10px;
|
||||
height: calc(100% - 50px);
|
||||
}
|
||||
|
@ -1053,7 +1053,7 @@ export default {
|
|||
position: relative;
|
||||
}
|
||||
.sr-full-dialog-container{
|
||||
/deep/.is-fullscreen .el-dialog__body{
|
||||
::v-deep.is-fullscreen .el-dialog__body{
|
||||
height: calc(100% - 50px);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -133,7 +133,7 @@ export default {
|
|||
<style lang="scss">
|
||||
.wl-container {
|
||||
width: 100%;
|
||||
// /deep/ .el-table{
|
||||
// ::v-deep .el-table{
|
||||
// background-color: #1e1e1e !important;
|
||||
// }
|
||||
|
||||
|
@ -157,7 +157,7 @@ export default {
|
|||
background-color: #1e1e1e !important;
|
||||
}
|
||||
}
|
||||
// /deep/ .el-table th,.el-table tr{
|
||||
// ::v-deep .el-table th,.el-table tr{
|
||||
// background-color: #1e1e1e !important;
|
||||
// }
|
||||
|
||||
|
|
|
@ -2615,12 +2615,12 @@ export default {
|
|||
// }
|
||||
}
|
||||
.personal_config {
|
||||
/deep/ .el-tabs__content {
|
||||
::v-deep .el-tabs__content {
|
||||
height: 450px;
|
||||
overflow-y: auto;
|
||||
}
|
||||
}
|
||||
/deep/ .manuals-dialog-container {
|
||||
::v-deep .manuals-dialog-container {
|
||||
margin-top: 50px !important;
|
||||
width: 75%;
|
||||
height: 80%;
|
||||
|
@ -2632,7 +2632,7 @@ export default {
|
|||
position: relative;
|
||||
}
|
||||
}
|
||||
/deep/ .manuals-full-dialog-container {
|
||||
::v-deep .manuals-full-dialog-container {
|
||||
.el-dialog__body {
|
||||
padding: 10px;
|
||||
height: calc(100% - 50px) !important;
|
||||
|
|
|
@ -515,12 +515,12 @@ export default {
|
|||
}
|
||||
.el-collapse{
|
||||
border-bottom:none;
|
||||
/deep/ .el-collapse-item{
|
||||
::v-deep .el-collapse-item{
|
||||
background-color: #000!important;
|
||||
color: #ddd;
|
||||
|
||||
}
|
||||
/deep/ .el-collapse-item__header{
|
||||
::v-deep .el-collapse-item__header{
|
||||
background-color: #000!important;
|
||||
color: #ddd;
|
||||
border-bottom-color:#5a5a5a;
|
||||
|
@ -528,11 +528,11 @@ export default {
|
|||
height: 35px;
|
||||
line-height: 35px;
|
||||
}
|
||||
/deep/ .el-collapse-item__wrap{
|
||||
::v-deep .el-collapse-item__wrap{
|
||||
background-color: #000!important;
|
||||
color: #ddd;
|
||||
}
|
||||
/deep/ .el-collapse-item__content{
|
||||
::v-deep .el-collapse-item__content{
|
||||
width:260px;
|
||||
position: absolute;
|
||||
top: 0px;
|
||||
|
|
|
@ -990,34 +990,34 @@ export default {
|
|||
.my_dialog{
|
||||
.criterion-form-item{
|
||||
width: 100%;
|
||||
/deep/ .el-form-item__content{
|
||||
::v-deep .el-form-item__content{
|
||||
width: auto;
|
||||
}
|
||||
///deep/ .el-input-goup__append{
|
||||
//::v-deep .el-input-goup__append{
|
||||
// background-color: transparent;
|
||||
// color: #ddd;
|
||||
// border: 1px solid #5e5e5e;
|
||||
//}
|
||||
}
|
||||
}
|
||||
/deep/ .el-form-item__label{
|
||||
::v-deep .el-form-item__label{
|
||||
color: #c3c3c3;
|
||||
}
|
||||
/deep/ .el-radio__label{
|
||||
::v-deep .el-radio__label{
|
||||
color: #c3c3c3;
|
||||
}
|
||||
/deep/ .el-input-group__append{
|
||||
::v-deep .el-input-group__append{
|
||||
background: #000;
|
||||
color: #ddd;
|
||||
border: 1px solid #5e5e5e;
|
||||
}
|
||||
/deep/ .el-input .el-input__inner{
|
||||
::v-deep .el-input .el-input__inner{
|
||||
background-color: transparent;
|
||||
color: #ddd;
|
||||
border: 1px solid #5e5e5e;
|
||||
}
|
||||
.criterion-form-item{
|
||||
/deep/ .criterion-form-item .el-form-item{
|
||||
::v-deep .criterion-form-item .el-form-item{
|
||||
display: block;
|
||||
.el-form-item__label{
|
||||
display: block;
|
||||
|
@ -1031,7 +1031,7 @@ export default {
|
|||
flex-direction: row;
|
||||
align-items: flex-start;
|
||||
}
|
||||
/deep/ .el-form-item__content{
|
||||
::v-deep .el-form-item__content{
|
||||
}
|
||||
.el-input{
|
||||
width:100%;
|
||||
|
@ -1040,7 +1040,7 @@ export default {
|
|||
margin-bottom: 0px;
|
||||
}
|
||||
.disabled{
|
||||
/deep/ .el-upload--picture-card {
|
||||
::v-deep .el-upload--picture-card {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
@ -1050,13 +1050,13 @@ export default {
|
|||
align-items: flex-start;
|
||||
}
|
||||
}
|
||||
/deep/ .el-table__body-wrapper::-webkit-scrollbar{
|
||||
::v-deep .el-table__body-wrapper::-webkit-scrollbar{
|
||||
height: 10px!important;
|
||||
}
|
||||
/deep/ .el-table__fixed-right::before{
|
||||
::v-deep .el-table__fixed-right::before{
|
||||
display: none;
|
||||
}
|
||||
/deep/ .el-upload-list__item-name{
|
||||
::v-deep .el-upload-list__item-name{
|
||||
color: #0a84ff;
|
||||
.el-icon-document{
|
||||
color: #0a84ff;
|
||||
|
|
|
@ -341,7 +341,7 @@ export default {
|
|||
margin-bottom: 0px;
|
||||
}
|
||||
.disabled{
|
||||
/deep/ .el-upload--picture-card {
|
||||
::v-deep .el-upload--picture-card {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
@ -350,10 +350,10 @@ export default {
|
|||
flex-direction: column;
|
||||
align-items: flex-start;
|
||||
}
|
||||
/deep/ .el-input.is-disabled .el-input__inner{
|
||||
::v-deep .el-input.is-disabled .el-input__inner{
|
||||
background-color: #646464a1;
|
||||
}
|
||||
/deep/ .el-select.is-disabled .el-input__inner{
|
||||
::v-deep .el-select.is-disabled .el-input__inner{
|
||||
background-color: #646464a1;
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -568,7 +568,7 @@ export default {
|
|||
<style lang="scss" scoped>
|
||||
.my_dialog{
|
||||
.criterion-form-item{
|
||||
/deep/ .el-form-item__content{
|
||||
::v-deep .el-form-item__content{
|
||||
width: auto;
|
||||
}
|
||||
}
|
||||
|
@ -579,7 +579,7 @@ export default {
|
|||
flex-direction: row;
|
||||
align-items: flex-start;
|
||||
}
|
||||
/deep/ .el-form-item__content{
|
||||
::v-deep .el-form-item__content{
|
||||
width: 500px;
|
||||
}
|
||||
.el-input{
|
||||
|
@ -589,7 +589,7 @@ export default {
|
|||
margin-bottom: 0px;
|
||||
}
|
||||
.disabled{
|
||||
/deep/ .el-upload--picture-card {
|
||||
::v-deep .el-upload--picture-card {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -715,33 +715,33 @@ export default {
|
|||
color: #ffffff;
|
||||
border: none;
|
||||
}
|
||||
/deep/ .el-table,
|
||||
::v-deep .el-table,
|
||||
.el-table__expanded-cell {
|
||||
background-color: #000;
|
||||
color: #fff;
|
||||
border-color: #444444;
|
||||
}
|
||||
|
||||
/deep/ .el-table th,
|
||||
::v-deep .el-table th,
|
||||
.el-table tr {
|
||||
background-color: #000;
|
||||
color: #fff;
|
||||
border-color: #444444;
|
||||
}
|
||||
/deep/ .el-table__body tr > td {
|
||||
::v-deep .el-table__body tr > td {
|
||||
background-color: #000 !important;
|
||||
color: #fff;
|
||||
border-color: #444444;
|
||||
}
|
||||
/deep/ .el-table__body tr:hover > td {
|
||||
::v-deep .el-table__body tr:hover > td {
|
||||
background-color: #858282 !important;
|
||||
color: #fff;
|
||||
border-color: #444444;
|
||||
}
|
||||
/deep/ .el-table--border th.gutter:last-of-type {
|
||||
::v-deep .el-table--border th.gutter:last-of-type {
|
||||
border: none;
|
||||
}
|
||||
/deep/ .el-card__header {
|
||||
::v-deep .el-card__header {
|
||||
border: none;
|
||||
padding: 10px;
|
||||
}
|
||||
|
@ -796,18 +796,18 @@ export default {
|
|||
.el-tabs__item {
|
||||
color: #fff;
|
||||
}
|
||||
/deep/ .el-tabs__header {
|
||||
::v-deep .el-tabs__header {
|
||||
height: 55px;
|
||||
margin: 0px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
/deep/ .el-tabs__content {
|
||||
::v-deep .el-tabs__content {
|
||||
flex: 1;
|
||||
margin: 0px;
|
||||
overflow-y: auto;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
/deep/ .el-tabs__item {
|
||||
::v-deep .el-tabs__item {
|
||||
color: #fff;
|
||||
}
|
||||
}
|
||||
|
@ -827,7 +827,7 @@ export default {
|
|||
background-color: #607d8b !important;
|
||||
border: 1px solid #607d8b !important;
|
||||
}
|
||||
/deep/ .el-progress__text {
|
||||
::v-deep .el-progress__text {
|
||||
color: #ccc;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
|
|
@ -892,61 +892,61 @@ export default {
|
|||
color: #ffffff;
|
||||
border:none;
|
||||
}
|
||||
// /deep/ .el-table__cell{
|
||||
// ::v-deep .el-table__cell{
|
||||
// background-color: #000;
|
||||
// color: #ffffff;
|
||||
// }
|
||||
// /deep/ .el-table{
|
||||
// ::v-deep .el-table{
|
||||
// background-color: #000;
|
||||
// color: #ffffff;
|
||||
// }
|
||||
// /deep/ .el-table__cell{
|
||||
// ::v-deep .el-table__cell{
|
||||
// background-color: #000;
|
||||
// color: #ffffff;
|
||||
// }
|
||||
|
||||
/deep/ .el-table, .el-table__expanded-cell {
|
||||
::v-deep .el-table, .el-table__expanded-cell {
|
||||
background-color: #000;
|
||||
color: #fff;
|
||||
border-color:#444444;
|
||||
}
|
||||
|
||||
/deep/ .el-table th, .el-table tr {
|
||||
::v-deep .el-table th, .el-table tr {
|
||||
background-color: #000;
|
||||
color: #fff;
|
||||
border-color:#444444;
|
||||
}
|
||||
/deep/ .el-table__body tr > td{
|
||||
::v-deep .el-table__body tr > td{
|
||||
background-color:#000 !important;
|
||||
color: #fff;
|
||||
border-color:#444444;
|
||||
}
|
||||
/deep/ .el-table__body tr:hover > td{
|
||||
::v-deep .el-table__body tr:hover > td{
|
||||
background-color:#858282 !important;
|
||||
color: #fff;
|
||||
border-color:#444444;
|
||||
}
|
||||
/deep/ .el-table--border th.gutter:last-of-type{
|
||||
::v-deep .el-table--border th.gutter:last-of-type{
|
||||
border: none;
|
||||
}
|
||||
/deep/ .el-card__header{
|
||||
::v-deep .el-card__header{
|
||||
border: none;
|
||||
padding: 10px;
|
||||
}
|
||||
/deep/ .el-upload-list--picture-card .el-upload-list__item{
|
||||
::v-deep .el-upload-list--picture-card .el-upload-list__item{
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
}
|
||||
/deep/ .el-upload--picture-card{
|
||||
::v-deep .el-upload--picture-card{
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
line-height: 40px;
|
||||
}
|
||||
}
|
||||
/deep/ .el-switch__label{
|
||||
::v-deep .el-switch__label{
|
||||
color:#fff;
|
||||
}
|
||||
/deep/ .el-switch__label.is-active{
|
||||
::v-deep .el-switch__label.is-active{
|
||||
color: #428bca;
|
||||
}
|
||||
.uploadWrapper{
|
||||
|
|
|
@ -166,7 +166,7 @@ name: "CustomizeReportPageUpload",
|
|||
|
||||
<style lang="scss" scoped>
|
||||
.disabled{
|
||||
/deep/ .el-upload--picture-card {
|
||||
::v-deep .el-upload--picture-card {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -854,7 +854,7 @@ export default {
|
|||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.study-wrapper{
|
||||
/deep/ .el-progress-bar__inner{
|
||||
::v-deep .el-progress-bar__inner{
|
||||
transition: width 0s ease;
|
||||
}
|
||||
width:100%;
|
||||
|
@ -877,7 +877,7 @@ export default {
|
|||
background-color: #607d8b!important;
|
||||
border: 1px solid #607d8b!important;
|
||||
}
|
||||
/deep/.el-progress__text{
|
||||
::v-deep.el-progress__text{
|
||||
color: #ccc;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
@ -946,7 +946,7 @@ export default {
|
|||
}
|
||||
}
|
||||
}
|
||||
/deep/.el-collapse{
|
||||
::v-deep.el-collapse{
|
||||
border: none;
|
||||
.el-collapse-item{
|
||||
background-color: #000!important;
|
||||
|
@ -967,7 +967,7 @@ export default {
|
|||
}
|
||||
}
|
||||
.sr-wrapper{
|
||||
/deep/.el-dialog{
|
||||
::v-deep.el-dialog{
|
||||
background: #fff !important;
|
||||
border: 1px solid #ddd;
|
||||
// color: #ddd;
|
||||
|
@ -975,12 +975,12 @@ export default {
|
|||
color:#fff;
|
||||
}
|
||||
}
|
||||
/deep/.sr-dialog-container{
|
||||
::v-deep.sr-dialog-container{
|
||||
margin-top: 50px !important;
|
||||
width:75%;
|
||||
height:80%;
|
||||
}
|
||||
/deep/.el-dialog__body{
|
||||
::v-deep.el-dialog__body{
|
||||
padding: 10px;
|
||||
height: calc(100% - 50px);
|
||||
}
|
||||
|
@ -988,7 +988,7 @@ export default {
|
|||
position: relative;
|
||||
}
|
||||
.sr-full-dialog-container{
|
||||
/deep/.is-fullscreen .el-dialog__body{
|
||||
::v-deep.is-fullscreen .el-dialog__body{
|
||||
height: calc(100% - 50px);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -133,7 +133,7 @@ export default {
|
|||
<style lang="scss">
|
||||
.wl-container {
|
||||
width: 100%;
|
||||
// /deep/ .el-table{
|
||||
// ::v-deep .el-table{
|
||||
// background-color: #1e1e1e !important;
|
||||
// }
|
||||
|
||||
|
@ -157,7 +157,7 @@ export default {
|
|||
background-color: #1e1e1e !important;
|
||||
}
|
||||
}
|
||||
// /deep/ .el-table th,.el-table tr{
|
||||
// ::v-deep .el-table th,.el-table tr{
|
||||
// background-color: #1e1e1e !important;
|
||||
// }
|
||||
|
||||
|
|
|
@ -505,7 +505,7 @@ export default {
|
|||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
/deep/.el-message-box__headerbtn{
|
||||
::v-deep.el-message-box__headerbtn{
|
||||
display: none;
|
||||
}
|
||||
.dicom-container{
|
||||
|
@ -515,7 +515,7 @@ export default {
|
|||
padding: 0 5px;
|
||||
box-sizing: border-box;
|
||||
background-color: #000;
|
||||
/deep/.el-tabs{
|
||||
::v-deep.el-tabs{
|
||||
box-sizing: border-box;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
|
@ -541,20 +541,20 @@ export default {
|
|||
}
|
||||
|
||||
}
|
||||
/deep/.hot-keys-label{
|
||||
::v-deep.hot-keys-label{
|
||||
color: #dfdfdf !important;
|
||||
}
|
||||
/deep/.shortcut-key-input span{
|
||||
::v-deep.shortcut-key-input span{
|
||||
color: #dfdfdf !important;
|
||||
}
|
||||
// /deep/ .el-dialog{
|
||||
// ::v-deep .el-dialog{
|
||||
// background: #1e1e1e;
|
||||
// /deep/ .el-dialog__body{
|
||||
// ::v-deep .el-dialog__body{
|
||||
// padding: 10px;
|
||||
// }
|
||||
|
||||
// }
|
||||
/deep/.el-dialog{
|
||||
::v-deep.el-dialog{
|
||||
background: #1e1e1e;
|
||||
border: 1px solid #ddd;
|
||||
color: #ddd;
|
||||
|
@ -575,12 +575,12 @@ export default {
|
|||
}
|
||||
|
||||
}
|
||||
/deep/.dialog-container{
|
||||
::v-deep.dialog-container{
|
||||
margin-top: 50px !important;
|
||||
width:75%;
|
||||
height:80%;
|
||||
}
|
||||
/deep/.el-dialog__body{
|
||||
::v-deep.el-dialog__body{
|
||||
padding: 20px;
|
||||
height: calc(100% - 70px);
|
||||
}
|
||||
|
@ -590,7 +590,7 @@ export default {
|
|||
}
|
||||
|
||||
.full-dialog-container{
|
||||
/deep/.is-fullscreen .el-dialog__body{
|
||||
::v-deep.is-fullscreen .el-dialog__body{
|
||||
height: calc(100% - 70px);
|
||||
}
|
||||
}
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue