列表排序调整
continuous-integration/drone/push Build is passing Details

uat_us
wangxiaoshuang 2024-11-21 17:19:41 +08:00
parent 0b09bcb702
commit d82e009206
6 changed files with 340 additions and 177 deletions

View File

@ -156,6 +156,7 @@
prop="SiteName"
:label="$t('trials:researchRecord:table:siteName')"
min-width="100"
sortable="custom"
show-overflow-tooltip
/>
<!-- 联系人 -->
@ -163,6 +164,7 @@
prop="UserName"
:label="$t('trials:researchRecord:table:contactor')"
min-width="100"
sortable="custom"
show-overflow-tooltip
/>
<!-- 联系电话 -->
@ -210,6 +212,7 @@
prop="State"
:label="$t('trials:researchRecord:table:status')"
min-width="150"
sortable="custom"
show-overflow-tooltip
>
<template slot-scope="scope">
@ -232,6 +235,7 @@
prop="IsDeleted"
:label="$t('trials:researchRecord:table:isDeleted')"
min-width="100"
sortable="custom"
show-overflow-tooltip
>
<template slot-scope="scope">

View File

@ -103,6 +103,7 @@
:label="$t('trials:reviewAssign:table:visit')"
width="140"
show-overflow-tooltip
sortable="custom"
>
<template slot-scope="scope">
<span @click="openAllocation('task', 1, scope.row.SubjectCode)" style="color:#428bca;cursor: pointer">{{scope.row.VisitTaskTypeCount}}</span>
@ -115,6 +116,7 @@
width="140"
show-overflow-tooltip
v-if="OtherInfo && OtherInfo.IsGlobalReading"
sortable="custom"
>
<template slot-scope="scope">
<span @click="openAllocation('task', 2, scope.row.SubjectCode)" style="color:#428bca;cursor: pointer">{{scope.row.GlobalTaskTypeCount}}</span>
@ -127,6 +129,7 @@
width="140"
show-overflow-tooltip
v-if="OtherInfo && OtherInfo.IsArbitrationReading && ReadingType === 2"
sortable="custom"
>
<template slot-scope="scope">
<span @click="openAllocation('referee', 4, scope.row.SubjectCode)" style="color:#428bca;cursor: pointer">{{scope.row.JudgeTaskTypeCount}}</span>
@ -139,6 +142,7 @@
width="140"
show-overflow-tooltip
v-if="OtherInfo && OtherInfo.IsOncologyReading"
sortable="custom"
>
<template slot-scope="scope">
<span @click="openAllocation('task', 5, scope.row.SubjectCode)" style="color:#428bca;cursor: pointer">{{scope.row.OncologyTaskTypeCount}}</span>

View File

@ -203,7 +203,7 @@
<!-- width="160"-->
<!-- />-->
<!-- 附件 -->
<!-- <el-table-column
<el-table-column
v-if="$i18n.locale === 'zh' && isDistinguishCriteria"
prop="AttachNameCN"
:label="$t('trials:emailManageCfg:title:fileName')"
@ -220,7 +220,7 @@
</template>
</el-table-column>
<el-table-column
v-else
v-if="$i18n.locale === 'en' && isDistinguishCriteria"
prop="AttachName"
:label="$t('trials:emailManageCfg:title:fileName')"
show-overflow-tooltip
@ -234,7 +234,7 @@
>{{ scope.row.AttachName }}</span
>
</template>
</el-table-column> -->
</el-table-column>
<!-- 是否需要回执 -->
<!-- <el-table-column
prop="IsReturnRequired"

View File

