稽查配置和系统阅片标准配置更新
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
parent
7c6b010fe1
commit
8e0c186ee7
|
@ -1043,3 +1043,19 @@ export function deleteCommonDocument(commonDocumentId) {
|
|||
})
|
||||
}
|
||||
|
||||
export function getSystemCalculateQuestions(params) {
|
||||
return request({
|
||||
url: `/ReadingQuestion/getSystemCalculateQuestions`,
|
||||
method: 'post',
|
||||
data: params
|
||||
})
|
||||
}
|
||||
|
||||
export function getSystemCalculateTableQuestions(params) {
|
||||
return request({
|
||||
url: `/ReadingQuestion/getSystemCalculateTableQuestions`,
|
||||
method: 'post',
|
||||
data: params
|
||||
})
|
||||
}
|
||||
|
||||
|
|
|
@ -242,6 +242,11 @@ export const constantRoutes = [
|
|||
component: () => import('@/views/404'),
|
||||
hidden: true
|
||||
},
|
||||
{
|
||||
path: '/ecrfPreview',
|
||||
component: () => import('@/views/dictionary/template/components/ECRF'),
|
||||
hidden: true
|
||||
},
|
||||
{
|
||||
path: '/editUser',
|
||||
component: Layout,
|
||||
|
|
|
@ -33,7 +33,7 @@
|
|||
<el-table-column prop="ModuleTypeValueCN" label="模块" show-overflow-tooltip align="left" min-width="230px" />
|
||||
<el-table-column prop="Description" label="操作名称" :show-overflow-tooltip="true" min-width="200px">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.Description }}({{scope.row.DescriptionCN}})</span>
|
||||
<span>{{ scope.row.DescriptionCN }}({{scope.row.Description}})</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="DescriptionCN" label="其他" :show-overflow-tooltip="true" min-width="140px">
|
||||
|
@ -49,7 +49,7 @@
|
|||
<el-table-column prop="Identification" label="标识" :show-overflow-tooltip="true" min-width="200px" />
|
||||
<el-table-column prop="OptTypeValueCN" label="操作类型" show-overflow-tooltip width="100px" />
|
||||
<el-table-column prop="ObjectTypeValueCN" label="对象类型" show-overflow-tooltip min-width="100px" />
|
||||
<el-table-column prop="ChildrenTypeValueCN" label="数据类型" show-overflow-tooltip min-width="100px" show-overflow-tooltip />
|
||||
<el-table-column prop="ChildrenTypeValueCN" label="数据类型" show-overflow-tooltip min-width="100px"/>
|
||||
<el-table-column
|
||||
prop="Sort"
|
||||
label="显示顺序"
|
||||
|
@ -110,7 +110,7 @@
|
|||
|
||||
<!-- 添加或修改菜单对话框 -->
|
||||
<el-dialog :title="title" top="100px" :close-on-click-modal="false" id="check_config" :visible.sync="open" :width="form.DataType === 'Table' ? '1280px' : '680px'" append-to-body>
|
||||
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
|
||||
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
|
||||
<el-row>
|
||||
<el-col v-show="title !== '复制'" :span="24">
|
||||
<el-divider content-position="left">基本信息</el-divider>
|
||||
|
@ -142,11 +142,16 @@
|
|||
<el-input v-model="form.Identification" placeholder="请输入标识" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col v-show="form.ConfigType === 'C' && title !== '复制'" :span="24">
|
||||
<el-col v-show="form.ConfigType === 'C' && title !== '复制'" :span="12">
|
||||
<el-form-item label="字段key">
|
||||
<el-input v-model="form.Code" placeholder="请输入字段key" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col v-show="form.ConfigType === 'C' && title !== '复制'" :span="12">
|
||||
<el-form-item label="字段key英文">
|
||||
<el-input v-model="form.CodeEn" placeholder="请输入字段key英文" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col v-show="form.ConfigType === 'C' && title !== '复制'" :span="12">
|
||||
<el-form-item label="字段英文">
|
||||
<el-input v-model="form.Value" placeholder="请输入字段英文" />
|
||||
|
@ -259,9 +264,11 @@
|
|||
<el-radio label="Router">路由</el-radio>
|
||||
<el-radio label="Image">图片</el-radio>
|
||||
<el-radio label="ImageList">图片数组</el-radio>
|
||||
<el-radio label="OSS">OSS</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-row v-show="form.DataType === 'Router'" v-if="form.UrlConfig">
|
||||
<el-col :span="12">
|
||||
<el-form-item>
|
||||
|
@ -314,6 +321,7 @@
|
|||
>删除</el-button>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-col>
|
||||
<el-button v-show="form.DataType === 'Table'" type="primary" size="mini" style="position: relative;top: -15px" @click="addCol">
|
||||
增加列
|
||||
</el-button>
|
||||
|
@ -369,6 +377,16 @@
|
|||
<el-input :disabled="!scope.row.IsFixedColumn" v-model="scope.row.FixedColumnName" placeholder="固定列名"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="FixedColumnEnName"
|
||||
min-width="120"
|
||||
label="固定列名EN"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<el-input :disabled="!scope.row.IsFixedColumn" v-model="scope.row.FixedColumnEnName" placeholder="固定列名EN"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="ColumnName"
|
||||
min-width="120"
|
||||
|
@ -379,6 +397,16 @@
|
|||
<el-input :disabled="scope.row.IsFixedColumn" v-model="scope.row.ColumnName" placeholder="列字段名"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="ColumnEnName"
|
||||
min-width="120"
|
||||
label="列字段名En"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<el-input :disabled="scope.row.IsFixedColumn" v-model="scope.row.ColumnEnName" placeholder="列字段名En"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="ColumnValue"
|
||||
min-width="120"
|
||||
|
@ -412,6 +440,16 @@
|
|||
<el-input :disabled="!scope.row.IsMerge" v-model="scope.row.MergeColumnName" placeholder="合并组"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="MergeColumnEnName"
|
||||
min-width="120"
|
||||
label="合并组EN"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<el-input :disabled="!scope.row.IsMerge" v-model="scope.row.MergeColumnEnName" placeholder="合并组EN"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="IsPicture"
|
||||
min-width="120"
|
||||
|
@ -486,6 +524,14 @@
|
|||
<el-input v-model="form.ChildDataLabel" placeholder="请输入子数据Lable" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col v-show="form.ConfigType === 'C' && title !== '复制' && form.DataType === 'Array'" :span="12">
|
||||
<el-form-item>
|
||||
<span slot="label">
|
||||
子数据LableEN
|
||||
</span>
|
||||
<el-input v-model="form.ChildDataEnLabel" placeholder="请输入子数据LableEN" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col v-show="form.ConfigType === 'C' && title !== '复制' && form.DataType === 'Array'" :span="12">
|
||||
<el-form-item>
|
||||
<span slot="label">
|
||||
|
@ -510,12 +556,27 @@
|
|||
</el-col>
|
||||
<el-col v-show="form.ConfigType === 'C' && title !== '复制' && form.EnumType === 'Dictionary'" :span="12">
|
||||
<el-form-item label="字典表名">
|
||||
<el-input v-model="form.DictionaryCode" placeholder="请输入字典表名" />
|
||||
<!-- <el-input v-model="form.DictionaryCode" placeholder="请输入字典表名" /> -->
|
||||
<el-autocomplete
|
||||
clearable
|
||||
class="inline-input"
|
||||
v-model="form.DictionaryCode"
|
||||
:fetch-suggestions="querySearch"
|
||||
placeholder="请输入字典表名"
|
||||
></el-autocomplete>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col v-show="form.ConfigType === 'C' && title !== '复制' && form.EnumType === 'Dictionary'" :span="12">
|
||||
<el-form-item label="翻译字段">
|
||||
<el-input v-model="form.DictionaryType" placeholder="请输入翻译字段" />
|
||||
<!-- <el-input v-model="form.DictionaryType" placeholder="请输入翻译字段" /> -->
|
||||
<el-select v-model="form.DictionaryType" clearable placeholder="请选择翻译字段">
|
||||
<el-option
|
||||
v-for="item in $d.DictionaryType"
|
||||
:key="item.id"
|
||||
:label="item.label"
|
||||
:value="item.label">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col v-show="form.ConfigType === 'C' && title !== '复制' && form.EnumType === 'Date'" :span="24">
|
||||
|
@ -541,6 +602,11 @@
|
|||
<el-input v-model="form.ForeignKeyText" placeholder="请输入数据库字段to" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col v-show="form.ConfigType === 'C' && title !== '复制' && form.EnumType === 'Foreign'" :span="12">
|
||||
<el-form-item label="字段toEN">
|
||||
<el-input v-model="form.ForeignKeyEnText" placeholder="请输入数据库字段toEN" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-col>
|
||||
<el-col v-show="title !== '复制'" :span="24">
|
||||
|
@ -605,11 +671,11 @@
|
|||
<div style="padding: 0 40px;display: flex;flex-direction: column">
|
||||
<div style="text-align: right;height: 50px;">
|
||||
<el-select v-model="copeParams.FromItemId" collapse-tags filterable placeholder="完全拷贝对象" clearable size="small">
|
||||
<el-option v-for="item of list" v-if="drawer_cfg.drawerChild && item.ConfigType === 'M' && item.ObjectTypeId === selectRow.ObjectTypeId && item.OptTypeId && item.ChildrenTypeId " :value="item.Id" :label="item.Description" />
|
||||
<el-option v-for="item of list" v-if="drawer_cfg.drawerChild && item.ConfigType === 'M' && item.ObjectTypeId === selectRow.ObjectTypeId && item.OptTypeId && item.ChildrenTypeId " :value="item.Id" :label="item.DescriptionCN" />
|
||||
</el-select>
|
||||
<el-button type="primary" size="mini" style="margin-right: 10px" @click="handleOverCope(selectRow)">完全拷贝</el-button>
|
||||
<el-select v-model="copeParams.DataSourceGuids" multiple collapse-tags filterable placeholder="拷贝对象" clearable size="small">
|
||||
<el-option v-for="item of list" v-if="drawer_cfg.drawerChild && item.ConfigType === 'M' && item.ObjectTypeId === selectRow.ObjectTypeId && item.OptTypeId && item.ChildrenTypeId " :value="item.Id" :label="item.Description" />
|
||||
<el-option v-for="item of list" v-if="drawer_cfg.drawerChild && item.ConfigType === 'M' && item.ObjectTypeId === selectRow.ObjectTypeId && item.OptTypeId && item.ChildrenTypeId " :value="item.Id" :label="item.DescriptionCN" />
|
||||
</el-select>
|
||||
<el-button type="primary" size="mini" @click="handleCope(selectRow)">拷贝</el-button>
|
||||
<el-button type="primary" size="mini" @click="handleAdd(selectRow)">新建</el-button>
|
||||
|
@ -625,6 +691,7 @@
|
|||
height="100"
|
||||
>
|
||||
<el-table-column prop="Code" label="字段名" min-width="120px" :show-overflow-tooltip="true" />
|
||||
<el-table-column prop="CodeEn" 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
|
||||
|
@ -665,6 +732,12 @@
|
|||
<el-table-column prop="TrialConfigRelyFieldName" label="依赖字段" min-width="120px" :show-overflow-tooltip="true" />
|
||||
<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="handleCopyData(scope.row)"
|
||||
>复制</el-button>
|
||||
<el-button
|
||||
size="mini"
|
||||
type="text"
|
||||
|
@ -687,7 +760,7 @@
|
|||
</template>
|
||||
|
||||
<script>
|
||||
import { fullyReplicated, changeFrontAuditSort, copyFrontAuditConfigItem, getFrontAuditConfigList, addOrUpdateFrontAuditConfig, deleteFrontAuditConfig, copyOtherToThisItem, getAuditConfigChildList, setDictionaryValue } from '@/api/dictionary/checkConfig'
|
||||
import { fullyReplicated, changeFrontAuditSort, copyFrontAuditConfigItem, getFrontAuditConfigList, addOrUpdateFrontAuditConfig, deleteFrontAuditConfig, copyOtherToThisItem, getAuditConfigChildList, getDictionaryCodeList } from '@/api/dictionary/checkConfig'
|
||||
import Treeselect from '@riophae/vue-treeselect'
|
||||
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
|
||||
import Sortable from 'sortablejs'
|
||||
|
@ -730,7 +803,8 @@ export default {
|
|||
refreshTable: true,
|
||||
childrenList: [],
|
||||
// 表单参数
|
||||
form: {},
|
||||
form: {
|
||||
},
|
||||
selectRow: null,
|
||||
model_cfg: { visible: false, showClose: true, width: '680px', title: '', appendToBody: true },
|
||||
drawer_cfg: { drawerChild: false, parentId: '', title: '' },
|
||||
|
@ -739,13 +813,41 @@ export default {
|
|||
},
|
||||
ChildGroup: null,
|
||||
tableShow: false,
|
||||
rowDrop2TableIsShow: true
|
||||
rowDrop2TableIsShow: true,
|
||||
DictionaryCodeList:[]
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getList()
|
||||
this.getList();
|
||||
this.getDictionaryCodeList();
|
||||
},
|
||||
methods: {
|
||||
querySearch(queryString, cb) {
|
||||
var DictionaryCodeList = this.DictionaryCodeList;
|
||||
var results = queryString ? DictionaryCodeList.filter(this.createFilter(queryString)) : DictionaryCodeList;
|
||||
// 调用 callback 返回建议列表的数据
|
||||
cb(results);
|
||||
},
|
||||
createFilter(queryString) {
|
||||
return (DictionaryCodeList) => {
|
||||
return (DictionaryCodeList.value.toLowerCase().indexOf(queryString.toLowerCase()) === 0);
|
||||
};
|
||||
},
|
||||
// 获取字典表名
|
||||
async getDictionaryCodeList(){
|
||||
try{
|
||||
let res = await getDictionaryCodeList();
|
||||
if(res.IsSuccess){
|
||||
this.DictionaryCodeList = res.Result.map(item=>{
|
||||
return {
|
||||
value:item
|
||||
}
|
||||
});
|
||||
}
|
||||
}catch(err){
|
||||
console.log(err);
|
||||
}
|
||||
},
|
||||
addParameter() {
|
||||
this.form.UrlConfig.ParameterList.push({
|
||||
UrlParameterName: null,
|
||||
|
@ -768,10 +870,13 @@ export default {
|
|||
ListName: null,
|
||||
IsFixedColumn: false,
|
||||
FixedColumnName: null,
|
||||
FixedColumnEnName: null,
|
||||
ColumnName: null,
|
||||
ColumnEnName: null,
|
||||
ColumnValue: null,
|
||||
IsMerge: false,
|
||||
MergeColumnName: null,
|
||||
MergeColumnEnName: null,
|
||||
IsPicture: false,
|
||||
IsDynamicTranslate: false,
|
||||
IsNeedTransalate: false,
|
||||
|
@ -1044,6 +1149,7 @@ export default {
|
|||
IsShowParent: 0,
|
||||
Sort: 0,
|
||||
Code: null,
|
||||
CodeEn: null,
|
||||
Value: null,
|
||||
ValueCN: null,
|
||||
EnumType: '',
|
||||
|
@ -1058,6 +1164,7 @@ export default {
|
|||
IsSpecialType: false,
|
||||
DataType: '',
|
||||
ChildDataLabel: null,
|
||||
ChildDataEnLabel: null,
|
||||
ChildDataValue: null,
|
||||
DateType: null,
|
||||
DictionaryCode: null,
|
||||
|
@ -1065,6 +1172,7 @@ export default {
|
|||
ForeignKeyTableName: null,
|
||||
ForeignKeyValue: null,
|
||||
ForeignKeyText: null,
|
||||
ForeignKeyEnText: null,
|
||||
TableConfigList: [],
|
||||
UrlConfig: {
|
||||
RoutePath: null,
|
||||
|
@ -1142,6 +1250,16 @@ export default {
|
|||
this.title = '修改'
|
||||
this.rowDrop2()
|
||||
},
|
||||
handleCopyData (row) {
|
||||
this.$confirm('确定复制该条记录到当前稽查下吗?').then(() => {
|
||||
let params = {...row}
|
||||
delete params.Id
|
||||
addOrUpdateFrontAuditConfig(params).then(() => {
|
||||
this.$message.success(this.$t('common:message:savedSuccessfully'))
|
||||
this.getList()
|
||||
})
|
||||
})
|
||||
},
|
||||
/** 提交按钮 */
|
||||
submitForm: function() {
|
||||
this.$refs['form'].validate(valid => {
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
<el-button
|
||||
size="mini"
|
||||
type="primary"
|
||||
:disabled="isCompleteConfig"
|
||||
@click="handleAdd"
|
||||
style="margin-right: 10px;"
|
||||
>
|
||||
|
@ -59,12 +60,13 @@
|
|||
show-overflow-tooltip
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<el-button size="small" type="primary" @click="openChildren(scope.row)">
|
||||
<el-button size="small" :disabled="isCompleteConfig" type="primary" @click="openChildren(scope.row)">
|
||||
配置
|
||||
</el-button>
|
||||
<el-button
|
||||
type="danger"
|
||||
size="small"
|
||||
:disabled="isCompleteConfig"
|
||||
@click="handleDelete(scope.row)"
|
||||
>
|
||||
删除
|
||||
|
@ -151,6 +153,10 @@ export default {
|
|||
criterionId: {
|
||||
type: String,
|
||||
required: true
|
||||
},
|
||||
isCompleteConfig: {
|
||||
type: Boolean,
|
||||
required: true
|
||||
}
|
||||
},
|
||||
components: {
|
||||
|
@ -207,7 +213,6 @@ export default {
|
|||
}).then(res => {
|
||||
this.loading = false
|
||||
this.list = res.Result
|
||||
console.log(this.$d.GlobalAssessType)
|
||||
})
|
||||
},
|
||||
handleAdd() {
|
||||
|
@ -259,8 +264,8 @@ export default {
|
|||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
>>>.el-form-item__content{
|
||||
<style lang="scss" scoped>
|
||||
/deep/ .el-form-item__content{
|
||||
width: calc(100% - 110px);
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -62,7 +62,7 @@
|
|||
<template slot-scope="scope">
|
||||
<div>
|
||||
<el-radio-group v-model="scope.row.CrterionDictionaryGroup" @change="(v) => {crterionDictionaryGroupChange(v, scope.row)}" size="mini">
|
||||
<el-radio-button v-for="item of $d.CrterionDictionaryGroup" :label="item.value">{{item.label}}</el-radio-button>
|
||||
<el-radio-button v-for="item of $d.CrterionDictionaryGroup" :label="item.value" :key="item.id">{{item.label}}</el-radio-button>
|
||||
</el-radio-group>
|
||||
</div>
|
||||
</template>
|
||||
|
@ -158,7 +158,6 @@ export default {
|
|||
},
|
||||
mounted() {
|
||||
this.getList()
|
||||
console.log(this.$d[this.parentCode])
|
||||
},
|
||||
methods: {
|
||||
crterionDictionaryGroupChange(v, row) {
|
||||
|
@ -231,8 +230,8 @@ export default {
|
|||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
>>>.el-form-item__content{
|
||||
<style lang="scss" scoped>
|
||||
/deep/ .el-form-item__content{
|
||||
width: calc(100% - 110px);
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -13,18 +13,18 @@
|
|||
{{ question.GroupName }}
|
||||
</div>
|
||||
<div
|
||||
v-else-if="question.Type==='table'"
|
||||
v-else-if="question.Type==='table' || question.Type==='basicTable'"
|
||||
style="font-weight: bold;font-size: 14px;margin: 5px 0px;"
|
||||
>
|
||||
{{ question.QuestionName }}
|
||||
</div>
|
||||
<template v-else>
|
||||
<el-form-item
|
||||
v-if="(question.ShowQuestion===1 && String(questionForm[question.ParentId]) === String(question.ParentTriggerValue)) || question.ShowQuestion===0"
|
||||
v-if="(question.ShowQuestion===1 && question.ParentTriggerValueList.includes(String(questionForm[question.ParentId]))) || question.ShowQuestion===0"
|
||||
:label="`${question.QuestionName}`"
|
||||
:prop="question.Id"
|
||||
:rules="[
|
||||
{ required: (question.IsRequired === 0 || (question.IsRequired ===1 && question.RelevanceId && (questionForm[question.RelevanceId] === question.RelevanceValue))) && question.Type!=='group' && question.Type!=='summary',
|
||||
{ required: (question.IsRequired === 0 || (question.IsRequired ===1 && question.RelevanceId && question.RelevanceValueList.includes(questionForm[question.RelevanceId]))) && question.Type!=='group' && question.Type!=='summary',
|
||||
message: '请注明', trigger: ['blur', 'change']},
|
||||
]"
|
||||
:class="[question.Type==='group'?'mb':question.Type==='upload'?'uploadWrapper':'']"
|
||||
|
@ -63,7 +63,7 @@
|
|||
<el-option
|
||||
v-for="item of $d[question.DictionaryCode]"
|
||||
:key="item.id"
|
||||
:value="item.value"
|
||||
:value="item.value.toString()"
|
||||
:label="item.label"
|
||||
/>
|
||||
</template>
|
||||
|
@ -95,7 +95,7 @@
|
|||
<el-radio
|
||||
v-for="item of $d[question.DictionaryCode]"
|
||||
:key="item.id"
|
||||
:label="item.value"
|
||||
:label="item.value.toString()"
|
||||
>
|
||||
{{ item.label }}
|
||||
</el-radio>
|
||||
|
@ -139,14 +139,29 @@
|
|||
/>
|
||||
<!-- 数值 -->
|
||||
<!-- :precision="2" :step="0.1" :max="10" -->
|
||||
<el-input-number
|
||||
<!-- <el-input-number
|
||||
v-if="question.Type==='number'"
|
||||
v-model="questionForm[question.Id]"
|
||||
/> -->
|
||||
<el-input
|
||||
v-if="question.Type==='number'"
|
||||
v-model="questionForm[question.Id]"
|
||||
type="number"
|
||||
:disabled="question.DataSource === 1"
|
||||
>
|
||||
<template v-if="question.Unit" slot="append">{{$fd('ValueUnit', question.Unit)}}</template>
|
||||
</el-input>
|
||||
<!-- 自动分类 -->
|
||||
<el-input
|
||||
v-if="question.Type==='calss'"
|
||||
v-model="questionForm[question.Id]"
|
||||
disabled
|
||||
/>
|
||||
<!-- 上传图像 -->
|
||||
<el-upload
|
||||
v-if="question.Type==='upload'"
|
||||
:action="accept"
|
||||
action
|
||||
:accept="question.FileType"
|
||||
:limit="question.ImageCount"
|
||||
:on-preview="handlePictureCardPreview"
|
||||
:before-upload="handleBeforeUpload"
|
||||
|
@ -160,8 +175,8 @@
|
|||
<div slot="file" slot-scope="{file}">
|
||||
<img
|
||||
class="el-upload-list__item-thumbnail"
|
||||
crossOrigin="Anonymous"
|
||||
:src="OSSclientConfig.basePath + file.url"
|
||||
crossorigin="anonymous"
|
||||
alt=""
|
||||
>
|
||||
<span class="el-upload-list__item-actions">
|
||||
|
@ -320,7 +335,7 @@ export default {
|
|||
setFormItemData(obj) {
|
||||
this.$emit('setFormItemData', obj)
|
||||
},
|
||||
uploadScreenshot(param) {
|
||||
async uploadScreenshot(param) {
|
||||
if (!this.visitTaskId) return
|
||||
const loading = this.$loading({
|
||||
target: document.querySelector('.ecrf-wrapper'),
|
||||
|
@ -331,19 +346,17 @@ export default {
|
|||
})
|
||||
const formData = new FormData()
|
||||
formData.append('file', param.file)
|
||||
uploadReadingAnswerImage(this.$route.query.trialId, this.visitTaskId, formData).then(res => {
|
||||
if (res.IsSuccess) {
|
||||
this.fileList.push({ url: `${res.Result.Path}` })
|
||||
this.urls.push(res.Result.Path)
|
||||
var file = await this.fileToBlob(param.file)
|
||||
const res = await this.OSSclient.put(`/${this.trialId}/ReadAttachment/${this.subjectId}/${this.visitTaskId}/${param.file.name}`, file)
|
||||
this.fileList.push({ name: param.file.name, url: this.$getObjectName(res.url) })
|
||||
this.urls.push(this.$getObjectName(res.url))
|
||||
this.$emit('setFormItemData', { key: this.question.Id, val: this.urls.length > 0 ? this.urls.join('|') : '' })
|
||||
}
|
||||
loading.close()
|
||||
}).catch(() => {
|
||||
loading.close()
|
||||
})
|
||||
},
|
||||
handleBeforeUpload(file) {
|
||||
// 检测文件类型是否符合要求
|
||||
console.log(file.name)
|
||||
console.log(this.checkFileSuffix(file.name))
|
||||
if (this.checkFileSuffix(file.name)) {
|
||||
// this.fileList = []
|
||||
return true
|
||||
|
@ -363,7 +376,7 @@ export default {
|
|||
},
|
||||
// 预览图片
|
||||
handlePictureCardPreview(file) {
|
||||
this.imageUrl = file.url
|
||||
this.imageUrl = this.OSSclientConfig.basePath + file.url
|
||||
this.imgVisible = true
|
||||
},
|
||||
// 删除图片
|
||||
|
@ -383,7 +396,7 @@ export default {
|
|||
flex-direction: row;
|
||||
align-items: flex-start;
|
||||
}
|
||||
>>>.el-form-item__content{
|
||||
/deep/ .el-form-item__content{
|
||||
width: 500px;
|
||||
}
|
||||
.el-input{
|
||||
|
@ -393,7 +406,7 @@ export default {
|
|||
margin-bottom: 0px;
|
||||
}
|
||||
.disabled{
|
||||
>>>.el-upload--picture-card {
|
||||
/deep/ .el-upload--picture-card {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,10 +1,10 @@
|
|||
<template>
|
||||
<div class="criterion-config">
|
||||
<el-tabs v-model="activeName">
|
||||
<el-tab-pane label="访视阅片" name="0">
|
||||
<el-tab-pane :label="'访视阅片'" name="0">
|
||||
<div class="search-form" style="display:flex;justify-content: space-between;">
|
||||
<el-form :inline="true" size="mini" class="base-search-form">
|
||||
<el-form-item label="阅片问题">
|
||||
<el-form-item label="名称">
|
||||
<el-input v-model="searchData.QuestionName" clearable style="width:120px;" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
|
@ -18,7 +18,7 @@
|
|||
:disabled="list.length === 0"
|
||||
size="mini"
|
||||
type="primary"
|
||||
@click="preview.visible = true"
|
||||
@click="handlePreview"
|
||||
>
|
||||
预览
|
||||
</el-button>
|
||||
|
@ -107,7 +107,7 @@
|
|||
<el-table-column
|
||||
prop="IsShowInDicom"
|
||||
label="是否在阅片页面显示"
|
||||
width="140"
|
||||
width="150"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
|
@ -115,13 +115,13 @@
|
|||
</template>
|
||||
</el-table-column>
|
||||
<!-- 注释 -->
|
||||
<el-table-column
|
||||
<!-- <el-table-column
|
||||
prop="Remark"
|
||||
:label="$t('trials:readingUnit:qsList:title:Remark')"
|
||||
width="140"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
</el-table-column>
|
||||
</el-table-column> -->
|
||||
<el-table-column
|
||||
prop="GlobalReadingShowType"
|
||||
label="是否在全局阅片显示"
|
||||
|
@ -132,6 +132,39 @@
|
|||
{{ $fd('GlobalReadingShowType', scope.row.GlobalReadingShowType) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- 导出标识 -->
|
||||
<!-- <el-table-column
|
||||
prop="ExportIdentification"
|
||||
:label="$t('trials:readingUnit:qsList:title:ExportIdentification')"
|
||||
width="160"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
{{ $fd('ExportIdentification', scope.row.ExportIdentification) }}
|
||||
</template>
|
||||
</el-table-column> -->
|
||||
<!-- 问题标识 -->
|
||||
<el-table-column
|
||||
prop="QuestionType"
|
||||
label="问题标识"
|
||||
width="140"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
{{ $fd('QuestionType', scope.row.QuestionType) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- 导出目标表格 -->
|
||||
<el-table-column
|
||||
prop="ExportResult"
|
||||
:label="$t('trials:readingUnit:qsList:title:ExportResult')"
|
||||
width="160"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
{{ getStringResult(scope.row.ExportResult, 'ExportResult') }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- 限制编辑 -->
|
||||
<el-table-column
|
||||
prop="LimitEdit"
|
||||
|
@ -170,7 +203,7 @@
|
|||
<el-button
|
||||
type="primary"
|
||||
size="mini"
|
||||
:disabled="scope.row.Type !== 'table'"
|
||||
:disabled="!(scope.row.Type === 'table' || scope.row.Type === 'basicTable')"
|
||||
@click="handleConfig(scope.row)"
|
||||
>
|
||||
表格问题
|
||||
|
@ -200,8 +233,8 @@
|
|||
v-if="addOrEdit.visible"
|
||||
:visible.sync="addOrEdit.visible"
|
||||
:close-on-click-modal="false"
|
||||
:title="addOrEdit.title"
|
||||
width="600px"
|
||||
:title="`${addOrEdit.title}`"
|
||||
width="650px"
|
||||
append-to-body
|
||||
custom-class="base-dialog-wrapper"
|
||||
>
|
||||
|
@ -209,6 +242,8 @@
|
|||
ref="addOrEdit"
|
||||
:data="rowData"
|
||||
:type="type"
|
||||
:criterionType="data.CriterionType"
|
||||
:criterionId="data.Id"
|
||||
@close="addOrEdit.visible = false"
|
||||
@getList="getList"
|
||||
/>
|
||||
|
@ -241,6 +276,7 @@
|
|||
>
|
||||
<TableQsList
|
||||
:criterion-id="criterionId"
|
||||
:criterionType="data.CriterionType"
|
||||
:reading-question-id="rowData.Id"
|
||||
:is-complete-config="data.IsCompleteConfig"
|
||||
:lesion-type="rowData.LesionType"
|
||||
|
@ -288,16 +324,14 @@ export default {
|
|||
rowData: {},
|
||||
activeName: '0',
|
||||
addOrEdit: { visible: false, title: '' },
|
||||
preview: { visible: false, title: 'eCRF预览' },
|
||||
preview: { visible: false, title: 'eCRF' + this.$t('common:button:preview') },
|
||||
config: { visible: false, title: '' }
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
list() {
|
||||
this.$nextTick(() => {
|
||||
if(this.$refs.criterionQSList){
|
||||
this.$refs.criterionQSList.doLayout()
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
|
@ -305,6 +339,9 @@ export default {
|
|||
this.getList()
|
||||
},
|
||||
methods: {
|
||||
handlePreview() {
|
||||
window.open(`/ecrfPreview?SystemReadingCriterionId=${this.criterionId}&lang=${this.$i18n.locale}`)
|
||||
},
|
||||
getList() {
|
||||
this.loading = true
|
||||
this.searchData.ReadingQuestionCriterionSystemId = this.criterionId
|
||||
|
@ -315,7 +352,7 @@ export default {
|
|||
}).catch(() => { this.loading = false })
|
||||
},
|
||||
handleAdd() {
|
||||
this.rowData = { ReadingQuestionCriterionSystemId: this.criterionId, Id: '' }
|
||||
this.rowData = { ReadingQuestionCriterionSystemId: this.criterionId, Id: ''}
|
||||
this.type = 'add'
|
||||
this.addOrEdit.title = '添加'
|
||||
this.addOrEdit.visible = true
|
||||
|
@ -351,9 +388,14 @@ export default {
|
|||
},
|
||||
handleConfig(row) {
|
||||
this.rowData = { ...row }
|
||||
this.config.title = `${this.$fd('LesionType', row.LesionType)}:表格问题`
|
||||
this.config.title = `${this.$fd('LesionType', row.LesionType)}:${this.$t('trials:readingUnit:qsList:title:tableQs')}`
|
||||
this.config.visible = true
|
||||
},
|
||||
getStringResult(arr, dictionaryCode) {
|
||||
let newArr = arr.map(i => this.$fd(dictionaryCode, i))
|
||||
let delimiter = this.$i18n.locale === 'zh' ? ',' : ', '
|
||||
return newArr.join(delimiter)
|
||||
},
|
||||
// 查询
|
||||
handleSearch() {
|
||||
this.getList()
|
||||
|
|
|
@ -3,7 +3,9 @@
|
|||
<!-- 搜索框 -->
|
||||
<div class="search">
|
||||
<el-form :inline="true" size="mini" class="base-search-form">
|
||||
<el-form-item label="阅片标准">
|
||||
<el-form-item
|
||||
:label="$t('trials:auditRecord:table:criterion')"
|
||||
>
|
||||
<el-input v-model="searchData.CriterionName" clearable style="width:120px;" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
|
@ -102,6 +104,7 @@
|
|||
<el-button
|
||||
type="danger"
|
||||
size="mini"
|
||||
:disabled="scope.row.IsCompleteConfig"
|
||||
@click="handleDelete(scope.row)"
|
||||
>
|
||||
删除
|
||||
|
@ -131,7 +134,7 @@
|
|||
|
||||
<el-dialog
|
||||
v-if="configVisible"
|
||||
title="eCRF"
|
||||
:title="'eCRF' + `(${rowData.CriterionName})`"
|
||||
:visible.sync="configVisible"
|
||||
:close-on-click-modal="false"
|
||||
:fullscreen="true"
|
||||
|
@ -143,7 +146,7 @@
|
|||
|
||||
<el-dialog
|
||||
v-if="configBaseDataVisible"
|
||||
title="基础数据配置"
|
||||
:title="'基础数据配置' + `(${rowData.CriterionName})`"
|
||||
:visible.sync="configBaseDataVisible"
|
||||
:close-on-click-modal="false"
|
||||
:fullscreen="true"
|
||||
|
@ -188,6 +191,7 @@ export default {
|
|||
addDialog: { title: '', visible: false }
|
||||
}
|
||||
},
|
||||
|
||||
mounted() {
|
||||
this.getList()
|
||||
},
|
||||
|
@ -219,7 +223,7 @@ export default {
|
|||
deleteReadingQuestionCriterionSystem(row.Id).then(res => {
|
||||
this.loading = false
|
||||
if (res.IsSuccess) {
|
||||
this.$message.success('保存成功!')
|
||||
this.$message.success(this.$t('common:message:savedSuccessfully'))
|
||||
this.getList()
|
||||
}
|
||||
}).catch(() => { this.loading = false })
|
||||
|
@ -246,7 +250,7 @@ export default {
|
|||
setSystemReadingQuestionCriterionIsCompleteConfig(params).then(res => {
|
||||
this.loading = false
|
||||
if (res.IsSuccess) {
|
||||
this.$message.success('保存成功!')
|
||||
this.$message.success(this.$t('common:message:savedSuccessfully'))
|
||||
this.getList()
|
||||
}
|
||||
}).catch(() => { this.loading = false })
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<template>
|
||||
<div v-loading="loading" style="min-height:400px;">
|
||||
<div v-loading="loading" style="min-height:400px;padding:20px">
|
||||
<el-form
|
||||
v-if="isRender"
|
||||
ref="questions"
|
||||
|
@ -25,18 +25,13 @@
|
|||
|
||||
import { getSystemReadingQuestion } from '@/api/dictionary'
|
||||
import CriterionFormItem from './CriterionFormItem'
|
||||
import {mapMutations} from "vuex";
|
||||
|
||||
export default {
|
||||
name: 'EcrfPreview',
|
||||
components: {
|
||||
CriterionFormItem
|
||||
},
|
||||
props: {
|
||||
criterionId: {
|
||||
type: String,
|
||||
required: true
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
loading: false,
|
||||
|
@ -49,9 +44,14 @@ export default {
|
|||
}
|
||||
},
|
||||
mounted() {
|
||||
this.$i18n.locale = this.$route.query.lang
|
||||
this.setLanguage(this.$route.query.lang)
|
||||
this.$updateDictionary()
|
||||
this.criterionId = this.$route.query.SystemReadingCriterionId
|
||||
this.getQuestions()
|
||||
},
|
||||
methods: {
|
||||
...mapMutations({ setLanguage: 'lang/setLanguage' }),
|
||||
getQuestions() {
|
||||
this.loading = true
|
||||
var param = {
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
>
|
||||
<div class="base-dialog-body">
|
||||
<!-- 类型 -->
|
||||
<el-form-item label="病灶类型" prop="OrganType">
|
||||
<el-form-item label="器官类型" prop="OrganType">
|
||||
<el-select
|
||||
v-model="form.OrganType"
|
||||
>
|
||||
|
@ -69,7 +69,7 @@
|
|||
>{{ item.label }}</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="序号">
|
||||
<el-form-item label="序号" prop="ShowOrder">
|
||||
<el-input v-model="form.ShowOrder" type="number" />
|
||||
</el-form-item>
|
||||
<!-- 描述 -->
|
||||
|
@ -135,7 +135,8 @@ export default {
|
|||
Part: [{ required: true, message: this.$t('common:ruleMessage:specify'), trigger: ['blur'] }],
|
||||
TULOC: [{ required: true, message: this.$t('common:ruleMessage:specify'), trigger: ['blur'] }],
|
||||
Remark: [{ max: 500, message: `${this.$t('common:ruleMessage:maxLength')} 500`, trigger: ['blur', 'change'] }],
|
||||
IsLymphNodes: [{ required: true, message: this.$t('common:ruleMessage:select'), trigger: ['blur'] }]
|
||||
IsLymphNodes: [{ required: true, message: this.$t('common:ruleMessage:select'), trigger: ['blur'] }],
|
||||
ShowOrder: [{ required: true, message: this.$t('common:ruleMessage:specify'), trigger: ['blur'] }]
|
||||
},
|
||||
lesionTypes: [],
|
||||
loading: false,
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
<el-form :inline="true" size="mini">
|
||||
<el-form-item label="器官类型">
|
||||
<el-select v-model="searchData.OrganType" clearable style="width:130px;">
|
||||
<el-option v-for="item of CriterionDictionaryOrganTypeList.OrganType" :key="item.Id" :value="parseInt(item.Code)" :label="item.ValueCN" />
|
||||
<el-option v-for="item of CriterionDictionaryOrganTypeList && CriterionDictionaryOrganTypeList.OrganType" :key="item.Id" :value="parseInt(item.Code)" :label="item.ValueCN" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="部位">
|
||||
|
@ -357,9 +357,8 @@ export default {
|
|||
watch: {
|
||||
list() {
|
||||
this.$nextTick(() => {
|
||||
if(this.$refs.organList){
|
||||
if(!this.$refs.organList) return
|
||||
this.$refs.organList.doLayout()
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
|
|
|
@ -6,9 +6,10 @@
|
|||
size="small"
|
||||
:disabled="type === 'look'"
|
||||
:rules="rules"
|
||||
label-width="120px"
|
||||
label-width="130px"
|
||||
>
|
||||
<div class="base-dialog-body">
|
||||
<div class="base-dialog-body" style="height: 550px; display:flex;flex-direction: column;">
|
||||
<div style="height: 150px;">
|
||||
<el-form-item label="类型" prop="Type">
|
||||
<el-select
|
||||
v-model="form.Type"
|
||||
|
@ -16,10 +17,10 @@
|
|||
>
|
||||
<el-option
|
||||
v-for="item of $d.Criterion_Question_Type"
|
||||
v-show="item.value !== 'class' && item.value !== 'group' && item.value !== 'table' && item.value !== 'basicTable'"
|
||||
:key="item.value"
|
||||
:value="item.value"
|
||||
:label="item.label"
|
||||
:disabled="item.label === 'group' || item.label === 'table' || item.label === 'summary' || item.label === 'upload'"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
@ -27,6 +28,10 @@
|
|||
v-if="form.Type !== 'group'"
|
||||
label="问题名称"
|
||||
prop="QuestionName"
|
||||
:rules="[
|
||||
{ required: true, message: this.$t('common:ruleMessage:specify'), trigger: 'blur' },
|
||||
{ max: form.Type === 'summary' ? 300 : 100, message: `${this.$t('common:ruleMessage:maxLength')} ${form.Type === 'summary' ? 300 : 100}` }
|
||||
]"
|
||||
>
|
||||
<el-input
|
||||
v-model="form.QuestionName"
|
||||
|
@ -36,152 +41,17 @@
|
|||
v-if="form.Type !== 'group'"
|
||||
label="问题名称(EN)"
|
||||
prop="QuestionEnName"
|
||||
:rules="[
|
||||
{ max: form.Type === 'summary' ? 300 : 100, message: `${this.$t('common:ruleMessage:maxLength')} ${form.Type === 'summary' ? 300 : 100}` }
|
||||
]"
|
||||
>
|
||||
<el-input
|
||||
v-model="form.QuestionEnName"
|
||||
/>
|
||||
</el-form-item>
|
||||
<!-- 选项类型 -->
|
||||
<el-form-item
|
||||
v-if="form.Type === 'select' || form.Type === 'radio' || form.Type === 'input'"
|
||||
label="选项类型"
|
||||
prop="TableQuestionType"
|
||||
:rules="[
|
||||
{ required: form.Type !== 'input', message: '请选择'}
|
||||
]"
|
||||
>
|
||||
<el-radio-group
|
||||
v-model="form.TableQuestionType"
|
||||
@change="((val)=>{tableQuestionTypeChange(val, form)})"
|
||||
>
|
||||
<el-radio
|
||||
v-for="item of $d.TableQuestionType"
|
||||
:key="item.id"
|
||||
:label="item.value"
|
||||
:disabled="form.Type === 'radio' && (item.value===1 || item.value===2)"
|
||||
>
|
||||
{{ item.label }}
|
||||
</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item
|
||||
v-if="form.TableQuestionType === 0"
|
||||
label="选项"
|
||||
prop="TypeValue"
|
||||
>
|
||||
<el-input
|
||||
v-model="form.TypeValue"
|
||||
placeholder="选项请用‘|’分割多个选项"
|
||||
/>
|
||||
</el-form-item>
|
||||
<!-- 关联表 -->
|
||||
<!-- <el-form-item
|
||||
v-if="form.TableQuestionType === 1"
|
||||
label="关联表"
|
||||
prop="DataTableName"
|
||||
>
|
||||
<el-select
|
||||
v-model="form.DataTableName"
|
||||
clearable
|
||||
@change="((val)=>{dataTableNameChange(val, form)})"
|
||||
>
|
||||
<el-option
|
||||
v-for="item of tblOptions"
|
||||
:key="`RelevanceId${item.QuestionId}`"
|
||||
:label="item.QuestionName"
|
||||
:value="item.QuestionId"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item> -->
|
||||
|
||||
<!-- 数值类型 -->
|
||||
<el-form-item
|
||||
v-if="form.Type === 'number' || form.Type === 'calculation'"
|
||||
label="数值类型"
|
||||
prop="ValueType"
|
||||
:rules="[
|
||||
{ required: true, message: '请选择'}
|
||||
]"
|
||||
>
|
||||
<el-radio-group
|
||||
v-model="form.ValueType"
|
||||
>
|
||||
<el-radio
|
||||
v-for="item of $d.ValueType"
|
||||
:key="item.id"
|
||||
:label="item.value"
|
||||
>
|
||||
{{ item.label }}
|
||||
</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
|
||||
<!-- 数值单位 -->
|
||||
<el-form-item
|
||||
v-if="form.Type === 'number' || form.Type === 'calculation'"
|
||||
label="单位"
|
||||
>
|
||||
<el-radio-group
|
||||
v-model="form.Unit"
|
||||
>
|
||||
<el-radio
|
||||
v-for="item of $d.ValueUnit"
|
||||
:key="item.id"
|
||||
:label="item.value"
|
||||
>
|
||||
{{ item.label }}
|
||||
</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<!-- 关联字段 -->
|
||||
|
||||
<el-form-item
|
||||
v-if="form.TableQuestionType === 2"
|
||||
label="关联问题"
|
||||
prop="DependParentId"
|
||||
>
|
||||
<el-select
|
||||
v-model="form.DependParentId"
|
||||
>
|
||||
<el-option
|
||||
v-for="item of parentOptions"
|
||||
:key="`DependParentId${item.QuestionId}`"
|
||||
:label="item.QuestionName"
|
||||
:value="item.QuestionId"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
v-if="form.TableQuestionType === 1 || !!form.DependParentId"
|
||||
label="关联字段"
|
||||
prop="DataTableColumn"
|
||||
>
|
||||
<el-select v-model="form.DataTableColumn">
|
||||
<el-option
|
||||
v-for="item of CriterionDictionaryList.OrganColumn"
|
||||
:key="item.Id"
|
||||
:label="item.ValueCN"
|
||||
:value="item.Code"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
v-if="form.TableQuestionType === 3 || form.TableQuestionType === 2"
|
||||
label="关联字典"
|
||||
prop="DictionaryCode"
|
||||
:rules="[{ required: form.TableQuestionType === 3, message: '请选择', trigger: 'blur' }]"
|
||||
>
|
||||
<el-select v-model="form.DictionaryCode">
|
||||
<el-option
|
||||
v-for="item of dicList"
|
||||
:key="item.Id"
|
||||
:label="item.Code"
|
||||
:value="item.Code"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
</div>
|
||||
<div style="flex: 1;overflow-y:auto;">
|
||||
<el-divider content-position="left">公有属性</el-divider>
|
||||
<el-form-item v-if="form.Type !== 'group'" label="是否显示" prop="ShowQuestion">
|
||||
<el-radio-group
|
||||
v-model="form.ShowQuestion"
|
||||
|
@ -217,17 +87,17 @@
|
|||
</el-select>
|
||||
</el-form-item>
|
||||
<!-- 显示时依赖父问题触发值 -->
|
||||
<el-form-item v-if="form.ParentId && form.ShowQuestion===1" label="显示触发值" prop="ParentTriggerValue">
|
||||
<el-select v-model="form.ParentTriggerValue">
|
||||
<el-form-item v-if="form.ParentId && form.ShowQuestion===1" label="显示触发值" prop="ParentTriggerValueList">
|
||||
<el-select v-model="form.ParentTriggerValueList" clearable multiple>
|
||||
<el-option
|
||||
v-for="item of parentTriggerValOptions"
|
||||
:key="item.id"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
:value="String(item.value)"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="form.Type !== 'group' && form.Type !== 'table'" label="是否必填" prop="IsRequired">
|
||||
<el-form-item v-if="form.Type !== 'group' && form.Type !== 'table' && form.Type !== 'basicTable' && form.Type !== 'summary'" label="是否必填" prop="IsRequired">
|
||||
<el-radio-group
|
||||
v-model="form.IsRequired"
|
||||
:disabled="form.IsJudgeQuestion===true || form.ShowQuestion===2"
|
||||
|
@ -265,52 +135,99 @@
|
|||
<el-form-item
|
||||
v-if="form.RelevanceId && form.IsRequired === 1"
|
||||
label="必填触发值"
|
||||
prop="RelevanceValue"
|
||||
prop="RelevanceValueList"
|
||||
>
|
||||
<el-select v-model="form.RelevanceValue">
|
||||
<el-select v-model="form.RelevanceValueList" clearable multiple>
|
||||
<el-option
|
||||
v-for="item of reParentTriggerValOptions"
|
||||
:key="item.id"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
:value="String(item.value)"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<!-- 导出标识 -->
|
||||
<el-form-item
|
||||
v-if="form.Type !== 'group'"
|
||||
:label="$t('trials:readingUnit:qsList:title:ExportIdentification')" prop="ExportIdentification"
|
||||
v-if="form.Type === 'radio' || form.Type === 'select' || form.Type === 'input' || form.Type === 'textarea' || form.Type === 'number' || form.Type === 'class' || form.Type === 'calculation'"
|
||||
>
|
||||
<el-radio-group
|
||||
v-model="form.ExportIdentification"
|
||||
@change="
|
||||
(val) => {
|
||||
form.ExportResult = []
|
||||
}
|
||||
"
|
||||
>
|
||||
<el-radio
|
||||
v-for="item of $d.ExportIdentification"
|
||||
:key="`ExportIdentification${item.value}`"
|
||||
:label="item.value"
|
||||
>{{ item.label }}
|
||||
</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<!-- 导出结果 -->
|
||||
<el-form-item :label="$t('trials:readingUnit:qsList:title:ExportResult')" v-if="form.ExportIdentification" prop="ExportResult">
|
||||
<el-select v-model="form.ExportResult" multiple>
|
||||
<el-option
|
||||
v-for="item in CriterionDictionaryList.ExportResult"
|
||||
:key="`ExportResult${item.value}`"
|
||||
:value="parseInt(item.Code)"
|
||||
:label="$i18n.locale === 'zh' ? item.ValueCN : item.Value"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="限制编辑"
|
||||
v-if="form.Type !== 'summary'"
|
||||
prop="LimitEdit"
|
||||
:rules="[
|
||||
{ required: true, message: this.$t('common:ruleMessage:select'), trigger: 'blur' }
|
||||
]"
|
||||
>
|
||||
<el-radio-group v-model="form.LimitEdit">
|
||||
<el-radio v-for="item of $d.LimitEdit" :key="item.value" :label="item.value">{{ item.label }}</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
v-if="form.Type !== 'group' && form.Type !== 'summary'"
|
||||
label="问题标识"
|
||||
prop="QuestionMark"
|
||||
>
|
||||
<el-select
|
||||
v-model="form.QuestionMark"
|
||||
clearable
|
||||
>
|
||||
<el-option
|
||||
v-for="item of CriterionDictionaryList.QuestionMark"
|
||||
:key="item.Id"
|
||||
:value="parseInt(item.Code)"
|
||||
:label="item.ValueCN"
|
||||
:label="$i18n.locale === 'zh' ? item.ValueCN : item.Value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item v-if="form.Type === 'upload'" label="最大上传个数">
|
||||
<el-input-number
|
||||
v-model="form.ImageCount"
|
||||
controls-position="right"
|
||||
:min="1"
|
||||
:max="10"
|
||||
/>
|
||||
<el-form-item
|
||||
label="注释"
|
||||
prop="Remark"
|
||||
>
|
||||
<el-input v-model="form.Remark" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="序号" prop="ShowOrder">
|
||||
<el-form-item
|
||||
label="序号"
|
||||
prop="ShowOrder"
|
||||
:rules="[
|
||||
{ required: true, message: this.$t('common:ruleMessage:select'), trigger: 'blur' }
|
||||
]"
|
||||
>
|
||||
<el-input-number
|
||||
v-model="form.ShowOrder"
|
||||
controls-position="right"
|
||||
:min="0"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="重复出现最大次数">
|
||||
<el-form-item label="重复出现最大次数" v-if="form.Type !== 'summary' && form.Type !== 'screenshot' && form.Type !== 'upload'">
|
||||
<el-input-number
|
||||
v-model="form.MaxRowCount"
|
||||
controls-position="right"
|
||||
|
@ -318,16 +235,279 @@
|
|||
:max="10"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="限制编辑">
|
||||
<el-radio-group v-model="form.LimitEdit">
|
||||
<el-radio v-for="item of $d.LimitEdit" :label="item.value">{{ item.label }}</el-radio>
|
||||
<el-form-item label="问题分类" v-if="criterionType === 2">
|
||||
<el-select v-model="form.QuestionClassify" clearable>
|
||||
<el-option
|
||||
v-for="item of $d.QuestionClassify"
|
||||
:key="item.id"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-divider content-position="left">私有属性</el-divider>
|
||||
<!-- 选项类型 -->
|
||||
<el-form-item
|
||||
v-if="form.Type === 'select' || form.Type === 'radio' || form.Type === 'input'"
|
||||
label="选项类型"
|
||||
prop="TableQuestionType"
|
||||
:rules="[
|
||||
{ required: form.Type !== 'input', message: '请选择'}
|
||||
]"
|
||||
>
|
||||
<el-radio-group
|
||||
v-model="form.TableQuestionType"
|
||||
@change="((val)=>{tableQuestionTypeChange(val, form)})"
|
||||
>
|
||||
<el-radio
|
||||
v-for="item of $d.TableQuestionType"
|
||||
:key="item.id"
|
||||
:label="item.value"
|
||||
:disabled="(form.Type === 'radio' && (item.value===1 || item.value===2)) || (form.Type === 'input' && (item.value===0 || item.value===3))"
|
||||
>
|
||||
{{ item.label }}
|
||||
</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="全局阅片是否显示">
|
||||
<el-radio-group v-model="form.GlobalReadingShowType">
|
||||
<el-radio v-for="item of $d.GlobalReadingShowType" :key="item.id" :label="item.value">{{ item.label }}</el-radio>
|
||||
|
||||
<el-form-item
|
||||
v-if="form.TableQuestionType === 0 || form.Type === 'class'"
|
||||
label="选项"
|
||||
prop="TypeValue"
|
||||
>
|
||||
<el-input
|
||||
v-model="form.TypeValue"
|
||||
placeholder="选项请用‘|’分割多个选项"
|
||||
@change="typeValueChange"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
v-if="form.TableQuestionType === 2"
|
||||
label="关联问题"
|
||||
prop="DependParentId"
|
||||
>
|
||||
<el-select
|
||||
v-model="form.DependParentId"
|
||||
>
|
||||
<el-option
|
||||
v-for="item of parentOptions"
|
||||
:key="`DependParentId${item.QuestionId}`"
|
||||
:label="item.QuestionName"
|
||||
:value="item.QuestionId"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
v-if="form.TableQuestionType === 1 || !!form.DependParentId"
|
||||
label="关联字段"
|
||||
prop="DataTableColumn"
|
||||
>
|
||||
<el-select v-model="form.DataTableColumn">
|
||||
<el-option
|
||||
v-for="item of CriterionDictionaryList.OrganColumn"
|
||||
:key="item.Id"
|
||||
:label="$i18n.locale === 'zh' ? item.ValueCN : item.Value"
|
||||
:value="item.Code"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
v-if="form.TableQuestionType === 3 || form.TableQuestionType === 2"
|
||||
label="关联字典"
|
||||
prop="DictionaryCode"
|
||||
:rules="[{ required: form.TableQuestionType === 3, message: '请选择', trigger: 'blur' }]"
|
||||
>
|
||||
<el-select v-model="form.DictionaryCode">
|
||||
<el-option
|
||||
v-for="item of dicList"
|
||||
:key="item.Id"
|
||||
:label="item.Code"
|
||||
:value="item.Code"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="form.Type === 'select' || form.Type === 'radio'" label="高亮标记值" prop="HighlightAnswerList">
|
||||
<el-select v-model="form.HighlightAnswerList" clearable multiple>
|
||||
<template v-if="form.TypeValue">
|
||||
<el-option
|
||||
v-for="item of form.TypeValue.split('|')"
|
||||
:key="item"
|
||||
:label="item"
|
||||
:value="item"
|
||||
/>
|
||||
</template>
|
||||
<template v-else-if="form.DictionaryCode">
|
||||
<el-option
|
||||
v-for="item of $d[form.DictionaryCode]"
|
||||
:key="item.id"
|
||||
:label="item.label"
|
||||
:value="item.value.toString()"
|
||||
/>
|
||||
</template>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
v-if="form.Type === 'input' || form.Type === 'textarea'"
|
||||
label="最大长度"
|
||||
prop="MaxAnswerLength"
|
||||
:rules="[
|
||||
{ required: true, message: this.$t('common:ruleMessage:specify'), trigger: 'blur' }
|
||||
]"
|
||||
>
|
||||
<el-input-number v-model="form.MaxAnswerLength" :min="0"></el-input-number>
|
||||
</el-form-item>
|
||||
<!-- 是否复制前值 -->
|
||||
<!-- <el-form-item
|
||||
label="是否复制前值"
|
||||
v-if="form.Type !== 'summary'"
|
||||
prop="IsCopy"
|
||||
:rules="[
|
||||
{ required: true, message: this.$t('common:ruleMessage:select'), trigger: 'blur' }
|
||||
]"
|
||||
>
|
||||
<el-switch
|
||||
v-model="form.IsCopy"
|
||||
/>
|
||||
</el-form-item> -->
|
||||
<!-- 数值类型 -->
|
||||
<el-form-item
|
||||
v-if="form.Type === 'number' || form.Type === 'calculation'"
|
||||
label="数值类型"
|
||||
prop="ValueType"
|
||||
:rules="[
|
||||
{ required: true, message: '请选择'}
|
||||
]"
|
||||
>
|
||||
<el-radio-group
|
||||
v-model="form.ValueType"
|
||||
>
|
||||
<el-radio
|
||||
v-for="item of $d.ValueType"
|
||||
:key="item.id"
|
||||
:label="item.value"
|
||||
>
|
||||
{{ item.label }}
|
||||
</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
|
||||
<!-- 数值单位 -->
|
||||
<el-form-item
|
||||
v-if="form.Type === 'number' || form.Type === 'calculation'"
|
||||
label="单位"
|
||||
prop="Unit"
|
||||
:rules="[
|
||||
{ required: true, message: this.$t('common:ruleMessage:select'), trigger: 'blur' }
|
||||
]"
|
||||
>
|
||||
<el-radio-group
|
||||
v-model="form.Unit"
|
||||
>
|
||||
<el-radio
|
||||
v-for="item of $d.ValueUnit"
|
||||
:key="item.id"
|
||||
:label="item.value"
|
||||
>
|
||||
{{ item.label }}
|
||||
</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
v-if="form.Type === 'upload'"
|
||||
label="最大上传个数"
|
||||
prop="ImageCount"
|
||||
>
|
||||
<el-input-number
|
||||
v-model="form.ImageCount"
|
||||
controls-position="right"
|
||||
:min="0"
|
||||
:max="10"
|
||||
/>
|
||||
</el-form-item>
|
||||
<!-- 文件类型 -->
|
||||
<el-form-item
|
||||
v-if="form.Type === 'upload'"
|
||||
label="文件类型"
|
||||
prop="FileType"
|
||||
:rules="[{ type: 'array', required: true, message: this.$t('common:ruleMessage:specify'), trigger: [ 'change'] }]"
|
||||
>
|
||||
<el-checkbox-group
|
||||
v-model="form.FileType"
|
||||
@change="(v) => {
|
||||
if (v && v.includes('-1')) {
|
||||
form.FileType = ['-1']
|
||||
}
|
||||
}"
|
||||
>
|
||||
<el-checkbox
|
||||
v-for="item of $d.fileType"
|
||||
:key="`fileType${item.value}`"
|
||||
:value="item.value + ''"
|
||||
:label="item.value"
|
||||
:disabled="form.FileType && form.FileType.includes('-1') && item.value !== '-1'"
|
||||
>
|
||||
{{ item.label }}
|
||||
</el-checkbox>
|
||||
</el-checkbox-group>
|
||||
</el-form-item>
|
||||
<!-- 分类 -->
|
||||
<el-form-item
|
||||
v-if="form.Type === 'class'"
|
||||
label="分类数据来源"
|
||||
prop="ClassifyTableQuestionId"
|
||||
>
|
||||
<el-select v-model="form.ClassifyTableQuestionId" clearable>
|
||||
<el-option v-for="item of Questions" :key="item.Id" :label="item.QuestionName"
|
||||
:value="item.Id"/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
v-if="form.Type === 'class'"
|
||||
label="分类算法"
|
||||
prop="ClassifyAlgorithms"
|
||||
>
|
||||
<div>
|
||||
<el-table
|
||||
ref="CalculateTable"
|
||||
:data="ClassifyAlgorithmsList"
|
||||
style="margin: 10px;width: 100%"
|
||||
size="small"
|
||||
>
|
||||
<!-- 运算类型 -->
|
||||
<el-table-column
|
||||
:label="$t('trials:readingUnit:label:label')"
|
||||
show-overflow-tooltip
|
||||
min-width="70"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.label }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- 运算类型 -->
|
||||
<el-table-column
|
||||
:label="$t('trials:readingUnit:label:gt')"
|
||||
show-overflow-tooltip
|
||||
min-width="128"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<el-input-number v-model="scope.row.gt"></el-input-number>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- 运算类型 -->
|
||||
<el-table-column
|
||||
:label="$t('trials:readingUnit:label:lt')"
|
||||
show-overflow-tooltip
|
||||
min-width="128"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<el-input-number v-model="scope.row.lt"></el-input-number>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</div>
|
||||
</div>
|
||||
<div class="base-dialog-footer" style="text-align:right;margin-top:10px;">
|
||||
<el-form-item>
|
||||
|
@ -349,7 +529,7 @@
|
|||
</template>
|
||||
<script>
|
||||
import { addOrUpdateReadingTableQuestionSystem, getReadingTableOtherQuestionSystem } from '@/api/trials'
|
||||
import { getBasicConfigSelect, getCriterionDictionaryList, getCriterionDictionary } from '@/api/dictionary'
|
||||
import { getBasicConfigSelect, getCriterionDictionaryList, getCriterionDictionary, getSystemCalculateTableQuestions } from '@/api/dictionary'
|
||||
|
||||
export default {
|
||||
name: 'AddOrUpdateTableQs',
|
||||
|
@ -366,6 +546,10 @@ export default {
|
|||
type: String,
|
||||
required: true
|
||||
},
|
||||
criterionType: {
|
||||
type: Number,
|
||||
required: true
|
||||
},
|
||||
type: {
|
||||
type: String,
|
||||
required: true
|
||||
|
@ -386,6 +570,7 @@ export default {
|
|||
}
|
||||
}
|
||||
return {
|
||||
ClassifyAlgorithmsList: [],
|
||||
form: {
|
||||
Id: '',
|
||||
ReadingQuestionId: '',
|
||||
|
@ -398,11 +583,13 @@ export default {
|
|||
ParentId: '',
|
||||
ParentTriggerValue: '',
|
||||
ShowOrder: 0,
|
||||
ShowQuestion: null,
|
||||
IsRequired: true,
|
||||
ShowQuestion: 0,
|
||||
IsRequired: 2,
|
||||
Remark: '',
|
||||
RelevanceId: '',
|
||||
RelevanceValue: '',
|
||||
RelevanceValueList: [],
|
||||
ParentTriggerValueList: [],
|
||||
DataTableName: '',
|
||||
DataTableColumn: '',
|
||||
DictionaryCode: '',
|
||||
|
@ -410,17 +597,26 @@ export default {
|
|||
MaxRowCount: null,
|
||||
DependParentId: '',
|
||||
QuestionMark: null,
|
||||
LimitEdit: null,
|
||||
GlobalReadingShowType: null
|
||||
|
||||
LimitEdit: 0,
|
||||
// GlobalReadingShowType: null,
|
||||
QuestionClassify: null,
|
||||
HighlightAnswerList: [],
|
||||
MaxAnswerLength: null,
|
||||
IsCopy: false,
|
||||
FileType: [],
|
||||
ImageCount: 0,
|
||||
ClassifyTableQuestionId: null,
|
||||
ClassifyAlgorithms: null,
|
||||
ExportIdentification: 0,
|
||||
ExportResult: []
|
||||
// IsEnable: true
|
||||
},
|
||||
rules: {
|
||||
Type: [
|
||||
{ required: true, message: '请选择', trigger: 'blur' }
|
||||
],
|
||||
QuestionName: [{ required: true, message: '请注明', trigger: 'blur' },
|
||||
{ max: 300, message: '最大长度为 300' }],
|
||||
// QuestionName: [{ required: true, message: '请注明', trigger: 'blur' },
|
||||
// { max: 300, message: '最大长度为 300' }],
|
||||
|
||||
TypeValue: [{ required: true, message: '请注明', trigger: 'blur' },
|
||||
{ validator: validateTypeVal, trigger: 'blur' },
|
||||
|
@ -428,15 +624,21 @@ export default {
|
|||
ShowQuestion: [{ required: true, message: '请选择', trigger: 'blur' }],
|
||||
IsRequired: [{ required: true, message: '请选择', trigger: 'blur' }],
|
||||
ParentId: [{ required: true, message: '请选择', trigger: 'blur' }],
|
||||
ParentTriggerValue: [
|
||||
ParentTriggerValueList: [
|
||||
{ required: true, message: '请选择', trigger: 'blur' }
|
||||
],
|
||||
RelevanceId: [{ required: true, message: '请选择', trigger: 'blur' }],
|
||||
RelevanceValue: [{ required: true, message: '请选择', trigger: 'blur' }],
|
||||
RelevanceValueList: [{ required: true, message: '请选择', trigger: 'blur' }],
|
||||
DataTableName: [{ required: true, message: '请选择', trigger: 'blur' }],
|
||||
DataTableColumn: [{ required: true, message: '请选择', trigger: 'blur' }],
|
||||
// DictionaryCode: [{ required: true, message: '请选择', trigger: 'blur' }],
|
||||
DependParentId: [{ required: true, message: '请选择', trigger: 'blur' }]
|
||||
DependParentId: [{ required: true, message: '请选择', trigger: 'blur' }],
|
||||
ExportIdentification: [
|
||||
{ required: true, message: this.$t('common:ruleMessage:select'), trigger: 'blur' },
|
||||
],
|
||||
ExportResult: [
|
||||
{ required: true, message: this.$t('common:ruleMessage:select'), trigger: 'blur' },
|
||||
]
|
||||
},
|
||||
loading: false,
|
||||
parentOptions: [],
|
||||
|
@ -445,18 +647,43 @@ export default {
|
|||
tblOptions: [],
|
||||
colOptions: [],
|
||||
dicList: [],
|
||||
CriterionDictionaryList: []
|
||||
CriterionDictionaryList: [],
|
||||
Questions: []
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.initForm()
|
||||
this.getCriterionDictionary()
|
||||
this.getCalculateQuestions('number')
|
||||
},
|
||||
methods: {
|
||||
typeValueChange(v) {
|
||||
this.form.DefaultValue = null
|
||||
var list = v.split('|')
|
||||
this.form.ClassifyAlgorithms = null
|
||||
var arr = Object.assign([], this.ClassifyAlgorithmsList)
|
||||
this.ClassifyAlgorithmsList = list.map((res, i) => {
|
||||
return {
|
||||
label: res,
|
||||
lt: arr[i] ? arr[i].lt : 0,
|
||||
gt: arr[i] ? arr[i].gt : 0
|
||||
}
|
||||
})
|
||||
},
|
||||
getCalculateQuestions(type) {
|
||||
getSystemCalculateTableQuestions({
|
||||
questionId: this.readingQuestionId,
|
||||
type: type
|
||||
}).then(res => {
|
||||
if (type === 'number') {
|
||||
this.Questions = res.Result
|
||||
}
|
||||
})
|
||||
},
|
||||
getCriterionDictionary() {
|
||||
getCriterionDictionary({
|
||||
ReadingCriterionId: this.criterionId,
|
||||
DictionaryCodeList: ['QuestionMark', 'OrganColumn']
|
||||
DictionaryCodeList: ['QuestionMark', 'OrganColumn', 'ExportResult']
|
||||
}).then(res => {
|
||||
this.CriterionDictionaryList = res.Result
|
||||
})
|
||||
|
@ -467,9 +694,15 @@ export default {
|
|||
if (Object.keys(this.data).length > 0) {
|
||||
for (const k in this.form) {
|
||||
if (this.data.hasOwnProperty(k)) {
|
||||
if (k === 'ClassifyAlgorithms' && this.data[k] !== undefined && this.data[k] !== '') {
|
||||
this.ClassifyAlgorithmsList = JSON.parse(this.data[k])
|
||||
} else if(k === 'FileType'){
|
||||
this.form[k] = this.data[k].split(',')
|
||||
} else {
|
||||
this.form[k] = this.data[k]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (this.form.ParentId) {
|
||||
var index = this.parentOptions.findIndex(item => {
|
||||
|
@ -492,12 +725,13 @@ export default {
|
|||
return item.QuestionId === this.form.RelevanceId
|
||||
})
|
||||
if (i !== -1) {
|
||||
if (this.parentOptions[index].QuestionGenre === 3) {
|
||||
this.reParentTriggerValOptions = this.$d[this.parentOptions[index].DictionaryCode]
|
||||
if (this.parentOptions[i].QuestionGenre === 3) {
|
||||
console.log(this.$d[this.parentOptions[i].DictionaryCode])
|
||||
this.reParentTriggerValOptions = this.$d[this.parentOptions[i].DictionaryCode]
|
||||
} else {
|
||||
const options = []
|
||||
this.parentOptions[index].TypeValue.split('|').forEach((item, index) => {
|
||||
options.push({ id: index, label: item, value: item })
|
||||
this.parentOptions[i].TypeValue.split('|').forEach((item, index) => {
|
||||
options.push({ id: i, label: item, value: item })
|
||||
})
|
||||
this.reParentTriggerValOptions = options
|
||||
}
|
||||
|
@ -509,9 +743,15 @@ export default {
|
|||
this.$refs.tableQsForm.validate(valid => {
|
||||
if (!valid) return
|
||||
this.loading = true
|
||||
this.form.ClassifyAlgorithms = JSON.stringify(this.ClassifyAlgorithmsList)
|
||||
this.form.SystemCriterionId = this.criterionId
|
||||
this.form.ReadingQuestionId = this.readingQuestionId
|
||||
addOrUpdateReadingTableQuestionSystem(this.form).then(res => {
|
||||
var params = Object.assign({}, this.form)
|
||||
if (this.form.Type !== 'upload') {
|
||||
this.form.ImageCount = 0
|
||||
}
|
||||
params.FileType = this.form.FileType.join(',')
|
||||
addOrUpdateReadingTableQuestionSystem(params).then(res => {
|
||||
this.$emit('getList')
|
||||
this.loading = false
|
||||
this.$emit('close')
|
||||
|
@ -589,8 +829,10 @@ export default {
|
|||
var index = this.parentOptions.findIndex(item => {
|
||||
return item.QuestionId === val
|
||||
})
|
||||
console.log(this.$d[this.parentOptions[index].DictionaryCode], this.parentOptions[index].QuestionGenre)
|
||||
if (index !== -1) {
|
||||
if (this.parentOptions[index].QuestionGenre === 3) {
|
||||
console.log(this.$d[this.parentOptions[index].DictionaryCode])
|
||||
this.reParentTriggerValOptions = this.$d[this.parentOptions[index].DictionaryCode]
|
||||
} else {
|
||||
const options = []
|
||||
|
@ -622,14 +864,34 @@ export default {
|
|||
form.DataTableColumn = ''
|
||||
},
|
||||
qsTypeChange(val, form) {
|
||||
if (val === 'number' || val === 'calculation') {
|
||||
form.Unit = 0
|
||||
} else {
|
||||
form.Unit = null
|
||||
}
|
||||
if (val === 'input' || val === 'textarea') {
|
||||
form.MaxAnswerLength = 500
|
||||
} else {
|
||||
form.MaxAnswerLength = null
|
||||
}
|
||||
form.TypeValue = ''
|
||||
form.ValueType = ''
|
||||
form.Unit = ''
|
||||
form.IsRequired = 2
|
||||
form.TableQuestionType = null
|
||||
form.DependParentId = ''
|
||||
form.DataTableColumn = ''
|
||||
form.DataTableName = ''
|
||||
form.DictionaryCode = ''
|
||||
form.MaxRowCount = null
|
||||
form.QuestionClassify = null
|
||||
form.HighlightAnswerList = []
|
||||
form.IsCopy = false
|
||||
form.FileType = []
|
||||
form.ImageCount = null
|
||||
form.ClassifyTableQuestionId = null
|
||||
form.ClassifyAlgorithms = null
|
||||
form.ExportIdentification = 0
|
||||
form.ExportResult = []
|
||||
},
|
||||
close() {
|
||||
this.$emit('close')
|
||||
|
|
|
@ -27,12 +27,12 @@
|
|||
/>
|
||||
<el-table-column
|
||||
prop="QuestionName"
|
||||
label="阅片问题"
|
||||
label="问题名称"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
prop="QuestionEnName"
|
||||
label="阅片问题(EN)"
|
||||
label="问题名称(EN)"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
|
@ -44,7 +44,7 @@
|
|||
{{ $fd('Criterion_Question_Type',scope.row.Type) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
<!-- <el-table-column
|
||||
prop="TableQuestionType"
|
||||
label="选项类型"
|
||||
show-overflow-tooltip
|
||||
|
@ -60,20 +60,7 @@
|
|||
show-overflow-tooltip
|
||||
min-width="110"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="DependShowOrder"
|
||||
label="关联问题"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
prop="DataTableColumn"
|
||||
label="关联字段"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
{{ $fd('OrganColumn',scope.row.DataTableColumn) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
-->
|
||||
<el-table-column
|
||||
prop="ShowQuestion"
|
||||
label="是否显示"
|
||||
|
@ -94,7 +81,7 @@
|
|||
{{ $fd('QuestionRequired',scope.row.IsRequired) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
<!-- <el-table-column
|
||||
prop="IsJudgeQuestion"
|
||||
label="是否裁判问题"
|
||||
show-overflow-tooltip
|
||||
|
@ -102,8 +89,8 @@
|
|||
<template slot-scope="scope">
|
||||
{{ $fd('YesOrNo',scope.row.IsJudgeQuestion) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
</el-table-column> -->
|
||||
<!-- <el-table-column
|
||||
prop="ParentQuestionShowOrder"
|
||||
label="显示依赖父问题"
|
||||
min-width="90"
|
||||
|
@ -124,8 +111,64 @@
|
|||
prop="RelevanceValue"
|
||||
label="必填触发值"
|
||||
show-overflow-tooltip
|
||||
/> -->
|
||||
<!-- 导出标识 -->
|
||||
<!-- <el-table-column
|
||||
prop="ExportIdentification"
|
||||
:label="$t('trials:readingUnit:qsList:title:ExportIdentification')"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
{{ $fd('ExportIdentification', scope.row.ExportIdentification) }}
|
||||
</template>
|
||||
</el-table-column> -->
|
||||
<!-- 问题标识 -->
|
||||
<el-table-column
|
||||
prop="QuestionMark"
|
||||
label="问题标识"
|
||||
width="140"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
{{ $fd('QuestionMark', scope.row.QuestionMark) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- 导出目标表格 -->
|
||||
<el-table-column
|
||||
prop="ExportResult"
|
||||
:label="$t('trials:readingUnit:qsList:title:ExportResult')"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
{{ getStringResult(scope.row.ExportResult, 'ExportResult') }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- 限制编辑 -->
|
||||
<el-table-column
|
||||
prop="LimitEdit"
|
||||
:label="$t('trials:readingUnit:qsList:title:limitEdit')"
|
||||
width="160"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
{{ $fd('LimitEdit', scope.row.LimitEdit) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- <el-table-column
|
||||
prop="DependShowOrder"
|
||||
label="关联问题"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
prop="DataTableColumn"
|
||||
label="关联字段"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
{{ $fd('OrganColumn',scope.row.DataTableColumn) }}
|
||||
</template>
|
||||
</el-table-column> -->
|
||||
<!-- <el-table-column
|
||||
prop="ImageCount"
|
||||
label="最大上传个数"
|
||||
show-overflow-tooltip
|
||||
|
@ -134,6 +177,7 @@
|
|||
{{ scope.row.Type === 'upload'?scope.row.ImageCount:'' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
-->
|
||||
<el-table-column
|
||||
prop="MaxRowCount"
|
||||
label="最大行数"
|
||||
|
@ -184,7 +228,7 @@
|
|||
:visible.sync="addOrEdit.visible"
|
||||
:close-on-click-modal="false"
|
||||
:title="addOrEdit.title"
|
||||
width="600px"
|
||||
width="650px"
|
||||
append-to-body
|
||||
custom-class="base-dialog-wrapper"
|
||||
>
|
||||
|
@ -194,6 +238,7 @@
|
|||
:type="type"
|
||||
:reading-question-id="readingQuestionId"
|
||||
:criterion-id="criterionId"
|
||||
:criterionType="criterionType"
|
||||
@close="addOrEdit.visible = false"
|
||||
@getList="getList"
|
||||
/>
|
||||
|
@ -225,7 +270,11 @@ export default {
|
|||
criterionId: {
|
||||
type: String,
|
||||
required: true
|
||||
}
|
||||
},
|
||||
criterionType: {
|
||||
type: Number,
|
||||
required: true
|
||||
},
|
||||
|
||||
},
|
||||
data() {
|
||||
|
@ -285,6 +334,11 @@ export default {
|
|||
}).catch(() => { this.loading = false })
|
||||
})
|
||||
},
|
||||
getStringResult(arr, dictionaryCode) {
|
||||
let newArr = arr.map(i => this.$fd(dictionaryCode, i))
|
||||
let delimiter = this.$i18n.locale === 'zh' ? ',' : ', '
|
||||
return newArr.join(delimiter)
|
||||
},
|
||||
// 查询
|
||||
handleSearch() {
|
||||
this.getList()
|
||||
|
|
Loading…
Reference in New Issue