irc_web/.svn/pristine/d8/d85c06282bc099119ae71dd47e7...

382 lines
12 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<div class="urgent-config-form">
<!-- 配置信息表单 -->
<el-form
ref="urgentConfigForm"
v-loading="loading"
:model="form"
label-width="220px"
style="width:800px;"
:rules="rules"
size="small"
>
<!-- 入组确认评估 -->
<el-form-item :label="$t('trials:urgentCfg:form:enroll')" prop="IsEnrollementQualificationConfirm">
<el-radio-group
v-model="form.IsEnrollementQualificationConfirm"
:disabled="form.IsTrialUrgentConfirmed && !isEdit"
>
<el-radio v-for="item of $d.YesOrNo" :label="item.value">{{ item.label }}</el-radio>
</el-radio-group>
</el-form-item>
<!-- 疾病进展确认评估 -->
<el-form-item :label="$t('trials:urgentCfg:form:pd')" prop="IsPDProgressView">
<el-radio-group
v-model="form.IsPDProgressView"
:disabled="form.IsTrialUrgentConfirmed && !isEdit"
>
<el-radio v-for="item of $d.YesOrNo" :label="item.value">{{ item.label }}</el-radio>
</el-radio-group>
</el-form-item>
<!-- 启用项目加急 -->
<el-form-item :label="$t('trials:urgentCfg:form:trial')" prop="IsUrgent">
<el-radio-group
v-model="form.IsUrgent"
:disabled="form.IsTrialUrgentConfirmed && !isEdit"
>
<el-radio v-for="item of $d.YesOrNo" :label="item.value">{{ item.label }}</el-radio>
</el-radio-group>
</el-form-item>
<!-- 启用受试者加急 -->
<el-form-item :label="$t('trials:urgentCfg:form:subject')" prop="IsSubjectExpeditedView">
<el-radio-group
v-model="form.IsSubjectExpeditedView"
:disabled="form.IsTrialUrgentConfirmed && !isEdit"
>
<el-radio v-for="item of $d.YesOrNo" :label="item.value">{{ item.label }}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item>
<!-- 保存 -->
<el-button
v-if="form.IsTrialUrgentConfirmed === false && hasPermi(['trials:trials-panel:setting:trial-config:save'])"
type="primary"
@click="handleSave"
>
{{ $t('common:button:save') }}
</el-button>
<!-- 配置确认 -->
<el-button
v-if="form.IsTrialUrgentConfirmed === false && hasPermi(['trials:trials-panel:setting:trial-config:save'])"
type="primary"
@click="handleConfirm"
>
{{ $t('trials:trialCfg:button:confirm') }}
</el-button>
<!-- 配置更新 -->
<el-button
v-if="form.IsTrialUrgentConfirmed === true && !isEdit && hasPermi(['trials:trials-panel:setting:trial-config:save'])"
type="primary"
@click="isEdit = true"
>
{{ $t('trials:trialCfg:button:update') }}
</el-button>
<!-- 配置更新确认 -->
<el-button
v-if="form.IsTrialUrgentConfirmed === true && isEdit && hasPermi(['trials:trials-panel:setting:trial-config:save'])"
type="primary"
@click="handleUpdate"
>
{{ $t('trials:trialCfg:button:updateAndConfirm') }}
</el-button>
<!-- 取消 -->
<el-button
v-if="form.IsTrialUrgentConfirmed === true && isEdit && hasPermi(['trials:trials-panel:setting:trial-config:save'])"
type="primary"
@click="isEdit = false"
>
{{ $t('common:button:cancel') }}
</el-button>
</el-form-item>
</el-form>
<!-- 配置信息确认框 -->
<el-dialog
v-if="confirmVisible"
:visible.sync="confirmVisible"
:close-on-click-modal="false"
width="600px"
:title="$t('trials:trialCfg:dialogTitle:cfgConfirm')"
custom-class="base-dialog-wrapper"
>
<div class="base-dialog-body">
<el-table
:data="confirmData"
border
style="width: 100%"
size="small"
>
<!-- 配置项 -->
<el-table-column
prop="Name"
:label="$t('trials:trialCfg:table:cfgItem')"
show-overflow-tooltip
/>
<!-- 配置值 -->
<el-table-column
prop="NewVal"
:label="$t('trials:trialCfg:table:cfgVal')"
show-overflow-tooltip
/>
</el-table>
</div>
<div class="base-dialog-footer" style="text-align:right;margin-top:10px;">
<el-button size="small" type="primary" :loading="btnLoading" @click="handleConfirmConfigData">
{{ $t('trials:trialCfg:button:confirmCfg') }}
</el-button>
</div>
</el-dialog>
<!-- 配置信息更新框 -->
<el-dialog
v-if="updateVisible"
:visible.sync="updateVisible"
:close-on-click-modal="false"
width="600px"
:title="$t('trials:trialCfg:dialogTitle:cfgConfirm')"
custom-class="base-dialog-wrapper"
>
<div class="base-dialog-body">
<el-table
:data="confirmData"
border
style="width: 100%"
size="small"
>
<!-- 配置项 -->
<el-table-column
prop="Name"
:label="$t('trials:trialCfg:table:cfgItem')"
show-overflow-tooltip
/>
<!-- 配置值(更改前) -->
<el-table-column
prop="OldVal"
:label="`${$t('trials:trialCfg:table:cfgVal')} ${$t('trials:trialCfg:table:beforeChange')}`"
show-overflow-tooltip
/>
<!-- 配置值(更改后) -->
<el-table-column
prop="NewVal"
:label="`${$t('trials:trialCfg:table:cfgVal')} ${$t('trials:trialCfg:table:updated')}`"
show-overflow-tooltip
>
<template slot-scope="scope">
<span :class="{fontColor:scope.row.NewVal!==scope.row.OldVal}">{{ scope.row.NewVal }}</span>
</template>
</el-table-column>
</el-table>
</div>
<div class="base-dialog-footer" style="text-align:right;margin-top:10px;">
<el-button size="small" type="primary" :loading="btnLoading" @click="handleUpdateConfigData">
{{ $t('trials:trialCfg:button:confirmCfg') }}
</el-button>
</div>
</el-dialog>
<!-- 配置信息签名框 -->
<el-dialog
v-if="signVisible"
:visible.sync="signVisible"
:close-on-click-modal="false"
width="600px"
custom-class="base-dialog-wrapper"
>
<div slot="title">
<span style="font-size:18px;">{{ $t('common:dialogTitle:sign') }}</span>
<span style="font-size:12px;margin-left:5px">{{ `(${$t('common:label:sign')}${ currentUser })` }}</span>
</div>
<SignForm ref="signForm" :sign-code-enum="signCode" @closeDialog="closeSignDialog" />
</el-dialog>
</div>
</template>
<script>
import { configTrialUrgentInfo } from '@/api/trials'
import { ConfigTrialUrgentInfoConfirm } from '@/api/trials/setting'
import SignForm from '@/views/trials/components/newSignForm'
import const_ from '@/const/sign-code'
export default {
name: 'UrgentConfig',
components: { SignForm },
data() {
return {
form: {
TrialId: '',
IsEnrollementQualificationConfirm: null,
IsPDProgressView: null,
IsUrgent: null,
IsSubjectExpeditedView: null,
IsTrialUrgentConfirmed: false
},
rules: {
IsEnrollementQualificationConfirm: [
{ required: true, message: this.$t('common:ruleMessage:select'), trigger: ['blur', 'change'] }
],
IsPDProgressView: [
{ required: true, message: this.$t('common:ruleMessage:select'), trigger: ['blur', 'change'] }
],
IsUrgent: [
{ required: true, message: this.$t('common:ruleMessage:select'), trigger: ['blur', 'change'] }
],
IsSubjectExpeditedView: [
{ required: true, message: this.$t('common:ruleMessage:select'), trigger: ['blur', 'change'] }
],
IsTrialUrgentConfirmed: [
{ required: true, message: this.$t('common:ruleMessage:select'), trigger: ['blur', 'change'] }
]
},
confirmVisible: false,
updateVisible: false,
signVisible: false,
btnLoading: false,
confirmData: [],
loading: false,
signCode: null,
currentUser: zzSessionStorage.getItem('userName'),
initialForm: {},
isEdit: false
}
},
methods: {
// 配置信息保存
handleSave() {
this.$refs['urgentConfigForm'].validate((valid) => {
if (!valid) return
this.loading = true
// 保存配置信息
configTrialUrgentInfo(this.form).then(res => {
this.loading = false
if (res.IsSuccess) {
this.initialForm = { ...this.form }
this.$message.success(this.$t('common:message:savedSuccessfully'))
}
}).catch(_ => { this.loading = false })
})
},
// 打开配置信息确认框
handleConfirm() {
this.$refs['urgentConfigForm'].validate((valid) => {
if (!valid) return
this.getConfigArr()
this.confirmVisible = true
})
},
// 打开配置信息更新框
handleUpdate() {
this.$refs['urgentConfigForm'].validate((valid) => {
if (!valid) return
this.getConfigArr()
this.updateVisible = true
})
},
// 配置确认
handleConfirmConfigData() {
const { ExpeditedConfigConfirmation } = const_.processSignature
this.signCode = ExpeditedConfigConfirmation
// this.confirmConfigData()
this.initialForm = { ...this.form }
this.signVisible = true
},
// 配置更新
handleUpdateConfigData() {
const { ExpeditedConfigUpdates } = const_.processSignature
this.signCode = ExpeditedConfigUpdates
this.initialForm = { ...this.form }
this.signVisible = true
},
// 配置保存
confirmConfigData() {
this.$refs['urgentConfigForm'].validate((valid) => {
if (!valid) return
this.btnLoading = true
// 保存配置信息
configTrialUrgentInfo(this.form).then(res => {
this.btnLoading = false
if (res.IsSuccess) {
this.initialForm = { ...this.form }
this.signVisible = true
}
}).catch(_ => { this.btnLoading = false })
})
},
// 关闭签名框
closeSignDialog(isSign, signInfo) {
if (isSign) {
this.signConfirm(signInfo)
} else {
this.signVisible = false
}
},
// 签名并确认
signConfirm(signInfo) {
this.loading = true
var params = {
data: this.form,
signInfo: signInfo
}
ConfigTrialUrgentInfoConfirm(params).then(res => {
this.loading = false
if (res.IsSuccess) {
this.$message.success(this.$t('common:message:savedSuccessfully'))
this.form.IsTrialUrgentConfirmed = true
this.isEdit = false
this.$refs['signForm'].btnLoading = false
this.signVisible = false
this.confirmVisible = false
this.updateVisible = false
this.$emit('refresh')
}
}).catch(_ => {
this.loading = false
this.$refs['signForm'].btnLoading = false
})
},
// 配置信息数组结构
getConfigArr() {
this.confirmData = [
{
Name: this.$t('trials:urgentCfg:form:enroll'), // 入组确认评估
NewVal: this.$fd('YesOrNo', this.form.IsEnrollementQualificationConfirm),
OldVal: this.$fd('YesOrNo', this.initialForm.IsEnrollementQualificationConfirm)
},
{
Name: this.$t('trials:urgentCfg:form:pd'), // 疾病进展确认评估
NewVal: this.$fd('YesOrNo', this.form.IsPDProgressView),
OldVal: this.$fd('YesOrNo', this.initialForm.IsPDProgressView)
},
{
Name: this.$t('trials:urgentCfg:form:trial'), // 启用项目加急
NewVal: this.$fd('YesOrNo', this.form.IsUrgent),
OldVal: this.$fd('YesOrNo', this.initialForm.IsUrgent)
},
{
Name: this.$t('trials:urgentCfg:form:subject'), // 启用受试者加急
NewVal: this.$fd('YesOrNo', this.form.IsSubjectExpeditedView),
OldVal: this.$fd('YesOrNo', this.initialForm.IsSubjectExpeditedView)
}
]
},
// 初始化表单
initForm(res) {
for (const k in this.form) {
if (res.hasOwnProperty(k)) {
this.form[k] = res[k]
}
}
this.initialForm = { ...this.form }
}
}
}
</script>
<style lang="scss" scoped>
.urgent-config-form {
.fontColor{
color: red;
}
}
</style>