@ -333,6 +333,7 @@
:label="$t('trials:consistencyCheck:table:requestBackState')"
show-overflow-tooltip
min-width="120"
sortable="custom"
>
<template slot-scope="scope">
<span v-if="scope.row.RequestBackState * 1 === 0">{{

View File

@ -90,14 +90,14 @@
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="handleSearch">
{{ $t("common:button:search") }}
{{ $t('common:button:search') }}
</el-button>
<el-button
type="primary"
icon="el-icon-refresh-left"
@click="handleReset"
>
{{ $t("common:button:reset") }}
{{ $t('common:button:reset') }}
</el-button>
<!--导出-->
<el-button
@ -105,7 +105,7 @@
icon="el-icon-download"
@click="handleExport"
>
{{ $t("common:button:export") }}
{{ $t('common:button:export') }}
</el-button>
</el-form-item>
</el-form>
@ -174,19 +174,19 @@
<div v-if="otherInfo.QCProcessEnum === 1">
<!-- {{ scope.row.CurrentQCEnum === 1?'审核':'--' }} -->
<el-tag v-if="scope.row.CurrentQCEnum === 1" type="primary">{{
$fd("CurrentQCType", 0)
$fd('CurrentQCType', 0)
}}</el-tag>
<span v-else>--</span>
</div>
<div v-else-if="otherInfo.QCProcessEnum === 2">
<!-- {{ scope.row.CurrentQCEnum === 1?'初审':scope.row.CurrentQCEnum === 2?'复审':'--' }} -->
<el-tag v-if="scope.row.CurrentQCEnum === 1" type="primary">{{
$fd("CurrentQCType", scope.row.CurrentQCEnum)
$fd('CurrentQCType', scope.row.CurrentQCEnum)
}}</el-tag>
<el-tag
v-else-if="scope.row.CurrentQCEnum === 2"
type="warning"
>{{ $fd("CurrentQCType", scope.row.CurrentQCEnum) }}</el-tag
>{{ $fd('CurrentQCType', scope.row.CurrentQCEnum) }}</el-tag
>
<span v-else>--</span>
</div>
@ -214,12 +214,13 @@
:label="$t('trials:crcQuestion:table:isOverTime')"
show-overflow-tooltip
width="140"
sortable="custom"
>
<template slot-scope="scope">
<el-tag v-if="scope.row.IsOverTime" type="danger">{{
$fd("YesOrNo", scope.row.IsOverTime)
$fd('YesOrNo', scope.row.IsOverTime)
}}</el-tag>
<el-tag v-else>{{ $fd("YesOrNo", scope.row.IsOverTime) }}</el-tag>
<el-tag v-else>{{ $fd('YesOrNo', scope.row.IsOverTime) }}</el-tag>
</template>
</el-table-column>
<!-- 最新回复时间 -->
@ -240,10 +241,10 @@
>
<template slot-scope="scope">
<el-tag v-if="scope.row.IsClosed">{{
$fd("YesOrNo", scope.row.IsClosed)
$fd('YesOrNo', scope.row.IsClosed)
}}</el-tag>
<el-tag v-else type="danger">{{
$fd("YesOrNo", scope.row.IsClosed)
$fd('YesOrNo', scope.row.IsClosed)
}}</el-tag>
</template>
</el-table-column>
@ -266,13 +267,13 @@
<template slot-scope="scope">
<span v-if="scope.row.ReuploadEnum === 0">--</span>
<el-tag v-else-if="scope.row.ReuploadEnum === 1" type="danger">{{
$fd("ReuploadEnum", scope.row.ReuploadEnum)
$fd('ReuploadEnum', scope.row.ReuploadEnum)
}}</el-tag>
<el-tag v-else-if="scope.row.ReuploadEnum === 2" type="warning">{{
$fd("ReuploadEnum", scope.row.ReuploadEnum)
$fd('ReuploadEnum', scope.row.ReuploadEnum)
}}</el-tag>
<el-tag v-else-if="scope.row.ReuploadEnum === 3" type="primary">{{
$fd("ReuploadEnum", scope.row.ReuploadEnum)
$fd('ReuploadEnum', scope.row.ReuploadEnum)
}}</el-tag>
</template>
</el-table-column>
@ -349,24 +350,24 @@ import {
getTrialVisitStageSelect,
getQCChallengeDialogList,
getNextCRCChallenge,
} from "@/api/trials";
import { getQCChallengeList_Export } from "@/api/export";
import ChatForm from "./components/chatForm";
import BaseContainer from "@/components/BaseContainer";
import Pagination from "@/components/Pagination";
} from '@/api/trials'
import { getQCChallengeList_Export } from '@/api/export'
import ChatForm from './components/chatForm'
import BaseContainer from '@/components/BaseContainer'
import Pagination from '@/components/Pagination'
const searchDataDefault = () => {
return {
IsOverTime: null,
SubjectCode: "",
TrialSiteId: "",
SubjectCode: '',
TrialSiteId: '',
VisitPlanArray: [],
IsClosed: null,
PageIndex: 1,
PageSize: 20,
};
};
}
}
export default {
name: "CrcQusetion",
name: 'CrcQusetion',
components: { BaseContainer, Pagination, ChatForm },
data() {
return {
@ -380,143 +381,143 @@ export default {
visitPlanOptions: [],
otherInfo: {},
trialId: this.$route.query.trialId,
};
}
},
mounted() {
this.getList();
this.getSite();
this.getVisitPlanOptions();
this.getList()
this.getSite()
this.getVisitPlanOptions()
},
watch: {
chatVisible() {
if (!this.chatVisible) {
this.$store.state.trials.checkTaskId = null;
this.$store.state.trials.checkTaskId = null
}
},
},
methods: {
beforeClose() {
this.chatVisible = false;
this.$store.state.trials.checkTaskId = null;
this.chatVisible = false
this.$store.state.trials.checkTaskId = null
},
handleExport() {
getQCChallengeList_Export(this.searchData)
.then((res) => {})
.catch(() => {
this.loading = false;
});
this.loading = false
})
},
//
getList() {
this.loading = true;
this.searchData.TrialId = this.trialId;
this.loading = true
this.searchData.TrialId = this.trialId
getCRCChallengeList(this.searchData)
.then((res) => {
this.loading = false;
this.list = res.Result.CurrentPageData;
this.total = res.Result.TotalCount;
this.otherInfo = res.OtherInfo;
this.loading = false
this.list = res.Result.CurrentPageData
this.total = res.Result.TotalCount
this.otherInfo = res.OtherInfo
})
.catch(() => {
this.loading = false;
});
this.loading = false
})
},
//
handleReplay(row) {
this.loading = true;
this.loading = true
getQCChallengeDialogList(row.Id)
.then((res) => {
this.loading = false;
this.loading = false
if (res.IsSuccess) {
if (res.Result.length > 0) {
Object.assign(row, res.Result[0]);
Object.assign(row, res.Result[0])
}
this.currentQCRow = { ...row };
this.$store.state.trials.checkTaskId = row.SubjectVisitId;
this.chatVisible = true;
this.currentQCRow = { ...row }
this.$store.state.trials.checkTaskId = row.SubjectVisitId
this.chatVisible = true
}
})
.catch(() => {
this.loading = false;
});
this.loading = false
})
},
async getNextTask(qcChallengeId) {
try {
const params = {
trialId: this.trialId,
qcChallengeId: qcChallengeId,
};
const res = await getNextCRCChallenge(params);
}
const res = await getNextCRCChallenge(params)
if (res.IsSuccess) {
const res2 = await getQCChallengeDialogList(res.Result.Id);
const res2 = await getQCChallengeDialogList(res.Result.Id)
if (res2.IsSuccess) {
Object.assign(res.Result, res2.Result[0]);
this.chatVisible = false;
this.currentQCRow = res.Result;
Object.assign(res.Result, res2.Result[0])
this.chatVisible = false
this.currentQCRow = res.Result
this.$nextTick(() => {
this.chatVisible = true;
});
this.chatVisible = true
})
}
}
} catch (e) {
this.chatVisible = false;
console.log(e);
this.chatVisible = false
console.log(e)
}
},
getDialogList() {
this.loading = true;
this.loading = true
getQCChallengeDialogList(this.currentQCRow.Id)
.then((res) => {
this.loading = false;
this.loading = false
if (res.IsSuccess && res.Result.length > 0) {
var i = this.list.findIndex(
(item) => item.Id === this.currentQCRow.Id
);
)
if (i > -1) {
this.currentQCRow = Object.assign(this.list[i], res.Result[0]);
this.$refs["chatForm"].addMessage(
this.currentQCRow = Object.assign(this.list[i], res.Result[0])
this.$refs['chatForm'].addMessage(
res.Result[0].DialogList[res.Result[0].DialogList.length - 1]
);
)
}
}
})
.catch(() => {
this.loading = false;
});
this.loading = false
})
},
//
handleReset() {
this.searchData = searchDataDefault();
this.getList();
this.searchData = searchDataDefault()
this.getList()
},
//
handleSearch() {
this.searchData.PageIndex = 1;
this.getList();
this.searchData.PageIndex = 1
this.getList()
},
//
handleSortByColumn(column) {
if (column.order === "ascending") {
this.searchData.Asc = true;
if (column.order === 'ascending') {
this.searchData.Asc = true
} else {
this.searchData.Asc = false;
this.searchData.Asc = false
}
this.searchData.SortField = column.prop;
this.searchData.PageIndex = 1;
this.getList();
this.searchData.SortField = column.prop
this.searchData.PageIndex = 1
this.getList()
},
// site
getSite() {
getTrialSiteSelect(this.trialId).then((res) => {
this.siteOptions = res.Result;
});
this.siteOptions = res.Result
})
},
// 访
getVisitPlanOptions() {
getTrialVisitStageSelect(this.trialId).then((res) => {
this.visitPlanOptions = res.Result;
});
this.visitPlanOptions = res.Result
})
},
},
};
}
</script>

