Merge branch 'main' of https://gitea.frp.extimaging.com/XCKJ/irc_web into main
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
commit
d1f90a2525
|
@ -1,109 +1,115 @@
|
|||
<template>
|
||||
<!--MFA-->
|
||||
<el-dialog
|
||||
v-if="visible"
|
||||
:visible.sync="visible"
|
||||
v-dialogDrag
|
||||
width="540px"
|
||||
:close-on-click-modal="false"
|
||||
append-to-body
|
||||
@close="cancel"
|
||||
>
|
||||
<div slot="title">
|
||||
{{ title }}
|
||||
</div>
|
||||
<!-- 项目详情 -->
|
||||
<div class="trialsBox">
|
||||
<!--FEEDBACK-->
|
||||
<div v-if="visible" @click.stop="()=>false">
|
||||
<el-dialog
|
||||
:visible.sync="visible"
|
||||
v-dialogDrag
|
||||
width="540px"
|
||||
:close-on-click-modal="false"
|
||||
@close="cancel"
|
||||
>
|
||||
<div slot="title">
|
||||
{{ title }}
|
||||
</div>
|
||||
<!-- 项目详情 -->
|
||||
<div class="trialsBox">
|
||||
<el-form
|
||||
label-position="right"
|
||||
:model="form"
|
||||
:inline="true"
|
||||
class="trialsForm"
|
||||
>
|
||||
<el-form-item :label="$t('feedBack:trials:code')">
|
||||
<span>2024-06-28 15:00</span>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('feedBack:trials:name')">
|
||||
<span>2024-06-28 15:00</span>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('feedBack:trials:siteCode')">
|
||||
<span>2024-06-28 15:00</span>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('feedBack:trials:visit')">
|
||||
<span>2024-06-28 15:00</span>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
<el-form
|
||||
ref="mfaForm"
|
||||
label-position="right"
|
||||
:model="form"
|
||||
:inline="true"
|
||||
class="trialsForm"
|
||||
:rules="rules"
|
||||
label-width="100px"
|
||||
>
|
||||
<el-form-item :label="$t('feedBack:trials:code')">
|
||||
<!-- 影像异常tip -->
|
||||
<p class="tip">
|
||||
<i
|
||||
class="el-icon-warning-outline"
|
||||
style="color: #f56c6c; font-size: 24px"
|
||||
></i>
|
||||
<span> 影像异常导致无法阅片</span>
|
||||
</p>
|
||||
<!-- 问题反馈 -->
|
||||
<el-form-item :label="$t('feedBack:form:feedBack')" prop="feedBack">
|
||||
<el-select v-model="form.value" style="width: 100%">
|
||||
<el-option
|
||||
v-for="item in options"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
<span>影像异常导致无法阅片</span>
|
||||
</el-form-item>
|
||||
<!-- 问题描述 -->
|
||||
<el-form-item
|
||||
:label="$t('feedBack:form:description')"
|
||||
prop="description"
|
||||
>
|
||||
<el-input v-model="form.Code" type="textarea" :rows="4" />
|
||||
</el-form-item>
|
||||
<!-- 截图 -->
|
||||
<el-form-item :label="$t('feedBack:form:screenshot')" prop="screenshot">
|
||||
<uploadImage
|
||||
:path.sync="form.HospitalLogoPath"
|
||||
:disabled="disabled"
|
||||
/>
|
||||
</el-form-item>
|
||||
<!-- 反馈时间 -->
|
||||
<el-form-item :label="$t('feedBack:form:time')" prop="screenshot">
|
||||
<span>2024-06-28 15:00</span>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('feedBack:trials:name')">
|
||||
<span>2024-06-28 15:00</span>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('feedBack:trials:siteCode')">
|
||||
<span>2024-06-28 15:00</span>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('feedBack:trials:visit')">
|
||||
<span>2024-06-28 15:00</span>
|
||||
<!-- 状态 -->
|
||||
<el-form-item :label="$t('feedBack:form:status')" prop="screenshot">
|
||||
<el-switch
|
||||
v-model="form.status"
|
||||
active-color="#13ce66"
|
||||
inactive-color="#ff4949"
|
||||
:active-value="true"
|
||||
:inactive-value="false"
|
||||
:active-text="$fd('FeedBackStatus', true)"
|
||||
:inactive-text="$fd('FeedBackStatus', false)"
|
||||
>
|
||||
</el-switch>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
<el-form
|
||||
ref="mfaForm"
|
||||
label-position="right"
|
||||
:model="form"
|
||||
:rules="rules"
|
||||
label-width="100px"
|
||||
>
|
||||
<!-- 影像异常tip -->
|
||||
<p class="tip">
|
||||
<i
|
||||
class="el-icon-warning-outline"
|
||||
style="color: #f56c6c; font-size: 24px"
|
||||
></i>
|
||||
<span> 影像异常导致无法阅片</span>
|
||||
</p>
|
||||
<!-- 问题反馈 -->
|
||||
<el-form-item :label="$t('feedBack:form:feedBack')" prop="feedBack">
|
||||
<el-select v-model="form.value" style="width: 100%">
|
||||
<el-option
|
||||
v-for="item in options"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
<span>影像异常导致无法阅片</span>
|
||||
</el-form-item>
|
||||
<!-- 问题描述 -->
|
||||
<el-form-item :label="$t('feedBack:form:description')" prop="description">
|
||||
<el-input v-model="form.Code" type="textarea" :rows="4" />
|
||||
</el-form-item>
|
||||
<!-- 截图 -->
|
||||
<el-form-item :label="$t('feedBack:form:screenshot')" prop="screenshot">
|
||||
<uploadImage :path.sync="form.HospitalLogoPath" :disabled="disabled" />
|
||||
</el-form-item>
|
||||
<!-- 反馈时间 -->
|
||||
<el-form-item :label="$t('feedBack:form:time')" prop="screenshot">
|
||||
<span>2024-06-28 15:00</span>
|
||||
</el-form-item>
|
||||
<!-- 状态 -->
|
||||
<el-form-item :label="$t('feedBack:form:status')" prop="screenshot">
|
||||
<el-switch
|
||||
v-model="form.status"
|
||||
active-color="#13ce66"
|
||||
inactive-color="#ff4949"
|
||||
:active-value="true"
|
||||
:inactive-value="false"
|
||||
:active-text="$fd('FeedBackStatus', true)"
|
||||
:inactive-text="$fd('FeedBackStatus', false)"
|
||||
<div slot="footer">
|
||||
<!-- 取消 -->
|
||||
<el-button size="small" @click.stop="cancel">
|
||||
{{ $t("feedBack:button:cancel") }}
|
||||
</el-button>
|
||||
<!-- 保存 -->
|
||||
<el-button
|
||||
type="primary"
|
||||
size="small"
|
||||
@click.stop="save"
|
||||
:loading="loading"
|
||||
>
|
||||
</el-switch>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer">
|
||||
<!-- 取消 -->
|
||||
<el-button size="small" @click.stop="cancel">
|
||||
{{ $t("feedBack:button:cancel") }}
|
||||
</el-button>
|
||||
<!-- 保存 -->
|
||||
<el-button
|
||||
type="primary"
|
||||
size="small"
|
||||
@click.stop="save"
|
||||
:loading="loading"
|
||||
>
|
||||
{{ $t("feedBack:button:save") }}
|
||||
</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
{{ $t("feedBack:button:save") }}
|
||||
</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import uploadImage from "./uploadImage.vue";
|
||||
|
|
|
@ -0,0 +1,23 @@
|
|||
import Vue from "vue";
|
||||
import FEEDBACKCOMP from "./index.vue";
|
||||
const FBConstructor = Vue.extend(FEEDBACKCOMP);
|
||||
|
||||
const FBT = options => {
|
||||
// const { cancelBack } = options;
|
||||
// if (!UserId) throw `UserId is requred.but ${UserId}`
|
||||
const id = `FB${new Date().getTime()}`;
|
||||
const instance = new FBConstructor();
|
||||
instance.id = id;
|
||||
instance.vm = instance.$mount();
|
||||
if (instance.vm.visible) return;
|
||||
document.body.appendChild(instance.vm.$el);
|
||||
instance.vm.open();
|
||||
instance.vm.$on("success", (Id) => {
|
||||
});
|
||||
instance.vm.$on("closed", () => {
|
||||
document.body.removeChild(instance.vm.$el);
|
||||
instance.vm.$destroy();
|
||||
});
|
||||
return instance.vm;
|
||||
}
|
||||
export default FBT;
|
|
@ -0,0 +1,7 @@
|
|||
import FEEDBACKCOMP from "./index.vue";
|
||||
import FBT from "./fun";
|
||||
|
||||
export default Vue => {
|
||||
Vue.component(FEEDBACKCOMP.name, FEEDBACKCOMP);
|
||||
Vue.prototype.$FBT = FBT;
|
||||
};
|
|
@ -0,0 +1,48 @@
|
|||
<template>
|
||||
<div v-if="visible" @click.stop="()=>false">
|
||||
<el-dialog
|
||||
:visible.sync="visible"
|
||||
v-dialogDrag
|
||||
width="1200px"
|
||||
:close-on-click-modal="false"
|
||||
@close="cancel"
|
||||
>
|
||||
<div slot="title">
|
||||
{{ title }}
|
||||
</div>
|
||||
<feedBackTable />
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import feedBackTable from "@/views/feedBack/index.vue";
|
||||
export default {
|
||||
name: "FBT",
|
||||
components: { feedBackTable },
|
||||
data() {
|
||||
return {
|
||||
title: null,
|
||||
visible: false,
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
disabled() {
|
||||
return false;
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
open(data) {
|
||||
this.visible = true;
|
||||
},
|
||||
cancel() {
|
||||
this.visible = false;
|
||||
this.$emit("closed");
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
::v-deep .el-dialog__body {
|
||||
padding-bottom: 0;
|
||||
}
|
||||
</style>
|
|
@ -62,6 +62,8 @@ import MFA from '@/components/MFA/index'
|
|||
Vue.use(MFA)
|
||||
import FB from '@/components/feedBack/index'
|
||||
Vue.use(FB)
|
||||
import FBT from '@/components/feedBackTable/index'
|
||||
Vue.use(FBT)
|
||||
import adaptive from '@/directive/adaptive/index'
|
||||
// 表格自适应指令
|
||||
Vue.use(adaptive)
|
||||
|
|
|
@ -3,16 +3,39 @@
|
|||
<div ref="leftContainer" class="left">
|
||||
<el-form :inline="true">
|
||||
<!--项目编号/实验名称-->
|
||||
<el-form-item :label="$t('feedBack:search:trials')">
|
||||
<el-input v-model="searchData.a" clearable></el-input>
|
||||
<el-form-item :label="$t('feedBack:search:trials')" v-if="level > 8">
|
||||
<el-input
|
||||
v-model="searchData.a"
|
||||
clearable
|
||||
style="width: 150px"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
<!--中心-->
|
||||
<el-form-item :label="$t('feedBack:search:site')" v-if="level > 7">
|
||||
<el-input
|
||||
v-model="searchData.a"
|
||||
clearable
|
||||
style="width: 150px"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
<!--受试者访视-->
|
||||
<el-form-item :label="$t('feedBack:search:subjectVisit')">
|
||||
<el-input v-model="searchData.a" clearable></el-input>
|
||||
<el-form-item
|
||||
:label="$t('feedBack:search:subjectVisit')"
|
||||
v-if="level > 7"
|
||||
>
|
||||
<el-input
|
||||
v-model="searchData.a"
|
||||
clearable
|
||||
style="width: 150px"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
<!--角色-->
|
||||
<el-form-item :label="$t('feedBack:search:role')">
|
||||
<el-select v-model="searchData.NoticeTypeEnum" clearable size="small">
|
||||
<el-form-item :label="$t('feedBack:search:role')" v-if="level > 7">
|
||||
<el-select
|
||||
v-model="searchData.NoticeTypeEnum"
|
||||
clearable
|
||||
style="width: 150px"
|
||||
>
|
||||
<el-option
|
||||
v-for="item of $d.NoteType"
|
||||
:key="item.value"
|
||||
|
@ -22,12 +45,20 @@
|
|||
</el-select>
|
||||
</el-form-item>
|
||||
<!--反馈人-->
|
||||
<el-form-item :label="$t('feedBack:search:user')">
|
||||
<el-input v-model="searchData.a" clearable></el-input>
|
||||
<el-form-item :label="$t('feedBack:search:user')" v-if="level > 7">
|
||||
<el-input
|
||||
v-model="searchData.a"
|
||||
clearable
|
||||
style="width: 150px"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
<!--问题类型-->
|
||||
<el-form-item :label="$t('feedBack:search:questionType')">
|
||||
<el-select v-model="searchData.NoticeTypeEnum" clearable size="small">
|
||||
<el-select
|
||||
v-model="searchData.NoticeTypeEnum"
|
||||
clearable
|
||||
style="width: 150px"
|
||||
>
|
||||
<el-option
|
||||
v-for="item of $d.NoteType"
|
||||
:key="item.value"
|
||||
|
@ -38,11 +69,19 @@
|
|||
</el-form-item>
|
||||
<!--问题描述-->
|
||||
<el-form-item :label="$t('feedBack:search:description')">
|
||||
<el-input v-model="searchData.a" clearable></el-input>
|
||||
<el-input
|
||||
v-model="searchData.a"
|
||||
clearable
|
||||
style="width: 150px"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
<!--状态-->
|
||||
<el-form-item :label="$t('feedBack:search:status')">
|
||||
<el-select v-model="searchData.NoticeTypeEnum" clearable size="small">
|
||||
<el-form-item :label="$t('feedBack:search:status')" v-if="level > 7">
|
||||
<el-select
|
||||
v-model="searchData.NoticeTypeEnum"
|
||||
clearable
|
||||
style="width: 150px"
|
||||
>
|
||||
<el-option
|
||||
v-for="item of $d.NoteType"
|
||||
:key="item.value"
|
||||
|
@ -51,7 +90,7 @@
|
|||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<!--最新接受日期-->
|
||||
<!--反馈日期-->
|
||||
<el-form-item :label="$t('feedBack:search:time')">
|
||||
<el-date-picker
|
||||
v-model="datetimerange"
|
||||
|
@ -61,6 +100,7 @@
|
|||
:end-placeholder="$t('feedBack:search:endTime')"
|
||||
value-format="yyyy-MM-dd HH:mm:ss"
|
||||
@change="handleDatetimeChange"
|
||||
style="width: 250px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
|
@ -80,7 +120,12 @@
|
|||
>
|
||||
{{ $t("common:button:reset") }}
|
||||
</el-button>
|
||||
<el-button type="primary" size="mini" @click="report">
|
||||
<el-button
|
||||
type="primary"
|
||||
size="mini"
|
||||
@click="report"
|
||||
v-if="level > 7"
|
||||
>
|
||||
{{ $t("common:button:export") }}
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
|
@ -89,6 +134,7 @@
|
|||
size="mini"
|
||||
@click="resolve"
|
||||
style="float: right"
|
||||
v-if="level > 7"
|
||||
>
|
||||
{{ $t("feedBack:button:resolve") }}
|
||||
</el-button>
|
||||
|
@ -103,13 +149,20 @@
|
|||
@sort-change="handleSortByColumn"
|
||||
:default-sort="{ prop: 'StudyTime', order: 'descending' }"
|
||||
>
|
||||
<el-table-column type="selection" align="center" width="45" />
|
||||
<el-table-column
|
||||
type="selection"
|
||||
align="center"
|
||||
width="45"
|
||||
v-if="level > 7"
|
||||
/>
|
||||
<el-table-column type="index" width="50" />
|
||||
<el-table-column
|
||||
:label="$t('feedBack:form:trialCode')"
|
||||
prop="NoticeLevelEnum"
|
||||
min-width="120"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
v-if="level > 8"
|
||||
/>
|
||||
<el-table-column
|
||||
:label="$t('feedBack:form:study')"
|
||||
|
@ -117,6 +170,7 @@
|
|||
min-width="100"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
v-if="level > 8"
|
||||
/>
|
||||
<el-table-column
|
||||
:label="$t('feedBack:form:siteCode')"
|
||||
|
@ -124,6 +178,7 @@
|
|||
min-width="100"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
v-if="level > 7"
|
||||
/>
|
||||
<el-table-column
|
||||
:label="$t('feedBack:form:subjectVisit')"
|
||||
|
@ -131,6 +186,7 @@
|
|||
min-width="100"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
v-if="level > 7"
|
||||
/>
|
||||
<el-table-column
|
||||
:label="$t('feedBack:form:role')"
|
||||
|
@ -138,6 +194,7 @@
|
|||
min-width="100"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
v-if="level > 7"
|
||||
/>
|
||||
<el-table-column
|
||||
:label="$t('feedBack:form:user')"
|
||||
|
@ -145,6 +202,7 @@
|
|||
min-width="100"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
v-if="level > 7"
|
||||
/>
|
||||
<el-table-column
|
||||
:label="$t('feedBack:form:questionType')"
|
||||
|
@ -173,6 +231,7 @@
|
|||
min-width="100"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
v-if="level > 7"
|
||||
/>
|
||||
<el-table-column
|
||||
:label="$t('feedBack:form:uploadTime')"
|
||||
|
@ -180,16 +239,17 @@
|
|||
min-width="100"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
v-if="level > 7"
|
||||
/>
|
||||
<el-table-column
|
||||
:label="$t('common:action:action')"
|
||||
fixed="right"
|
||||
prop="UserTypeShortName"
|
||||
min-width="200"
|
||||
width="80"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<el-button size="mini" type="text" @click="handleEdit(scope.row)">
|
||||
<el-button size="mini" type="text" @click="getDetail(scope.row)">
|
||||
{{ $t("common:button:view") }}
|
||||
</el-button>
|
||||
</template>
|
||||
|
@ -207,11 +267,6 @@
|
|||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import {
|
||||
getSystemNoticeList,
|
||||
addOrUpdateSystemNotice,
|
||||
} from "@/api/system/notice";
|
||||
import { getUserTypeRoleList } from "@/api/admin";
|
||||
import Pagination from "@/components/Pagination";
|
||||
const searchDataDefault = () => {
|
||||
return {
|
||||
|
@ -248,6 +303,20 @@ export default {
|
|||
tableSelectData: [],
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
level() {
|
||||
if (this.hasPermi(["role:dev", "role:admin"])) {
|
||||
return 9;
|
||||
}
|
||||
if (this.hasPermi(["role:pm"])) {
|
||||
return 8;
|
||||
}
|
||||
if (this.hasPermi(["role:ir", "role:crc"])) {
|
||||
return 7;
|
||||
}
|
||||
return 0;
|
||||
},
|
||||
},
|
||||
mounted() {},
|
||||
methods: {
|
||||
getList() {},
|
||||
|
@ -287,6 +356,10 @@ export default {
|
|||
this.searchData.PageIndex = 1;
|
||||
this.getList();
|
||||
},
|
||||
// 获取详情
|
||||
getDetail() {
|
||||
this.$FB();
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
|
|
@ -6,14 +6,17 @@
|
|||
'feedBack-out': show === false,
|
||||
}"
|
||||
@click.stop="open"
|
||||
v-if="isShow"
|
||||
>
|
||||
<i class="el-icon-chat-dot-square icon"></i>
|
||||
<transition name="fade">
|
||||
<div class="checkBox" v-show="visible" @click.stop="false">
|
||||
<div class="checkBox" v-show="visible" @click.stop="()=>false">
|
||||
<span @click.stop="openFeedBack">{{
|
||||
$t("triials:feedBack:botton:opinion")
|
||||
}}</span>
|
||||
<span>{{ $t("triials:feedBack:botton:mine") }}</span>
|
||||
<span @click.stop="openFeedBackTable">{{
|
||||
$t("triials:feedBack:botton:mine")
|
||||
}}</span>
|
||||
</div>
|
||||
</transition>
|
||||
</div>
|
||||
|
@ -37,6 +40,14 @@ export default {
|
|||
}
|
||||
});
|
||||
},
|
||||
computed: {
|
||||
isShow() {
|
||||
if (this.hasPermi(["role:ir", "role:crc"])) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
open() {
|
||||
if (this.show) {
|
||||
|
@ -53,6 +64,10 @@ export default {
|
|||
},
|
||||
});
|
||||
},
|
||||
// 打开反馈列表
|
||||
openFeedBackTable() {
|
||||
this.$FBT();
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
</div>
|
||||
<trialsMain />
|
||||
</div>
|
||||
<!-- <feedBack /> -->
|
||||
<feedBack />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
|
Loading…
Reference in New Issue