稽查配置和系统阅片标准配置更新
continuous-integration/drone/push Build is passing Details

main
caiyiling 2024-11-21 10:19:54 +08:00
parent 7c6b010fe1
commit 8e0c186ee7
14 changed files with 1919 additions and 960 deletions

View File

@ -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
})
}

View File

@ -242,6 +242,11 @@ export const constantRoutes = [
component: () => import('@/views/404'), component: () => import('@/views/404'),
hidden: true hidden: true
}, },
{
path: '/ecrfPreview',
component: () => import('@/views/dictionary/template/components/ECRF'),
hidden: true
},
{ {
path: '/editUser', path: '/editUser',
component: Layout, component: Layout,

View File

@ -33,7 +33,7 @@
<el-table-column prop="ModuleTypeValueCN" label="模块" show-overflow-tooltip align="left" min-width="230px" /> <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"> <el-table-column prop="Description" label="操作名称" :show-overflow-tooltip="true" min-width="200px">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ scope.row.Description }}{{scope.row.DescriptionCN}}</span> <span>{{ scope.row.DescriptionCN }}{{scope.row.Description}}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="DescriptionCN" label="其他" :show-overflow-tooltip="true" min-width="140px"> <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="Identification" label="标识" :show-overflow-tooltip="true" min-width="200px" />
<el-table-column prop="OptTypeValueCN" label="操作类型" show-overflow-tooltip width="100px" /> <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="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 <el-table-column
prop="Sort" prop="Sort"
label="显示顺序" 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-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-row>
<el-col v-show="title !== '复制'" :span="24"> <el-col v-show="title !== '复制'" :span="24">
<el-divider content-position="left">基本信息</el-divider> <el-divider content-position="left">基本信息</el-divider>
@ -142,11 +142,16 @@
<el-input v-model="form.Identification" placeholder="请输入标识" /> <el-input v-model="form.Identification" placeholder="请输入标识" />
</el-form-item> </el-form-item>
</el-col> </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-form-item label="字段key">
<el-input v-model="form.Code" placeholder="请输入字段key" /> <el-input v-model="form.Code" placeholder="请输入字段key" />
</el-form-item> </el-form-item>
</el-col> </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-col v-show="form.ConfigType === 'C' && title !== '复制'" :span="12">
<el-form-item label="字段英文"> <el-form-item label="字段英文">
<el-input v-model="form.Value" placeholder="请输入字段英文" /> <el-input v-model="form.Value" placeholder="请输入字段英文" />
@ -259,9 +264,11 @@
<el-radio label="Router">路由</el-radio> <el-radio label="Router">路由</el-radio>
<el-radio label="Image">图片</el-radio> <el-radio label="Image">图片</el-radio>
<el-radio label="ImageList">图片数组</el-radio> <el-radio label="ImageList">图片数组</el-radio>
<el-radio label="OSS">OSS</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="24">
<el-row v-show="form.DataType === 'Router'" v-if="form.UrlConfig"> <el-row v-show="form.DataType === 'Router'" v-if="form.UrlConfig">
<el-col :span="12"> <el-col :span="12">
<el-form-item> <el-form-item>
@ -314,6 +321,7 @@
>删除</el-button> >删除</el-button>
</el-col> </el-col>
</el-row> </el-row>
</el-col>
<el-button v-show="form.DataType === 'Table'" type="primary" size="mini" style="position: relative;top: -15px" @click="addCol"> <el-button v-show="form.DataType === 'Table'" type="primary" size="mini" style="position: relative;top: -15px" @click="addCol">
增加列 增加列
</el-button> </el-button>
@ -369,6 +377,16 @@
<el-input :disabled="!scope.row.IsFixedColumn" v-model="scope.row.FixedColumnName" placeholder="固定列名"/> <el-input :disabled="!scope.row.IsFixedColumn" v-model="scope.row.FixedColumnName" placeholder="固定列名"/>
</template> </template>
</el-table-column> </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 <el-table-column
prop="ColumnName" prop="ColumnName"
min-width="120" min-width="120"
@ -379,6 +397,16 @@
<el-input :disabled="scope.row.IsFixedColumn" v-model="scope.row.ColumnName" placeholder="列字段名"/> <el-input :disabled="scope.row.IsFixedColumn" v-model="scope.row.ColumnName" placeholder="列字段名"/>
</template> </template>
</el-table-column> </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 <el-table-column
prop="ColumnValue" prop="ColumnValue"
min-width="120" min-width="120"
@ -412,6 +440,16 @@
<el-input :disabled="!scope.row.IsMerge" v-model="scope.row.MergeColumnName" placeholder="合并组"/> <el-input :disabled="!scope.row.IsMerge" v-model="scope.row.MergeColumnName" placeholder="合并组"/>
</template> </template>
</el-table-column> </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 <el-table-column
prop="IsPicture" prop="IsPicture"
min-width="120" min-width="120"
@ -486,6 +524,14 @@
<el-input v-model="form.ChildDataLabel" placeholder="请输入子数据Lable" /> <el-input v-model="form.ChildDataLabel" placeholder="请输入子数据Lable" />
</el-form-item> </el-form-item>
</el-col> </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-col v-show="form.ConfigType === 'C' && title !== '复制' && form.DataType === 'Array'" :span="12">
<el-form-item> <el-form-item>
<span slot="label"> <span slot="label">
@ -510,12 +556,27 @@
</el-col> </el-col>
<el-col v-show="form.ConfigType === 'C' && title !== '复制' && form.EnumType === 'Dictionary'" :span="12"> <el-col v-show="form.ConfigType === 'C' && title !== '复制' && form.EnumType === 'Dictionary'" :span="12">
<el-form-item label="字典表名"> <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-form-item>
</el-col> </el-col>
<el-col v-show="form.ConfigType === 'C' && title !== '复制' && form.EnumType === 'Dictionary'" :span="12"> <el-col v-show="form.ConfigType === 'C' && title !== '复制' && form.EnumType === 'Dictionary'" :span="12">
<el-form-item label="翻译字段"> <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-form-item>
</el-col> </el-col>
<el-col v-show="form.ConfigType === 'C' && title !== '复制' && form.EnumType === 'Date'" :span="24"> <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-input v-model="form.ForeignKeyText" placeholder="请输入数据库字段to" />
</el-form-item> </el-form-item>
</el-col> </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-row>
</el-col> </el-col>
<el-col v-show="title !== '复制'" :span="24"> <el-col v-show="title !== '复制'" :span="24">
@ -605,11 +671,11 @@
<div style="padding: 0 40px;display: flex;flex-direction: column"> <div style="padding: 0 40px;display: flex;flex-direction: column">
<div style="text-align: right;height: 50px;"> <div style="text-align: right;height: 50px;">
<el-select v-model="copeParams.FromItemId" collapse-tags filterable placeholder="完全拷贝对象" clearable size="small"> <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-select>
<el-button type="primary" size="mini" style="margin-right: 10px" @click="handleOverCope(selectRow)"></el-button> <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-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-select>
<el-button type="primary" size="mini" @click="handleCope(selectRow)"></el-button> <el-button type="primary" size="mini" @click="handleCope(selectRow)"></el-button>
<el-button type="primary" size="mini" @click="handleAdd(selectRow)"></el-button> <el-button type="primary" size="mini" @click="handleAdd(selectRow)"></el-button>
@ -625,6 +691,7 @@
height="100" height="100"
> >
<el-table-column prop="Code" label="字段名" min-width="120px" :show-overflow-tooltip="true" /> <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="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 prop="ValueCN" label="字段中文" min-width="120px" :show-overflow-tooltip="true" />
<el-table-column <el-table-column
@ -665,6 +732,12 @@
<el-table-column prop="TrialConfigRelyFieldName" label="依赖字段" min-width="120px" :show-overflow-tooltip="true" /> <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"> <el-table-column label="操作" align="center" min-width="180" class-name="small-padding fixed-width">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleCopyData(scope.row)"
>复制</el-button>
<el-button <el-button
size="mini" size="mini"
type="text" type="text"
@ -687,7 +760,7 @@
</template> </template>
<script> <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 Treeselect from '@riophae/vue-treeselect'
import '@riophae/vue-treeselect/dist/vue-treeselect.css' import '@riophae/vue-treeselect/dist/vue-treeselect.css'
import Sortable from 'sortablejs' import Sortable from 'sortablejs'
@ -730,7 +803,8 @@ export default {
refreshTable: true, refreshTable: true,
childrenList: [], childrenList: [],
// //
form: {}, form: {
},
selectRow: null, selectRow: null,
model_cfg: { visible: false, showClose: true, width: '680px', title: '', appendToBody: true }, model_cfg: { visible: false, showClose: true, width: '680px', title: '', appendToBody: true },
drawer_cfg: { drawerChild: false, parentId: '', title: '' }, drawer_cfg: { drawerChild: false, parentId: '', title: '' },
@ -739,13 +813,41 @@ export default {
}, },
ChildGroup: null, ChildGroup: null,
tableShow: false, tableShow: false,
rowDrop2TableIsShow: true rowDrop2TableIsShow: true,
DictionaryCodeList:[]
} }
}, },
created() { created() {
this.getList() this.getList();
this.getDictionaryCodeList();
}, },
methods: { 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() { addParameter() {
this.form.UrlConfig.ParameterList.push({ this.form.UrlConfig.ParameterList.push({
UrlParameterName: null, UrlParameterName: null,
@ -768,10 +870,13 @@ export default {
ListName: null, ListName: null,
IsFixedColumn: false, IsFixedColumn: false,
FixedColumnName: null, FixedColumnName: null,
FixedColumnEnName: null,
ColumnName: null, ColumnName: null,
ColumnEnName: null,
ColumnValue: null, ColumnValue: null,
IsMerge: false, IsMerge: false,
MergeColumnName: null, MergeColumnName: null,
MergeColumnEnName: null,
IsPicture: false, IsPicture: false,
IsDynamicTranslate: false, IsDynamicTranslate: false,
IsNeedTransalate: false, IsNeedTransalate: false,
@ -1044,6 +1149,7 @@ export default {
IsShowParent: 0, IsShowParent: 0,
Sort: 0, Sort: 0,
Code: null, Code: null,
CodeEn: null,
Value: null, Value: null,
ValueCN: null, ValueCN: null,
EnumType: '', EnumType: '',
@ -1058,6 +1164,7 @@ export default {
IsSpecialType: false, IsSpecialType: false,
DataType: '', DataType: '',
ChildDataLabel: null, ChildDataLabel: null,
ChildDataEnLabel: null,
ChildDataValue: null, ChildDataValue: null,
DateType: null, DateType: null,
DictionaryCode: null, DictionaryCode: null,
@ -1065,6 +1172,7 @@ export default {
ForeignKeyTableName: null, ForeignKeyTableName: null,
ForeignKeyValue: null, ForeignKeyValue: null,
ForeignKeyText: null, ForeignKeyText: null,
ForeignKeyEnText: null,
TableConfigList: [], TableConfigList: [],
UrlConfig: { UrlConfig: {
RoutePath: null, RoutePath: null,
@ -1142,6 +1250,16 @@ export default {
this.title = '修改' this.title = '修改'
this.rowDrop2() 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() { submitForm: function() {
this.$refs['form'].validate(valid => { this.$refs['form'].validate(valid => {

View File

@ -7,6 +7,7 @@
<el-button <el-button
size="mini" size="mini"
type="primary" type="primary"
:disabled="isCompleteConfig"
@click="handleAdd" @click="handleAdd"
style="margin-right: 10px;" style="margin-right: 10px;"
> >
@ -59,12 +60,13 @@
show-overflow-tooltip show-overflow-tooltip
> >
<template slot-scope="scope"> <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>
<el-button <el-button
type="danger" type="danger"
size="small" size="small"
:disabled="isCompleteConfig"
@click="handleDelete(scope.row)" @click="handleDelete(scope.row)"
> >
删除 删除
@ -151,6 +153,10 @@ export default {
criterionId: { criterionId: {
type: String, type: String,
required: true required: true
},
isCompleteConfig: {
type: Boolean,
required: true
} }
}, },
components: { components: {
@ -207,7 +213,6 @@ export default {
}).then(res => { }).then(res => {
this.loading = false this.loading = false
this.list = res.Result this.list = res.Result
console.log(this.$d.GlobalAssessType)
}) })
}, },
handleAdd() { handleAdd() {
@ -259,8 +264,8 @@ export default {
} }
</script> </script>
<style scoped> <style lang="scss" scoped>
>>>.el-form-item__content{ /deep/ .el-form-item__content{
width: calc(100% - 110px); width: calc(100% - 110px);
} }
</style> </style>

View File

@ -62,7 +62,7 @@
<template slot-scope="scope"> <template slot-scope="scope">
<div> <div>
<el-radio-group v-model="scope.row.CrterionDictionaryGroup" @change="(v) => {crterionDictionaryGroupChange(v, scope.row)}" size="mini"> <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> </el-radio-group>
</div> </div>
</template> </template>
@ -158,7 +158,6 @@ export default {
}, },
mounted() { mounted() {
this.getList() this.getList()
console.log(this.$d[this.parentCode])
}, },
methods: { methods: {
crterionDictionaryGroupChange(v, row) { crterionDictionaryGroupChange(v, row) {
@ -231,8 +230,8 @@ export default {
} }
</script> </script>
<style scoped> <style lang="scss" scoped>
>>>.el-form-item__content{ /deep/ .el-form-item__content{
width: calc(100% - 110px); width: calc(100% - 110px);
} }
</style> </style>

View File

@ -13,18 +13,18 @@
{{ question.GroupName }} {{ question.GroupName }}
</div> </div>
<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;" style="font-weight: bold;font-size: 14px;margin: 5px 0px;"
> >
{{ question.QuestionName }} {{ question.QuestionName }}
</div> </div>
<template v-else> <template v-else>
<el-form-item <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}`" :label="`${question.QuestionName}`"
:prop="question.Id" :prop="question.Id"
:rules="[ :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']}, message: '请注明', trigger: ['blur', 'change']},
]" ]"
:class="[question.Type==='group'?'mb':question.Type==='upload'?'uploadWrapper':'']" :class="[question.Type==='group'?'mb':question.Type==='upload'?'uploadWrapper':'']"
@ -63,7 +63,7 @@
<el-option <el-option
v-for="item of $d[question.DictionaryCode]" v-for="item of $d[question.DictionaryCode]"
:key="item.id" :key="item.id"
:value="item.value" :value="item.value.toString()"
:label="item.label" :label="item.label"
/> />
</template> </template>
@ -95,7 +95,7 @@
<el-radio <el-radio
v-for="item of $d[question.DictionaryCode]" v-for="item of $d[question.DictionaryCode]"
:key="item.id" :key="item.id"
:label="item.value" :label="item.value.toString()"
> >
{{ item.label }} {{ item.label }}
</el-radio> </el-radio>
@ -139,14 +139,29 @@
/> />
<!-- 数值 --> <!-- 数值 -->
<!-- :precision="2" :step="0.1" :max="10" --> <!-- :precision="2" :step="0.1" :max="10" -->
<el-input-number <!-- <el-input-number
v-if="question.Type==='number'" v-if="question.Type==='number'"
v-model="questionForm[question.Id]" 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 <el-upload
v-if="question.Type==='upload'" v-if="question.Type==='upload'"
:action="accept" action
:accept="question.FileType"
:limit="question.ImageCount" :limit="question.ImageCount"
:on-preview="handlePictureCardPreview" :on-preview="handlePictureCardPreview"
:before-upload="handleBeforeUpload" :before-upload="handleBeforeUpload"
@ -160,8 +175,8 @@
<div slot="file" slot-scope="{file}"> <div slot="file" slot-scope="{file}">
<img <img
class="el-upload-list__item-thumbnail" class="el-upload-list__item-thumbnail"
crossOrigin="Anonymous"
:src="OSSclientConfig.basePath + file.url" :src="OSSclientConfig.basePath + file.url"
crossorigin="anonymous"
alt="" alt=""
> >
<span class="el-upload-list__item-actions"> <span class="el-upload-list__item-actions">
@ -320,7 +335,7 @@ export default {
setFormItemData(obj) { setFormItemData(obj) {
this.$emit('setFormItemData', obj) this.$emit('setFormItemData', obj)
}, },
uploadScreenshot(param) { async uploadScreenshot(param) {
if (!this.visitTaskId) return if (!this.visitTaskId) return
const loading = this.$loading({ const loading = this.$loading({
target: document.querySelector('.ecrf-wrapper'), target: document.querySelector('.ecrf-wrapper'),
@ -331,19 +346,17 @@ export default {
}) })
const formData = new FormData() const formData = new FormData()
formData.append('file', param.file) formData.append('file', param.file)
uploadReadingAnswerImage(this.$route.query.trialId, this.visitTaskId, formData).then(res => { var file = await this.fileToBlob(param.file)
if (res.IsSuccess) { const res = await this.OSSclient.put(`/${this.trialId}/ReadAttachment/${this.subjectId}/${this.visitTaskId}/${param.file.name}`, file)
this.fileList.push({ url: `${res.Result.Path}` }) this.fileList.push({ name: param.file.name, url: this.$getObjectName(res.url) })
this.urls.push(res.Result.Path) this.urls.push(this.$getObjectName(res.url))
this.$emit('setFormItemData', { key: this.question.Id, val: this.urls.length > 0 ? this.urls.join('|') : '' }) this.$emit('setFormItemData', { key: this.question.Id, val: this.urls.length > 0 ? this.urls.join('|') : '' })
}
loading.close() loading.close()
}).catch(() => {
loading.close()
})
}, },
handleBeforeUpload(file) { handleBeforeUpload(file) {
// //
console.log(file.name)
console.log(this.checkFileSuffix(file.name))
if (this.checkFileSuffix(file.name)) { if (this.checkFileSuffix(file.name)) {
// this.fileList = [] // this.fileList = []
return true return true
@ -363,7 +376,7 @@ export default {
}, },
// //
handlePictureCardPreview(file) { handlePictureCardPreview(file) {
this.imageUrl = file.url this.imageUrl = this.OSSclientConfig.basePath + file.url
this.imgVisible = true this.imgVisible = true
}, },
// //
@ -383,7 +396,7 @@ export default {
flex-direction: row; flex-direction: row;
align-items: flex-start; align-items: flex-start;
} }
>>>.el-form-item__content{ /deep/ .el-form-item__content{
width: 500px; width: 500px;
} }
.el-input{ .el-input{
@ -393,7 +406,7 @@ export default {
margin-bottom: 0px; margin-bottom: 0px;
} }
.disabled{ .disabled{
>>>.el-upload--picture-card { /deep/ .el-upload--picture-card {
display: none; display: none;
} }
} }

View File

@ -1,10 +1,10 @@
<template> <template>
<div class="criterion-config"> <div class="criterion-config">
<el-tabs v-model="activeName"> <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;"> <div class="search-form" style="display:flex;justify-content: space-between;">
<el-form :inline="true" size="mini" class="base-search-form"> <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-input v-model="searchData.QuestionName" clearable style="width:120px;" />
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
@ -18,7 +18,7 @@
:disabled="list.length === 0" :disabled="list.length === 0"
size="mini" size="mini"
type="primary" type="primary"
@click="preview.visible = true" @click="handlePreview"
> >
预览 预览
</el-button> </el-button>
@ -107,7 +107,7 @@
<el-table-column <el-table-column
prop="IsShowInDicom" prop="IsShowInDicom"
label="是否在阅片页面显示" label="是否在阅片页面显示"
width="140" width="150"
show-overflow-tooltip show-overflow-tooltip
> >
<template slot-scope="scope"> <template slot-scope="scope">
@ -115,13 +115,13 @@
</template> </template>
</el-table-column> </el-table-column>
<!-- 注释 --> <!-- 注释 -->
<el-table-column <!-- <el-table-column
prop="Remark" prop="Remark"
:label="$t('trials:readingUnit:qsList:title:Remark')" :label="$t('trials:readingUnit:qsList:title:Remark')"
width="140" width="140"
show-overflow-tooltip show-overflow-tooltip
> >
</el-table-column> </el-table-column> -->
<el-table-column <el-table-column
prop="GlobalReadingShowType" prop="GlobalReadingShowType"
label="是否在全局阅片显示" label="是否在全局阅片显示"
@ -132,6 +132,39 @@
{{ $fd('GlobalReadingShowType', scope.row.GlobalReadingShowType) }} {{ $fd('GlobalReadingShowType', scope.row.GlobalReadingShowType) }}
</template> </template>
</el-table-column> </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 <el-table-column
prop="LimitEdit" prop="LimitEdit"
@ -170,7 +203,7 @@
<el-button <el-button
type="primary" type="primary"
size="mini" size="mini"
:disabled="scope.row.Type !== 'table'" :disabled="!(scope.row.Type === 'table' || scope.row.Type === 'basicTable')"
@click="handleConfig(scope.row)" @click="handleConfig(scope.row)"
> >
表格问题 表格问题
@ -200,8 +233,8 @@
v-if="addOrEdit.visible" v-if="addOrEdit.visible"
:visible.sync="addOrEdit.visible" :visible.sync="addOrEdit.visible"
:close-on-click-modal="false" :close-on-click-modal="false"
:title="addOrEdit.title" :title="`${addOrEdit.title}`"
width="600px" width="650px"
append-to-body append-to-body
custom-class="base-dialog-wrapper" custom-class="base-dialog-wrapper"
> >
@ -209,6 +242,8 @@
ref="addOrEdit" ref="addOrEdit"
:data="rowData" :data="rowData"
:type="type" :type="type"
:criterionType="data.CriterionType"
:criterionId="data.Id"
@close="addOrEdit.visible = false" @close="addOrEdit.visible = false"
@getList="getList" @getList="getList"
/> />
@ -241,6 +276,7 @@
> >
<TableQsList <TableQsList
:criterion-id="criterionId" :criterion-id="criterionId"
:criterionType="data.CriterionType"
:reading-question-id="rowData.Id" :reading-question-id="rowData.Id"
:is-complete-config="data.IsCompleteConfig" :is-complete-config="data.IsCompleteConfig"
:lesion-type="rowData.LesionType" :lesion-type="rowData.LesionType"
@ -288,16 +324,14 @@ export default {
rowData: {}, rowData: {},
activeName: '0', activeName: '0',
addOrEdit: { visible: false, title: '' }, addOrEdit: { visible: false, title: '' },
preview: { visible: false, title: 'eCRF预览' }, preview: { visible: false, title: 'eCRF' + this.$t('common:button:preview') },
config: { visible: false, title: '' } config: { visible: false, title: '' }
} }
}, },
watch: { watch: {
list() { list() {
this.$nextTick(() => { this.$nextTick(() => {
if(this.$refs.criterionQSList){
this.$refs.criterionQSList.doLayout() this.$refs.criterionQSList.doLayout()
}
}) })
} }
}, },
@ -305,6 +339,9 @@ export default {
this.getList() this.getList()
}, },
methods: { methods: {
handlePreview() {
window.open(`/ecrfPreview?SystemReadingCriterionId=${this.criterionId}&lang=${this.$i18n.locale}`)
},
getList() { getList() {
this.loading = true this.loading = true
this.searchData.ReadingQuestionCriterionSystemId = this.criterionId this.searchData.ReadingQuestionCriterionSystemId = this.criterionId
@ -351,9 +388,14 @@ export default {
}, },
handleConfig(row) { handleConfig(row) {
this.rowData = { ...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 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() { handleSearch() {
this.getList() this.getList()

View File

@ -3,7 +3,9 @@
<!-- 搜索框 --> <!-- 搜索框 -->
<div class="search"> <div class="search">
<el-form :inline="true" size="mini" class="base-search-form"> <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-input v-model="searchData.CriterionName" clearable style="width:120px;" />
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
@ -102,6 +104,7 @@
<el-button <el-button
type="danger" type="danger"
size="mini" size="mini"
:disabled="scope.row.IsCompleteConfig"
@click="handleDelete(scope.row)" @click="handleDelete(scope.row)"
> >
删除 删除
@ -131,7 +134,7 @@
<el-dialog <el-dialog
v-if="configVisible" v-if="configVisible"
title="eCRF" :title="'eCRF' + `(${rowData.CriterionName})`"
:visible.sync="configVisible" :visible.sync="configVisible"
:close-on-click-modal="false" :close-on-click-modal="false"
:fullscreen="true" :fullscreen="true"
@ -143,7 +146,7 @@
<el-dialog <el-dialog
v-if="configBaseDataVisible" v-if="configBaseDataVisible"
title="基础数据配置" :title="'基础数据配置' + `(${rowData.CriterionName})`"
:visible.sync="configBaseDataVisible" :visible.sync="configBaseDataVisible"
:close-on-click-modal="false" :close-on-click-modal="false"
:fullscreen="true" :fullscreen="true"
@ -188,6 +191,7 @@ export default {
addDialog: { title: '', visible: false } addDialog: { title: '', visible: false }
} }
}, },
mounted() { mounted() {
this.getList() this.getList()
}, },
@ -219,7 +223,7 @@ export default {
deleteReadingQuestionCriterionSystem(row.Id).then(res => { deleteReadingQuestionCriterionSystem(row.Id).then(res => {
this.loading = false this.loading = false
if (res.IsSuccess) { if (res.IsSuccess) {
this.$message.success('保存成功!') this.$message.success(this.$t('common:message:savedSuccessfully'))
this.getList() this.getList()
} }
}).catch(() => { this.loading = false }) }).catch(() => { this.loading = false })
@ -246,7 +250,7 @@ export default {
setSystemReadingQuestionCriterionIsCompleteConfig(params).then(res => { setSystemReadingQuestionCriterionIsCompleteConfig(params).then(res => {
this.loading = false this.loading = false
if (res.IsSuccess) { if (res.IsSuccess) {
this.$message.success('保存成功!') this.$message.success(this.$t('common:message:savedSuccessfully'))
this.getList() this.getList()
} }
}).catch(() => { this.loading = false }) }).catch(() => { this.loading = false })

View File

@ -1,5 +1,5 @@
<template> <template>
<div v-loading="loading" style="min-height:400px;"> <div v-loading="loading" style="min-height:400px;padding:20px">
<el-form <el-form
v-if="isRender" v-if="isRender"
ref="questions" ref="questions"
@ -25,18 +25,13 @@
import { getSystemReadingQuestion } from '@/api/dictionary' import { getSystemReadingQuestion } from '@/api/dictionary'
import CriterionFormItem from './CriterionFormItem' import CriterionFormItem from './CriterionFormItem'
import {mapMutations} from "vuex";
export default { export default {
name: 'EcrfPreview', name: 'EcrfPreview',
components: { components: {
CriterionFormItem CriterionFormItem
}, },
props: {
criterionId: {
type: String,
required: true
}
},
data() { data() {
return { return {
loading: false, loading: false,
@ -49,9 +44,14 @@ export default {
} }
}, },
mounted() { mounted() {
this.$i18n.locale = this.$route.query.lang
this.setLanguage(this.$route.query.lang)
this.$updateDictionary()
this.criterionId = this.$route.query.SystemReadingCriterionId
this.getQuestions() this.getQuestions()
}, },
methods: { methods: {
...mapMutations({ setLanguage: 'lang/setLanguage' }),
getQuestions() { getQuestions() {
this.loading = true this.loading = true
var param = { var param = {

View File

@ -9,7 +9,7 @@
> >
<div class="base-dialog-body"> <div class="base-dialog-body">
<!-- 类型 --> <!-- 类型 -->
<el-form-item label="病灶类型" prop="OrganType"> <el-form-item label="器官类型" prop="OrganType">
<el-select <el-select
v-model="form.OrganType" v-model="form.OrganType"
> >
@ -69,7 +69,7 @@
>{{ item.label }}</el-radio> >{{ item.label }}</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="序号"> <el-form-item label="序号" prop="ShowOrder">
<el-input v-model="form.ShowOrder" type="number" /> <el-input v-model="form.ShowOrder" type="number" />
</el-form-item> </el-form-item>
<!-- 描述 --> <!-- 描述 -->
@ -135,7 +135,8 @@ export default {
Part: [{ required: true, message: this.$t('common:ruleMessage:specify'), trigger: ['blur'] }], Part: [{ required: true, message: this.$t('common:ruleMessage:specify'), trigger: ['blur'] }],
TULOC: [{ 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'] }], 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: [], lesionTypes: [],
loading: false, loading: false,

View File

@ -5,7 +5,7 @@
<el-form :inline="true" size="mini"> <el-form :inline="true" size="mini">
<el-form-item label="器官类型"> <el-form-item label="器官类型">
<el-select v-model="searchData.OrganType" clearable style="width:130px;"> <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-select>
</el-form-item> </el-form-item>
<el-form-item label="部位"> <el-form-item label="部位">
@ -357,9 +357,8 @@ export default {
watch: { watch: {
list() { list() {
this.$nextTick(() => { this.$nextTick(() => {
if(this.$refs.organList){ if(!this.$refs.organList) return
this.$refs.organList.doLayout() this.$refs.organList.doLayout()
}
}) })
} }
}, },

View File

@ -6,9 +6,10 @@
size="small" size="small"
:disabled="type === 'look'" :disabled="type === 'look'"
:rules="rules" :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-form-item label="类型" prop="Type">
<el-select <el-select
v-model="form.Type" v-model="form.Type"
@ -16,10 +17,10 @@
> >
<el-option <el-option
v-for="item of $d.Criterion_Question_Type" 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" :key="item.value"
:value="item.value" :value="item.value"
:label="item.label" :label="item.label"
:disabled="item.label === 'group' || item.label === 'table' || item.label === 'summary' || item.label === 'upload'"
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
@ -27,6 +28,10 @@
v-if="form.Type !== 'group'" v-if="form.Type !== 'group'"
label="问题名称" label="问题名称"
prop="QuestionName" 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 <el-input
v-model="form.QuestionName" v-model="form.QuestionName"
@ -36,152 +41,17 @@
v-if="form.Type !== 'group'" v-if="form.Type !== 'group'"
label="问题名称EN" label="问题名称EN"
prop="QuestionEnName" prop="QuestionEnName"
:rules="[
{ max: form.Type === 'summary' ? 300 : 100, message: `${this.$t('common:ruleMessage:maxLength')} ${form.Type === 'summary' ? 300 : 100}` }
]"
> >
<el-input <el-input
v-model="form.QuestionEnName" v-model="form.QuestionEnName"
/> />
</el-form-item> </el-form-item>
<!-- 选项类型 --> </div>
<el-form-item <div style="flex: 1;overflow-y:auto;">
v-if="form.Type === 'select' || form.Type === 'radio' || form.Type === 'input'" <el-divider content-position="left">公有属性</el-divider>
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>
<el-form-item v-if="form.Type !== 'group'" label="是否显示" prop="ShowQuestion"> <el-form-item v-if="form.Type !== 'group'" label="是否显示" prop="ShowQuestion">
<el-radio-group <el-radio-group
v-model="form.ShowQuestion" v-model="form.ShowQuestion"
@ -217,17 +87,17 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<!-- 显示时依赖父问题触发值 --> <!-- 显示时依赖父问题触发值 -->
<el-form-item v-if="form.ParentId && form.ShowQuestion===1" label="显示触发值" prop="ParentTriggerValue"> <el-form-item v-if="form.ParentId && form.ShowQuestion===1" label="显示触发值" prop="ParentTriggerValueList">
<el-select v-model="form.ParentTriggerValue"> <el-select v-model="form.ParentTriggerValueList" clearable multiple>
<el-option <el-option
v-for="item of parentTriggerValOptions" v-for="item of parentTriggerValOptions"
:key="item.id" :key="item.id"
:label="item.label" :label="item.label"
:value="item.value" :value="String(item.value)"
/> />
</el-select> </el-select>
</el-form-item> </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 <el-radio-group
v-model="form.IsRequired" v-model="form.IsRequired"
:disabled="form.IsJudgeQuestion===true || form.ShowQuestion===2" :disabled="form.IsJudgeQuestion===true || form.ShowQuestion===2"
@ -265,52 +135,99 @@
<el-form-item <el-form-item
v-if="form.RelevanceId && form.IsRequired === 1" v-if="form.RelevanceId && form.IsRequired === 1"
label="必填触发值" label="必填触发值"
prop="RelevanceValue" prop="RelevanceValueList"
> >
<el-select v-model="form.RelevanceValue"> <el-select v-model="form.RelevanceValueList" clearable multiple>
<el-option <el-option
v-for="item of reParentTriggerValOptions" v-for="item of reParentTriggerValOptions"
:key="item.id" :key="item.id"
:label="item.label" :label="item.label"
:value="item.value" :value="String(item.value)"
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<!-- 导出标识 -->
<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="问题标识" label="问题标识"
prop="QuestionMark" prop="QuestionMark"
> >
<el-select <el-select
v-model="form.QuestionMark" v-model="form.QuestionMark"
clearable
> >
<el-option <el-option
v-for="item of CriterionDictionaryList.QuestionMark" v-for="item of CriterionDictionaryList.QuestionMark"
:key="item.Id" :key="item.Id"
:value="parseInt(item.Code)" :value="parseInt(item.Code)"
:label="item.ValueCN" :label="$i18n.locale === 'zh' ? item.ValueCN : item.Value"
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item
<el-form-item v-if="form.Type === 'upload'" label="最大上传个数"> label="注释"
<el-input-number prop="Remark"
v-model="form.ImageCount" >
controls-position="right" <el-input v-model="form.Remark" />
:min="1"
:max="10"
/>
</el-form-item> </el-form-item>
<el-form-item
<el-form-item label="序号" prop="ShowOrder"> label="序号"
prop="ShowOrder"
:rules="[
{ required: true, message: this.$t('common:ruleMessage:select'), trigger: 'blur' }
]"
>
<el-input-number <el-input-number
v-model="form.ShowOrder" v-model="form.ShowOrder"
controls-position="right" controls-position="right"
:min="0" :min="0"
/> />
</el-form-item> </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 <el-input-number
v-model="form.MaxRowCount" v-model="form.MaxRowCount"
controls-position="right" controls-position="right"
@ -318,16 +235,279 @@
:max="10" :max="10"
/> />
</el-form-item> </el-form-item>
<el-form-item label="限制编辑"> <el-form-item label="问题分类" v-if="criterionType === 2">
<el-radio-group v-model="form.LimitEdit"> <el-select v-model="form.QuestionClassify" clearable>
<el-radio v-for="item of $d.LimitEdit" :label="item.value">{{ item.label }}</el-radio> <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-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="全局阅片是否显示">
<el-radio-group v-model="form.GlobalReadingShowType"> <el-form-item
<el-radio v-for="item of $d.GlobalReadingShowType" :key="item.id" :label="item.value">{{ item.label }}</el-radio> 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-radio-group>
</el-form-item> </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>
<div class="base-dialog-footer" style="text-align:right;margin-top:10px;"> <div class="base-dialog-footer" style="text-align:right;margin-top:10px;">
<el-form-item> <el-form-item>
@ -349,7 +529,7 @@
</template> </template>
<script> <script>
import { addOrUpdateReadingTableQuestionSystem, getReadingTableOtherQuestionSystem } from '@/api/trials' import { addOrUpdateReadingTableQuestionSystem, getReadingTableOtherQuestionSystem } from '@/api/trials'
import { getBasicConfigSelect, getCriterionDictionaryList, getCriterionDictionary } from '@/api/dictionary' import { getBasicConfigSelect, getCriterionDictionaryList, getCriterionDictionary, getSystemCalculateTableQuestions } from '@/api/dictionary'
export default { export default {
name: 'AddOrUpdateTableQs', name: 'AddOrUpdateTableQs',
@ -366,6 +546,10 @@ export default {
type: String, type: String,
required: true required: true
}, },
criterionType: {
type: Number,
required: true
},
type: { type: {
type: String, type: String,
required: true required: true
@ -386,6 +570,7 @@ export default {
} }
} }
return { return {
ClassifyAlgorithmsList: [],
form: { form: {
Id: '', Id: '',
ReadingQuestionId: '', ReadingQuestionId: '',
@ -398,11 +583,13 @@ export default {
ParentId: '', ParentId: '',
ParentTriggerValue: '', ParentTriggerValue: '',
ShowOrder: 0, ShowOrder: 0,
ShowQuestion: null, ShowQuestion: 0,
IsRequired: true, IsRequired: 2,
Remark: '', Remark: '',
RelevanceId: '', RelevanceId: '',
RelevanceValue: '', RelevanceValue: '',
RelevanceValueList: [],
ParentTriggerValueList: [],
DataTableName: '', DataTableName: '',
DataTableColumn: '', DataTableColumn: '',
DictionaryCode: '', DictionaryCode: '',
@ -410,17 +597,26 @@ export default {
MaxRowCount: null, MaxRowCount: null,
DependParentId: '', DependParentId: '',
QuestionMark: null, QuestionMark: null,
LimitEdit: null, LimitEdit: 0,
GlobalReadingShowType: null // GlobalReadingShowType: null,
QuestionClassify: null,
HighlightAnswerList: [],
MaxAnswerLength: null,
IsCopy: false,
FileType: [],
ImageCount: 0,
ClassifyTableQuestionId: null,
ClassifyAlgorithms: null,
ExportIdentification: 0,
ExportResult: []
// IsEnable: true // IsEnable: true
}, },
rules: { rules: {
Type: [ Type: [
{ required: true, message: '请选择', trigger: 'blur' } { required: true, message: '请选择', trigger: 'blur' }
], ],
QuestionName: [{ required: true, message: '请注明', trigger: 'blur' }, // QuestionName: [{ required: true, message: '', trigger: 'blur' },
{ max: 300, message: '最大长度为 300' }], // { max: 300, message: ' 300' }],
TypeValue: [{ required: true, message: '请注明', trigger: 'blur' }, TypeValue: [{ required: true, message: '请注明', trigger: 'blur' },
{ validator: validateTypeVal, trigger: 'blur' }, { validator: validateTypeVal, trigger: 'blur' },
@ -428,15 +624,21 @@ export default {
ShowQuestion: [{ required: true, message: '请选择', trigger: 'blur' }], ShowQuestion: [{ required: true, message: '请选择', trigger: 'blur' }],
IsRequired: [{ required: true, message: '请选择', trigger: 'blur' }], IsRequired: [{ required: true, message: '请选择', trigger: 'blur' }],
ParentId: [{ required: true, message: '请选择', trigger: 'blur' }], ParentId: [{ required: true, message: '请选择', trigger: 'blur' }],
ParentTriggerValue: [ ParentTriggerValueList: [
{ required: true, message: '请选择', trigger: 'blur' } { required: true, message: '请选择', trigger: 'blur' }
], ],
RelevanceId: [{ 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' }], DataTableName: [{ required: true, message: '请选择', trigger: 'blur' }],
DataTableColumn: [{ required: true, message: '请选择', trigger: 'blur' }], DataTableColumn: [{ required: true, message: '请选择', trigger: 'blur' }],
// DictionaryCode: [{ 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, loading: false,
parentOptions: [], parentOptions: [],
@ -445,18 +647,43 @@ export default {
tblOptions: [], tblOptions: [],
colOptions: [], colOptions: [],
dicList: [], dicList: [],
CriterionDictionaryList: [] CriterionDictionaryList: [],
Questions: []
} }
}, },
mounted() { mounted() {
this.initForm() this.initForm()
this.getCriterionDictionary() this.getCriterionDictionary()
this.getCalculateQuestions('number')
}, },
methods: { 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() {
getCriterionDictionary({ getCriterionDictionary({
ReadingCriterionId: this.criterionId, ReadingCriterionId: this.criterionId,
DictionaryCodeList: ['QuestionMark', 'OrganColumn'] DictionaryCodeList: ['QuestionMark', 'OrganColumn', 'ExportResult']
}).then(res => { }).then(res => {
this.CriterionDictionaryList = res.Result this.CriterionDictionaryList = res.Result
}) })
@ -467,9 +694,15 @@ export default {
if (Object.keys(this.data).length > 0) { if (Object.keys(this.data).length > 0) {
for (const k in this.form) { for (const k in this.form) {
if (this.data.hasOwnProperty(k)) { 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] this.form[k] = this.data[k]
} }
} }
}
if (this.form.ParentId) { if (this.form.ParentId) {
var index = this.parentOptions.findIndex(item => { var index = this.parentOptions.findIndex(item => {
@ -492,12 +725,13 @@ export default {
return item.QuestionId === this.form.RelevanceId return item.QuestionId === this.form.RelevanceId
}) })
if (i !== -1) { if (i !== -1) {
if (this.parentOptions[index].QuestionGenre === 3) { if (this.parentOptions[i].QuestionGenre === 3) {
this.reParentTriggerValOptions = this.$d[this.parentOptions[index].DictionaryCode] console.log(this.$d[this.parentOptions[i].DictionaryCode])
this.reParentTriggerValOptions = this.$d[this.parentOptions[i].DictionaryCode]
} else { } else {
const options = [] const options = []
this.parentOptions[index].TypeValue.split('|').forEach((item, index) => { this.parentOptions[i].TypeValue.split('|').forEach((item, index) => {
options.push({ id: index, label: item, value: item }) options.push({ id: i, label: item, value: item })
}) })
this.reParentTriggerValOptions = options this.reParentTriggerValOptions = options
} }
@ -509,9 +743,15 @@ export default {
this.$refs.tableQsForm.validate(valid => { this.$refs.tableQsForm.validate(valid => {
if (!valid) return if (!valid) return
this.loading = true this.loading = true
this.form.ClassifyAlgorithms = JSON.stringify(this.ClassifyAlgorithmsList)
this.form.SystemCriterionId = this.criterionId this.form.SystemCriterionId = this.criterionId
this.form.ReadingQuestionId = this.readingQuestionId 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.$emit('getList')
this.loading = false this.loading = false
this.$emit('close') this.$emit('close')
@ -589,8 +829,10 @@ export default {
var index = this.parentOptions.findIndex(item => { var index = this.parentOptions.findIndex(item => {
return item.QuestionId === val return item.QuestionId === val
}) })
console.log(this.$d[this.parentOptions[index].DictionaryCode], this.parentOptions[index].QuestionGenre)
if (index !== -1) { if (index !== -1) {
if (this.parentOptions[index].QuestionGenre === 3) { if (this.parentOptions[index].QuestionGenre === 3) {
console.log(this.$d[this.parentOptions[index].DictionaryCode])
this.reParentTriggerValOptions = this.$d[this.parentOptions[index].DictionaryCode] this.reParentTriggerValOptions = this.$d[this.parentOptions[index].DictionaryCode]
} else { } else {
const options = [] const options = []
@ -622,14 +864,34 @@ export default {
form.DataTableColumn = '' form.DataTableColumn = ''
}, },
qsTypeChange(val, form) { 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.TypeValue = ''
form.ValueType = '' form.ValueType = ''
form.Unit = '' form.IsRequired = 2
form.TableQuestionType = null form.TableQuestionType = null
form.DependParentId = '' form.DependParentId = ''
form.DataTableColumn = '' form.DataTableColumn = ''
form.DataTableName = '' form.DataTableName = ''
form.DictionaryCode = '' 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() { close() {
this.$emit('close') this.$emit('close')

View File

@ -27,12 +27,12 @@
/> />
<el-table-column <el-table-column
prop="QuestionName" prop="QuestionName"
label="阅片问题" label="问题名称"
show-overflow-tooltip show-overflow-tooltip
/> />
<el-table-column <el-table-column
prop="QuestionEnName" prop="QuestionEnName"
label="阅片问题(EN)" label="问题名称(EN)"
show-overflow-tooltip show-overflow-tooltip
/> />
<el-table-column <el-table-column
@ -44,7 +44,7 @@
{{ $fd('Criterion_Question_Type',scope.row.Type) }} {{ $fd('Criterion_Question_Type',scope.row.Type) }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <!-- <el-table-column
prop="TableQuestionType" prop="TableQuestionType"
label="选项类型" label="选项类型"
show-overflow-tooltip show-overflow-tooltip
@ -60,20 +60,7 @@
show-overflow-tooltip show-overflow-tooltip
min-width="110" 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 <el-table-column
prop="ShowQuestion" prop="ShowQuestion"
label="是否显示" label="是否显示"
@ -94,7 +81,7 @@
{{ $fd('QuestionRequired',scope.row.IsRequired) }} {{ $fd('QuestionRequired',scope.row.IsRequired) }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <!-- <el-table-column
prop="IsJudgeQuestion" prop="IsJudgeQuestion"
label="是否裁判问题" label="是否裁判问题"
show-overflow-tooltip show-overflow-tooltip
@ -102,8 +89,8 @@
<template slot-scope="scope"> <template slot-scope="scope">
{{ $fd('YesOrNo',scope.row.IsJudgeQuestion) }} {{ $fd('YesOrNo',scope.row.IsJudgeQuestion) }}
</template> </template>
</el-table-column> </el-table-column> -->
<el-table-column <!-- <el-table-column
prop="ParentQuestionShowOrder" prop="ParentQuestionShowOrder"
label="显示依赖父问题" label="显示依赖父问题"
min-width="90" min-width="90"
@ -124,8 +111,64 @@
prop="RelevanceValue" prop="RelevanceValue"
label="必填触发值" label="必填触发值"
show-overflow-tooltip 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 <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" prop="ImageCount"
label="最大上传个数" label="最大上传个数"
show-overflow-tooltip show-overflow-tooltip
@ -134,6 +177,7 @@
{{ scope.row.Type === 'upload'?scope.row.ImageCount:'' }} {{ scope.row.Type === 'upload'?scope.row.ImageCount:'' }}
</template> </template>
</el-table-column> </el-table-column>
-->
<el-table-column <el-table-column
prop="MaxRowCount" prop="MaxRowCount"
label="最大行数" label="最大行数"
@ -184,7 +228,7 @@
:visible.sync="addOrEdit.visible" :visible.sync="addOrEdit.visible"
:close-on-click-modal="false" :close-on-click-modal="false"
:title="addOrEdit.title" :title="addOrEdit.title"
width="600px" width="650px"
append-to-body append-to-body
custom-class="base-dialog-wrapper" custom-class="base-dialog-wrapper"
> >
@ -194,6 +238,7 @@
:type="type" :type="type"
:reading-question-id="readingQuestionId" :reading-question-id="readingQuestionId"
:criterion-id="criterionId" :criterion-id="criterionId"
:criterionType="criterionType"
@close="addOrEdit.visible = false" @close="addOrEdit.visible = false"
@getList="getList" @getList="getList"
/> />
@ -225,7 +270,11 @@ export default {
criterionId: { criterionId: {
type: String, type: String,
required: true required: true
} },
criterionType: {
type: Number,
required: true
},
}, },
data() { data() {
@ -285,6 +334,11 @@ export default {
}).catch(() => { this.loading = false }) }).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() { handleSearch() {
this.getList() this.getList()