View File

@ -5,7 +5,12 @@
<el-form :inline="true">
<!-- 中心编号 -->
<el-form-item :label="$t('trials:qcQuality:table:siteId')">
<el-select v-model="searchData.TrialSiteId" clearable filterable style="width:120px;">
<el-select
v-model="searchData.TrialSiteId"
clearable
filterable
style="width: 120px"
>
<el-option
v-for="item of siteOptions"
:key="item.Id"
@ -16,13 +21,16 @@
</el-form-item>
<!-- 受试者编号 -->
<el-form-item :label="$t('trials:qcQuality:table:subjectId')">
<el-input v-model="searchData.SubjectCode" style="width:100px;" />
<el-input v-model="searchData.SubjectCode" style="width: 100px" />
</el-form-item>
<!-- 访视名称 -->
<el-form-item class="my_multiple" :label="$t('trials:qcQuality:table:visitName')">
<el-form-item
class="my_multiple"
:label="$t('trials:qcQuality:table:visitName')"
>
<el-select
v-model="searchData.VisitPlanArray"
style="width:140px"
style="width: 140px"
clearable
multiple
>
@ -34,24 +42,32 @@
>
<span style="float: left">{{ item.VisitName }}</span>
</el-option>
<el-option
key="Other"
label="Out of Plan"
value="1.11"
/>
<el-option key="Other" label="Out of Plan" value="1.11" />
</el-select>
</el-form-item>
<!-- 发起人 -->
<el-form-item :label="$t('trials:qcQuality:table:organizer')">
<el-select v-model="searchData.CreateUserId" clearable filterable style="width:150px;">
<el-select
v-model="searchData.CreateUserId"
clearable
filterable
style="width: 150px"
>
<el-option
v-for="(item,index) of creatorOptions"
v-for="(item, index) of creatorOptions"
:key="index"
:label="item.Creator"
:value="item.CreateUserId"
>
<span style="float: left">{{ item.Creator }}</span>
<span style="float: right; color: #8492a6; font-size: 13px;margin-left:5px;">
<span
style="
float: right;
color: #8492a6;
font-size: 13px;
margin-left: 5px;
"
>
{{ item.CreatorRealName }}
</span>
</el-option>
@ -60,20 +76,47 @@
<!-- 是否超限 -->
<el-form-item :label="$t('trials:qcQuality:table:isOverTime')">
<el-select v-model="searchData.IsOverTime" clearable style="width:120px">
<el-option v-for="item of $d.YesOrNo" :value="item.value" :label="item.label" :key="item.id"/>
<el-select
v-model="searchData.IsOverTime"
clearable
style="width: 120px"
>
<el-option
v-for="item of $d.YesOrNo"
:value="item.value"
:label="item.label"
:key="item.id"
/>
</el-select>
</el-form-item>
<!-- 是否关闭 -->
<el-form-item :label="$t('trials:qcQuality:table:isClosed')">
<el-select v-model="searchData.IsClosed" clearable style="width:120px">
<el-option v-for="item of $d.YesOrNo" :value="item.value" :label="item.label" :key="item.id"/>
<el-select
v-model="searchData.IsClosed"
clearable
style="width: 120px"
>
<el-option
v-for="item of $d.YesOrNo"
:value="item.value"
:label="item.label"
:key="item.id"
/>
</el-select>
</el-form-item>
<!-- 是否重传 -->
<!-- 是否重传 -->
<el-form-item :label="$t('trials:qcQuality:table:ReuploadEnum')">
<el-select v-model="searchData.ReuploadEnum" clearable style="width:120px">
<el-option v-for="item of $d.ReuploadEnum" :value="item.value" :label="item.label" :key="item.id"/>
<el-select
v-model="searchData.ReuploadEnum"
clearable
style="width: 120px"
>
<el-option
v-for="item of $d.ReuploadEnum"
:value="item.value"
:label="item.label"
:key="item.id"
/>
</el-select>
</el-form-item>
<!-- 查询 -->
@ -81,7 +124,11 @@
{{ $t('common:button:search') }}
</el-button>
<!-- 重置 -->
<el-button type="primary" icon="el-icon-refresh-left" @click="handleReset">
<el-button
type="primary"
icon="el-icon-refresh-left"
@click="handleReset"
>
{{ $t('common:button:reset') }}
</el-button>
<!--导出-->
@ -96,7 +143,7 @@
<el-table
ref="qcQsTable"
v-loading="loading"
v-adaptive="{bottomOffset:60}"
v-adaptive="{ bottomOffset: 60 }"
:data="list"
stripe
height="100"
@ -112,13 +159,12 @@
<template slot-scope="scope">
<el-button
type="text"
:style="{color:scope.row.IsClosed?'':'red'}"
@click="handleReply(scope.row,scope.$index)"
:style="{ color: scope.row.IsClosed ? '' : 'red' }"
@click="handleReply(scope.row, scope.$index)"
>
{{ scope.row.ChallengeCode }}
</el-button>
</template>
</el-table-column>
<!-- 中心编号 -->
<el-table-column
@ -154,12 +200,20 @@
<template slot-scope="scope">
<div v-if="otherInfo.QCProcessEnum === 1">
<!-- {{ scope.row.CurrentQCEnum === 1?'审核':'--' }} -->
<el-tag v-if="scope.row.CurrentQCEnum === 1" type="primary">{{ $fd('CurrentQCType', 0) }}</el-tag>
<el-tag v-if="scope.row.CurrentQCEnum === 1" type="primary">{{
$fd('CurrentQCType', 0)
}}</el-tag>
<span v-else>--</span>
</div>
<div v-else-if="otherInfo.QCProcessEnum === 2">
<el-tag v-if="scope.row.CurrentQCEnum === 1" type="primary">{{ $fd('CurrentQCType', scope.row.CurrentQCEnum) }}</el-tag>
<el-tag v-else-if="scope.row.CurrentQCEnum === 2" type="warning">{{ $fd('CurrentQCType', scope.row.CurrentQCEnum) }}</el-tag>
<el-tag v-if="scope.row.CurrentQCEnum === 1" type="primary">{{
$fd('CurrentQCType', scope.row.CurrentQCEnum)
}}</el-tag>
<el-tag
v-else-if="scope.row.CurrentQCEnum === 2"
type="warning"
>{{ $fd('CurrentQCType', scope.row.CurrentQCEnum) }}</el-tag
>
<span v-else>--</span>
</div>
</template>
@ -218,6 +272,7 @@
:label="$t('trials:qcQuality:table:qsDuration')"
show-overflow-tooltip
width="120"
sortable="custom"
/>
<!-- 是否超限 -->
<el-table-column
@ -225,9 +280,12 @@
:label="$t('trials:qcQuality:table:isOverTime')"
show-overflow-tooltip
width="100"
sortable="custom"
>
<template slot-scope="scope">
<el-tag v-if="scope.row.IsOverTime" type="danger">{{ $fd('YesOrNo', scope.row.IsOverTime) }}</el-tag>
<el-tag v-if="scope.row.IsOverTime" type="danger">{{
$fd('YesOrNo', scope.row.IsOverTime)
}}</el-tag>
<el-tag v-else>{{ $fd('YesOrNo', scope.row.IsOverTime) }}</el-tag>
</template>
</el-table-column>
@ -240,7 +298,9 @@
sortable="custom"
>
<template slot-scope="scope">
<el-tag v-if="scope.row.IsClosed" type="danger">{{ $fd('YesOrNo', scope.row.IsClosed) }}</el-tag>
<el-tag v-if="scope.row.IsClosed" type="danger">{{
$fd('YesOrNo', scope.row.IsClosed)
}}</el-tag>
<el-tag v-else>{{ $fd('YesOrNo', scope.row.IsClosed) }}</el-tag>
</template>
</el-table-column>
@ -262,9 +322,15 @@
>
<template slot-scope="scope">
<span v-if="scope.row.ReuploadEnum === 0">--</span>
<el-tag v-else-if="scope.row.ReuploadEnum === 1" type="danger">{{ $fd('ReuploadEnum', scope.row.ReuploadEnum) }}</el-tag>
<el-tag v-else-if="scope.row.ReuploadEnum === 2" type="warning">{{ $fd('ReuploadEnum', scope.row.ReuploadEnum) }}</el-tag>
<el-tag v-else-if="scope.row.ReuploadEnum === 3" type="primary">{{ $fd('ReuploadEnum', scope.row.ReuploadEnum) }}</el-tag>
<el-tag v-else-if="scope.row.ReuploadEnum === 1" type="danger">{{
$fd('ReuploadEnum', scope.row.ReuploadEnum)
}}</el-tag>
<el-tag v-else-if="scope.row.ReuploadEnum === 2" type="warning">{{
$fd('ReuploadEnum', scope.row.ReuploadEnum)
}}</el-tag>
<el-tag v-else-if="scope.row.ReuploadEnum === 3" type="primary">{{
$fd('ReuploadEnum', scope.row.ReuploadEnum)
}}</el-tag>
</template>
</el-table-column>
<!-- 重传完成时间 -->
@ -276,7 +342,12 @@
sortable="custom"
/>
<el-table-column
v-if="hasPermi(['trials:trials-panel:visit:qc-question:send', 'trials:trials-panel:visit:qc-question:close'])"
v-if="
hasPermi([
'trials:trials-panel:visit:qc-question:send',
'trials:trials-panel:visit:qc-question:close',
])
"
:label="$t('common:action:action')"
min-width="150"
fixed="right"
@ -297,7 +368,10 @@
icon="el-icon-error"
circle
:title="$t('trials:qcQuality:action:close')"
:disabled="scope.row.IsClosed || currentUserId !== scope.row.CurrentActionUserId"
:disabled="
scope.row.IsClosed ||
currentUserId !== scope.row.CurrentActionUserId
"
@click="handleCloseQC(scope.row)"
/>
</template>
@ -305,7 +379,13 @@
</el-table>
<!-- 分页组件 -->
<pagination class="page" :total="total" :page.sync="searchData.PageIndex" :limit.sync="searchData.PageSize" @pagination="getList" />
<pagination
class="page"
:total="total"
:page.sync="searchData.PageIndex"
:limit.sync="searchData.PageSize"
@pagination="getList"
/>
</template>
<!-- 回复质疑 -->
@ -314,10 +394,19 @@
:visible.sync="chatVisible"
:close-on-click-modal="false"
width="800px"
:title="$t('trials:qcQuality:dialogTitle:reply') + `(${currentQCRow.SubjectCode} ${currentQCRow.VisitName})`"
:title="
$t('trials:qcQuality:dialogTitle:reply') +
`(${currentQCRow.SubjectCode} ${currentQCRow.VisitName})`
"
@getList="getList"
>
<chat-form :data="currentQCRow" user-type="qc" :sign-text="otherInfo.ImageQCSignText" @close="chatVisible = false" @getDialogList="getDialogList" />
<chat-form
:data="currentQCRow"
user-type="qc"
:sign-text="otherInfo.ImageQCSignText"
@close="chatVisible = false"
@getDialogList="getDialogList"
/>
</el-dialog>
<!-- 关闭质疑 -->
<el-dialog
@ -329,7 +418,14 @@
width="600px"
:title="$t('trials:qcQuality:dialogTitle:closeQuestion')"
>
<div style="padding:10px;border: 1px solid #e0e0e0;max-height:650px;overflow-y: auto;">
<div
style="
padding: 10px;
border: 1px solid #e0e0e0;
max-height: 650px;
overflow-y: auto;
"
>
<el-form
ref="closeQuestionForm"
:model="closeQuestionForm"
@ -341,12 +437,16 @@
:label="$t('trials:qcQuality:label:closeReason')"
prop="Type"
:rules="[
{ required: true, message: $t('common:ruleMessage:select')},
{ required: true, message: $t('common:ruleMessage:select') },
]"
>
<el-radio-group v-model="closeQuestionForm.Type">
<el-radio :label="1">{{ $t('trials:qcQuality:radio:reason1') }}</el-radio>
<el-radio :label="2">{{ $t('trials:qcQuality:radio:reason2') }}</el-radio>
<el-radio :label="1">{{
$t('trials:qcQuality:radio:reason1')
}}</el-radio>
<el-radio :label="2">{{
$t('trials:qcQuality:radio:reason2')
}}</el-radio>
<!-- <el-radio :label="3">{{ $t('trials:qcQuality:radio:reason3') }}</el-radio>-->
</el-radio-group>
</el-form-item>
@ -356,23 +456,33 @@
:label="$t('trials:consistencyCheck:label:closereason')"
prop="Remake"
:rules="[
{ required: true, message: $t('common:ruleMessage:specify')},
{ required: true, message: $t('common:ruleMessage:specify') },
]"
>
<el-input
v-model="closeQuestionForm.Remake"
type="textarea"
:autosize="{ minRows: 2, maxRows: 4}"
:autosize="{ minRows: 2, maxRows: 4 }"
:placeholder="$t('common:ruleMessage:specify')"
/>
</el-form-item>
</el-form>
</div>
<div slot="footer" class="dialog-footer">
<el-button :disabled="closeBtnLoading" size="small" type="primary" @click="closeQuestionVisible = false">
<el-button
:disabled="closeBtnLoading"
size="small"
type="primary"
@click="closeQuestionVisible = false"
>
{{ $t('common:button:cancel') }}
</el-button>
<el-button :loading="closeBtnLoading" size="small" type="primary" @click="handleCloseQuestion">
<el-button
:loading="closeBtnLoading"
size="small"
type="primary"
@click="handleCloseQuestion"
>
{{ $t('common:button:save') }}
</el-button>
</div>
@ -380,7 +490,14 @@
</BaseContainer>
</template>
<script>
import { getQCChallengeList, getTrialSiteSelect, getTrialVisitStageSelect, getQCChallengeCreatorList, closeQCChallenge, getQCChallengeDialogList } from '@/api/trials'
import {
getQCChallengeList,
getTrialSiteSelect,
getTrialVisitStageSelect,
getQCChallengeCreatorList,
closeQCChallenge,
getQCChallengeDialogList,
} from '@/api/trials'
import { getQCChallengeList_Export } from '@/api/export'
import BaseContainer from '@/components/BaseContainer'
import ChatForm from '@/views/trials/trials-panel/visit/qc-check/components/chatForm'
@ -397,7 +514,7 @@ const searchDataDefault = () => {
IsClosed: null,
PageIndex: 1,
PageSize: 20,
ReuploadEnum: null
ReuploadEnum: null,
}
}
export default {
@ -418,19 +535,31 @@ export default {
creatorOptions: [],
otherInfo: {},
closeQuestionVisible: false,
closeQuestionForm: { Id: '', SubjectVisitId: '', Type: null, Reason: '', Remake: '' },
closeQuestionForm: {
Id: '',
SubjectVisitId: '',
Type: null,
Reason: '',
Remake: '',
},
closeBtnLoading: false,
trialId: this.$route.query.trialId,
/* eslint-disable */
currentUserId: zzSessionStorage.getItem('userId')
currentUserId: zzSessionStorage.getItem('userId'),
}
},
mounted() {
if (this.$route.query.challengeState && this.$route.query.challengeState * 1 === 1) {
if (
this.$route.query.challengeState &&
this.$route.query.challengeState * 1 === 1
) {
// ChallengeState:1
this.searchData.IsClosed = true
}
if (this.$route.query.challengeState && this.$route.query.challengeState * 1 === 2) {
if (
this.$route.query.challengeState &&
this.$route.query.challengeState * 1 === 2
) {
// ChallengeState:2
this.searchData.IsClosed = false
}
@ -449,40 +578,57 @@ export default {
getList() {
this.loading = true
this.searchData.TrialId = this.trialId
getQCChallengeList(this.searchData).then(res => {
this.loading = false
this.list = res.Result.CurrentPageData
this.total = res.Result.TotalCount
this.otherInfo = res.OtherInfo
}).catch(() => { this.loading = false })
getQCChallengeList(this.searchData)
.then((res) => {
this.loading = false
this.list = res.Result.CurrentPageData
this.total = res.Result.TotalCount
this.otherInfo = res.OtherInfo
})
.catch(() => {
this.loading = false
})
},
handleExport() {
getQCChallengeList_Export(this.searchData).then(res => {
}).catch(() => {})
getQCChallengeList_Export(this.searchData)
.then((res) => {})
.catch(() => {})
},
//
handleReply(row) {
this.loading = true
getQCChallengeDialogList(row.Id).then(res => {
this.loading = false
if (res.IsSuccess) {
if (res.Result.length > 0) { Object.assign(row, res.Result[0]) }
this.currentQCRow = { ...row }
this.chatVisible = true
}
}).catch(() => { this.loading = false })
getQCChallengeDialogList(row.Id)
.then((res) => {
this.loading = false
if (res.IsSuccess) {
if (res.Result.length > 0) {
Object.assign(row, res.Result[0])
}
this.currentQCRow = { ...row }
this.chatVisible = true
}
})
.catch(() => {
this.loading = false
})
},
getDialogList() {
this.loading = true
getQCChallengeDialogList(this.currentQCRow.Id).then(res => {
this.loading = false
if (res.IsSuccess && res.Result.length > 0) {
var i = this.list.findIndex(item => item.Id === this.currentQCRow.Id)
if (i > -1) {
this.currentQCRow = Object.assign(this.list[i], res.Result[0])
getQCChallengeDialogList(this.currentQCRow.Id)
.then((res) => {
this.loading = false
if (res.IsSuccess && res.Result.length > 0) {
var i = this.list.findIndex(
(item) => item.Id === this.currentQCRow.Id
)
if (i > -1) {
this.currentQCRow = Object.assign(this.list[i], res.Result[0])
}
}
}
}).catch(() => { this.loading = false })
})
.catch(() => {
this.loading = false
})
},
//
handleCloseQC(row) {
@ -501,28 +647,37 @@ export default {
this.closeBtnLoading = true
if (this.closeQuestionForm.Type === 1) {
//
this.closeQuestionForm.Reason = this.$t('trials:qcQuality:message:problemSolved')
this.closeQuestionForm.Reason = this.$t(
'trials:qcQuality:message:problemSolved'
)
} else if (this.closeQuestionForm.Type === 2) {
//
this.closeQuestionForm.Reason = `${this.$t('trials:qcQuality:message:problemNotSolved')}<br/><br/>${this.$t('trials:consistencyCheck:label:closereason')}:${this.closeQuestionForm.Remake}`
this.closeQuestionForm.Reason = `${this.$t(
'trials:qcQuality:message:problemNotSolved'
)}<br/><br/>${this.$t('trials:consistencyCheck:label:closereason')}:${
this.closeQuestionForm.Remake
}`
}
var params = {
TrialId: this.trialId,
QcChallengeId: this.closeQuestionForm.Id,
SubjectVisitId: this.closeQuestionForm.SubjectVisitId,
CloseEnum: this.closeQuestionForm.Type,
CloseReason: this.closeQuestionForm.Reason
CloseReason: this.closeQuestionForm.Reason,
}
closeQCChallenge(params)
.then(res => {
.then((res) => {
this.closeBtnLoading = false
if (res.IsSuccess) {
this.getList()
// !
this.$message.success(this.$t('trials:qcQuality:message:closedSuccessfully'))
this.$message.success(
this.$t('trials:qcQuality:message:closedSuccessfully')
)
this.closeQuestionVisible = false
}
}).catch(() => {
})
.catch(() => {
this.closeBtnLoading = false
})
})
@ -553,24 +708,22 @@ export default {
},
// site
getSite() {
getTrialSiteSelect(this.trialId).then(res => {
getTrialSiteSelect(this.trialId).then((res) => {
this.siteOptions = res.Result
})
},
// 访
getVisitPlanOptions() {
getTrialVisitStageSelect(this.trialId)
.then((res) => {
this.visitPlanOptions = res.Result
})
getTrialVisitStageSelect(this.trialId).then((res) => {
this.visitPlanOptions = res.Result
})
},
//
getCreatorOptions() {
getQCChallengeCreatorList(this.trialId)
.then((res) => {
this.creatorOptions = res.Result
})
}
}
getQCChallengeCreatorList(this.trialId).then((res) => {
this.creatorOptions = res.Result
})
},
},
}
</script>