稽查配置和系统阅片标准配置更新
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'),
hidden: true
},
{
path: '/ecrfPreview',
component: () => import('@/views/dictionary/template/components/ECRF'),
hidden: true
},
{
path: '/editUser',
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="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,61 +264,64 @@
<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-row v-show="form.DataType === 'Router'" v-if="form.UrlConfig">
<el-col :span="12">
<el-form-item>
<el-col :span="24">
<el-row v-show="form.DataType === 'Router'" v-if="form.UrlConfig">
<el-col :span="12">
<el-form-item>
<span slot="label">
路由地址
</span>
<el-input v-model="form.UrlConfig.RoutePath" placeholder="路由地址" />
</el-form-item>
</el-col>
<el-col :span="8" style="display: flex;align-items: center;justify-content: flex-end">
<el-form-item>
<el-input v-model="form.UrlConfig.RoutePath" placeholder="路由地址" />
</el-form-item>
</el-col>
<el-col :span="8" style="display: flex;align-items: center;justify-content: flex-end">
<el-form-item>
<span slot="label">
是否有参数
</span>
<el-switch
v-model="form.UrlConfig.IsHaveParameters"
>
</el-switch>
</el-form-item>
</el-col>
<el-col :span="4" v-if="form.UrlConfig.IsHaveParameters" style="display: flex;align-items: center;justify-content: flex-end;">
<el-button type="primary" size="mini" style="position: relative;top: 5px;" @click="addParameter">
增加参数
</el-button>
</el-col>
</el-row>
<el-row v-show="form.DataType === 'Router'" v-if="form.UrlConfig && form.UrlConfig.IsHaveParameters" v-for="(item,index) of form.UrlConfig ? form.UrlConfig.ParameterList : []">
<el-col :span="10">
<el-form-item>
<el-switch
v-model="form.UrlConfig.IsHaveParameters"
>
</el-switch>
</el-form-item>
</el-col>
<el-col :span="4" v-if="form.UrlConfig.IsHaveParameters" style="display: flex;align-items: center;justify-content: flex-end;">
<el-button type="primary" size="mini" style="position: relative;top: 5px;" @click="addParameter">
增加参数
</el-button>
</el-col>
</el-row>
<el-row v-show="form.DataType === 'Router'" v-if="form.UrlConfig && form.UrlConfig.IsHaveParameters" v-for="(item,index) of form.UrlConfig ? form.UrlConfig.ParameterList : []">
<el-col :span="10">
<el-form-item>
<span slot="label">
参数名{{index + 1}}
</span>
<el-input style="width: 150px;" v-model="form.UrlConfig.ParameterList[index].UrlParameterName" placeholder="参数名" />
</el-form-item>
</el-col>
<el-col :span="10" >
<el-form-item>
<el-input style="width: 150px;" v-model="form.UrlConfig.ParameterList[index].UrlParameterName" placeholder="参数名" />
</el-form-item>
</el-col>
<el-col :span="10" >
<el-form-item>
<span slot="label">
参数值{{index + 1}}
</span>
<el-input style="width: 150px;" v-model="form.UrlConfig.ParameterList[index].UrlParameterValueName" placeholder="参数值" />
</el-form-item>
</el-col>
<el-col :span="4">
<el-input style="width: 150px;" v-model="form.UrlConfig.ParameterList[index].UrlParameterValueName" placeholder="参数值" />
</el-form-item>
</el-col>
<el-col :span="4">
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleParameterListDelete(index)"
>删除</el-button>
</el-col>
</el-row>
</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 => {

View File

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

View File

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

View File

@ -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>
</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)
this.$emit('setFormItemData', { key: this.question.Id, val: this.urls.length > 0 ? this.urls.join('|') : '' })
}
loading.close()
}).catch(() => {
loading.close()
})
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()
},
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;
}
}

View File

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

View File

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

View File

@ -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 = {

View File

@ -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,

View File

@ -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){
this.$refs.organList.doLayout()
}
if(!this.$refs.organList) return
this.$refs.organList.doLayout()
})
}
},

File diff suppressed because it is too large Load Diff

View File

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