中心调研添加排序
continuous-integration/drone/push Build is passing Details

uat_us
wangxiaoshuang 2024-11-21 11:31:47 +08:00
parent 486e7db9f1
commit 2aa98eb68b
1 changed files with 112 additions and 110 deletions

View File

@ -96,7 +96,7 @@
</el-form-item> </el-form-item>
<!-- 查询 --> <!-- 查询 -->
<el-button type="primary" icon="el-icon-search" @click="handleSearch"> <el-button type="primary" icon="el-icon-search" @click="handleSearch">
{{ $t("common:button:search") }} {{ $t('common:button:search') }}
</el-button> </el-button>
<!-- 重置 --> <!-- 重置 -->
<el-button <el-button
@ -104,7 +104,7 @@
icon="el-icon-refresh-left" icon="el-icon-refresh-left"
@click="handleReset" @click="handleReset"
> >
{{ $t("common:button:reset") }} {{ $t('common:button:reset') }}
</el-button> </el-button>
<!-- 中心人员 --> <!-- 中心人员 -->
<el-button <el-button
@ -115,7 +115,7 @@
icon="el-icon-info" icon="el-icon-info"
@click="showResearchUser" @click="showResearchUser"
> >
{{ $t("trials:researchRecord:button:questionStaffs") }} {{ $t('trials:researchRecord:button:questionStaffs') }}
</el-button> </el-button>
<!-- 调查表链接 --> <!-- 调查表链接 -->
<el-button <el-button
@ -126,7 +126,7 @@
icon="el-icon-link" icon="el-icon-link"
@click="showResearchLink" @click="showResearchLink"
> >
{{ $t("trials:researchRecord:button:questionLink") }} {{ $t('trials:researchRecord:button:questionLink') }}
</el-button> </el-button>
</el-form> </el-form>
</template> </template>
@ -148,6 +148,7 @@
prop="TrialSiteCode" prop="TrialSiteCode"
:label="$t('trials:researchRecord:table:siteId')" :label="$t('trials:researchRecord:table:siteId')"
min-width="100" min-width="100"
sortable="custom"
show-overflow-tooltip show-overflow-tooltip
/> />
<!-- 中心名称 --> <!-- 中心名称 -->
@ -189,7 +190,7 @@
{{ {{
scope.row.PreliminaryUser scope.row.PreliminaryUser
? scope.row.PreliminaryUser.RealName ? scope.row.PreliminaryUser.RealName
: "" : ''
}} }}
</template> </template>
</el-table-column> </el-table-column>
@ -201,7 +202,7 @@
show-overflow-tooltip show-overflow-tooltip
> >
<template slot-scope="scope"> <template slot-scope="scope">
{{ scope.row.ReviewerUser ? scope.row.ReviewerUser.RealName : "" }} {{ scope.row.ReviewerUser ? scope.row.ReviewerUser.RealName : '' }}
</template> </template>
</el-table-column> </el-table-column>
<!-- 状态 --> <!-- 状态 -->
@ -213,16 +214,16 @@
> >
<template slot-scope="scope"> <template slot-scope="scope">
<el-tag v-if="scope.row.State === 0" type="primary">{{ <el-tag v-if="scope.row.State === 0" type="primary">{{
$fd("ResearchRecord", scope.row.State) $fd('ResearchRecord', scope.row.State)
}}</el-tag> }}</el-tag>
<el-tag v-if="scope.row.State === 1" type="info">{{ <el-tag v-if="scope.row.State === 1" type="info">{{
$fd("ResearchRecord", scope.row.State) $fd('ResearchRecord', scope.row.State)
}}</el-tag> }}</el-tag>
<el-tag v-if="scope.row.State === 2" type="warning">{{ <el-tag v-if="scope.row.State === 2" type="warning">{{
$fd("ResearchRecord", scope.row.State) $fd('ResearchRecord', scope.row.State)
}}</el-tag> }}</el-tag>
<el-tag v-if="scope.row.State === 3" type="danger">{{ <el-tag v-if="scope.row.State === 3" type="danger">{{
$fd("ResearchRecord", scope.row.State) $fd('ResearchRecord', scope.row.State)
}}</el-tag> }}</el-tag>
</template> </template>
</el-table-column> </el-table-column>
@ -235,10 +236,10 @@
> >
<template slot-scope="scope"> <template slot-scope="scope">
<el-tag v-if="scope.row.IsDeleted" type="danger">{{ <el-tag v-if="scope.row.IsDeleted" type="danger">{{
$fd("YesOrNo", scope.row.IsDeleted) $fd('YesOrNo', scope.row.IsDeleted)
}}</el-tag> }}</el-tag>
<el-tag v-else type="primary">{{ <el-tag v-else type="primary">{{
$fd("YesOrNo", scope.row.IsDeleted) $fd('YesOrNo', scope.row.IsDeleted)
}}</el-tag> }}</el-tag>
</template> </template>
</el-table-column> </el-table-column>
@ -248,6 +249,7 @@
:label="$t('trials:researchRecord:table:updateTime')" :label="$t('trials:researchRecord:table:updateTime')"
min-width="150" min-width="150"
show-overflow-tooltip show-overflow-tooltip
sortable="custom"
/> />
<el-table-column width="150"> <el-table-column width="150">
<template slot-scope="scope"> <template slot-scope="scope">
@ -330,12 +332,12 @@
<i style="color: #428bca" class="el-icon-success" /> <i style="color: #428bca" class="el-icon-success" />
<!-- 成功创建调查表链接 --> <!-- 成功创建调查表链接 -->
<span>{{ <span>{{
$t("trials:researchRecord:message:createLinkSuccessfully") $t('trials:researchRecord:message:createLinkSuccessfully')
}}</span> }}</span>
</div> </div>
<div style="margin: 10px 0"> <div style="margin: 10px 0">
<!-- 链接 --> <!-- 链接 -->
{{ $t("trials:researchRecord:label:link") }} {{ $t('trials:researchRecord:label:link') }}
<el-input <el-input
ref="shareLink" ref="shareLink"
v-model="shareLink" v-model="shareLink"
@ -352,7 +354,7 @@
@click="copyLink" @click="copyLink"
class="shareLinkBtn" class="shareLinkBtn"
> >
{{ $t("trials:researchRecord:button:copyLink") }} {{ $t('trials:researchRecord:button:copyLink') }}
</el-button> </el-button>
</div> </div>
</div> </div>
@ -362,10 +364,10 @@
</div> </div>
<div class="codeBtnBox"> <div class="codeBtnBox">
<el-button @click="handleCopyImg" type="primary" round>{{ <el-button @click="handleCopyImg" type="primary" round>{{
$t("trials:researchRecord:button:copyCode") $t('trials:researchRecord:button:copyCode')
}}</el-button> }}</el-button>
<el-button @click="savePic" round>{{ <el-button @click="savePic" round>{{
$t("trials:researchRecord:button:savePic") $t('trials:researchRecord:button:savePic')
}}</el-button> }}</el-button>
</div> </div>
</div> </div>
@ -379,32 +381,32 @@ import {
getTrialSiteSurveyList, getTrialSiteSurveyList,
getTrialSiteSelect, getTrialSiteSelect,
abandonSiteSurvey, abandonSiteSurvey,
} from "@/api/trials"; } from '@/api/trials'
import { changeURLStatic } from "@/utils/history.js"; import { changeURLStatic } from '@/utils/history.js'
import BaseContainer from "@/components/BaseContainer"; import BaseContainer from '@/components/BaseContainer'
import Pagination from "@/components/Pagination"; import Pagination from '@/components/Pagination'
import Users from "./components/users"; import Users from './components/users'
import ResearchForm from "@/views/research/form"; import ResearchForm from '@/views/research/form'
import BaseModel from "@/components/BaseModel"; import BaseModel from '@/components/BaseModel'
import QRCode from "qrcodejs2"; import QRCode from 'qrcodejs2'
const searchDataDefault = () => { const searchDataDefault = () => {
return { return {
SortField: "", SortField: '',
Asc: true, Asc: true,
PageIndex: 1, PageIndex: 1,
PageSize: 20, PageSize: 20,
TrialSiteId: "", TrialSiteId: '',
UserKeyInfo: "", UserKeyInfo: '',
State: null, State: null,
IsDeleted: "", IsDeleted: '',
DateRange: [], DateRange: [],
PreliminaryUserName: null, PreliminaryUserName: null,
ReviewerUserName: null, ReviewerUserName: null,
}; }
}; }
export default { export default {
name: "SiteResearchList", name: 'SiteResearchList',
components: { BaseContainer, Pagination, Users, ResearchForm, BaseModel }, components: { BaseContainer, Pagination, Users, ResearchForm, BaseModel },
data() { data() {
return { return {
@ -418,195 +420,195 @@ export default {
researchInfoVisible: false, researchInfoVisible: false,
share_model: { share_model: {
visible: false, visible: false,
title: this.$t("trials:researchRecord:title:shark"), title: this.$t('trials:researchRecord:title:shark'),
width: "800px", width: '800px',
}, },
shareLink: "", shareLink: '',
researchState: this.$d.ResearchRecord, researchState: this.$d.ResearchRecord,
qrcode: null, qrcode: null,
}; }
}, },
mounted() { mounted() {
this.getList(); this.getList()
this.getSite(); this.getSite()
}, },
methods: { methods: {
// //
getList() { getList() {
this.loading = true; this.loading = true
this.searchData.TrialId = this.trialId; this.searchData.TrialId = this.trialId
if (this.searchData.DateRange && this.searchData.DateRange.length === 2) { if (this.searchData.DateRange && this.searchData.DateRange.length === 2) {
this.searchData.UpdateTimeBegin = this.searchData.DateRange[0]; this.searchData.UpdateTimeBegin = this.searchData.DateRange[0]
this.searchData.updateTimeEnd = this.searchData.DateRange[1]; this.searchData.updateTimeEnd = this.searchData.DateRange[1]
} else { } else {
this.searchData.UpdateTimeBegin = ""; this.searchData.UpdateTimeBegin = ''
this.searchData.updateTimeEnd = ""; this.searchData.updateTimeEnd = ''
} }
getTrialSiteSurveyList(this.searchData) getTrialSiteSurveyList(this.searchData)
.then((res) => { .then((res) => {
this.loading = false; this.loading = false
this.list = res.Result.CurrentPageData; this.list = res.Result.CurrentPageData
this.total = res.Result.TotalCount; this.total = res.Result.TotalCount
}) })
.catch(() => { .catch(() => {
this.loading = false; this.loading = false
}); })
}, },
// //
handleViewResearchList(row) { handleViewResearchList(row) {
changeURLStatic("trialSiteSurveyId", row.Id); changeURLStatic('trialSiteSurveyId', row.Id)
this.researchInfoVisible = true; this.researchInfoVisible = true
}, },
// //
handleRepealResearch(row) { handleRepealResearch(row) {
// //
this.$confirm(this.$t("trials:researchRecord:message:abolish"), { this.$confirm(this.$t('trials:researchRecord:message:abolish'), {
type: "warning", type: 'warning',
distinguishCancelAndClose: true, distinguishCancelAndClose: true,
}).then(() => { }).then(() => {
abandonSiteSurvey(this.trialId, row.Id).then((res) => { abandonSiteSurvey(this.trialId, row.Id).then((res) => {
if (res.IsSuccess) { if (res.IsSuccess) {
this.getList(); this.getList()
// //
this.$message.success( this.$message.success(
this.$t("trials:researchRecord:message:abolishSuccessfully") this.$t('trials:researchRecord:message:abolishSuccessfully')
); )
} }
}); })
}); })
}, },
// //
showResearchUser() { showResearchUser() {
this.researchUserVisible = true; this.researchUserVisible = true
}, },
// //
copyLink() { copyLink() {
// //
this.$copyText( this.$copyText(
`${this.$t("trials:researchRecord:message:researchFormLink")}: ${ `${this.$t('trials:researchRecord:message:researchFormLink')}: ${
this.shareLink this.shareLink
}` }`
) )
.then((res) => { .then((res) => {
// //
this.$message.success( this.$message.success(
this.$t("trials:researchRecord:message:copySuccessfully") this.$t('trials:researchRecord:message:copySuccessfully')
); )
}) })
.catch(() => { .catch(() => {
// //
this.$alert(this.$t("trials:researchRecord:message:copyFailed")); this.$alert(this.$t('trials:researchRecord:message:copyFailed'))
}); })
}, },
// //
creatQrCode() { creatQrCode() {
this.$refs.qrcode.innerHTML = ""; // this.$refs.qrcode.innerHTML = '' //
let text = this.shareLink; let text = this.shareLink
this.qrcode = new QRCode(this.$refs.qrcode, { this.qrcode = new QRCode(this.$refs.qrcode, {
text: text, // ,# text: text, // ,#
width: 200, width: 200,
height: 200, height: 200,
colorDark: "#000000", colorDark: '#000000',
colorLight: "#ffffff", colorLight: '#ffffff',
correctLevel: QRCode.CorrectLevel.H, correctLevel: QRCode.CorrectLevel.H,
}); })
// qrcode.clear(); // // qrcode.clear(); //
}, },
// //
savePic() { savePic() {
let qrCodeCanvas = document let qrCodeCanvas = document
.getElementById("qrcode") .getElementById('qrcode')
.getElementsByTagName("canvas"); .getElementsByTagName('canvas')
let a = document.createElement("a"); let a = document.createElement('a')
a.href = qrCodeCanvas[0].toDataURL("image/url"); a.href = qrCodeCanvas[0].toDataURL('image/url')
a.download = `${this.$t("trials:researchRecord:title:code")}.png`; a.download = `${this.$t('trials:researchRecord:title:code')}.png`
a.click(); a.click()
}, },
// //
handleCopyImg() { handleCopyImg() {
let qrCodeCanvas = document let qrCodeCanvas = document
.getElementById("qrcode") .getElementById('qrcode')
.getElementsByTagName("canvas"); .getElementsByTagName('canvas')
qrCodeCanvas[0].toBlob(async (blob) => { qrCodeCanvas[0].toBlob(async (blob) => {
console.log(blob); console.log(blob)
const data = [ const data = [
new ClipboardItem({ new ClipboardItem({
[blob.type]: blob, [blob.type]: blob,
}), }),
]; // https://w3c.github.io/clipboard-apis/#dom-clipboard-write ] // https://w3c.github.io/clipboard-apis/#dom-clipboard-write
await navigator.clipboard.write(data).then( await navigator.clipboard.write(data).then(
() => { () => {
this.$message.success( this.$message.success(
this.$t("trials:researchRecord:message:copySuccess") this.$t('trials:researchRecord:message:copySuccess')
); )
}, },
() => { () => {
this.$message.error( this.$message.error(
this.$t("trials:researchRecord:message:UnableWrite") this.$t('trials:researchRecord:message:UnableWrite')
); )
} }
); )
}); })
}, },
// site // site
getSite() { getSite() {
getTrialSiteSelect(this.trialId).then((res) => { getTrialSiteSelect(this.trialId).then((res) => {
this.siteOptions = res.Result; this.siteOptions = res.Result
}); })
}, },
// //
showResearchLink() { showResearchLink() {
const trialId = this.trialId; const trialId = this.trialId
this.shareLink = `${location.protocol}//${location.host}/researchLogin?trialId=${trialId}&lang=${this.$i18n.locale}`; this.shareLink = `${location.protocol}//${location.host}/researchLogin?trialId=${trialId}&lang=${this.$i18n.locale}`
this.share_model.visible = true; this.share_model.visible = true
this.$nextTick(() => { this.$nextTick(() => {
this.creatQrCode(); this.creatQrCode()
}); })
}, },
// //
handleReset() { handleReset() {
this.searchData = searchDataDefault(); this.searchData = searchDataDefault()
this.searchData.DateRange = []; this.searchData.DateRange = []
if (this.searchData.DateRange && this.searchData.DateRange.length === 2) { if (this.searchData.DateRange && this.searchData.DateRange.length === 2) {
this.searchData.UpdateTimeBegin = this.searchData.DateRange[0]; this.searchData.UpdateTimeBegin = this.searchData.DateRange[0]
this.searchData.updateTimeEnd = this.searchData.DateRange[1]; this.searchData.updateTimeEnd = this.searchData.DateRange[1]
} else { } else {
this.searchData.UpdateTimeBegin = ""; this.searchData.UpdateTimeBegin = ''
this.searchData.updateTimeEnd = ""; this.searchData.updateTimeEnd = ''
} }
this.getList(); this.getList()
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.siteResearchList.clearSort(); this.$refs.siteResearchList.clearSort()
}); })
}, },
// //
handleSearch() { handleSearch() {
this.getList(); this.getList()
}, },
// //
handleSortByColumn(column) { handleSortByColumn(column) {
if (column.order === "ascending") { if (column.order === 'ascending') {
this.searchData.Asc = true; this.searchData.Asc = true
} else { } else {
this.searchData.Asc = false; this.searchData.Asc = false
} }
this.searchData.SortField = column.prop; this.searchData.SortField = column.prop
this.getList(); this.getList()
}, },
}, },
beforeDestroy() { beforeDestroy() {
if (this.qrcode) { if (this.qrcode) {
this.qrcode = null; this.qrcode = null
} }
}, },
}; }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.shareLink { .shareLink {
padding-right: 20px; padding-right: 20px;
width: 50%; width: 50%;
position: relative; position: relative;
.shareLinkBtn{ .shareLinkBtn {
position: absolute; position: absolute;
bottom: 0px; bottom: 0px;
left: 0px; left: 0px;