Compare commits

..

No commits in common. "dev" and "main" have entirely different histories.
dev ... main

68 changed files with 2570 additions and 13513 deletions

View File

@ -5,12 +5,7 @@ VUE_APP_TITLE = 新医路院后患者管理平台
ENV = 'development'
# 新医路院后患者管理平台/开发环境
# VUE_APP_BASE_API = 'http://192.168.20.37:19090'
# VUE_APP_BASE_API = 'http://8.131.93.145:54011'
# VUE_APP_BASE_API = 'http://192.168.0.95:9090'
# VUE_APP_BASE_API = 'https://1608.xinelu.cn'
VUE_APP_BASE_API = 'http://192.168.124.7:19090'
VUE_APP_BASE_API = 'http://192.168.16.48:8080'
# 路由懒加载
VUE_CLI_BABEL_TRANSPILE_MODULES = true

View File

@ -5,9 +5,4 @@ VUE_APP_TITLE = 新医路院后患者管理平台
ENV = 'production'
# 新医路院后患者管理平台/生产环境
# VUE_APP_BASE_API = 'http://192.168.20.37:19090'
# VUE_APP_BASE_API = 'http://8.131.93.145:54011'
# VUE_APP_BASE_API = 'http://192.168.0.95:9090'
# VUE_APP_BASE_API = 'https://1608.xinelu.cn'
VUE_APP_BASE_API = 'http://192.168.124.7:19090'
VUE_APP_BASE_API = 'http://192.168.16.76:8080'

View File

@ -7,8 +7,4 @@ NODE_ENV = production
ENV = 'staging'
# 新医路院后患者管理平台/测试环境
# VUE_APP_BASE_API = 'http://192.168.20.37:19090'
# VUE_APP_BASE_API = 'http://8.131.93.145:54011'
# VUE_APP_BASE_API = 'http://192.168.0.95:9090'
# VUE_APP_BASE_API = 'https://1608.xinelu.cn'
VUE_APP_BASE_API = 'http://192.168.124.7:19090'
VUE_APP_BASE_API = '/stage-api'

View File

@ -1,28 +0,0 @@
import request from '@/utils/request'
// 查询列表
export function uploadRobotPublishRecord(query) {
return request({
url: '/manage/signnode/uploadRobotPublishRecord',
method: 'get',
params: query
})
}
// 问卷列表
export function selectQuestionInfoList(query) {
return request({
url: '/system/question/selectQuestionInfoList',
method: 'get',
params: query
})
}
// 问卷详情列表
export function questionnaireTaskOptionList(query) {
return request({
url: '/system/statistics/questionnaireTaskOptionList',
method: 'get',
params: query
})
}

View File

@ -42,9 +42,3 @@ export function delCrowdInfo(id) {
method: 'delete'
})
}
export function type(dictValue) {
return request({
url: '/system/dict/data/type/' + dictValue,
method: 'get'
})
}

View File

@ -1,61 +0,0 @@
import request from '@/utils/request'
// 查询导入批次列表
export function patientInfoImportBatchlist(query) {
return request({
url: '/manage/patientInfoimportmain/list',
method: 'get',
params: query
})
}
// 删除导入
export function updateSn(sn) {
return request({
url: `/manage/patientInfoimportmain/updateSn?sn=${sn}`,
method: 'POST'
})
}
//删除导入明细
export function updatePatientInfoImport(data) {
return request({
url: `/manage/patientInfoimportmain/updatePatientInfoImport`,
method: 'POST',
data
})
}
// 查询最后一条信息
export function outboundConfirmation() {
return request({
url: '/manage/signroute/outboundConfirmation',
method: 'get',
})
}
// 确认按钮
export function directOutbound(data) {
return request({
url: `/manage/signroute/directOutbound`,
method: 'post',
data
})
}
// 获取医院外呼时间起止详细信息
export function selectDialTime() {
return request({
url: `/manage/patientInfoimportmain/selectDialTime`,
method: 'get',
})
}
// 新增医院外呼时间起止
export function addDialTime(data) {
return request({
url: `/manage/patientInfoimportmain/addDialTime`,
method: 'post',
data
})
}

View File

@ -1,18 +0,0 @@
import request from '@/utils/request'
// 删除
export function batchDeleteTask(query) {
return request({
url: '/manage/signroute/batchDeleteTask',
method: 'post',
data: query
})
}
// 查询列表
export function taskManagement(query) {
return request({
url: '/manage/signroute/taskManagement',
method: 'get',
params: query
})
}

View File

@ -1,26 +0,0 @@
import request from '@/utils/request'
// 问卷任务统计右侧列表
export function questionnaireTaskStatistics(query) {
return request({
url: '/system/statistics/questionnaireTaskStatistics',
method: 'get',
params: query
})
}
// 问卷任务统计左侧列表
export function selectQuestionInfoList(query) {
return request({
url: '/system/question/selectQuestionInfoList',
method: 'get',
params: query
})
}
// 问卷分页
export function list(query) {
return request({
url: '/system/question/list',
method: 'get',
params: query
})
}

View File

@ -49,31 +49,3 @@ export function delDepartment(id) {
method: 'delete'
})
}
// 导入
export function patientUpload(data) {
return request({
url: '/manage/patientInfo/patientUpload',
method: 'post',
data: data
})
}
// 导入提交
export function secondaryUpload(data) {
return request({
url: '/manage/patientInfo/secondaryUpload',
method: 'post',
data: data
})
}
// 数量
export function count(query) {
return request({
url: '/system/config/configKey/aiob_max_count',
method: 'get',
params: query
})
}

View File

@ -5,22 +5,4 @@ export function manualFollowUpList(query) {
method: 'get',
params: query
})
}
//创建实时呼叫任务
export function createActualTimeTask(query) {
return request({
url: '/manage/signroute/createActualTimeTask',
method: 'post',
data: query
})
}
//AI通话获取录音
export function getPhoneDialVideo(id) {
return request({
url: `/manage/signnode/getPhoneDialVideo/${id}`,
method: 'get',
})
}
}

View File

@ -1,19 +0,0 @@
import request from '@/utils/request'
// 随访明细表查询
export function getFollowUpDetail(query) {
return request({
url: '/system/statistics/getFollowUpDetail',
method: 'get',
params: query
})
}
// 随访成功率统计
export function getFollowUpRate(query) {
return request({
url: `/system/statistics/getFollowUpRate`,
method: 'get',
params: query
})
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 265 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.3 KiB

View File

@ -324,9 +324,6 @@ export default {
this.Quill = null;
},
methods: {
getEditor() {
return this.Quill;
},
//
updateCPagefour(index, size) {
this.querymaterial.pageNum = index
@ -574,11 +571,6 @@ button.ql-scmages {
margin-left: -14px;
margin-top: -8px;
width: 24px !important;
cursor: none;
-webkit-user-select: none; /* 针对WebKit浏览器的兼容性设置 */
-moz-user-select: none; /* 针对Firefox浏览器的兼容性设置 */
-ms-user-select: none; /* 针对IE浏览器的兼容性设置 */
user-select: none; /* 标准属性 */
}
.bodytopxjsc {
width: 100%;

View File

@ -225,6 +225,7 @@ export default {
deep: true,
immediate: true,
},
},
};
</script>

View File

@ -78,9 +78,6 @@ export default {
height: 15px !important;
background-color: #FAFAFA !important;
}
::v-deep .el-scrollbar__bar{
width: 12px !important;
}
::v-deep .el-table {

View File

@ -17,7 +17,7 @@ const service = axios.create({
// axios中请求配置有baseURL选项表示请求URL公共部分
baseURL: process.env.VUE_APP_BASE_API,
// 超时
timeout: 1800000
timeout: 10000
})
// request拦截器
@ -61,28 +61,28 @@ service.interceptors.request.use(config => {
}
return config
}, error => {
console.log(error)
Promise.reject(error)
console.log(error)
Promise.reject(error)
})
// 响应拦截器
service.interceptors.response.use(res => {
// 未设置状态码则默认成功状态
const code = res.data.code || 200;
// 获取错误信息
const msg = errorCode[code] || res.data.msg || errorCode['default']
// 二进制数据则直接返回
if (res.request.responseType === 'blob' || res.request.responseType === 'arraybuffer') {
return res.data
}
if (code === 401) {
if (!isRelogin.show) {
isRelogin.show = true;
MessageBox.confirm('登录状态已过期,您可以继续留在该页面,或者重新登录', '系统提示', {
confirmButtonText: '重新登录',
cancelButtonText: '取消',
type: 'warning'
}
// 未设置状态码则默认成功状态
const code = res.data.code || 200;
// 获取错误信息
const msg = errorCode[code] || res.data.msg || errorCode['default']
// 二进制数据则直接返回
if(res.request.responseType === 'blob' || res.request.responseType === 'arraybuffer'){
return res.data
}
if (code === 401) {
if (!isRelogin.show) {
isRelogin.show = true;
MessageBox.confirm('登录状态已过期,您可以继续留在该页面,或者重新登录', '系统提示', {
confirmButtonText: '重新登录',
cancelButtonText: '取消',
type: 'warning'
}
).then(() => {
isRelogin.show = false;
store.dispatch('LogOut').then(() => {
@ -92,28 +92,22 @@ service.interceptors.response.use(res => {
isRelogin.show = false;
});
}
return Promise.reject('无效的会话,或者会话已过期,请重新登录。')
} else if (code === 500) {
Message({
message: msg,
type: 'error'
})
return Promise.reject(new Error(msg))
} else if (code !== 200) {
Notification.error({
title: msg
})
return Promise.reject('error')
} else {
if (res.config.url == '/manage/signroute/add' && window.location.pathname != "/patient/ManuallyCreatingTasks") {
return Promise.reject('无效的会话,或者会话已过期,请重新登录。')
} else if (code === 500) {
Message({
message: "创建任务已完成,正在拨打电话!",
type: 'success'
message: msg,
type: 'error'
})
return Promise.reject(new Error(msg))
} else if (code !== 200) {
Notification.error({
title: msg
})
return Promise.reject('error')
} else {
return res.data
}
return res.data
}
},
},
error => {
console.log('err' + error)
let { message } = error;

View File

@ -291,7 +291,7 @@ export default {
}
::-webkit-scrollbar {
width: 10x;
width: 5px;
}
::-webkit-scrollbar-thumb {
@ -304,8 +304,8 @@ export default {
}
.left {
height: calc(100vh - 119px);
// height: 100%;
// height: calc(100vh - 119px);
height: 100%;
overflow: auto;
position: relative;
padding-right: 10px;

File diff suppressed because it is too large Load Diff

View File

@ -72,8 +72,8 @@ export default {
return {
codeUrl: "",
loginForm: {
username: "",
password: "",
username: "admin",
password: "admin123",
rememberMe: false,
code: "",
uuid: ""

View File

@ -1,545 +0,0 @@
<template>
<div class="app-container" ref="layout">
<div ref="topform" class="form">
<SearchFilter :labelWidths="310" labelWidth="90px" size="small" @search="handleQuery" @reset="resetQuery"
@minShowCtrol="getMaxTableHeight" @handleRules="handleRules">
<el-form-item label="姓名" prop="patientName">
<el-input v-model="queryParams.patientName" placeholder="请输入姓名" clearable @keyup.enter.native="handleQuery"
style="width: 200px" />
</el-form-item>
<el-form-item label="联系电话" prop="patientPhone">
<el-input v-model="queryParams.patientPhone" placeholder="请输入联系电话" clearable @keyup.enter.native="handleQuery"
style="width: 200px" />
</el-form-item>
<!-- <el-form-item label="诊断" prop="mainDiagnosis">
<el-input v-model="queryParams.mainDiagnosis" placeholder="请输入诊断" clearable style="width: 200px"
@keyup.enter.native="handleQuery" />
</el-form-item> -->
<!-- <el-form-item label="患者来源" prop="patientSource">
<el-select v-model="queryParams.patientSource" placeholder="请选择患者来源" clearable style="width: 200px">
<el-option v-for="dict in dict.type.patient_source" :key="dict.value" :label="dict.label"
:value="dict.value" />
</el-select>
</el-form-item> -->
<!-- <el-form-item label="就诊方式" prop="visitMethod">
<el-select v-model="queryParams.visitMethod" placeholder="请选择就诊方式" clearable style="width: 200px">
<el-option v-for="dict in dict.type.visit_method" :key="dict.value" :label="dict.label"
:value="dict.value" />
</el-select>
</el-form-item> -->
<!-- <el-form-item label="就诊时间" prop="visitDateStart">
<el-date-picker v-model="visitDate" type="daterange" range-separator="" start-placeholder="开始日期"
style="width: 200px" value-format="yyyy-MM-dd" end-placeholder="结束日期">
</el-date-picker>
</el-form-item> -->
<el-form-item label="医院" prop="hospitalAgencyId">
<el-select v-model="queryParams.hospitalAgencyId" filterable placeholder="请选择医院" style="width: 200px"
clearable @clear="clearhospitalAgency" @change="changehospitalAgency">
<el-option v-for="item in hospitalAgencylist" :key="item.id" :label="item.agencyName" :value="item.id">
</el-option>
</el-select>
</el-form-item>
<!-- <el-form-item label="院区" prop="campusAgencyId">
<el-select v-model="queryParams.campusAgencyId" filterable placeholder="请选择院区" style="width: 200px" clearable
@clear="clearcampusAgency" @change="changecampusAgency">
<el-option v-for="item in campusAgencylist" :key="item.id" :label="item.agencyName" :value="item.id">
</el-option>
</el-select>
</el-form-item> -->
<el-form-item label="科室" prop="departmentId">
<el-select v-model="queryParams.departmentId" filterable placeholder="请选择科室" style="width: 200px" clearable
@clear="cleardepartment" @change="changedepartment">
<el-option v-for="item in departmentlist" :key="item.id" :label="item.departmentName" :value="item.id">
</el-option>
</el-select>
</el-form-item>
<!-- <el-form-item label="病区" prop="wardId">
<el-select v-model="queryParams.wardId" filterable placeholder="请选择病区" style="width: 200px" clearable>
<el-option v-for="item in wardlist" :key="item.id" :label="item.departmentName" :value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="主治医生" prop="attendingPhysicianId">
<el-select v-model="queryParams.attendingPhysicianId" style="width: 200px" filterable placeholder="请选择主治医生"
clearable>
<el-option v-for="item in attendingPhysicianlist" :key="item.userId" :label="item.nickName"
:value="item.userId">
</el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item> -->
</SearchFilter>
</div>
<div ref="table">
<el-table :max-height="maxTableHeight" v-loading="loading" :data="patientInfoList">
<el-table-column label="序号" type="index" width="48" align="center" />
<el-table-column label="姓名" align="center" prop="patientName" />
<el-table-column label="联系电话" align="center" prop="patientPhone" />
<el-table-column label="年龄" align="center" prop="age" />
<el-table-column label="医院" align="center" prop="hospitalAgencyName" />
<el-table-column label="科室名称" align="center" prop="departmentName" />
<el-table-column label="导入日期" align="center" prop="visitDate">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.Timeimport, "{y}-{m}-{d}") }}</span>
</template>
</el-table-column>
<el-table-column label="诊断" align="center" prop="mainDiagnosis" />
<!-- <el-table-column label="性别" align="center" prop="sex">
<template slot-scope="scope">
{{ scope.row.sex == "MALE" ? "男" : "" }}
{{ scope.row.sex == "FEMALE" ? "女" : "" }}
</template>
</el-table-column> -->
<!-- <el-table-column label="出生日期" align="center" prop="birthDate" width="130" />
<el-table-column label="院区" align="center" prop="campusAgencyName" width="130" />
<el-table-column label="病区名称" align="center" prop="wardName" width="130" />
<el-table-column label="住院/门诊号" align="center" prop="inHospitalNumber" width="130" />
<el-table-column label="主治医生" align="center" prop="attendingPhysicianName" />
<el-table-column label="就诊方式" align="center" prop="visitMethod">
<template slot-scope="scope">
<dict-tag :options="dict.type.visit_method" :value="scope.row.visitMethod" />
</template>
</el-table-column>
<el-table-column label="患者来源" align="center" prop="patientSource">
<template slot-scope="scope">
<dict-tag :options="dict.type.patient_source" :value="scope.row.patientSource" />
</template>
</el-table-column>
<el-table-column label="住址" align="center" prop="address" /> -->
<el-table-column label="操作" align="center" fixed="right" width="130">
<template slot-scope="scope">
<!-- <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
v-hasPermi="['manage:patientInfo:edit']">修改</el-button>
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
v-hasPermi="['manage:patientInfo:remove']">删除</el-button> -->
<el-button size="mini" type="text" @click="handOutbound(scope.row)">外呼</el-button>
<el-button size="mini" type="text" @click="handleAuthRole(scope.row)">详情</el-button>
<el-button size="mini" type="text" @click="handleDelete(scope.row)">删除</el-button>
<!-- <el-button size="mini" type="text" @click="handleedit(scope.row)">画像编辑</el-button> -->
</template>
</el-table-column>
</el-table>
</div>
<myPagination v-show="total > 0" :total="total" :pageSize="queryParams.pageSize"
:indexFromWrap="queryParams.pageNum" :indexFrom="queryParams.pageSize" @updateCPage="updateCPage"></myPagination>
</div>
</template>
<script>
import { getPatientList } from "@/api/manage/patientInfo";
import { getAge } from "@/utils/age";
import {
selectAgencyList,
getDepartmentList,
getAgencyList,
} from "@/api/manage/selectAgencyList";
import { usergetList } from "@/api/unitconfig/patientConfiguration";
import SearchFilter from "../../components/SearchForm.vue";
import cardlist from "../components/cardlist.vue";
import { updatePatientInfoImport } from "@/api/manage/patientInfoImport";
export default {
name: "PatientInfo",
dicts: ["patient_type", "visit_method", "sign_status", "patient_source"],
components: { SearchFilter, cardlist },
data() {
return {
searchData: {},
maxTableHeight: undefined,
attendingPhysicianlist: [],
//
loading: true,
//
total: 0,
//
patientInfoList: [],
//
queryParams: {
pageNum: 1,
pageSize: 100,
sn: this.$route.query.sn,
patientName: null,
patientPhone: null,
birthDate: null,
patientType: null,
visitMethod: null,
mainDiagnosis: null,
attendingPhysicianId: null,
hospitalAgencyId: null,
hospitalAgencyName: null,
campusAgencyId: null,
campusAgencyName: null,
departmentId: null,
departmentName: null,
wardId: null,
wardName: null,
surgicalName: null,
admissionTimeStart: null,
admissionTimeEnd: null,
outpatientNumber: null,
visitDateStart: null,
visitDateEnd: null,
dischargeMethod: null,
patientSource: null,
},
visitDate: [],
admissionTime: [],
//list
hospitalAgencylist: [],
// list
campusAgencylist: [],
//list
departmentlist: [],
//list
wardlist: [],
};
},
watch: {
type: {
handler(val) {
// if (val == "table") {
// this.queryParams.pageSize = 10;
// this.indexFrom = "";
// } else if (val == "card") {
// this.indexFrom = 100;
// }
},
deep: true,
immediate: true,
},
},
created() {
this.getList();
this.selectAgencyinfo();
},
mounted() {
this.getMaxTableHeight();
this.screenChange();
},
methods: {
updateCPage(index, size) {
this.queryParams.pageNum = index;
this.queryParams.pageSize = size;
this.getList();
},
//
usergetListinfo() {
usergetList({
hospitalAgencyId: this.queryParams.hospitalAgencyId,
postName: "DOCTOR",
}).then((res) => {
this.attendingPhysicianlist = res.data;
});
},
/** 删除按钮操作 */
handleDelete(row) {
var obj = {
sn: this.$route.query.sn,
patientName: row.patientName,
patientPhone: row.patientPhone
}
this.$modal.confirm('是否确认删除?').then(function () {
return updatePatientInfoImport(obj);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => { });
},
/** 详情操作 */
handleAuthRole(row) {
this.$router.push({
path: "/patient/patientdetails",
query: {
path: "/patient/patientInfo",
patientId: row.id,
patientName: row.patientName,
patientPhone: row.patientPhone,
familyMemberPhone: row.familyMemberPhone,
cardNo: row.cardNo,
address: row.address,
mainDiagnosis: row.mainDiagnosis,
hospitalAgencyName: row.hospitalAgencyName,
campusAgencyName: row.campusAgencyName,
departmentName: row.departmentName,
wardName: row.wardName,
certificateIssuingDoctorName: row.certificateIssuingDoctorName,
appointmentTreatmentGroup: row.appointmentTreatmentGroup,
responsibleNurse: row.responsibleNurse,
registrationNo: row.registrationNo,
registrationDate: row.registrationDate,
appointmentDate: row.appointmentDate,
sex: row.sex,
birthDate: row.birthDate,
patientSource: row.patientSource,
createTime: row.createTime,
age: row.age,
},
});
},
handOutbound(row) {
this.$router.push({
path: "/patient/ManuallyCreatingTasks",
query: {
path: "/patient/ImportDetails",
signPatientRecordId: row.signPatientRecordId ? row.signPatientRecordId : '',
patientId: row.id ? row.id : '',
patientName: row.patientName ? row.patientName : '',
departmentId: row.departmentId ? row.departmentId : '',
departmentName: row.departmentName ? row.departmentName : '',
},
});
},
//
handleedit(row) {
this.$router.push({
path: "/patient/Portraitedit",
query: {
path: "/patient/patientInfo",
patientId: row.id,
cardNo: row.cardNo,
patientName: row.patientName,
patientPhone: row.patientPhone,
sex: row.sex,
birthDate: row.birthDate,
familyMemberPhone: row.familyMemberPhone,
address: row.address,
patientSource: row.patientSource,
createTime: row.createTime,
hospitalAgencyName: row.hospitalAgencyName,
mainDiagnosis: row.mainDiagnosis,
age: row.age,
},
});
},
/** 查询患者信息列表 */
getList() {
this.loading = true;
const loading = this.$loading({
lock: true,
text: "数据加载中",
spinner: "el-icon-loading",
background: "rgba(0, 0, 0, 0.7)",
});
getPatientList(this.queryParams).then((response) => {
response.rows.forEach((e) => {
e.birthDate ? (e.age = getAge(e.birthDate)) : e.age;
});
response.rows.forEach((e) => {
e.Timeimport = this.$route.query.Timeimport
});
this.patientInfoList = response.rows;
this.total = response.total;
loading.close();
this.loading = false;
});
},
handleRules() {
this.getList()
},
/** 搜索按钮操作 */
handleQuery() {
if (this.visitDate?.length > 0) {
this.queryParams.visitDateStart = this.visitDate[0];
this.queryParams.visitDateEnd = this.visitDate[1];
} else {
this.queryParams.visitDateStart = null;
this.queryParams.visitDateEnd = null;
}
if (this.admissionTime?.length > 0) {
this.queryParams.admissionTimeStart = this.admissionTime[0];
this.queryParams.admissionTimeEnd = this.admissionTime[1];
} else {
this.queryParams.admissionTimeStart = null;
this.queryParams.admissionTimeEnd = null;
}
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.queryParams = {
pageNum: 1,
pageSize: 10,
};
// if (this.type == "card") {
// this.queryParams = {
// pageNum: 1,
// pageSize: 100,
// };
// } else {
// this.queryParams = {
// pageNum: 1,
// pageSize: 10,
// };
// }
this.admissionTime = [];
this.queryParams.admissionTimeStart = null;
this.queryParams.admissionTimeEnd = null;
this.visitDate = [];
this.queryParams.visitDateStart = null;
this.queryParams.visitDateEnd = null;
this.handleQuery();
},
selectAgencyinfo() {
let query = {
agencyStatus: "ON",
nodeType: "HOSPITAL",
};
selectAgencyList(query).then((res) => {
this.hospitalAgencylist = res.data;
});
},
//
getAgencyListinfo(nodeType, id) {
let query = {
nodeType: nodeType,
};
if (nodeType == "HOSPITAL") {
query.hospitalId = id;
} else if (nodeType == "CAMPUS") {
query.campusId = id;
} else if (nodeType == "DEPARTMENT") {
query.departmentId = id;
}
getAgencyList(query).then((res) => {
if (nodeType == "HOSPITAL") {
this.campusAgencylist = res.data.campusList;
this.departmentlist = res.data.departmentList;
} else if (nodeType == "CAMPUS") {
this.departmentlist = res.data.departmentList;
}
this.wardlist = res.data.wardList;
});
},
//
changehospitalAgency(id) {
this.getAgencyListinfo("HOSPITAL", id);
// let query = {
// agencyStatus: 'ON',
// nodeType: 'CAMPUS',
// parentId: id,
// }
// selectAgencyList(query).then(res => {
// this.campusAgencylist = res.data
this.queryParams.campusAgencyId = null;
this.queryParams.departmentId = null;
this.queryParams.wardId = null;
this.queryParams.attendingPhysicianId = null;
// })
//
this.usergetListinfo();
},
//
changecampusAgency(id) {
this.getAgencyListinfo("CAMPUS", id);
// let query = {
// nodeType: 'DEPARTMENT',
// hospitalAgencyId: id,
// }
// getDepartmentList(query).then(res => {
// this.departmentlist = res.data
this.queryParams.departmentId = null;
this.queryParams.wardId = null;
// })
},
//
changedepartment(id) {
this.getAgencyListinfo("DEPARTMENT", id);
// let query = {
// nodeType: 'WARD',
// parentDepartmentId: id,
// }
// getDepartmentList(query).then(res => {
// this.wardlist = res.data
this.queryParams.wardId = null;
// })
},
//
clearhospitalAgency() {
this.queryParams.campusAgencyId = null;
this.queryParams.departmentId = null;
this.queryParams.wardId = null;
this.queryParams.attendingPhysicianId = null;
setTimeout(() => {
this.attendingPhysicianlist = [];
}, 1000);
},
//
clearcampusAgency() {
this.queryParams.departmentId = null;
this.queryParams.wardId = null;
this.getAgencyListinfo("HOSPITAL", this.queryParams.hospitalAgencyId);
},
//
cleardepartment() {
this.queryParams.wardId = null;
if (this.queryParams.departmentId) {
this.getAgencyListinfo("DEPARTMENT", this.queryParams.departmentId);
} else if (this.queryParams.campusAgencyId) {
this.getAgencyListinfo("CAMPUS", this.queryParams.campusAgencyId);
} else if (this.queryParams.hospitalAgencyId) {
this.getAgencyListinfo("HOSPITAL", this.queryParams.hospitalAgencyId);
}
},
//
getMaxTableHeight() {
const windowInnerHeight = window.innerHeight; //
const layoutDiv = this.$refs.layout;
const formDiv = this.$refs.topform;
const mb8Div = this.$refs.mb8;
this.maxTableHeight = windowInnerHeight - 134 - this.getBoxPadding(layoutDiv) - this.getBoxHeight(mb8Div) - this.getBoxHeight(formDiv);
},
// resize
screenChange() {
// resizeresize
window.addEventListener("resize", this.getMaxTableHeight, true);
//
//
// beforeDestroy
this.$once("hook:beforeDestroy", () => {
window.removeEventListener("resize", this.getMaxTableHeight, true);
});
},
},
};
</script>
<style lang="scss" scoped>
.cardlist {
display: flex;
flex-wrap: wrap;
align-content: flex-start;
overflow-y: auto;
}
.carditem {
margin-right: 10px;
margin-bottom: 10px;
width: 260px;
min-height: 200px;
border: 1px solid #dcdfe6;
border-radius: 10px;
}
::v-deep .el-table__body-wrapper {
overflow: auto;
}
::v-deep .el-form {
width: 100%;
}
.form {
display: flex;
width: 100%;
}
// ::v-deep .el-table {
// overflow: hidden;
// }</style>

View File

@ -1,557 +0,0 @@
<template>
<div class="app-container" ref="layout">
<div ref="topform" class="form">
<SearchFilter :labelWidths="280" labelWidth="90px" size="small" @search="handleQuery" @reset="resetQuery"
@minShowCtrol="getMaxTableHeight" @handleRules="handleRules">
<el-form-item label="患者姓名" prop="patientName">
<el-input v-model="queryParams.patientName" placeholder="请输入患者姓名" clearable @keyup.enter.native="handleQuery"
style="width: 200px" />
</el-form-item>
<el-form-item label="患者电话" prop="patientPhone">
<el-input v-model="queryParams.patientPhone" placeholder="请输入患者电话" clearable @keyup.enter.native="handleQuery"
style="width: 200px" />
</el-form-item>
<el-form-item label="身份证号" prop="cardNo">
<el-input v-model="queryParams.cardNo" placeholder="请输入患者身份证号" clearable @keyup.enter.native="handleQuery"
style="width: 200px" />
</el-form-item>
<el-form-item label="诊断" prop="mainDiagnosis">
<el-input v-model="queryParams.mainDiagnosis" placeholder="请输入诊断" clearable style="width: 200px"
@keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="患者来源" prop="patientSource">
<el-select v-model="queryParams.patientSource" placeholder="请选择患者来源" clearable style="width: 200px">
<el-option v-for="dict in dict.type.patient_source" :key="dict.value" :label="dict.label"
:value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="就诊方式" prop="visitMethod">
<el-select v-model="queryParams.visitMethod" placeholder="请选择就诊方式" clearable style="width: 200px">
<el-option v-for="dict in dict.type.visit_method" :key="dict.value" :label="dict.label"
:value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="就诊时间" prop="visitDateStart">
<el-date-picker v-model="visitDate" type="daterange" range-separator="" start-placeholder="开始日期"
style="width: 200px" value-format="yyyy-MM-dd" end-placeholder="结束日期">
</el-date-picker>
</el-form-item>
<el-form-item label="医院" prop="hospitalAgencyId">
<el-select v-model="queryParams.hospitalAgencyId" filterable placeholder="请选择医院" style="width: 200px"
clearable @clear="clearhospitalAgency" @change="changehospitalAgency">
<el-option v-for="item in hospitalAgencylist" :key="item.id" :label="item.agencyName" :value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="院区" prop="campusAgencyId">
<el-select v-model="queryParams.campusAgencyId" filterable placeholder="请选择院区" style="width: 200px" clearable
@clear="clearcampusAgency" @change="changecampusAgency">
<el-option v-for="item in campusAgencylist" :key="item.id" :label="item.agencyName" :value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="科室" prop="departmentId">
<el-select v-model="queryParams.departmentId" filterable placeholder="请选择科室" style="width: 200px" clearable
@clear="cleardepartment" @change="changedepartment">
<el-option v-for="item in departmentlist" :key="item.id" :label="item.departmentName" :value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="病区" prop="wardId">
<el-select v-model="queryParams.wardId" filterable placeholder="请选择病区" style="width: 200px" clearable>
<el-option v-for="item in wardlist" :key="item.id" :label="item.departmentName" :value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="主治医生" prop="attendingPhysicianId">
<el-select v-model="queryParams.attendingPhysicianId" style="width: 200px" filterable placeholder="请选择主治医生"
clearable>
<el-option v-for="item in attendingPhysicianlist" :key="item.userId" :label="item.nickName"
:value="item.userId">
</el-option>
</el-select>
</el-form-item>
<!-- <el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item> -->
</SearchFilter>
</div>
<div ref="table">
<el-table :max-height="maxTableHeight" v-loading="loading" :data="patientInfoList">
<el-table-column label="序号" type="index" width="48" align="center" />
<el-table-column label="患者姓名" align="center" prop="patientName" />
<el-table-column label="患者电话" align="center" prop="patientPhone" width="120" />
<el-table-column label="性别" align="center" prop="sex">
<template slot-scope="scope">
{{ scope.row.sex == "MALE" ? "男" : "" }}
{{ scope.row.sex == "FEMALE" ? "女" : "" }}
</template>
</el-table-column>
<el-table-column label="年龄" align="center" prop="age" />
<el-table-column label="出生日期" align="center" prop="birthDate" width="130" />
<!-- <el-table-column label="签约状态" align="center" prop="signStatus">
<template slot-scope="scope">
<dict-tag :options="dict.type.sign_status" :value="scope.row.signStatus" />
</template>
</el-table-column>
<el-table-column label="签约时间" align="center" prop="signTime" width='130'>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.signTime, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column> -->
<!-- <el-table-column label="开证医生" align="center" prop="certificateIssuingDoctor" /> -->
<el-table-column label="就诊时间" align="center" prop="visitDate" width="130">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.visitDate, "{y}-{m}-{d}") }}</span>
</template>
</el-table-column>
<el-table-column label="诊断" align="center" prop="mainDiagnosis" />
<!-- <el-table-column label="入院时间" align="center" prop="admissionTime" width='130' /> -->
<el-table-column label="医院" align="center" prop="hospitalAgencyName" width="130" />
<el-table-column label="院区" align="center" prop="campusAgencyName" width="130" />
<el-table-column label="科室名称" align="center" prop="departmentName" width="130" />
<el-table-column label="病区名称" align="center" prop="wardName" width="130" />
<el-table-column label="住院/门诊号" align="center" prop="inHospitalNumber" width="130" />
<el-table-column label="主治医生" align="center" prop="attendingPhysicianName" />
<el-table-column label="就诊方式" align="center" prop="visitMethod">
<template slot-scope="scope">
<dict-tag :options="dict.type.visit_method" :value="scope.row.visitMethod" />
</template>
</el-table-column>
<!-- <el-table-column label="出院方式" align="center" prop="dischargeMethod" /> -->
<el-table-column label="患者来源" align="center" prop="patientSource">
<template slot-scope="scope">
<dict-tag :options="dict.type.patient_source" :value="scope.row.patientSource" />
</template>
</el-table-column>
<el-table-column label="住址" align="center" prop="address" />
<!-- class-name="small-padding fixed-width" fixed="right" -->
<el-table-column label="操作" align="center" fixed="right" width="110">
<template slot-scope="scope">
<!-- <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
v-hasPermi="['manage:patientInfo:edit']">修改</el-button>
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
v-hasPermi="['manage:patientInfo:remove']">删除</el-button> -->
<el-button size="mini" type="text" @click="handOutbound(scope.row)">外呼</el-button>
<el-button size="mini" type="text" @click="handleAuthRole(scope.row)">详情</el-button>
<!-- <el-button size="mini" type="text" @click="handleedit(scope.row)">画像编辑</el-button> -->
</template>
</el-table-column>
</el-table>
</div>
<myPagination v-show="total > 0" :total="total" :pageSize="queryParams.pageSize"
:indexFromWrap="queryParams.pageNum" :indexFrom="queryParams.pageSize" @updateCPage="updateCPage"></myPagination>
</div>
</template>
<script>
import { getPatientList } from "@/api/manage/patientInfo";
import { getAge } from "@/utils/age";
import {
selectAgencyList,
getDepartmentList,
getAgencyList,
} from "@/api/manage/selectAgencyList";
import { usergetList } from "@/api/unitconfig/patientConfiguration";
import SearchFilter from "../../components/SearchForm.vue";
import cardlist from "../components/cardlist.vue";
export default {
name: "Patientmanagement",
dicts: ["patient_type", "visit_method", "sign_status", "patient_source"],
components: { SearchFilter, cardlist },
data() {
return {
searchData: {},
maxTableHeight: undefined,
attendingPhysicianlist: [],
//
loading: true,
//
total: 0,
//
patientInfoList: [],
//
queryParams: {
pageNum: 1,
pageSize: 100,
patientName: null,
patientPhone: null,
birthDate: null,
patientType: null,
visitMethod: null,
mainDiagnosis: null,
attendingPhysicianId: null,
hospitalAgencyId: null,
hospitalAgencyName: null,
campusAgencyId: null,
campusAgencyName: null,
departmentId: null,
departmentName: null,
wardId: null,
wardName: null,
surgicalName: null,
admissionTimeStart: null,
admissionTimeEnd: null,
outpatientNumber: null,
visitDateStart: null,
visitDateEnd: null,
dischargeMethod: null,
patientSource: null,
},
visitDate: [],
admissionTime: [],
//list
hospitalAgencylist: [],
// list
campusAgencylist: [],
//list
departmentlist: [],
//list
wardlist: [],
};
},
watch: {
type: {
handler(val) {
// if (val == "table") {
// this.queryParams.pageSize = 10;
// } else if (val == "card") {
// this.queryParams.pageSize = 100;
// }
},
deep: true,
immediate: true,
},
},
created() {
this.getList();
this.selectAgencyinfo();
},
mounted() {
this.getMaxTableHeight();
this.screenChange();
},
methods: {
updateCPage(index, size) {
this.queryParams.pageNum = index;
this.queryParams.pageSize = size;
this.getList();
},
//
usergetListinfo() {
usergetList({
hospitalAgencyId: this.queryParams.hospitalAgencyId,
postName: "DOCTOR",
}).then((res) => {
this.attendingPhysicianlist = res.data;
});
},
/** 详情操作 */
handleAuthRole(row) {
this.$router.push({
path: "/patient/patientdetails",
query: {
path: "/patient/patientInfo",
patientId: row.id,
patientName: row.patientName,
patientPhone: row.patientPhone,
familyMemberPhone: row.familyMemberPhone,
cardNo: row.cardNo,
address: row.address,
mainDiagnosis: row.mainDiagnosis,
hospitalAgencyName: row.hospitalAgencyName,
campusAgencyName: row.campusAgencyName,
departmentName: row.departmentName,
wardName: row.wardName,
certificateIssuingDoctorName: row.certificateIssuingDoctorName,
appointmentTreatmentGroup: row.appointmentTreatmentGroup,
responsibleNurse: row.responsibleNurse,
registrationNo: row.registrationNo,
registrationDate: row.registrationDate,
appointmentDate: row.appointmentDate,
sex: row.sex,
birthDate: row.birthDate,
patientSource: row.patientSource,
createTime: row.createTime,
age: row.age,
},
});
},
handOutbound(row) {
console.log(row)
this.$router.push({
path: "/patient/ManuallyCreatingTasks",
query: {
path: "/task/Patientmanagement",
signPatientRecordId: row.signPatientRecordId ? row.signPatientRecordId : '',
patientId: row.id ? row.id : '',
patientName: row.patientName ? row.patientName : '',
departmentId: row.departmentId ? row.departmentId : '',
departmentName: row.departmentName ? row.departmentName : '',
},
});
},
//
handleedit(row) {
this.$router.push({
path: "/patient/Portraitedit",
query: {
path: "/patient/patientInfo",
patientId: row.id,
cardNo: row.cardNo,
patientName: row.patientName,
patientPhone: row.patientPhone,
sex: row.sex,
birthDate: row.birthDate,
familyMemberPhone: row.familyMemberPhone,
address: row.address,
patientSource: row.patientSource,
createTime: row.createTime,
hospitalAgencyName: row.hospitalAgencyName,
mainDiagnosis: row.mainDiagnosis,
age: row.age,
},
});
},
/** 查询患者信息列表 */
getList() {
this.loading = true;
const loading = this.$loading({
lock: true,
text: "数据加载中",
spinner: "el-icon-loading",
background: "rgba(0, 0, 0, 0.7)",
});
getPatientList(this.queryParams).then((response) => {
response.rows.forEach((e) => {
e.birthDate ? (e.age = getAge(e.birthDate)) : e.age;
});
this.patientInfoList = response.rows;
console.log(this.patientInfoList, 'this.patientInfoList')
this.total = response.total;
loading.close();
this.loading = false;
});
},
handleRules() {
console.log('this.patientInfoList')
this.getList()
},
/** 搜索按钮操作 */
handleQuery() {
if (this.visitDate?.length > 0) {
this.queryParams.visitDateStart = this.visitDate[0];
this.queryParams.visitDateEnd = this.visitDate[1];
} else {
this.queryParams.visitDateStart = null;
this.queryParams.visitDateEnd = null;
}
if (this.admissionTime?.length > 0) {
this.queryParams.admissionTimeStart = this.admissionTime[0];
this.queryParams.admissionTimeEnd = this.admissionTime[1];
} else {
this.queryParams.admissionTimeStart = null;
this.queryParams.admissionTimeEnd = null;
}
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.queryParams = {
pageNum: 1,
pageSize: 10,
};
// if (this.type == "card") {
// this.queryParams = {
// pageNum: 1,
// pageSize: 100,
// };
// } else {
// this.queryParams = {
// pageNum: 1,
// pageSize: 10,
// };
// }
this.admissionTime = [];
this.queryParams.admissionTimeStart = null;
this.queryParams.admissionTimeEnd = null;
this.visitDate = [];
this.queryParams.visitDateStart = null;
this.queryParams.visitDateEnd = null;
this.handleQuery();
},
selectAgencyinfo() {
let query = {
agencyStatus: "ON",
nodeType: "HOSPITAL",
};
selectAgencyList(query).then((res) => {
this.hospitalAgencylist = res.data;
});
},
//
getAgencyListinfo(nodeType, id) {
let query = {
nodeType: nodeType,
};
if (nodeType == "HOSPITAL") {
query.hospitalId = id;
} else if (nodeType == "CAMPUS") {
query.campusId = id;
} else if (nodeType == "DEPARTMENT") {
query.departmentId = id;
}
getAgencyList(query).then((res) => {
if (nodeType == "HOSPITAL") {
this.campusAgencylist = res.data.campusList;
this.departmentlist = res.data.departmentList;
} else if (nodeType == "CAMPUS") {
this.departmentlist = res.data.departmentList;
}
this.wardlist = res.data.wardList;
});
},
//
changehospitalAgency(id) {
this.getAgencyListinfo("HOSPITAL", id);
// let query = {
// agencyStatus: 'ON',
// nodeType: 'CAMPUS',
// parentId: id,
// }
// selectAgencyList(query).then(res => {
// this.campusAgencylist = res.data
this.queryParams.campusAgencyId = null;
this.queryParams.departmentId = null;
this.queryParams.wardId = null;
this.queryParams.attendingPhysicianId = null;
// })
//
this.usergetListinfo();
},
//
changecampusAgency(id) {
this.getAgencyListinfo("CAMPUS", id);
// let query = {
// nodeType: 'DEPARTMENT',
// hospitalAgencyId: id,
// }
// getDepartmentList(query).then(res => {
// this.departmentlist = res.data
this.queryParams.departmentId = null;
this.queryParams.wardId = null;
// })
},
//
changedepartment(id) {
this.getAgencyListinfo("DEPARTMENT", id);
// let query = {
// nodeType: 'WARD',
// parentDepartmentId: id,
// }
// getDepartmentList(query).then(res => {
// this.wardlist = res.data
this.queryParams.wardId = null;
// })
},
//
clearhospitalAgency() {
this.queryParams.campusAgencyId = null;
this.queryParams.departmentId = null;
this.queryParams.wardId = null;
this.queryParams.attendingPhysicianId = null;
setTimeout(() => {
this.attendingPhysicianlist = [];
}, 1000);
},
//
clearcampusAgency() {
this.queryParams.departmentId = null;
this.queryParams.wardId = null;
this.getAgencyListinfo("HOSPITAL", this.queryParams.hospitalAgencyId);
},
//
cleardepartment() {
this.queryParams.wardId = null;
if (this.queryParams.departmentId) {
this.getAgencyListinfo("DEPARTMENT", this.queryParams.departmentId);
} else if (this.queryParams.campusAgencyId) {
this.getAgencyListinfo("CAMPUS", this.queryParams.campusAgencyId);
} else if (this.queryParams.hospitalAgencyId) {
this.getAgencyListinfo("HOSPITAL", this.queryParams.hospitalAgencyId);
}
},
//
getMaxTableHeight() {
const windowInnerHeight = window.innerHeight; //
const layoutDiv = this.$refs.layout;
const formDiv = this.$refs.topform;
const mb8Div = this.$refs.mb8;
this.maxTableHeight =
windowInnerHeight -
134 -
this.getBoxPadding(layoutDiv) -
this.getBoxHeight(mb8Div) -
this.getBoxHeight(formDiv);
},
// resize
screenChange() {
// resizeresize
window.addEventListener("resize", this.getMaxTableHeight, true);
//
//
// beforeDestroy
this.$once("hook:beforeDestroy", () => {
window.removeEventListener("resize", this.getMaxTableHeight, true);
});
},
},
};
</script>
<style lang="scss" scoped>
.cardlist {
display: flex;
flex-wrap: wrap;
align-content: flex-start;
overflow-y: auto;
}
.carditem {
margin-right: 10px;
margin-bottom: 10px;
width: 260px;
min-height: 200px;
border: 1px solid #dcdfe6;
border-radius: 10px;
}
::v-deep .el-table__body-wrapper {
overflow: auto;
}
::v-deep .el-form {
width: 100%;
}
.form {
display: flex;
width: 100%;
}
// ::v-deep .el-table {
// overflow: hidden;
// }</style>

File diff suppressed because it is too large Load Diff

View File

@ -1,8 +1,8 @@
<template>
<div class="app-container" ref="layout">
<div ref="topform" class="form">
<SearchFilter labelWidth="90px" :labelWidths="310" size="small" @search="handleQuery" @reset="resetQuery"
@minShowCtrol="getMaxTableHeight">
<SearchFilter labelWidth="90px" :labelWidths="310" size="small" @search="handleQuery"
@reset="resetQuery" @minShowCtrol="getMaxTableHeight">
<el-form-item label="姓名" prop="patientName">
<el-input style="width: 220px" v-model="queryParams.patientName" placeholder="请输入患者姓名" clearable
@keyup.enter.native="handleQuery" />
@ -12,7 +12,7 @@
@keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="异常原因" prop="abnormalCauseValue">
<el-select v-model="queryParams.abnormalCauseValue" filterable placeholder="请输入异常原因" style="width:220px"
<el-select v-model="queryParams.abnormalCauseValue" filterable placeholder="请输入异常原因" style="width:220px"
clearable>
<el-option v-for="item in abnormalCauselist" :key="item.id" :label="item.abnormalCauseValue"
:value="item.id">

View File

@ -1,7 +1,7 @@
<template>
<div class="headernewhandel">
<!-- 左侧 -->
<div :class="isshow ? 'left' : 'noleft'">
<div :class="isshow ? 'left' : 'noleft'">
<el-tabs v-model="activeName" @tab-click="handleClick" v-if="isshow">
<el-tab-pane
label="任务详情"
@ -9,7 +9,11 @@
v-if="$route.query.taskNodeType == 'PHONE_OUTBOUND'"
>
<div class="nexttime">
<el-form ref="formlist" :model="formlist" label-width="110px">
<el-form
ref="formlist"
:model="formlist"
label-width="110px"
>
<el-form-item label="电话" prop="patientPhone">
<el-input
disabled
@ -64,14 +68,14 @@
<el-form-item label="第二次拨打时间" prop="secondTime ">
<el-input
disabled
v-model="formlist.secondTime"
v-model="formlist.secondTime "
placeholder="请输入第二次拨打时间"
/>
</el-form-item>
<el-form-item label="第三次拨打时间" prop="thirdTime ">
<el-input
disabled
v-model="formlist.thirdTime"
v-model="formlist.thirdTime "
placeholder="请输入第三次拨打时间"
/>
</el-form-item>
@ -87,6 +91,7 @@
placeholder=""
/>
</el-form-item>
</el-form>
</div>
</el-tab-pane>
@ -148,10 +153,6 @@
<span v-if="item.questionType == 'FILL_IN_THE_BLANKS'"
>填空题</span
>
<span v-if="item.questionType == 'FEEDBACK_BLANKS_SUBJECT'"
>反馈填空题</span
>
<span v-if="item.questionType == 'COMBINATION_SCORING_SUBJECT'"
>组合打分题</span
>
@ -202,8 +203,7 @@
<div
v-if="
item.questionType == 'FILL_IN_THE_BLANKS' ||
item.questionType == 'COMBINATION_BLANKS_SUBJECT' ||
item.questionType == 'FEEDBACK_BLANKS_SUBJECT'
item.questionType == 'COMBINATION_BLANKS_SUBJECT'
"
class="tk"
>
@ -569,13 +569,9 @@ export default {
e.questionType == "COMBINATION_MULTIPLE_SUBJECT" ||
e.questionType == "COMBINATION_SCORING_SUBJECT"
) {
if (e.whetherScore == true) {
e.whetherScore = 1;
} else if (e.whetherScore == false) {
e.whetherScore = 0;
}
e.whetherScore = "1";
} else {
e.whetherScore = 0;
e.whetherScore = "0";
}
e.questionSubjectOptionList.forEach((el) => {
el.questionNumber = e.questionNumber;
@ -593,13 +589,13 @@ export default {
/** 提交按钮 */
submit() {
// return
if (this.$route.query.taskNodeType == "QUESTIONNAIRE_SCALE") {
// .=.
this.$delete(this.questiondata, "updateBy");
this.$delete(this.questiondata, "updateTime");
var score = 0;
//
var lengthScore = this.questiondata.questionSubjectList.filter(f => f.whetherScore == 0)
this.questiondata.questionSubjectList.forEach((e) => {
if (e.questionSubjectOptionList?.length > 0) {
e.questionSubjectOptionList.forEach((el) => {
@ -611,17 +607,12 @@ export default {
e.questionType == "COMBINATION_MULTIPLE_SUBJECT" ||
e.questionType == "COMBINATION_SCORING_SUBJECT"
) {
if (el.optionChooseSign == "0" && e.whetherScore == 1) {
if (el.optionChooseSign == "0") {
score += el.optionScore;
}
}
});
if (lengthScore.length == this.questiondata.questionSubjectList.length) {
this.questiondata.totalScore = '';
} else {
this.questiondata.totalScore = score;
}
this.questiondata.totalScore = score;
}
});
this.questiondata.subjectResultDTOList =
@ -658,7 +649,6 @@ export default {
// this.$delete(this.obj, 'totalScore',)
}
//
// return
if (this.$route.query.taskNodeType == "QUESTIONNAIRE_SCALE") {
this.$refs["questiondata"].validate((valid) => {
if (valid) {
@ -672,17 +662,9 @@ export default {
this.$store
.dispatch("tagsView/delView", this.$route)
.then(({ visitedViews }) => {
if (this.$route.query.path == "/task/taskmanagement") {
this.$router.push({
path: "/task/taskmanagement",
});
} else {
this.$router.push({
path: "/task/followup",
});
}
this.$router.push({
path: "/task/followup",
});
});
})
.catch(() => {
@ -724,16 +706,9 @@ export default {
this.$store
.dispatch("tagsView/delView", this.$route)
.then(({ visitedViews }) => {
if (this.$route.query.path == "/task/taskmanagement") {
this.$router.push({
path: "/task/taskmanagement",
});
} else {
this.$router.push({
path: "/task/followup",
});
}
this.$router.push({
path: "/task/followup",
});
});
})
.catch(() => {
@ -842,16 +817,17 @@ export default {
height: calc(100vh - 84px);
// background-color: #f1f3f5;
display: flex;
::v-deep .el-tabs__item {
::v-deep .el-tabs__item{
padding: 0 13px;
}
.nexttime {
.nexttime{
height: calc(100vh - 300px);
overflow-y: auto;
overflow-x: hidden;
// background: aliceblue;
/* height: 30vh; */
margin-top: 25px;
}
::v-deep .el-tabs__header {
@ -866,7 +842,7 @@ export default {
margin-top: 20px;
width: 27%;
// background: red;
::v-deep .el-form {
::v-deep .el-form{
padding-right: 9px;
// margin-left: -14px;
}
@ -947,10 +923,11 @@ export default {
.right_top {
// width: 39%;
width: 350px;
::v-deep .el-textarea__inner {
::v-deep .el-textarea__inner{
width: 338px;
height: 250px;
margin-top: 10px;
height: 250px;
margin-top: 10px;
}
}
}

View File

@ -1,448 +0,0 @@
<template>
<div class="app-containers">
<el-button
size="small"
@click="classificationOpen = true"
style="
width: 220px;
font-size: 14px;
text-align: left;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
"
:style="handleselectId ? 'color:black' : 'color:#C0C4CC'"
>{{ questionnaireName ? questionnaireName : "请选择模板名称" }}</el-button
>
<el-dialog
title="模版名称选择"
:visible.sync="classificationOpen"
width="70%"
:before-close="classificationOpenfalse"
>
<el-row :gutter="20">
<!--用户数据-->
<el-col :span="24" :xs="24">
<el-form
:model="queryParams"
ref="queryForm"
size="small"
:inline="true"
v-show="showSearch"
label-width="100px"
>
<el-form-item label="问卷标题" prop="questionnaireName">
<el-input
v-model="queryParams.questionnaireName"
placeholder="请输入问卷标题"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="病种名称" prop="diseaseTypeName">
<el-input
v-model="queryParams.diseaseTypeName"
placeholder="请输入病种名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button
type="primary"
icon="el-icon-search"
size="mini"
@click="handleQuery"
>搜索</el-button
>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
>重置</el-button
>
</el-form-item>
</el-form>
<el-table
v-loading="loading"
:data="PatientInfoImportBatchlist"
@row-dblclick="handleselect"
>
<el-table-column
label="序号"
type="index"
width="48"
align="center"
/>
<el-table-column
label="问卷标题"
align="center"
prop="questionnaireName"
/>
<el-table-column
label="问题个数"
align="center"
prop="questionCount"
/>
<el-table-column
label="问卷模板ID"
align="center"
prop="questionnaireId"
/>
<el-table-column
label="问卷类型"
align="center"
prop="questionType"
>
<template slot-scope="scope">
<div v-if="scope.row.questionType == 'REGULAR_QUESTIONNAIRE'">
普通问卷
</div>
<div
v-if="scope.row.questionType == 'SATISFACTION_QUESTIONNAIRE'"
>
满意度问卷
</div>
</template>
</el-table-column>
<el-table-column
label="问卷状态"
align="center"
prop="questionnaireStatus"
>
<template slot-scope="scope">
<el-tag
type="success"
v-if="scope.row.questionnaireStatus == 'PUBLISHED'"
>已发布</el-tag
>
<el-tag type="warning" v-else>未发布</el-tag>
</template>
</el-table-column>
<el-table-column
label="病种名称"
align="center"
prop="diseaseTypeName"
/>
<el-table-column
label="操作"
align="center"
class-name="small-padding fixed-width"
>
<template slot-scope="scope">
<el-button
size="mini"
type="text"
@click="handleselect(scope.row)"
v-if="handleselectId != scope.row.id"
>选择</el-button
>
<el-button
size="mini"
type="text"
@click="nohandleselect(scope.row)"
v-if="handleselectId == scope.row.id"
>取消选择</el-button
>
</template>
</el-table-column>
</el-table>
</el-col>
</el-row>
<pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getlist"
/>
</el-dialog>
</div>
</template>
<script>
import { list } from '@/api/system/TaskStatistics'
import { selectAgencyList, getAgencyList } from "@/api/manage/selectAgencyList";
export default {
props: ["templateId", 'query'],
name: "Script",
data() {
return {
createTime: "",
//list
hospitalAgencylist: [],
// list
campusAgencylist: [],
//
PatientInfoImportBatchlist: [],
lookshow: false,
phoneNodeContent: {
scriptInfoId: null,
flowScheme: null,
nodes: [],
edges: [],
},
handleselectId: "",
questionnaireName: '',
classificationOpen: false,
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
title: "",
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
questionnaireName: null,
diseaseTypeName:null,
},
};
},
created() {
this.getlist();
this.selectAgencyinfo();
},
mounted() {
this.handleselectId = this.templateId;
},
watch: {
query: {
handler(val) {
if (val > 1) {
this.questionnaireName = '';
this.handleselectId = '';
}
},
deep: true,
immediate: true,
},
templateId: {
handler(val) {
if (val) {
this.handleselectId = val;
} else {
this.questionnaireName = '';
this.handleselectId = '';
}
},
deep: true,
immediate: true,
},
},
methods: {
//list
selectAgencyinfo() {
let query = {
agencyStatus: 'ON',
nodeType: 'HOSPITAL',
}
selectAgencyList(query).then(res => {
this.hospitalAgencylist = res.data
})
},
//
getAgencyListinfo(nodeType, id, type) {
let query = {
nodeType: nodeType,
}
if (nodeType == 'HOSPITAL') {
query.hospitalId = id
} else if (nodeType == 'CAMPUS') {
query.campusId = id
}
getAgencyList(query).then(res => {
// if (type)
console.log(nodeType);
console.log(res.data.campusList);
{
if (nodeType == 'HOSPITAL') {
this.campusAgencylist = res.data.campusList;
}
}
})
},
//
changehospitalAgency(id, type, typetwo) {
this.getAgencyListinfo('HOSPITAL', id, type)
// let query = {
// agencyStatus: 'ON',
// nodeType: 'CAMPUS',
// parentId: id,
// }
// selectAgencyList(query).then(res => {
if (type) {
if (!typetwo) {
this.form.campusAgencyId = null
}
} else {
this.queryParams.campusAgencyId = null
}
// })
},
//
changecampusAgency(id, type, typetwo) {
this.getAgencyListinfo('CAMPUS', id, type)
},
//
clearhospitalAgency(type) {
if (type) {
this.form.campusAgencyId = null
this.form.departmentId = null
this.form.wardId = null
} else {
this.queryParams.campusAgencyId = null
this.queryParams.departmentId = null
this.queryParams.wardId = null
}
},
//
clearcampusAgency(type) {
if (type) {
this.form.departmentId = null
this.form.wardId = null
this.getAgencyListinfo('HOSPITAL', this.form.hospitalAgencyId, type)
} else {
this.queryParams.departmentId = null
this.queryParams.wardId = null
this.getAgencyListinfo('HOSPITAL', this.queryParams.hospitalAgencyId)
}
},
//
nohandleselect() {
this.handleselectId = "";
this.questionnaireName = "";
this.$emit("on-template", {
id: '',
});
},
//
handleselect(item) {
console.log(item, '0000000000');
this.handleselectId = item.id;
this.questionnaireName = item.questionnaireName
this.$emit("on-template", {
questionInfoId: item.id,
questionnaireName: item.questionnaireName,
createTime:item.createTime,
});
this.classificationOpen = false;
},
classificationOpenfalse() {
this.classificationOpen = false;
},
/** 查询话术信息列表 */
getlist() {
this.loading = true;
list(this.queryParams).then(response => {
this.PatientInfoImportBatchlist = response.rows;
this.total = response.total;
this.loading = false;
});
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
if (this.createTime?.length > 0) {
this.queryParams.importTimeStart = this.createTime[0];
this.queryParams.importTimeEnd = this.createTime[1];
} else {
this.queryParams.importTimeStart = null;
this.queryParams.importTimeEnd = null;
}
this.getlist();
},
/** 重置按钮操作 */
resetQuery() {
this.queryParams = {
pageNum: 1,
pageSize: 10
}
this.createTime = '';
this.handleQuery();
},
},
};
</script>
<style lang="scss" scoped>
::v-deep .el-input-number .el-input__inner {
text-align: left;
}
::v-deep .el-dialog__body {
padding-bottom: 60px;
}
.app-containers {
display: inline-block;
padding: 0 !important;
// background: red;
height: 42px;
}
::v-deep .el-textarea__inner {
width: 206px;
}
.leftscript {
// width: 30%;
height: 650px;
overflow: auto;
.name {
font-weight: 700;
margin-bottom: 10px;
}
.listitem {
width: 100%;
height: 50px;
border-bottom: 1px solid #dcdfe6;
position: relative;
.count {
display: inline-block;
position: absolute;
left: 210px;
color: #a4a6aa;
top: 10px;
font-size: 13px;
}
.all {
height: 50px;
line-height: 50px;
padding-left: 13px;
}
.allactive {
background: #e8f4ff;
height: 50px;
line-height: 50px;
padding-left: 13px;
border-left: 3px solid #4d9de7;
}
}
}
.button {
display: inline-block;
position: relative;
left: 20px;
top: -11px;
}
</style>

View File

@ -8,8 +8,6 @@
@click="handleAuth(item, index)" />
<img v-if="item.sex == 'MALE'" src="../../../assets/manage/touxiang.png" alt="" class="img"
@click="handleAuth(item, index)" />
<img v-if="!item.sex" src="../../../assets/manage/tx.png" alt="" class="img"
style="height: 46px;margin-top: 15px;" @click="handleAuth(item, index)" />
<el-tooltip class="name" effect="dark" :content="item.patientName" placement="top">
<span @click="handleAuth(item, index)">
{{ item.patientName }}
@ -18,7 +16,7 @@
<div class="agesex">
{{ item.sex == "MALE" ? "男" : "" }}
{{ item.sex == "FEMALE" ? "女" : "" }}
<span style="padding: 0 1px" v-if="item.sex">|</span>
<span style="padding: 0 1px">|</span>
<span v-if="item.age"> {{ item.age }} </span>
<span class="zy" v-if="item.patientType == 'IN_HOSPITAL_PATIENT'">在院</span>
<span class="cy" v-if="item.patientType == 'DISCHARGED_PATIENT'">出院</span>
@ -26,9 +24,7 @@
<span class="mz" v-if="item.patientType == 'OUTPATIENT'">门诊</span>
<!-- <span class="mz" v-if="item.patientType == 'CONTRACTED_PATIENT'">签约</span> -->
</div>
<el-tooltip class="diagnosis" effect="dark" :content="item.mainDiagnosis" placement="right">
<span>诊断名称{{ item.mainDiagnosis }}</span>
</el-tooltip>
<div class="diagnosis">诊断名称{{ item.mainDiagnosis }}</div>
<div class="diagnosi">诊断状态{{ item.patientSignStatus }}</div>
<div class="formitembutton" @click.stop="handleedit(item)">
画像编辑
@ -102,25 +98,25 @@ export default {
},
//
handleAuthRole(item, index) {
//
this.$router.push({
path: "/patient/patientdetails",
query: {
path: "/patient/patientInfo",
patientId: item.id,
cardNo: item.cardNo,
patientName: item.patientName,
patientPhone: item.patientPhone,
sex: item.sex,
birthDate: item.birthDate,
familyMemberPhone: item.familyMemberPhone,
address: item.address,
patientSource: item.patientSource,
createTime: item.createTime,
age: item.birthDate ? getAge(item.birthDate) : "",
},
});
//
this.$router.push({
path: "/patient/patientdetails",
query: {
path: "/patient/patientInfo",
patientId: item.id,
cardNo: item.cardNo,
patientName: item.patientName,
patientPhone: item.patientPhone,
sex: item.sex,
birthDate: item.birthDate,
familyMemberPhone: item.familyMemberPhone,
address: item.address,
patientSource: item.patientSource,
createTime: item.createTime,
age: item.birthDate ? getAge(item.birthDate) : "",
},
});
},
//
handleedit(item) {
@ -291,8 +287,9 @@ export default {
left: 70px;
top: 42px;
font-size: 12px;
height: 32px;
display: -webkit-box;
-webkit-line-clamp: 1;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
overflow: hidden;
padding-right: 4px;

View File

@ -1,461 +0,0 @@
<template>
<div class="app-containers">
<el-button size="small" @click="classificationOpen = true" style="
width: 220px;
font-size: 14px;
text-align: left;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
" :style="handleselectId ? 'color:black' : 'color:#C0C4CC'">
{{ handleselectId ? handleselectId : "请选择批次" }}
</el-button>
<el-dialog title="批次选择" :visible.sync="classificationOpen" width="70%" :before-close="classificationOpenfalse">
<el-row :gutter="20">
<!--用户数据-->
<el-col :span="24" :xs="24">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch"
label-width="110px">
<el-form-item label="导入日期" prop="">
<el-date-picker v-model="createTime" type="daterange" range-separator="" start-placeholder="开始日期"
style="width: 220px" value-format="yyyy-MM-dd" end-placeholder="结束日期">
</el-date-picker>
</el-form-item>
<el-form-item label="流水号" prop="sn">
<el-input v-model="queryParams.sn" placeholder="请输入流水号" clearable style="width: 200px" />
</el-form-item>
<el-form-item label="批次名称" prop="importName">
<el-input v-model="queryParams.importName" placeholder="请输入批次名称" clearable style="width: 200px" />
</el-form-item>
<el-form-item label="医院" prop="">
<el-select v-model="queryParams.hospitalAgencyId" filterable placeholder="请选择医院" style="width:220px"
clearable @clear="clearhospitalAgency" @change="changehospitalAgency">
<el-option v-for="item in hospitalAgencylist" :key="item.id" :label="item.agencyName" :value="item.id">
</el-option>
</el-select>
</el-form-item>
<!-- <el-form-item label="院区" prop="">
<el-select v-model="queryParams.campusAgencyId" filterable placeholder="请选择院区" style="width:220px"
clearable @clear="clearcampusAgency">
<el-option v-for="item in campusAgencylist" :key="item.id" :label="item.agencyName" :value="item.id">
</el-option>
</el-select>
</el-form-item> -->
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-table v-loading="loading" :data="PatientInfoImportBatchlist" @row-dblclick="handleselect">
<el-table-column label="序号" type="index" width="50" align="center" />
<el-table-column label="流水号" prop="sn" align="center">
<template slot-scope="scope">
<el-button size="mini" type="text" @click="handsn(scope.row)">
{{ scope.row.sn }}
</el-button>
</template>
</el-table-column>
<el-table-column label="批次名称" align="center" prop="importName" />
<el-table-column label="患者数" align="center" prop="patientCount" />
<!-- <el-table-column label="操作人" align="center" prop="createBy" /> -->
<el-table-column label="导入日期" align="center" prop="createTime">
<template slot-scope="scope">
<span>
{{ parseTime(scope.row.createTime, "{y}-{m}-{d}") }}
</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button size="mini" type="text" @click="handleselect(scope.row)"
v-if="handleselectId != scope.row.sn">选择</el-button>
<el-button size="mini" type="text" @click="nohandleselect(scope.row)"
v-if="handleselectId == scope.row.sn">取消选择</el-button>
<el-button size="mini" type="text" @click="handsn(scope.row)">明细</el-button>
</template>
</el-table-column>
</el-table>
</el-col>
</el-row>
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
@pagination="getlist" />
</el-dialog>
<el-dialog title="导入明细" :visible.sync="ImportDetailsopen" width="70%" :before-close="ImportDetailsopenfalse">
<!-- <el-form :model="ImportDetailqueryParams" size="small" :inline="true" label-width="100px" @submit.prevent>
<el-form-item label="姓名" prop="patientName">
<el-input v-model="ImportDetailqueryParams.patientName" placeholder="请输入姓名" clearable style="width: 200px" />
</el-form-item>
<el-form-item label="联系电话" prop="patientPhone">
<el-input v-model="ImportDetailqueryParams.patientPhone" placeholder="请输入联系电话" clearable
style="width: 200px" />
</el-form-item>
<el-form-item label="医院" prop="hospitalAgencyId">
<el-select v-model="ImportDetailqueryParams.hospitalAgencyId" filterable placeholder="请选择医院"
style="width: 200px" clearable @clear="clearhospitalAgency(1)" @change="changehospitalAgency($event, 1)">
<el-option v-for="item in hospitalAgencylist" :key="item.id" :label="item.agencyName" :value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="科室" prop="departmentId">
<el-select v-model="ImportDetailqueryParams.departmentId" filterable placeholder="请选择科室" style="width: 200px"
clearable>
<el-option v-for="item in departmentlist" :key="item.id" :label="item.departmentName" :value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="ImportDetailhandleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="ImportDetailresetQuery">重置</el-button>
</el-form-item>
</el-form> -->
<el-table :data="patientInfoList">
<el-table-column label="序号" type="index" width="50" align="center" />
<el-table-column label="姓名" align="center" prop="patientName" />
<el-table-column label="联系电话" align="center" prop="patientPhone" />
<el-table-column label="年龄" align="center" prop="age" />
<el-table-column label="医院" align="center" prop="hospitalAgencyName" />
<el-table-column label="科室名称" align="center" prop="departmentName" />
<el-table-column label="诊断" align="center" prop="mainDiagnosis" />
</el-table>
<pagination v-show="ImportDetailtotal > 0" :total="ImportDetailtotal" :page.sync="ImportDetailqueryParams.pageNum"
:limit.sync="ImportDetailqueryParams.pageSize" @pagination="getsn" />
</el-dialog>
</div>
</template>
<script>
import { patientInfoImportBatchlist } from "@/api/manage/patientInfoImport";
import stationAcatar from "../../system/stationAvatar/index.vue";
import { selectAgencyList, getAgencyList } from "@/api/manage/selectAgencyList";
import { getPatientList } from "@/api/manage/patientInfo";
import { usergetList } from "@/api/unitconfig/patientConfiguration";
export default {
props: ["templateId"],
components: { stationAcatar },
name: "Script",
data() {
return {
createTime: "",
//list
hospitalAgencylist: [],
// list
campusAgencylist: [],
//
PatientInfoImportBatchlist: [],
lookshow: false,
phoneNodeContent: {
scriptInfoId: null,
flowScheme: null,
nodes: [],
edges: [],
},
handleselectId: "",
classificationOpen: false,
ImportDetailsopen: false,
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
title: "",
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
hospitalAgencyId: null,
importTimeStart: "",
importTimeEnd: "",
campusAgencyId: null,
importName: null,
sn: null,
},
patientInfoList: [],
departmentlist: [],
ImportDetailtotal: 0,
ImportDetailqueryParams: {
sn: null,
pageNum: 1,
pageSize: 10,
patientName: null,
patientPhone: null,
patientType: null,
visitMethod: null,
mainDiagnosis: null,
attendingPhysicianId: null,
hospitalAgencyId: null,
hospitalAgencyName: null,
campusAgencyId: null,
campusAgencyName: null,
departmentId: null,
departmentName: null,
wardId: null,
wardName: null,
surgicalName: null,
outpatientNumber: null,
dischargeMethod: null,
patientSource: null,
}
};
},
created() {
this.getlist();
this.selectAgencyinfo();
},
mounted() {
this.handleselectId = this.templateId;
},
watch: {
templateId(newValue, oldValue) {
this.handleselectId = newValue;
},
},
methods: {
/** 搜索按钮操作 */
ImportDetailhandleQuery() {
this.ImportDetailqueryParams.pageNum = 1;
this.getsn();
},
/** 重置按钮操作 */
ImportDetailresetQuery() {
this.ImportDetailqueryParams = {
pageNum: 1,
pageSize: 10,
sn: this.ImportDetailqueryParams.sn
};
this.getsn();
},
getsn() {
getPatientList(this.ImportDetailqueryParams).then((response) => {
this.patientInfoList = response.rows;
this.ImportDetailtotal = response.total;
});
},
// /
async handsn(row) {
this.ImportDetailqueryParams.sn = row.sn;
await this.getsn()
this.ImportDetailsopen = true
},
//list
selectAgencyinfo() {
let query = {
agencyStatus: 'ON',
nodeType: 'HOSPITAL',
}
selectAgencyList(query).then(res => {
this.hospitalAgencylist = res.data
})
},
//
getAgencyListinfo(nodeType, id, type) {
let query = {
nodeType: nodeType,
}
if (nodeType == 'HOSPITAL') {
query.hospitalId = id
} else if (nodeType == 'CAMPUS') {
query.campusId = id
}
getAgencyList(query).then(res => {
// if (type) {
if (nodeType == 'HOSPITAL') {
this.campusAgencylist = res.data.campusList;
}
// }
})
},
//
changehospitalAgency(id, type, typetwo) {
this.getAgencyListinfo('HOSPITAL', id, type)
// let query = {
// agencyStatus: 'ON',
// nodeType: 'CAMPUS',
// parentId: id,
// }
// selectAgencyList(query).then(res => {
if (type) {
if (!typetwo) {
this.queryParams.campusAgencyId = null
}
} else {
this.ImportDetailqueryParams.campusAgencyId = null
}
//
this.usergetListinfo();
// })
},
//
usergetListinfo() {
usergetList({
hospitalAgencyId: this.queryParams.hospitalAgencyId,
postName: "DOCTOR",
}).then((res) => {
this.attendingPhysicianlist = res.data;
});
},
//
changecampusAgency(id, type, typetwo) {
this.getAgencyListinfo('CAMPUS', id, type)
},
//
clearhospitalAgency(type) {
if (type) {
this.ImportDetailqueryParams.campusAgencyId = null
this.ImportDetailqueryParams.departmentId = null
this.ImportDetailqueryParams.wardId = null
} else {
this.queryParams.campusAgencyId = null
this.queryParams.departmentId = null
this.queryParams.wardId = null
}
},
//
clearcampusAgency(type) {
if (type) {
this.ImportDetailqueryParams.departmentId = null
this.ImportDetailqueryParams.wardId = null
this.getAgencyListinfo('HOSPITAL', this.ImportDetailqueryParams.hospitalAgencyId, type)
} else {
this.queryParams.departmentId = null
this.queryParams.wardId = null
this.getAgencyListinfo('HOSPITAL', this.queryParams.hospitalAgencyId)
}
},
//
nohandleselect() {
this.handleselectId = "";
this.$emit("on-template", {
sn: '',
});
},
//
handleselect(item) {
this.handleselectId = item.sn;
this.$emit("on-template", {
sn: item.sn,
});
this.classificationOpen = false;
},
classificationOpenfalse() {
this.classificationOpen = false;
},
ImportDetailsopenfalse() {
this.ImportDetailsopen = false;
},
/** 查询话术信息列表 */
getlist() {
this.loading = true;
patientInfoImportBatchlist(this.queryParams).then(response => {
this.PatientInfoImportBatchlist = response.rows;
this.total = response.total;
this.loading = false;
});
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
if (this.createTime?.length > 0) {
this.queryParams.importTimeStart = this.createTime[0];
this.queryParams.importTimeEnd = this.createTime[1];
} else {
this.queryParams.importTimeStart = null;
this.queryParams.importTimeEnd = null;
}
this.getlist();
},
/** 重置按钮操作 */
resetQuery() {
this.queryParams = {
pageNum: 1,
pageSize: 10,
importName: null,
hospitalAgencyId: null,
importTimeStart: "",
importTimeEnd: "",
campusAgencyId: null,
sn: null,
}
this.createTime = '';
this.handleQuery();
},
},
};
</script>
<style lang="scss" scoped>
::v-deep .el-input-number .el-input__inner {
text-align: left;
}
::v-deep .el-dialog__body {
padding-bottom: 60px;
}
.app-containers {
display: inline-block;
padding: 0 !important;
// background: red;
height: 42px;
}
::v-deep .el-textarea__inner {
width: 206px;
}
.leftscript {
// width: 30%;
height: 650px;
overflow: auto;
.name {
font-weight: 700;
margin-bottom: 10px;
}
.listitem {
width: 100%;
height: 50px;
border-bottom: 1px solid #dcdfe6;
position: relative;
.count {
display: inline-block;
position: absolute;
left: 210px;
color: #a4a6aa;
top: 10px;
font-size: 13px;
}
.all {
height: 50px;
line-height: 50px;
padding-left: 13px;
}
.allactive {
background: #e8f4ff;
height: 50px;
line-height: 50px;
padding-left: 13px;
border-left: 3px solid #4d9de7;
}
}
}
.button {
display: inline-block;
position: relative;
left: 20px;
top: -11px;
}
</style>

View File

@ -1,48 +1,18 @@
<template>
<div class="app-container" ref="layout">
<div ref="topform" class="form">
<el-form
:model="queryParams"
ref="queryForm"
size="small"
:inline="true"
v-show="showSearch"
label-width="68px"
>
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="人群名称" prop="crowdName">
<el-input
v-model="queryParams.crowdName"
placeholder="请输入人群名称"
clearable
@keyup.enter.native="handleQuery"
/>
<el-input v-model="queryParams.crowdName" placeholder="请输入人群名称" clearable @keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="人群类型" prop="crowdType">
<el-select
v-model="queryParams.crowdType"
placeholder="请选择人群类型"
clearable
>
<el-option
v-for="dict in dict.type.crowd_type"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
<el-select v-model="queryParams.crowdType" placeholder="请选择人群类型" clearable>
<el-option v-for="dict in dict.type.crowd_type" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="是否禁用" prop="whetherDisable">
<el-select
v-model="queryParams.whetherDisable"
clearable
placeholder="请选择"
>
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value"
>
<el-select v-model="queryParams.whetherDisable" clearable placeholder="请选择">
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
<!-- <el-input
@ -53,55 +23,24 @@
/> -->
</el-form-item>
<el-form-item>
<el-button
type="primary"
icon="el-icon-search"
size="mini"
@click="handleQuery"
>搜索</el-button
>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
>重置</el-button
>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
</div>
<div ref="mb8" class="mb8">
<el-row :gutter="10" class="">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['manage:crowdInfo:add']"
>新增</el-button
>
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
v-hasPermi="['manage:crowdInfo:add']">新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['manage:crowdInfo:edit']"
>修改</el-button
>
<el-button type="success" plain icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate"
v-hasPermi="['manage:crowdInfo:edit']">修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['manage:crowdInfo:remove']"
>删除</el-button
>
<el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete"
v-hasPermi="['manage:crowdInfo:remove']">删除</el-button>
</el-col>
<!-- <el-col :span="1.5">
<el-button
@ -114,31 +53,16 @@
>导出</el-button
>
</el-col> -->
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
</div>
<div ref="table">
<el-table
v-loading="loading"
:data="crowdInfoList"
@selection-change="handleSelectionChange"
>
<el-table v-loading="loading" :data="crowdInfoList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<!-- <el-table-column label="主键" align="center" prop="id" /> -->
<el-table-column label="人群名称" align="center" prop="crowdName" />
<el-table-column
label="最小适合年龄"
align="center"
prop="minSuitableAge"
/>
<el-table-column
label="最大适合年龄"
align="center"
prop="maxSuitableAge"
/>
<el-table-column label="最小适合年龄" align="center" prop="minSuitableAge" />
<el-table-column label="最大适合年龄" align="center" prop="maxSuitableAge" />
<el-table-column label="适合性别" align="center" prop="suitableGender">
<template slot-scope="scope">
{{ scope.row.suitableGender == "ALL" ? "全部" : "" }}
@ -149,15 +73,15 @@
</el-table-column>
<el-table-column label="人群类型" align="center" prop="crowdType">
<!-- <template slot-scope="scope">
<template slot-scope="scope">
{{ scope.row.crowdType == "DEFAULT" ? "默认" : "" }}
{{ scope.row.crowdType == "CHRONIC_DISEASE" ? "慢病" : "" }}
{{ scope.row.crowdType == "SPECIAL_POPULATIONS" ? "特殊人群" : "" }}
{{ scope.row.crowdType == "KEY_GROUPS" ? "重点人群" : "" }}
</template> -->
</template>
</el-table-column>
<el-table-column label="特殊人群" align="center" prop="specialType">
<!-- <template slot-scope="scope">
<template slot-scope="scope">
{{ scope.row.specialType == "1" ? "65岁及以上老年人" : "" }}
{{ scope.row.specialType == "2" ? "60-64岁老年人" : "" }}
{{ scope.row.specialType == "3" ? "60-0-6岁儿童" : "" }}
@ -174,7 +98,8 @@
{{ scope.row.specialType == "42" ? "肿瘤病" : "" }}
{{ scope.row.specialType == "43" ? "贫困人口" : "" }}
{{ scope.row.specialType == "44" ? "计划生育特殊家庭" : "" }}
</template> -->
</template>
</el-table-column>
<el-table-column label="是否禁用" align="center" prop="whetherDisable">
<template slot-scope="scope">
@ -183,145 +108,64 @@
</template>
</el-table-column>
<el-table-column label="排序" align="center" prop="sort" />
<el-table-column
label="操作"
align="center"
class-name="small-padding fixed-width"
>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['manage:crowdInfo:edit']"
>修改</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['manage:crowdInfo:remove']"
>删除</el-button
>
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
v-hasPermi="['manage:crowdInfo:edit']">修改</el-button>
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
v-hasPermi="['manage:crowdInfo:remove']">删除</el-button>
</template>
</el-table-column>
</el-table>
</div>
<!-- <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
@pagination="getList" /> -->
<myPagination
v-show="total > 0"
:total="total"
:pageSize="queryParams.pageSize"
:indexFromWrap="queryParams.pageNum"
@updateCPage="updateCPage"
></myPagination>
<myPagination v-show="total > 0" :total="total" :pageSize="queryParams.pageSize"
:indexFromWrap="queryParams.pageNum" @updateCPage="updateCPage"></myPagination>
<!-- 添加或修改人群信息对话框 -->
<el-dialog :title="title" :visible.sync="open" width="750px" append-to-body>
<el-form
ref="form"
:model="form"
:rules="rules"
label-width="110px"
:inline="true"
>
<el-form ref="form" :model="form" :rules="rules" label-width="110px" :inline="true">
<el-form-item label="人群名称" prop="crowdName">
<el-input v-model="form.crowdName" placeholder="请输入人群名称" />
</el-form-item>
<el-form-item label="最小适合年龄" prop="minSuitableAge">
<el-input
oninput="value=value.replace(/[^\d.]/g,'')"
v-model="form.minSuitableAge"
placeholder="请输入最小适合年龄"
/>
<el-input oninput="value=value.replace(/[^\d.]/g,'')" v-model="form.minSuitableAge" placeholder="请输入最小适合年龄" />
</el-form-item>
<el-form-item label="最大适合年龄" prop="maxSuitableAge">
<el-input
oninput="value=value.replace(/[^\d.]/g,'')"
v-model="form.maxSuitableAge"
placeholder="请输入最大适合年龄"
/>
<el-input oninput="value=value.replace(/[^\d.]/g,'')" v-model="form.maxSuitableAge" placeholder="请输入最大适合年龄" />
</el-form-item>
<el-form-item label="适合性别" prop="suitableGender">
<el-select
style="width: 206px"
v-model="form.suitableGender"
clearable
placeholder="请选择"
>
<el-option
v-for="item in optionssex"
:key="item.value"
:label="item.label"
:value="item.value"
>
<el-select style="width:206px" v-model="form.suitableGender" clearable placeholder="请选择">
<el-option v-for="item in optionssex" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="人群类型" prop="crowdType">
<el-select
v-model="form.crowdType"
placeholder="请选择人群类型"
style="width: 206px"
@change="change"
>
<el-option
v-for="dict in dict.type.crowd_type"
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
<el-select v-model="form.crowdType" placeholder="请选择人群类型" style="width:206px">
<el-option v-for="dict in dict.type.crowd_type" :key="dict.value" :label="dict.label"
:value="dict.value"></el-option>
</el-select>
</el-form-item>
<el-form-item label="特殊人群" prop="specialType">
<el-select
v-model="form.specialType"
placeholder="请选择特殊人群"
style="width: 206px"
>
<el-option
v-for="dict in typedata"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
></el-option>
<el-select v-model="form.specialType" placeholder="请选择特殊人群" style="width:206px">
<el-option v-for="dict in dict.type.special_type" :key="dict.value" :label="dict.label"
:value="dict.value"></el-option>
</el-select>
</el-form-item>
<el-form-item label="是否禁用" prop="whetherDisable">
<el-select
style="width: 206px"
v-model="form.whetherDisable"
clearable
placeholder="请选择"
>
<el-option
v-for="item in optionswhether"
:key="item.value"
:label="item.label"
:value="item.value"
>
<el-select style="width:206px" v-model="form.whetherDisable" clearable placeholder="请选择">
<el-option v-for="item in optionswhether" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="排序" prop="sort">
<el-input-number
v-model="form.sort"
controls-position="right"
:min="0"
placeholder="请输入排序"
style="width: 206px"
/>
<el-input-number v-model="form.sort" controls-position="right" :min="0" placeholder="请输入排序"
style="width: 206px" />
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input
v-model="form.remark"
type="textarea"
placeholder="请输入备注"
maxlength="100"
/>
<el-input v-model="form.remark" type="textarea" placeholder="请输入备注" maxlength="100" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
@ -332,16 +176,14 @@
</template>
<script>
import { type, listCrowdInfo, getCrowdInfo, delCrowdInfo, addCrowdInfo, updateCrowdInfo } from "@/api/manage/crowdInfo";
import { listCrowdInfo, getCrowdInfo, delCrowdInfo, addCrowdInfo, updateCrowdInfo } from "@/api/manage/crowdInfo";
export default {
name: "CrowdInfo",
dicts: ['crowd_type'],
dicts: ['crowd_type', 'special_type'],
data() {
return {
maxTableHeight: undefined,
typedata: [],//
type:'',
//
loading: true,
//
@ -452,20 +294,6 @@ export default {
this.queryParams.pageSize = size
this.getList();
},
//
gettype(){
type(this.type).then(res => {
this.typedata = res.data
})
},
//
change(e) {
this.type = e.toLowerCase()
this.form.specialType=null
this.gettype()
},
//
cancel() {
this.open = false;
@ -520,8 +348,6 @@ export default {
const id = row.id || this.ids
getCrowdInfo(id).then(response => {
this.form = response.data;
this.type=response.data.crowdType.toLowerCase()
this.gettype()
if (response.data.whetherDisable == 0) {
this.form.whetherDisable = "否"
} else if (response.data.whetherDisable == 1) {
@ -602,7 +428,7 @@ export default {
};
</script>
<style lang="scss" scoped>
::v-deep .el-textarea__inner {
::v-deep .el-textarea__inner{
width: 533px !important;
height: 100px;
}

View File

@ -2,42 +2,78 @@
<div class="header">
<div class="topheader">
<div class="user">
<img class="headsculpture" src="../../../assets/manage/touxiang.png" alt="" v-if="$route.query.sex == 'MALE'"
@click="shiftCollapsiable" />
<img class="headsculpture" src="../../../assets/manage/nvtouxiang.png" alt=""
v-if="$route.query.sex == 'FEMALE'" @click="shiftCollapsiable" />
<img
class="headsculpture"
src="../../../assets/manage/touxiang.png"
alt=""
v-if="$route.query.sex == 'MALE'"
@click="shiftCollapsiable"
/>
<img
class="headsculpture"
src="../../../assets/manage/nvtouxiang.png"
alt=""
v-if="$route.query.sex == 'FEMALE'"
@click="shiftCollapsiable"
/>
<div class="name" @click="shiftCollapsiable">
{{ $route.query.patientName }}
</div>
<div class="gender">
{{ $route.query.sex == "MALE" ? "男" : $route.query.sex == "FEMALE" ? "女" : "" }}
{{
$route.query.sex == "MALE"
? "男"
: $route.query.sex == "FEMALE"
? "女"
: ""
}}
</div>
<div class="source">
<div class="item" style="color: #00e06e; border-color: #00e06e"
v-if="$route.query.patientSource == 'WE_CHAT_OFFICIAL_ACCOUNT'">
<img src="../../../assets/manage/gzh.png" alt="" style="width: 24px" />
<div
class="item"
style="color: #00e06e; border-color: #00e06e"
v-if="$route.query.patientSource == 'WE_CHAT_OFFICIAL_ACCOUNT'"
>
<img
src="../../../assets/manage/gzh.png"
alt=""
style="width: 24px"
/>
<div>公众号</div>
</div>
<div class="item" style="color: #339de5; border-color: #339de5"
v-if="$route.query.patientSource == 'WE_CHAT_APPLET'">
<div
class="item"
style="color: #339de5; border-color: #339de5"
v-if="$route.query.patientSource == 'WE_CHAT_APPLET'"
>
<img src="../../../assets/manage/xcx.png" alt="" />
<div>小程序</div>
</div>
<div class="item" style="color: #f4881f; border-color: #f4881f"
v-if="$route.query.patientSource == 'MANAGE_END'">
<div
class="item"
style="color: #f4881f; border-color: #f4881f"
v-if="$route.query.patientSource == 'MANAGE_END'"
>
<img src="../../../assets/manage/gld.png" alt="" />
<div>管理端</div>
</div>
</div>
<div class="age">
{{ $route.query.age }}
</div>
<div class="age">身份证号{{ $route.query.cardNo }}</div>
<div class="age">身份证号{{ $route.query.patientPhone }}</div>
<div class="age">患者电话{{ $route.query.patientPhone }}</div>
<div class="age">出生日期{{ $route.query.birthDate }}</div>
<div class="age">预约时间{{ $route.query.appointmentDate }}</div>
<div class="rihgt">
<Button v-show="collapsiable" type="text" @click="shiftCollapsiable" size="mini">
<Button
v-show="collapsiable"
type="text"
@click="shiftCollapsiable"
size="mini"
>
<span style="font-size: 14px">
{{ fold ? "收起" : "展开" }}
<i :class="fold ? 'el-icon-arrow-up' : 'el-icon-arrow-down'"></i>
@ -50,7 +86,14 @@
<div>家属电话{{ $route.query.familyMemberPhone }}</div>
<div>登记日期{{ $route.query.registrationDate }}</div>
<div>开证医生{{ $route.query.certificateIssuingDoctorName }}</div>
<div style="width: 50%;white-space: nowrap;overflow: hidden;text-overflow: ellipsis;">
<div
style="
width: 50%;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
"
>
主要诊断{{ $route.query.mainDiagnosis }}
</div>
</div>
@ -64,7 +107,14 @@
<div>注册时间{{ $route.query.createTime }}</div>
<div>预约治疗组{{ $route.query.appointmentTreatmentGroup }}</div>
<div>责任护士{{ $route.query.responsibleNurse }}</div>
<div style="width: 50%;white-space: nowrap;overflow: hidden;text-overflow: ellipsis;">
<div
style="
width: 50%;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
"
>
登记号{{ $route.query.registrationNo }}
</div>
</div>
@ -72,7 +122,12 @@
</div>
<div class="selectitem" v-if="activeName == 'second' && value">
<el-select v-model="value" placeholder="请选择" @change="changeitem">
<el-option v-for="item in options" :key="item.id" :label="item.signRouteName" :value="item.id">
<el-option
v-for="item in options"
:key="item.id"
:label="item.signRouteName"
:value="item.id"
>
</el-option>
</el-select>
</div>
@ -82,17 +137,28 @@
<visitRecords :fold="fold"></visitRecords>
</el-tab-pane>
<el-tab-pane label="康复计划及记录" name="second">
<RehabilitationPlanandRecords v-if="activeName == 'second'" :signPatientRecordld="signPatientRecordld"
:fold="fold"></RehabilitationPlanandRecords>
<RehabilitationPlanandRecords
v-if="activeName == 'second'"
:signPatientRecordld="signPatientRecordld"
:fold="fold"
></RehabilitationPlanandRecords>
</el-tab-pane>
<el-tab-pane label="健康宣教" name="third">
<healthEducation v-if="activeName == 'third'" :fold="fold"></healthEducation>
<healthEducation
v-if="activeName == 'third'"
:fold="fold"
></healthEducation>
</el-tab-pane>
<el-tab-pane label="指标监测" name="fourth">
<indicatorMonitoring v-if="activeName == 'fourth'"></indicatorMonitoring>
<indicatorMonitoring
v-if="activeName == 'fourth'"
></indicatorMonitoring>
</el-tab-pane>
<el-tab-pane label="签约记录" name="five">
<signingRecords v-if="activeName == 'five'" :fold="fold"></signingRecords>
<signingRecords
v-if="activeName == 'five'"
:fold="fold"
></signingRecords>
</el-tab-pane>
</el-tabs>
</div>
@ -101,6 +167,7 @@
<script>
import { getRecordLists } from "@/api/manage/signingRecords";
import visitRecords from "../components/visitRecords.vue";
import healthEducation from "../components/healthEducation.vue";
import indicatorMonitoring from "../components/indicatorMonitoring.vue";
@ -134,8 +201,10 @@ export default {
};
},
created() {
console.log(1111111111);
// if(this.activeName == 'second'){
this.info();
// }
},
methods: {
@ -144,10 +213,12 @@ export default {
this.fold = !this.fold;
},
changeitem(e) {
console.log(e, "e");
this.signPatientRecordld = e;
},
info() {
getRecordLists(this.$route.query.patientId).then((res) => {
console.log(res, "res");
this.options = res.data;
this.value = res.data[0].signRouteName;
this.signPatientRecordld = res.data[0].id;
@ -161,7 +232,6 @@ export default {
overflow: hidden;
width: 600px;
}
.selectitem {
display: inline-block;
width: 220px;
@ -170,7 +240,6 @@ export default {
z-index: 999;
line-height: 65px;
}
.header {
background-color: #f1f3f5;
padding-top: 10px;
@ -254,7 +323,6 @@ export default {
.age {
padding-left: 10px;
}
.rihgt {
position: absolute;
right: 40px;

View File

@ -158,12 +158,12 @@
/>
<el-table-column label="字段类型" align="center" prop="fieldType">
<!-- <template slot-scope="scope">
<template slot-scope="scope">
{{ scope.row.fieldType == "STRING" ? "默认字符串" : "" }}
{{ scope.row.fieldType == "INT" ? "整型" : "" }}
{{ scope.row.fieldType == "DECIMAL" ? "数值" : "" }}
{{ scope.row.fieldType == "ENUM" ? "枚举" : "" }}
</template> -->
</template>
</el-table-column>
<el-table-column label="字段排序" align="center" prop="fieldSort" />
<!-- <el-table-column

View File

@ -552,10 +552,13 @@ export default {
crowNamechange(e) {
this.form.crowName = this.optionscrowName.find(f => f.id == e).crowdName
this.form.crowdId = e
},
/** 查询素材信息列表 */
getList() {
this.loading = true;
this.queryParams.params = {};
listMaterials(this.queryParams).then(response => {
this.materialsList = response.rows;
this.total = response.total;

View File

@ -153,7 +153,7 @@
<cardlist :maxTableHeight="maxTableHeight" :patientInfoList="patientInfoList"></cardlist>
</div>
<myPagination v-show="total > 0" :total="total" :pageSize="queryParams.pageSize"
:indexFromWrap="queryParams.pageNum" :indexFrom="queryParams.pageSize" @updateCPage="updateCPage"></myPagination>
:indexFromWrap="queryParams.pageNum" :indexFrom="indexFrom" @updateCPage="updateCPage"></myPagination>
</div>
</template>
@ -175,6 +175,7 @@ export default {
data() {
return {
type: "card",
indexFrom: "",
searchData: {},
maxTableHeight: undefined,
attendingPhysicianlist: [],
@ -229,8 +230,9 @@ export default {
handler(val) {
if (val == "table") {
this.queryParams.pageSize = 10;
this.indexFrom = "";
} else if (val == "card") {
this.queryParams.pageSize = 100;
this.indexFrom = 100;
}
},
deep: true,
@ -288,7 +290,7 @@ export default {
birthDate: row.birthDate,
patientSource: row.patientSource,
createTime: row.createTime,
age: row.age,
age: row.birthDate ? getAge(row.birthDate) : "",
},
});
},
@ -310,13 +312,14 @@ export default {
createTime: row.createTime,
hospitalAgencyName: row.hospitalAgencyName,
mainDiagnosis: row.mainDiagnosis,
age: row.age,
age: row.birthDate ? getAge(row.birthDate) : "",
},
});
},
/** 查询患者信息列表 */
getList() {
this.loading = true;
this.queryParams.params = {};
const loading = this.$loading({
lock: true,
text: "数据加载中",
@ -325,14 +328,13 @@ export default {
});
getPatientList(this.queryParams).then((response) => {
response.rows.forEach((e) => {
e.birthDate ? (e.age = getAge(e.birthDate)) : e.age;
e.birthDate ? (e.age = getAge(e.birthDate)) : "";
});
this.patientInfoList = response.rows;
this.total = response.total;
loading.close();
this.loading = false;
}).catch(() => {
loading.close();
});
},
/** 搜索按钮操作 */
@ -357,11 +359,13 @@ export default {
typeitem() {
this.type = "card";
this.queryParams.pageSize = 100;
// console.log( this.queryParams.pageSize)
this.getList();
},
typeitemtable() {
this.type = "table";
this.queryParams.pageSize = 10;
// console.log( this.queryParams.pageSize)
this.getList();
},
/** 重置按钮操作 */
@ -377,6 +381,7 @@ export default {
pageSize: 10,
};
}
this.admissionTime = [];
this.queryParams.admissionTimeStart = null;
this.queryParams.admissionTimeEnd = null;

View File

@ -1,474 +0,0 @@
<template>
<div class="app-container" ref="layout">
<div ref="topform" class="form">
<SearchFilter :labelWidths="310" :widths="70" size="small" @search="handleQuery" @handleRules="getList"
patientUploadButtonVisible="true" @reset="resetQuery" @minShowCtrol="getMaxTableHeight" v-show="showSearch">
<el-form-item label="导入日期" prop="" label-width="90px">
<el-date-picker v-model="createTime" type="daterange" range-separator="" start-placeholder="开始日期"
style="width: 220px" value-format="yyyy-MM-dd" end-placeholder="结束日期">
</el-date-picker>
</el-form-item>
<el-form-item label="流水号" prop="sn" label-width="90px">
<el-input v-model="queryParams.sn" placeholder="请输入流水号" style="width: 220px" clearable>
</el-input>
</el-form-item>
<el-form-item label="批次名称" prop="importName" label-width="90px">
<el-input v-model="queryParams.importName" placeholder="请输入批次名称" style="width: 220px" clearable>
</el-input>
</el-form-item>
<el-form-item label="医院" prop="" label-width="90px">
<el-select v-model="queryParams.hospitalAgencyId" filterable placeholder="请选择医院" style="width: 220px"
clearable @clear="clearhospitalAgency" @change="changehospitalAgency">
<el-option v-for="item in hospitalAgencylist" :key="item.id" :label="item.agencyName" :value="item.id">
</el-option>
</el-select>
</el-form-item>
<!-- <el-form-item label="院区" prop="">
<el-select v-model="queryParams.campusAgencyId" filterable placeholder="请选择院区" style="width: 220px" clearable
@clear="clearcampusAgency">
<el-option v-for="item in campusAgencylist" :key="item.id" :label="item.agencyName" :value="item.id">
</el-option>
</el-select>
</el-form-item> -->
</SearchFilter>
</div>
<!-- <div ref="mb8" class="mb8">
<el-row :gutter="10" class="">
<el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
v-hasPermi="['manage:blacklist:add']">新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="success" plain icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate"
v-hasPermi="['manage:blacklist:edit']">修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete"
v-hasPermi="['manage:blacklist:remove']">删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport"
v-hasPermi="['manage:blacklist:export']">导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
</div> -->
<div ref="table">
<el-table :max-height="maxTableHeight" v-loading="loading" :data="PatientInfoImportBatchlist"
@selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" />
<el-table-column label="序号" type="index" width="50" align="center" />
<el-table-column label="流水号" prop="sn" align="center">
<template slot-scope="scope">
<el-button size="mini" type="text" @click="handsn(scope.row)">
{{ scope.row.sn }}
</el-button>
</template>
</el-table-column>
<el-table-column label="批次名称" align="center" prop="importName" />
<el-table-column label="患者数" align="center" prop="patientCount" />
<el-table-column label="操作人" align="center" prop="createBy" />
<el-table-column label="导入日期" align="center" prop="createTime">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime, "{y}-{m}-{d}") }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<!-- <el-button size="mini" type="text" @click="handleUpdate(scope.row)"
v-hasPermi="['manage:blacklist:edit']">修改</el-button>
<el-button size="mini" type="text" @click="handleDelete(scope.row)"
v-hasPermi="['manage:blacklist:remove']">删除</el-button> -->
<el-button size="mini" type="text" @click="handOutbound(scope.row)">外呼</el-button>
<el-button size="mini" type="text" @click="ljhandOutbound(scope.row)">立即外呼</el-button>
<el-button size="mini" type="text" @click="handsn(scope.row)">明细</el-button>
<el-button size="mini" type="text" @click="handleDelete(scope.row)">删除</el-button>
</template>
</el-table-column>
</el-table>
</div>
<!-- <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize" @pagination="getList" /> -->
<myPagination v-show="total > 0" :total="total" :pageSize="queryParams.pageSize"
:indexFromWrap="queryParams.pageNum" @updateCPage="updateCPage"></myPagination>
<el-dialog title="立即外呼" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-form-item label="任务名称" prop="manageRouteName">
<el-input v-model="form.manageRouteName" placeholder="请输入任务名称" />
</el-form-item>
<el-descriptions title="上次外呼数据简介" />
<el-form-item label="流水号" prop="sn">
<div class="formdiv">
{{ form.sn }}
</div>
</el-form-item>
<el-form-item label="任务节点类型" prop="taskNodeType">
<div class="formdiv">
{{ form.taskNodeType == 'PHONE_OUTBOUND' ? '电话外呼' : '' }}
{{ form.taskNodeType == 'QUESTIONNAIRE_SCALE' ? '问卷量表' : '' }}
{{ form.taskNodeType == 'PROPAGANDA_ARTICLE' ? '宣教文案' : '' }}
{{ form.taskNodeType == 'TEXT_REMIND' ? '文字提醒' : '' }}
</div>
</el-form-item>
<span v-if="form.taskNodeType == 'PHONE_OUTBOUND'">
<el-form-item label="话术模板" prop="phoneTemplateName">
<div class="formdiv">
{{ form.phoneTemplateName }}
</div>
</el-form-item>
<el-form-item label="推送方式" prop="phoneDialMethod">
<div class="formdiv">
{{ form.phoneDialMethod == 'COMMON' ? '人工电话' : '' }}
{{ form.phoneDialMethod == 'AI' ? '自动外呼' : '' }}
</div>
</el-form-item>
<el-form-item label="重播次数" prop="phoneRedialTimes">
<div class="formdiv">
{{ returnphoneRedialTime(form.phoneRedialTimes) }}
</div>
</el-form-item>
<el-form-item label="时间间隔(分)" prop="phoneTimeInterval">
<div class="formdiv">
{{ form.phoneTimeInterval }}
</div>
</el-form-item>
</span>
<span v-if="form.taskNodeType == 'QUESTIONNAIRE_SCALE'">
<el-form-item label="问卷模板" prop="taskNodeType">
<div class="formdiv">
{{ form.questionnaireName }}
</div>
</el-form-item>
<el-form-item label="推送方式" prop="phoneDialMethod">
<div class="formdiv">
{{ form.phoneDialMethod == '' ? '小程序问卷' : '' }}
{{ form.phoneDialMethod == 'AI' ? 'AI自动外呼' : '' }}
{{ form.phoneDialMethod == 'COMMON' ? '人工随访' : '' }}
</div>
</el-form-item>
</span>
<el-form-item v-if="form.taskNodeType == 'PROPAGANDA_ARTICLE'" label="宣教模板" prop="taskNodeType">
<div class="formdiv">
{{ form.propagandaTitle }}
</div>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="Calloutimmediately"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { patientInfoImportBatchlist, updateSn, outboundConfirmation, directOutbound } from "@/api/manage/patientInfoImport";
import { selectAgencyList, getDepartmentList, getAgencyList } from "@/api/manage/selectAgencyList";
import SearchFilter from '../../components/SearchForm.vue'
import { getAgencytype } from "@/api/system/agency";
export default {
name: "Importlist",
components: { SearchFilter },
data() {
return {
maxTableHeight: undefined,
//list
hospitalAgencylist: [],
// list
campusAgencylist: [],
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
PatientInfoImportBatchlist: [],
//
title: "",
//
open: false,
createTime: "",
//
queryParams: {
pageNum: 1,
pageSize: 10,
hospitalAgencyId: null,
importTimeStart: "",
importTimeEnd: "",
campusAgencyId: null,
sn: "",
importName: "",
},
//
form: {},
//
optionslisttime: [],
//
rules: {
manageRouteName: [
{ required: true, message: '请输入任务名称', trigger: 'change' }
],
}
};
},
created() {
this.selectAgencyinfo();
this.getList();
},
mounted() {
this.getMaxTableHeight()
this.screenChange()
},
methods: {
// /
handsn(row) {
this.$router.push({
path: "/patient/ImportDetails",
query: {
path: "/patient/patientinfoimport",
sn: row.sn,
Timeimport: row.createTime,
},
});
},
//
handOutbound(row) {
this.$router.push({
path: "/patient/ManuallyCreatingTasks",
query: {
path: "/patient/patientinfoimport",
// signPatientRecordId: row.id,
sn: row.sn ? row.sn : '',
patientName: row.patientName ? row.patientName : '',
departmentId: row.departmentId ? row.departmentId : '',
departmentName: row.departmentName ? row.departmentName : '',
},
});
},
returnphoneRedialTime(text) {
let arr = this.optionslisttime;
for (let i = 0; i < arr.length; i++) {
if (arr[i].dictValue == text) {
return arr[i].dictLabel;
}
}
},
//
ljhandOutbound(row) {
var dictType = "redial_times";
getAgencytype(dictType).then((res) => {
this.optionslisttime = res.data;
outboundConfirmation().then(res => {
if (res.data) {
this.form = res.data;
this.$set(this.form, 'sn', row.sn + '')
this.open = true;
} else {
this.$modal.msgError("暂无最新外呼数据,请先进行手动外呼");
}
})
});
},
Calloutimmediately() {
this.$refs["form"].validate(valid => {
if (valid) {
directOutbound(this.form).then(res => {
this.$modal.msgSuccess("操作成功");
this.open = false;
this.getList();
})
}
})
},
/** 删除按钮操作 */
handleDelete(row) {
// const ids = row.id || this.ids;
this.$modal.confirm('是否确认删除?').then(() => {
return updateSn(row.sn);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => { });
},
updateCPage(index, size) {
this.queryParams.pageNum = index
this.queryParams.pageSize = size
this.getList();
},
/** 查询 */
getList() {
this.loading = true;
patientInfoImportBatchlist(this.queryParams).then(response => {
this.PatientInfoImportBatchlist = response.rows;
this.total = response.total;
this.loading = false;
});
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.form = {};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
if (this.createTime?.length > 0) {
this.queryParams.importTimeStart = this.createTime[0];
this.queryParams.importTimeEnd = this.createTime[1];
} else {
this.queryParams.importTimeStart = null;
this.queryParams.importTimeEnd = null;
}
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.queryParams = {
pageNum: 1,
pageSize: 10,
hospitalAgencyId: null,
importTimeStart: "",
importTimeEnd: "",
campusAgencyId: null,
sn: "",
importName: "",
}
this.createTime = '';
// this.resetForm("queryForm");
this.handleQuery();
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.id)
this.single = selection.length !== 1
this.multiple = !selection.length
},
/** 导出按钮操作 */
handleExport() {
this.download('manage/blacklist/export', {
...this.queryParams
}, `blacklist_${new Date().getTime()}.xlsx`)
},
//list
selectAgencyinfo() {
let query = {
agencyStatus: 'ON',
nodeType: 'HOSPITAL',
}
selectAgencyList(query).then(res => {
this.hospitalAgencylist = res.data
})
},
//
getAgencyListinfo(nodeType, id, type) {
let query = {
nodeType: nodeType,
}
if (nodeType == 'HOSPITAL') {
query.hospitalId = id
} else if (nodeType == 'CAMPUS') {
query.campusId = id
}
getAgencyList(query).then(res => {
// if (type) {
if (nodeType == 'HOSPITAL') {
this.campusAgencylist = res.data.campusList;
}
// }
})
},
//
changehospitalAgency(id, type, typetwo) {
this.getAgencyListinfo('HOSPITAL', id, type)
// let query = {
// agencyStatus: 'ON',
// nodeType: 'CAMPUS',
// parentId: id,
// }
// selectAgencyList(query).then(res => {
if (type) {
if (!typetwo) {
this.form.campusAgencyId = null
}
} else {
this.queryParams.campusAgencyId = null
}
// })
},
//
changecampusAgency(id, type, typetwo) {
this.getAgencyListinfo('CAMPUS', id, type)
},
//
clearhospitalAgency(type) {
if (type) {
this.form.campusAgencyId = null
this.form.departmentId = null
this.form.wardId = null
} else {
this.queryParams.campusAgencyId = null
this.queryParams.departmentId = null
this.queryParams.wardId = null
}
},
//
clearcampusAgency(type) {
if (type) {
this.form.departmentId = null
this.form.wardId = null
this.getAgencyListinfo('HOSPITAL', this.form.hospitalAgencyId, type)
} else {
this.queryParams.departmentId = null
this.queryParams.wardId = null
this.getAgencyListinfo('HOSPITAL', this.queryParams.hospitalAgencyId)
}
},
//
getMaxTableHeight() {
const windowInnerHeight = window.innerHeight //
const layoutDiv = this.$refs.layout
const formDiv = this.$refs.topform
const mb8Div = this.$refs.mb8
this.maxTableHeight =
windowInnerHeight - 134 -
this.getBoxPadding(layoutDiv) -
this.getBoxHeight(mb8Div) -
this.getBoxHeight(formDiv)
},
// resize
screenChange() {
// resizeresize
window.addEventListener('resize', this.getMaxTableHeight, true)
//
//
// beforeDestroy
this.$once('hook:beforeDestroy', () => {
window.removeEventListener('resize', this.getMaxTableHeight, true)
})
},
}
};
</script>
<style>
.formdiv {
width: 340px;
border: 1px solid #DCDFE6;
height: 36px;
line-height: 36px;
font-size: 14px;
padding: 0 15px;
border-radius: 4px;
}
</style>

View File

@ -669,7 +669,7 @@ export default {
birthDate: row.birthDate,
patientSource: row.patientSource,
createTime: row.createTime,
age: row.age,
age: row.birthDate ? getAge(row.birthDate) : '',
},
});
@ -702,7 +702,7 @@ export default {
this.queryParams.patientType = 'PRE_HOSPITALIZED_PATIENT'
listPatientInfo(this.queryParams).then(response => {
response.rows.forEach(e => {
e.birthDate ? e.age = getAge(e.birthDate) : e.age
e.birthDate ? e.age = getAge(e.birthDate) : ''
})
this.patientInfoList = response.rows;
this.total = response.total;

View File

@ -21,7 +21,6 @@
>
<el-form-item label="创建时间" prop="">
<el-date-picker
style="width: 205px"
v-model="queryParams.createTimeStart"
type="date"
value-format="yyyy-MM-dd"
@ -32,7 +31,6 @@
</el-date-picker>
-
<el-date-picker
style="width: 205px"
v-model="queryParams.createTimeEnd"
type="date"
value-format="yyyy-MM-dd"
@ -46,7 +44,6 @@
<el-select
v-model="queryParams.propagandaType"
placeholder="请选择"
clearable
>
<el-option
v-for="item in optionstype"
@ -68,7 +65,6 @@
<el-select
v-model="queryParams.propagandaStatus"
placeholder="请选择"
clearable
>
<el-option
v-for="item in optionsstate"
@ -85,21 +81,6 @@
@keyup.enter.native="handleQuery"
/> -->
</el-form-item>
<el-form-item label="来源" prop="source" label-width="50">
<el-select
v-model="queryParams.source"
placeholder="请选择"
clearable
>
<el-option
v-for="item in optionspublick"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button
type="primary"
@ -452,7 +433,7 @@
<el-form-item label="正文内容" prop="propagandaContent" v-if="open">
<editor
id="id"
ref="quillEditor"
ref="myTextarea"
v-model="form.propagandaContent"
:min-height="192"
style="width: 800px"
@ -562,69 +543,65 @@
append-to-body
:before-close="canceldiseases"
>
<div style="padding-bottom: 23px">
<el-form
ref="queryForm"
:model="querydisease"
:rules="rules"
label-width="80px"
:inline="true"
>
<el-form-item
label="病种名称"
prop="diseaseTypeName"
label-width="120"
<div style="padding-bottom: 23px;">
<el-form
ref="queryForm"
:model="querydisease"
:rules="rules"
label-width="80px"
:inline="true"
>
<el-form-item label="病种名称" prop="diseaseTypeName" label-width="120">
<el-input
v-model="querydisease.diseaseTypeName"
placeholder="请输入病种名称"
clearable
/>
</el-form-item>
<el-form-item>
<el-button
type="primary"
icon="el-icon-search"
size="mini"
@click="infodisease"
>搜索</el-button
>
<el-input
v-model="querydisease.diseaseTypeName"
placeholder="请输入病种名称"
clearable
/>
</el-form-item>
<el-form-item>
<el-button icon="el-icon-refresh" size="mini" @click="resetdisease"
>重置</el-button
>
</el-form-item>
</el-form>
<el-table
:data="listdisease"
@cell-dblclick="nurseclickdisease"
v-loading="loading"
>
<el-table-column label="请选择" width="100" align="center">
<template slot-scope="scope">
<el-button
type="primary"
icon="el-icon-search"
size="mini"
@click="infodisease"
>搜索</el-button
>
<el-button icon="el-icon-refresh" size="mini" @click="resetdisease"
>重置</el-button
>
</el-form-item>
</el-form>
<el-table
:data="listdisease"
@cell-dblclick="nurseclickdisease"
v-loading="loading"
style="width: 15px; height: 15px"
v-if="form.diseaseTypeId == scope.row.id"
circle
@click="nurseclickdisease(scope.row)"
></el-button>
<el-button
v-else
style="width: 15px; height: 15px"
circle
@click="nurseclickdisease(scope.row)"
></el-button>
</template>
</el-table-column>
<el-table-column
property="diseaseTypeName"
label="病种名称"
align="center"
:show-overflow-tooltip="true"
>
<el-table-column label="请选择" width="100" align="center">
<template slot-scope="scope">
<el-button
type="primary"
style="width: 15px; height: 15px"
v-if="form.diseaseTypeId == scope.row.id"
circle
@click="nurseclickdisease(scope.row)"
></el-button>
<el-button
v-else
style="width: 15px; height: 15px"
circle
@click="nurseclickdisease(scope.row)"
></el-button>
</template>
</el-table-column>
<el-table-column
property="diseaseTypeName"
label="病种名称"
align="center"
:show-overflow-tooltip="true"
>
</el-table-column>
</el-table>
</div>
</el-table-column>
</el-table>
</div>
<!-- <pagination v-show="diseasetotal > 0" :total="diseasetotal" :page.sync="querydisease.pageNum"
:limit.sync="querydisease.pageSize" @pagination="infodisease" /> -->
<myPagination
@ -665,8 +642,8 @@
<div>
<img :src="baseUrl + formview.propagandaCoverPath" alt="" />
<div class="know">知识卡片</div>
<div class="knowlist" v-html="formview.propagandaContent"></div>
<!-- <Editorxj v-model="formview.propagandaContent" :min-height="192" /> -->
<div class="knowlist" v-html="formview.propagandaContent">
</div> <!-- <Editorxj v-model="formview.propagandaContent" :min-height="192" /> -->
</div>
</div>
</el-dialog>
@ -896,18 +873,6 @@ export default {
},//
copyid: null,//id
examineid: null,//id
//
optionspublick: [
{
value: 'PRIVATE',
label: '私有'
},
{
value: 'PUBLIC',
label: '公共'
},
],
optionstype: [{
value: 'MEDICATION_KNOWLEDGE',
label: '用药知识'
@ -984,7 +949,6 @@ export default {
queryParams: {
pageNum: 1,
pageSize: 10,
source: 'PRIVATE',
patientId: null,
propagandaId: null,
departmentName: null,
@ -1112,7 +1076,7 @@ export default {
this.$forceUpdate()
},
//
async handlePaste(event) {
handlePaste(event) {
console.log(event, 'event')
const clipboardData = event.clipboardData || window.clipboardData;
const pastedText = clipboardData.getData('text');
@ -1128,30 +1092,15 @@ export default {
});
}
else {
const editor = this.$refs.quillEditor.getEditor();
let length = editor.selection.savedRange.index;
const text = clipboardData.getData('text/plain');
// text
console.log(text, 'length + text.length')
editor.insertEmbed(length, text);
await setTimeout(() => {
//
editor.setSelection(length + text.length);
}, 10); // 使 setTimeout
// editor.insertText(range.index, text);
// editor.setSelection(range.index + text.length);
// //
// event.preventDefault();
// //
// event.target.outerText += pastedText;
// //
// const dom = document.getElementById('id')
// dom && dom.focus()
// // document.execCommand('selectAll', false, null);
// // document.getSelection().collapseToEnd();
// console.log(event, '222222222222222')
event.preventDefault();
//
event.target.outerText += pastedText;
//
const dom = document.getElementById('id')
dom && dom.focus()
// document.execCommand('selectAll', false, null);
// document.getSelection().collapseToEnd();
console.log(event, '222222222222222')
}
},
// checkContentLength(event) {
@ -1468,9 +1417,8 @@ export default {
resetQuery() {
this.queryParams.createTimeEnd = null
this.queryParams.createTimeStart = null
this.queryParams.propagandaType = null
this.queryParams.propagandaStatus = null
this.queryParams.source = null
this.queryParams.propagandaType=null
this.queryParams.propagandaStatus=null
this.informationqueryParams.hospitalAgencyId = JSON.parse(localStorage.getItem('user')).hospitalAgencyId
this.queryParams.hospitalAgencyId = JSON.parse(localStorage.getItem('user')).hospitalAgencyId
this.resetForm("queryForms");
@ -1633,17 +1581,20 @@ export default {
};
</script>
<style lang="scss" scoped>
::v-deep .el-dialog {
top: -25px;
// height:95vh;
::v-deep .el-dialog{
top:-25px;
height:95vh;
}
::v-deep .ql-editor {
::v-deep .ql-video {
width: 100% !important;
}
}
::v-deep .el-dialog__body {
padding-top: 10px !important;
::v-deep .el-dialog__body
{
padding-top: 10px !important;
}
.articleSummary {
@ -1755,7 +1706,7 @@ audio {
}
::v-deep img {
max-width: 950px;
max-width: 950px;
// width: 362px;
// height: 127px;
margin: 0px 0px 0px 30px;

View File

@ -623,7 +623,7 @@ export default {
departmentName: row.departmentName,
paymentStatus: row.paymentStatus,
sex: row.sex,
age: row.birthDate ? getAge(row.birthDate) : row.age,
age: row.birthDate ? getAge(row.birthDate) : "",
patientId: row.patientId,
createTime: row.createTime,
},
@ -765,7 +765,7 @@ export default {
birthDate: row.birthDate,
patientSource: row.patientSource,
createTime: row.createTime,
age: row.birthDate ? getAge(row.birthDate) : row.age,
age: row.birthDate ? getAge(row.birthDate) : "",
},
});
},
@ -785,7 +785,7 @@ export default {
address: row.address,
patientSource: row.patientSource,
createTime: row.createTime,
age: row.birthDate ? getAge(row.birthDate) : row.age,
age: row.birthDate ? getAge(row.birthDate) : "",
},
});
},

File diff suppressed because it is too large Load Diff

View File

@ -703,7 +703,7 @@ export default {
birthDate: row.birthDate,
patientSource: row.patientSource,
createTime: row.createTime,
age: row.age
age: row.birthDate ? getAge(row.birthDate) : ''
},
});
},
@ -753,7 +753,7 @@ export default {
this.queryParams.patientType = 'IN_HOSPITAL_PATIENT'
listPatientInfo(this.queryParams).then(response => {
response.rows.forEach(e => {
e.birthDate ? e.age = getAge(e.birthDate) :e.age
e.birthDate ? e.age = getAge(e.birthDate) : ''
})
this.patientInfoList = response.rows;
this.total = response.total;

View File

@ -216,7 +216,7 @@
<myPagination v-show="total > 0" :total="total" :pageSize="queryParams.pageSize"
:indexFromWrap="queryParams.pageNum" @updateCPage="updateCPage"></myPagination>
<!-- 添加或修改患者信息对话框 -->
<el-dialog :title="title" :visible.sync="open" width="1100px" append-to-body :before-close="handleClose">
<el-dialog :title="title" :visible.sync="open" width="1000px" append-to-body :before-close="handleClose">
<el-form ref="openform" :model="form" :rules="rules" label-width="100px" :inline="true">
<div class="titlenew">基本信息</div>
<el-form-item label="患者姓名" prop="patientName">
@ -326,13 +326,13 @@
<el-input v-model="form.surgicalName" placeholder="请输入手术名称" style="width: 220px" />
</el-form-item>
<el-form-item label="手术记录" prop="surgicalRecord" v-show="form.visitMethod == 'BE_IN_HOSPITAL'">
<editor v-model="form.surgicalRecord" :min-height="192" style="width: 880px" />
<editor v-model="form.surgicalRecord" :min-height="192" style="width: 838px" />
</el-form-item>
<el-form-item label="入院病历">
<editor v-model="form.inHospitalInfo" :min-height="192" style="width: 880px" />
<editor v-model="form.inHospitalInfo" :min-height="192" style="width: 838px" />
</el-form-item>
<el-form-item label="出院病历" v-show="form.visitMethod == 'BE_IN_HOSPITAL'">
<editor v-model="form.outHospitalInfo" :min-height="192" style="width: 880px" />
<editor v-model="form.outHospitalInfo" :min-height="192" style="width: 838px" />
</el-form-item>
<!-- <el-form-item label="患者来源" prop="patientSource">
<el-select v-model="form.patientSource" placeholder="请选择患者来源" clearable style="width:220px">
@ -766,7 +766,7 @@ export default {
departmentName: row.departmentName,
paymentStatus: row.paymentStatus,
sex: row.sex,
age: row.age,
age: row.birthDate ? getAge(row.birthDate) : "",
patientId: row.patientId,
createTime: row.createTime,
},
@ -831,7 +831,7 @@ export default {
birthDate: row.birthDate,
patientSource: row.patientSource,
createTime: row.createTime,
age: row.age,
age: row.birthDate ? getAge(row.birthDate) : "",
},
});
},
@ -841,11 +841,9 @@ export default {
this.queryParams.patientType = "OUTPATIENT_DISCHARGE";
listPatientInfo(this.queryParams).then((response) => {
response.rows.forEach((e) => {
e.birthDate ? (e.age = getAge(e.birthDate)) : e.age;
e.birthDate ? (e.age = getAge(e.birthDate)) : "";
});
this.patientInfoList = response.rows;
console.log(this.patientInfoList,'this.patientInfoList')
this.total = response.total;
this.loading = false;
});
@ -944,14 +942,7 @@ export default {
console.log(id);
getPatientInfo(id).then((response) => {
this.form = response.data;
if( this.form.dischargeTime && ! this.form.visitDate){
this.form.dischargeTime = response.data.dischargeTime
}else if(this.form.visitDate && ! this.form.dischargeTime){
this.form.dischargeTime = response.data.visitDate
}else if(this.form.visitDate && this.form.dischargeTime){
this.form.dischargeTime = response.data.visitDate
}
this.form = response.data;
if (this.form.hospitalAgencyId) {
this.changehospitalAgency(this.form.hospitalAgencyId, 1, 2);
}

View File

@ -1,5 +1,5 @@
<template>
<div style="background-color: #f1f3f5; padding-top: 10px">
<div style="background-color: #f1f3f5;padding-top:10px">
<div class="titlemengt" ref="layout">
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="upload">保存</el-button>
@ -103,82 +103,44 @@
</div> -->
<!-- <el-button @click="submit" style="float:right">保存触发条件</el-button> -->
</div>
<div class="nodes" :style="{ height: heightLine + 'px' }">
<div class="nodes" :style="{ 'height': heightLine + 'px' }">
<div class="nodenames">
<div class="timetitle">
管理路径节点({{ list.length }})
<i class="el-icon-circle-plus-outline" @click="additem"></i>
</div>
<el-timeline>
<el-timeline-item v-for="(item, index) in list" :key="index" :color="listindex == index ? '#13CE66' : ''"
<el-timeline-item v-for="(item, index) in list" :key="index" :color="listindex == index ? '#409EFF' : ''"
@click.native="clicktimelineitem(item, index)">
<div class="top">
<div class="toptop">
<el-radio v-model="item.checked1" :label="1" @change="handleCheckAllChange1($event, item)">
<el-select style="width: 123px" v-model="item.routeNodeName" @focus="handleFocusone(item)">
<el-option v-for="item in parentDictCodelist" :key="item.dictValue" :label="item.dictLabel"
:value="item.dictValue">
</el-option>
</el-select>
<el-input style="width: 90px" v-model="item.routeNodeDay" type="number"
@focus="handleFocus(item)"></el-input>
<span></span>
</el-radio>
<el-select style="width: 100px" v-model="item.routeNodeName">
<el-option v-for="item in parentDictCodelist" :key="item.dictValue" :label="item.dictLabel"
:value="item.dictValue">
</el-option>
</el-select>
<el-input style="width: 90px" v-model="item.routeNodeDay" type="number"></el-input>
<span></span>
</div>
<div>
<i class="el-icon-delete" @click="delitem(item, index, list)"></i>
</div>
</div>
<div class="top">
<div class="toptop">
<el-radio v-model="item.checked2" :label="2" @change="handleCheckAllChange2($event, item, index)">
<span style="width: 78px">指定时间</span>
<el-date-picker format="yyyy-MM-dd HH:mm:ss" value-format="yyyy-MM-dd HH:mm:ss"
v-model="item.nodePlanTime" type="datetime" placeholder="选择日期时间" :picker-options="pickerOptions"
@input="input(item, index)" @focus="setCurrentTime(item, index)" ref="datePicker">
</el-date-picker>
</el-radio>
</div>
</div>
<div class="top">
<div class="toptop">
<!-- <el-checkbox
v-model="item.checked3"
style="margin-right: 5px"
@change="handleCheckAllChange3($event, item)"
></el-checkbox> -->
<el-radio v-model="item.checked3" :label="3" @change="handleCheckAllChange3($event, item)">
<span>立即执行</span>
</el-radio>
</div>
</div>
<el-card :class="listindex == index ? 'cards' : ''">
<h3 style="height: 20px">
{{ item.taskNodeType == "PHONE_OUTBOUND" ? "电话外呼" : "" }}
{{
item.taskNodeType == "QUESTIONNAIRE_SCALE" ? "问卷量表" : ""
}}
{{
item.taskNodeType == "PROPAGANDA_ARTICLE" ? "宣教文案" : ""
}}
{{ item.taskNodeType == "QUESTIONNAIRE_SCALE" ? "问卷量表" : "" }}
{{ item.taskNodeType == "PROPAGANDA_ARTICLE" ? "宣教文案" : "" }}
{{ item.taskNodeType == "TEXT_REMIND" ? "文字提醒" : "" }}
{{
item.taskNodeType == "ARTIFICIAL_FOLLOW_UP" ? "人工随访" : ""
}}
{{ item.taskNodeType == "ARTIFICIAL_FOLLOW_UP" ? "人工随访" : "" }}
</h3>
</el-card>
</el-timeline-item>
</el-timeline>
</div>
<div class="nodetexts">
<div style="background-color: #fff; border-radius: 10px; padding: 20px" :style="formInline.taskNodeType
? formInline.taskNodeType != 'PHONE_OUTBOUND'
? formInline.taskNodeType == 'TEXT_REMIND'
? 'height:260px'
: 'height:179px'
: 'height:80px'
: 'height:80px'
">
<div style="background-color: #fff; border-radius: 10px; padding: 20px"
:style="formInline.taskNodeType ? formInline.taskNodeType != 'PHONE_OUTBOUND' ? formInline.taskNodeType == 'TEXT_REMIND' ? 'height:260px' : 'height:160px' : 'height:80px' : 'height:80px'">
<el-form :model="formInline" class="demo-form-inline">
<el-form-item label="任务节点类型">
<el-radio-group v-model="formInline.taskNodeType" @change="taskNodeTypechange">
@ -208,65 +170,11 @@
<el-form-item label="问卷模板">
<question @on-template="questionontemplate" :node="formInline.phoneDialMethod"></question>
</el-form-item>
<el-form-item label="" style="margin-left: 57px">
<el-radio-group v-model="formInline.phoneDialMethod">
<el-radio label="">小程序问卷</el-radio>
<el-radio label="AI">AI自动外呼</el-radio>
<el-radio label="COMMON">人工随访</el-radio>
</el-radio-group>
</el-form-item>
<div class="flextow" v-if="
formInline.phoneDialMethod == 'AI' ||
formInline.phoneDialMethod == 'COMMON'
">
<div class="itemlist">
重拨次数
<span>
<el-select v-model="formInline.phoneRedialTimes" style="width: 120px">
<el-option v-for="item in optionslisttime" :key="item.dictValue" :label="item.dictLabel"
:value="item.dictValue">
</el-option>
</el-select>
</span>
</div>
<div class="itemlist">
时间间隔()
<span>
<el-input v-model.number="formInline.phoneTimeInterval" oninput="value=value.replace(/[^\d]/g,'')"
style="width: 100px">
</el-input>
</span>
</div>
<div class="itemlist">
短信提醒
<el-select v-model="formInline.phoneMessageRemind" style="width: 150px">
<el-option v-for="item in optionslist" :key="item.dictValue" :label="item.dictLabel"
:value="item.dictValue">
</el-option>
</el-select>
</div>
<div class="itemlist">
短信模板
<span :class="formInline.phoneMessageRemind == 'NOT_SEND_MESSAGE'
? 'spanname'
: ''
">
<message style="width: 200px" @on-template="messageontemplateMESSAGE"
:templateId="formInline.phoneMessageTemplateId" :templateName="formInline.phoneMessageTemplateName">
</message>
</span>
</div>
</div>
<!-- <el-form-item label="开启人工随访" label-width="150px">
<el-switch
v-model="formInline.phoneDialMethod"
active-color="#13ce66"
active-value="COMMON"
@change="changephoneDialMethodtwo"
inactive-value="AI"
>
<el-form-item label="开启人工随访" label-width="150px">
<el-switch v-model="formInline.phoneDialMethod" active-color="#13ce66" active-value="COMMON"
@change="changephoneDialMethodtwo" inactive-value="AI">
</el-switch>
</el-form-item> -->
</el-form-item>
<!-- <el-form-item label="问卷有效期">
<el-input-number v-model="formInline.questionExpirationDate" :min="1" :max="99"
label="描述文字"></el-input-number>
@ -274,11 +182,8 @@
</el-form-item> -->
</el-form>
</div>
<div v-if="
formInline.taskNodeType == 'TEXT_REMIND' ||
formInline.taskNodeType == 'PROPAGANDA_ARTICLE' ||
formInline.taskNodeType == 'QUESTIONNAIRE_SCALE'
">
<div
v-if="formInline.taskNodeType == 'TEXT_REMIND' || formInline.taskNodeType == 'PROPAGANDA_ARTICLE' || formInline.taskNodeType == 'QUESTIONNAIRE_SCALE'">
<!-- <div class="PushMethodrg" v-if="formInline.taskNodeType == 'ARTIFICIAL_FOLLOW_UP'">
<div class="flex">
<div class="itemlist">推送方式人工电话</div>
@ -396,7 +301,7 @@
<div class="itemlist">
重拨次数
<span>
<el-select v-model="formInline.phoneRedialTimes" style="width: 120px">
<el-select v-model="formInline.phoneRedialTimes" style="width: 100px">
<el-option v-for="item in optionslisttime" :key="item.dictValue" :label="item.dictLabel"
:value="item.dictValue">
</el-option>
@ -421,10 +326,7 @@
</div>
<div class="itemlist">
短信模板
<span :class="formInline.phoneMessageRemind == 'NOT_SEND_MESSAGE'
? 'spanname'
: ''
">
<span :class="formInline.phoneMessageRemind == 'NOT_SEND_MESSAGE' ? 'spanname' : ''">
<message style="width: 200px" @on-template="messageontemplateMESSAGE"
:templateId="formInline.phoneMessageTemplateId" :templateName="formInline.phoneMessageTemplateName">
</message>
@ -449,25 +351,11 @@ import { signrouteadd } from "@/api/system/ManuallyCreatingTasks";
import { getAgencytype } from "@/api/system/agency";
import { list, triggerCondition, getList, } from "@/api/system/specialDiseaseNode";
export default {
components: { scriptphone, question, propaganda, scripts, message, officialAccount, miniProgram },
name: "ManuallyCreatingTasks",
data() {
return {
errorShown: false,
hms: '',
time: '',
datePickerVisible: true,
show: 0,
pickerOptions: {
disabledDate(time) {
//
return time.getTime() < Date.now() - 8.64e7// -8.64e7
//
// return time.getTime() > Date.now() - 8.64e7// -8.64e7
}
},
heightLine: 0,
optionsname: '',
options: [],
@ -476,14 +364,13 @@ export default {
optionslisttime: [],
parentDictCodelist: [],
updata: {
sn: "",
signPatientRecordId: "",
patientId: "",
patientName: "",
departmentId: "",
departmentName: "",
routeName: "",
suitRange: "OUTPATIENT_SERVICE_DISCHARGE",
suitRange: "",
routeNodeList: [],
triggerConditionList: [
{
@ -517,7 +404,7 @@ export default {
{
routeNodeDay: "",
taskNodeType: "",
routeNodeName: "AFTER_VISIT_DISCHARGE",
routeNodeName: "",
// questionExpirationDate: 7,
questionInfoId: "",
questionnaireName: "",
@ -531,11 +418,6 @@ export default {
appletPushSign: "0",
phonePushSign: "1",
phoneDialMethod: "",
plantype: "PLUSDAY",
nodePlanTime: "",
checked1: '',
checked2: '',
checked3: '',
},
],
listindex: 0,
@ -543,12 +425,7 @@ export default {
// dictDataType: "",
};
},
watch: {
},
created() {
console.log(this.$route.query, 'this.$route.quer')
this.infolist();
this.infolistword();
this.infolistMESSAGE();
@ -557,212 +434,16 @@ export default {
this.optiononditionOperator();
this.updata.signPatientRecordId = this.$route.query.signPatientRecordId;
this.updata.patientId = this.$route.query.patientId;
this.updata.sn = this.$route.query.sn;
this.updata.patientName = this.$route.query.patientName;
this.updata.departmentId = this.$route.query.departmentId;
this.updata.departmentName = this.$route.query.departmentName;
this.formInline = this.list[0];
if (this.$route.query.path == '/patient/signRecord') {
this.list[0].checked1 = 1
this.list[0].routeNodeName = 'AFTER_VISIT_DISCHARGE'
this.list[0].plantype = 'PLUSDAY'
}
if (this.$route.query.path == "/patient/patientinfoimport" || this.$route.query.path == "/task/Patientmanagement"
|| this.$route.query.path == "/patient/ImportDetails"
) {
this.list[0].checked2 = 2
this.list[0].routeNodeName = ''
this.list[0].plantype = 'APPOINT'
}
},
// computed: {
// currentDate() {
// return this.formatDate(new Date());
// },
// },
mounted() {
this.getMaxTableHeight()
this.screenChange()
},
methods: {
formatDate(date) {
//
// : "2023-04-01 12:00:00"
return `${date.getFullYear()}-${(date.getMonth() + 1).toString().padStart(2, '0')}-${date.getDate().toString().padStart(2, '0')} ${date.getHours().toString().padStart(2, '0')}:${date.getMinutes().toString().padStart(2, '0')}:${date.getSeconds().toString().padStart(2, '0')}`;
},
// plantype
// CURRENT
// APPOINT
// PLUSDAY
// 1
handleFocus(item) {
console.log(item, 'item,index')
item.checked1 = 1
item.checked2 = ""
item.checked3 = ""
item.nodePlanTime = ""
item.timedata = ""
item.plantype = "PLUSDAY"
},
// 1
handleFocusone(item) {
item.checked1 = 1
item.checked2 = ""
item.checked3 = ""
item.nodePlanTime = ""
item.timedata = ""
item.plantype = "PLUSDAY"
},
// 2
setCurrentTime(item, index) {
console.log(item, 'item,index')
item.checked1 = ""
item.checked2 = 2
item.checked3 = ""
// item.routeNodeName = ""
item.routeNodeDay = ""
item.plantype = "APPOINT"
item.timedata = ""
},
input(item, index) {
this.$forceUpdate()
// const dateParts = item.nodePlanTime.split(' ');
// const date = new Date();
// // const year = date.getFullYear();
// // const month = String(date.getMonth() + 1).padStart(2, '0'); // 01
// // const day = String(date.getDate()).padStart(2, '0');
// const hours = String(date.getHours()).padStart(2, '0');
// const minutes = String(date.getMinutes()).padStart(2, '0');
// const ss = String(date.getSeconds()).padStart(2, '0');
// item.nodePlanTime = dateParts[0]+ ' ' + hours + ':' + minutes + ':' + ss ;
},
// /
handleCheckAllChange1(e, item) {
console.log(e, item, 'value')
item.checked2 = ""
item.checked3 = ""
item.checked1 = 1
item.nodePlanTime = ""
item.timedata = ""
item.plantype = "PLUSDAY"
},
//
handleCheckAllChange2(e, item, index) {
item.checked1 = ""
item.checked3 = ""
console.log(this.list, 'list')
// item.routeNodeName = ""
item.routeNodeDay = ""
item.plantype = "APPOINT"
item.timedata = ""
},
//
handleCheckAllChange3(e, item) {
item.checked1 = ""
item.checked2 = ""
// item.routeNodeName = ""
item.routeNodeDay = ""
console.log(e, item, 'value3')
let yy = new Date().getFullYear();
let mm = (new Date().getMonth() + 1) < 10 ? '0' + (new Date().getMonth() + 1) : (new Date().getMonth() + 1);// 0
let dd = (new Date().getDate()) < 10 ? '0' + (new Date().getDate()) : (new Date().getDate());
let hh = new Date().getHours() < 10 ? '0' + new Date().getHours() : new Date().getHours();
let mf = new Date().getMinutes() < 10 ? '0' + new Date().getMinutes() : new Date().getMinutes();
let ss = new Date().getSeconds() < 10 ? '0' + new Date().getSeconds() : new Date().getSeconds();
var data = yy + '-' + mm + '-' + dd + ' ' + hh + ':' + mf + ':' + ss
item.timedata = data
item.plantype = "CURRENT"
item.nodePlanTime = ""
},
//
upload() {
this.$confirm('保存此任务, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
}).then(() => {
this.updata.routeNodeList = this.list;
var newObj = JSON.parse(JSON.stringify(this.updata));
const invalidTimes = [];
newObj.routeNodeList.forEach(e => {
if (e.timedata) {
e.nodePlanTime = e.timedata
}
const dateParts = e.nodePlanTime.split(' ');
if (dateParts[1] == "00:00:00") {
const date = new Date();
const hours = String(date.getHours()).padStart(2, '0');
const minutes = String(date.getMinutes()).padStart(2, '0');
const ss = String(date.getSeconds()).padStart(2, '0');
e.nodePlanTime = dateParts[0] + ' ' + hours + ':' + minutes + ':' + ss;
}
delete e.timedata;
delete e.checked1;
delete e.checked3;
const startTime = 8;
const endTime = 20;
const parts = e.nodePlanTime.split(' ');
const time = parts[1].split(':');
if (time[0] < startTime || time[0] >= endTime) {
invalidTimes.push(e);
}
})
if (invalidTimes.length > 0) {
this.$message.error("时间点在8:00到20:00之间,请修改时间点");
} else {
signrouteadd(newObj).then((res) => {
var message = ''
if (this.$route.query.path == "/patient/signRecord") {
message = '保存成功,即将返回签约患者列表'
} else if (this.$route.query.path == "/patient/patientinfoimport") {
message = '保存成功,即将返回患者导入列表'
} else if (this.$route.query.path == "/patient/ImportDetails") {
message = '保存成功,即将返回导入明细列表'
}
else if (this.$route.query.path == "/task/Patientmanagement") {
message = '保存成功,即将返回创建任务列表'
}
this.$notify({
type: "success",
title: "提示",
message: message,
duration: 3000,
});
setTimeout(() => {
this.$store
.dispatch("tagsView/delView", this.$route)
.then(({ visitedViews }) => {
this.$router.push({
path: this.$route.query.path
});
});
}, 3000);
}).catch(() => {
});
}
// var nulllength= newObj.routeNodeList.filter(item => item.routeNodeName=="" || item.routeNodeName==null || item.routeNodeName==undefined);
// console.log(nulllength,'nulllength')
// if(nulllength.length>0){
// this.$message.error('');
// return
// }
})
},
Typechange(e) {
this.$forceUpdate();
// this.formInline.radio = e
},
//
taskNodeTypechange(e) {
if (e == 'PHONE_OUTBOUND') {
@ -770,11 +451,6 @@ export default {
} else {
this.formInline.phoneDialMethod = ''
}
if (e == 'QUESTIONNAIRE_SCALE') {
this.formInline.phoneDialMethod = ''
} else {
}
},
//
infolistoptionslistS() {
@ -875,10 +551,6 @@ export default {
var dictType = "suit_range";
getAgencytype(dictType).then((res) => {
this.options = res.data;
if (this.options) {
this.changeoptions(this.updata.suitRange)
}
});
},
infolistword() {
@ -894,7 +566,6 @@ export default {
});
},
changeoptions(e) {
console.log(e, 'e');
let parentDictCode = this.options.find((el) => el.dictValue == e).dictCode;
list(parentDictCode).then((res) => {
this.parentDictCodelist = res.rows;
@ -1005,15 +676,7 @@ export default {
appletPushSign: "0",
phonePushSign: "1",
phoneDialMethod: "",
nodePlanTime: '',
checked1: 1,
checked2: "",
checked3: "",
timedata: "",
});
console.log(this.list, 'this.list');
},
delitem(item, index, list) {
list.splice(index, 1);
@ -1035,6 +698,31 @@ export default {
this.formInline.phoneTemplateName = ''
}
},
upload() {
this.$confirm('保存此任务, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
}).then(() => {
this.updata.routeNodeList = this.list;
signrouteadd(this.updata).then((res) => {
this.$notify({
type: "success",
title: "提示",
message: "保存成功,即将返回签约患者列表",
duration: 3000,
});
setTimeout(() => {
this.$store
.dispatch("tagsView/delView", this.$route)
.then(({ visitedViews }) => {
this.$router.push({
path: "/patient/signRecord",
});
});
}, 3000);
});
})
},
//
getMaxTableHeight() {
const windowInnerHeight = window.innerHeight //
@ -1063,10 +751,6 @@ export default {
float: inline-start !important;
}
::v-deep .el-input.is-disabled .el-input__inner {
background: #fff;
}
.titlemengt {
width: 98.5%;
border-radius: 10px;
@ -1082,7 +766,7 @@ export default {
::-webkit-scrollbar-thumb {
border-radius: 5px;
background: #c0c0c0;
background: #C0C0C0;
}
::-webkit-scrollbar-track {
@ -1150,6 +834,7 @@ export default {
}
.nodesname {
// margin-left: 6%;
// width: 660px;
// display: flex;
@ -1167,6 +852,12 @@ export default {
}
}
.selectnamelist {
// position: absolute;
// right: 54px;
// top: -8px;
}
.PushMethod {
height: 100px;
padding: 20px;
@ -1179,6 +870,8 @@ export default {
align-items: center;
}
.nodes {
// height: var(--heightLine);
background-color: #f1f3f5;
@ -1194,8 +887,9 @@ export default {
// height: calc(100vh - 320px);
height: 100%;
width: 25%;
padding: 0 5px 20px 40px;
padding: 0 40px 20px 40px;
background-color: #fff;
overflow-y: scroll;
.timetitle {
height: 60px;
@ -1206,9 +900,7 @@ export default {
::v-deep .el-timeline {
width: 100%;
overflow-y: auto;
height: calc(100% - 60px);
padding: 15px 30px 0 0 !important;
padding: 15px 0 0 !important;
}
}
@ -1219,37 +911,6 @@ export default {
width: 73%;
// height: calc(100vh - 320px);
height: 100%;
.flextow {
display: flex;
width: 100%;
align-items: center;
// background: red;
justify-content: space-between;
margin-top: -43px;
.itemlist {
height: 30px;
margin-top: 30px;
line-height: 30px;
font-size: 14px;
color: #64666a;
.spanname {
pointer-events: none;
}
::v-deep .el-input__inner {
color: black;
font-size: 14px;
}
span {
color: black;
font-size: 14px;
}
}
}
}
}
@ -1257,7 +918,6 @@ export default {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 10px;
.toptop {
display: flex;
@ -1277,10 +937,6 @@ export default {
}
}
::v-deep .el-timeline-item__node--normal {
left: 0px;
}
::v-deep .el-timeline-item__timestamp {
margin: 0 !important;
padding: 0 !important;
@ -1311,12 +967,4 @@ export default {
::v-deep .el-form-item__content {
display: inline-block !important;
}
::v-deep .el-icon-circle-plus-outline {
cursor: pointer;
}
::v-deep .el-icon-delete {
cursor: pointer;
}
</style>

View File

@ -1,10 +1,10 @@
<template>
<div class="headesurver">
<div class="topheaderSatisfaction">
<div class="header">
<div class="topheader">
<div style="float: right;height:0;">
<el-button style="margin: 10px 10px 0 0;" @click="goback">返回</el-button>
</div>
<div class="usersurve">
<div class="user">
<img class="headsculpture" src="../../../assets/manage/touxiang.png" alt="" v-if="list.sex == 'MALE'" />
<img class="headsculpture" src="../../../assets/manage/nvtouxiang.png" alt="" v-if="list.sex == 'FEMALE'" />
<div class="name">
@ -32,7 +32,7 @@
</div>
</div>
</div>
<div class="informationsurve">
<div class="information">
<div class="top">
<div>身份证号{{ list.cardNo }}</div>
<div>患者电话{{ list.patientPhone }}</div>
@ -313,7 +313,7 @@ export default {
// background: yellow;
}
.headesurver {
.header {
background-color: #f1f3f5;
padding-top: 10px;
@ -406,12 +406,12 @@ export default {
// }
}
.topheaderSatisfaction {
.topheader {
width: 99%;
background-color: #fff;
margin: 0 auto;
.informationsurve {
.information {
display: flex;
flex-wrap: wrap;
padding: 10px 20px;
@ -429,7 +429,7 @@ export default {
}
}
.usersurve {
.user {
width: 100%;
padding: 0 20px;
display: flex;

View File

@ -1,589 +0,0 @@
<template>
<div class="app-container home" ref="layout">
<!-- 搜索条件 -->
<div ref="topform" class="form">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true">
<el-form-item label="任务时间" prop="taskStartTime" label-width="90px">
<el-date-picker
v-model="dischargeTime"
type="daterange"
range-separator="至"
start-placeholder="开始日期"
style="width: 220px"
value-format="yyyy-MM-dd"
end-placeholder="结束日期"
@change="changeTime"
>
</el-date-picker>
</el-form-item>
<el-form-item label="模板名称" prop="questionInfoId">
<span>
<TemplateName
@on-template="messageontemplateword"
:templateId="questionInfoId"
:query="questionInfoIdname"
></TemplateName>
</span>
</el-form-item>
<el-form-item
label="出院/就诊时间"
prop="visitStartTime"
label-width="120px"
>
<el-date-picker
v-model="dischargeTimevisit"
type="daterange"
range-separator="至"
start-placeholder="开始日期"
style="width: 220px"
value-format="yyyy-MM-dd"
end-placeholder="结束日期"
>
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button
type="primary"
icon="el-icon-search"
size="mini"
@click="handleQuery"
>搜索</el-button
>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
>重置</el-button
>
</el-form-item>
</el-form>
</div>
<!-- 底部 -->
<div
ref="table"
:style="{ 'max-height': maxTableHeight + 'px' }"
class="bottomsstics"
>
<!-- 左侧 -->
<div class="left">
<!-- <div> -->
<div
v-for="(item, index) in NameList"
:key="index"
class="itemlist"
:class="itemid == item.id ? 'allactive' : 'all'"
@click="itemdata(item)"
>
<div
style="width: 88%; margin: 0 auto; border-bottom: 1px solid #dcdfe6"
>
<!-- <el-popover
placement="top"
trigger="hover"
:content="item.questionnaireName"
>
<div class="title" slot="reference">
{{ item.questionnaireName }}
</div>
</el-popover> -->
<div class="title" slot="reference">
{{ item.questionnaireName }}
</div>
<div class="progress">时间{{parseTime(item.createTime, "{y}-{m}-{d}")}}
</div>
<!-- <div class="times">填写率:{{ item.totle }}%</div>
<div class="progress">
<el-progress :percentage="50" :show-text="false"></el-progress>
<span>12/45</span>
</div> -->
</div>
</div>
<!-- </div> -->
</div>
<!-- 右侧 -->
<div class="right">
<div class="righttitle">{{ newname }} {{parseTime(time, "{y}-{m}-{d}")}}</div>
<div class="tabledata" v-for="(item, index) in tableData" :key="index">
<div class="toptitle">
{{ index + 1 }}{{ item.questionName }}
<span v-if="item.questionType == 'MULTIPLE_CHOICE'"
>单选题</span
>
<span v-if="item.questionType == 'MULTIPLE_CHOICE_QUESTIONS'"
>多选题</span
>
<span v-if="item.questionType == 'COMBINATION_RADIO_SUBJECT'"
>组合单选题</span
>
<span v-if="item.questionType == 'COMBINATION_MULTIPLE_SUBJECT'"
>组合多选题</span
>
</div>
<div ref="table" class="tables">
<el-table
:max-height="maxTableHeight"
v-loading="loading"
:data="item.questionnaireTaskOptionStatisticsVos"
>
<el-table-column label="选项" align="center" prop="optionName" />
<el-table-column
label="人数"
align="center"
prop="choiceNumber"
/>
<el-table-column
label="比例"
align="center"
prop="choiceProportion"
>
<template slot-scope="scope">
<el-progress
:percentage="
scope.row.choiceProportion
? scope.row.choiceProportion
: 0
"
></el-progress>
</template>
</el-table-column>
<el-table-column
label="操作"
align="center"
class-name="small-padding fixed-width"
>
<template slot-scope="scope">
<el-button
size="mini"
type="text"
@click="handleUpdate(scope.row)"
>查看</el-button
>
</template>
</el-table-column>
</el-table>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import { questionnaireTaskStatistics, selectQuestionInfoList } from '@/api/system/TaskStatistics'
import TemplateName from "@/views/manage/components/TemplateName";
export default {
name: "TaskStatistics",
components: { TemplateName },
data() {
return {
show: false,
maxTableHeight: undefined,
//
dischargeTime: [],
// /
dischargeTimevisit: [],
loading: false,
newname: '',//
time: '',//
NameList: [],
//
tableData: [],
itemid: "",
questionInfoId: '',
questionInfoIdname: 0,
queryParams: {
taskStartTime: null,
taskEndTime: null,
visitStartTime: null,
visitEndTime: null,
questionInfoId: null,
},
}
},
watch: {
dischargeTime: {
handler(val) {
if (val) {
this.queryParams.taskStartTime = this.dischargeTime[0];
this.queryParams.taskEndTime = this.dischargeTime[1];
}else{
this.dischargeTime = []
this.queryParams.taskStartTime = null
this.queryParams.taskEndTime = null
}
},
deep: true,
immediate: true,
},
dischargeTimevisit: {
handler(val) {
if (val) {
this.queryParams.visitStartTime = this.dischargeTimevisit[0];
this.queryParams.visitEndTime = this.dischargeTimevisit[1];
}else{
this.dischargeTimevisit = []
this.queryParams.visitStartTime = null
this.queryParams.visitEndTime = null
}
},
deep: true,
immediate: true,
}
},
created() {
this.getDefaultDateRange()
this.getlistleft()
},
mounted() {
this.getMaxTableHeight()
this.screenChange()
},
methods: {
hidePopover() {
this.showPopover = false;
},
//
getlist() {
questionnaireTaskStatistics(this.queryParams).then(res => {
this.tableData = res.data.data
})
},
//
getlistleft() {
selectQuestionInfoList().then(res => {
this.NameList = res
this.queryParams.questionInfoId = this.NameList[0].id
this.itemid = this.NameList[0].id
this.newname = this.NameList[0].questionnaireName
this.time = this.NameList[0].createTime
this.getlist()
})
},
changeTime(e) {
this.show = false;
},
//
messageontemplateword(item) {
this.queryParams.questionInfoId = item.questionInfoId;
this.itemid = item.questionInfoId
this.newname = item.questionnaireName
this.time = item.createTime
// this.getlist()
// this.tableData=[]
},
//
getDefaultDateRange() {
this.show = true;
const endDate = new Date(); //
const startDate = new Date();
startDate.setDate(endDate.getDate() - 6); // 退
console.log(startDate, endDate);
this.dischargeTime[0] = startDate;
this.dischargeTime[1] = endDate;
if(this.dischargeTime[0]){
this.queryParams.taskStartTime = this.formatDate(this.dischargeTime[0]);
}
if(this.dischargeTime[1]){
this.queryParams.taskEndTime = this.formatDate(this.dischargeTime[1]);
}
},
formatDate(date) {
if(date){
const year = date.getFullYear();
const month = String(date.getMonth() + 1).padStart(2, '0'); // 01
const day = String(date.getDate()).padStart(2, '0');
return `${year}-${month}-${day}`;
}
},
//
handleUpdate(row) {
this.$router.push({
path: "/statisticalAnalysis/datialdata",
query: {
path: "/statisticalAnalysis/TaskStatistics",
questionInfoId: row.questionInfoId ? row.questionInfoId : '',
questionSubjectOptionId: row.questionSubjectOptionId ? row.questionSubjectOptionId : '',
optionChooseSign: row.optionChooseSign ? row.optionChooseSign : '',
},
});
},
//
itemdata(item) {
this.itemid = item.id
this.newname = item.questionnaireName
this.time = item.createTime
this.queryParams.questionInfoId = item.id
// this.getlist()
// this.queryParams.questionInfoId = null
this.questionInfoId = null
this.questionInfoIdname += 1;
this.getlist()
// var obj = {
// questionInfoId: item.id,
// taskStartTime: this.queryParams.taskStartTime,
// taskEndTime: this.queryParams.taskEndTime,
// visitStartTime: this.queryParams.visitStartTime,
// visitEndTime: this.queryParams.visitEndTime,
// }
// questionnaireTaskStatistics(obj).then(res => {
// this.tableData = res.data.data
// })
},
//
resetQuery() {
this.queryParams.questionInfoId = null,
this.questionInfoId = null,
this.dischargeTime = [];
this.dischargeTimevisit = [];
this.queryParams.taskStartTime = "";
this.queryParams.taskEndTime = "";
this.resetForm("queryForm");
this.questionInfoIdname += 1;
console.log(this.queryParams, 'queryParams0000000000');
this.getlistleft();
},
//
handleQuery() {
if(!this.queryParams.taskStartTime && !this.queryParams.taskEndTime &&
!this.queryParams.questionInfoId && !this.queryParams.visitStartTime &&
!this.queryParams.visitStartTime
){
this.itemid=null
this.newname=''//
this.time= ''//
}
if (this.dischargeTime?.length > 0) {
if (this.show == true) {
this.queryParams.taskStartTime = this.formatDate(this.dischargeTime[0]);
this.queryParams.taskEndTime = this.formatDate(this.dischargeTime[1]);
} else if (this.show == false) {
this.queryParams.taskStartTime = this.dischargeTime[0];
this.queryParams.taskEndTime = this.dischargeTime[1];
}
}
else {
this.queryParams.taskStartTime = null;
this.queryParams.taskEndTime = null;
}
if (this.dischargeTimevisit?.length > 0) {
this.queryParams.visitStartTime = this.dischargeTimevisit[0];
this.queryParams.visitEndTime = this.dischargeTimevisit[1];
} else {
this.queryParams.visitStartTime = null;
this.queryParams.visitEndTime = null;
}
this.getlist();
},
//
getMaxTableHeight() {
const windowInnerHeight = window.innerHeight //
const formDiv = this.$refs.topform
this.maxTableHeight = windowInnerHeight - 104 - this.getBoxHeight(formDiv)
},
// resize
screenChange() {
// resizeresize
window.addEventListener('resize', this.getMaxTableHeight, true)
//
//
// beforeDestroy
this.$once('hook:beforeDestroy', () => {
window.removeEventListener('resize', this.getMaxTableHeight, true)
})
},
}
}
</script>
<style scoped lang="scss">
::-webkit-scrollbar {
width: 13px;
}
::-webkit-scrollbar-thumb {
border-radius: 13px;
background: #c0c0c0;
}
::-webkit-scrollbar-track {
width: 13px;
}
::v-deep .el-progress {
width: 64%;
display: inline-block;
}
.app-container {
padding: 0 !important;
}
.app-container {
background: #f1f3f5;
width: 100%;
padding: 20px 20px 20px 20px;
}
.home {
.form {
width: 99%;
margin: 10px auto;
padding: 13px 0 0 0;
background-color: #fff !important;
border-top-left-radius: 10px;
border-top-right-radius: 10px;
margin: 10px auto 5px;
}
.bottomsstics {
width: 99%;
margin: 0 auto;
height: 100%;
overflow-y: auto;
display: flex;
justify-content: space-around;
.left {
height: 100%;
width: 18%;
background: #fff;
overflow-y: auto;
// margin-left: 1%;
.allactive {
width: 100%;
background: #e8f4ff;
}
.all {
width: 100%;
margin: 0 auto;
// height: 99px;
}
.itemlist {
// width: 94%;
margin: 0 auto;
// height: 99px;
.title {
font-size: 19px;
font-weight: 600;
color: black;
// overflow: hidden;
// text-overflow: ellipsis;
// white-space: nowrap;
// padding: 8px 0 10px 0px;
padding: 23px 0 10px 0px;
text-align: left;
}
.times {
padding: 0px 0 10px 0px;
font-size: 16px;
color: #aaacb2;
}
.progress {
font-size: 16px;
color: #aaacb2;
text-align: left;
padding: 0px 0 23px 0px;
}
span {
margin-left: 17px;
color: #aaacb2;
}
}
}
.right {
width: 100%;
height: 100%;
background: #fff;
margin-left: 4px;
overflow-y: auto;
.righttitle {
font-size: 19px;
font-weight: 600;
color: black;
padding: 20px 0 10px 30px;
}
.tabledata {
margin-bottom: 13px;
.tables {
margin: 0 auto;
width: 97%;
}
.toptitle {
font-size: 18px;
font-weight: 600;
color: black;
padding: 20px 0 15px 30px;
}
}
}
}
.col-item {
margin-bottom: 20px;
}
ul {
padding: 0;
margin: 0;
}
font-family: "open sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
font-size: 13px;
color: #676a6c;
overflow-x: hidden;
overflow-y: hidden;
ul {
list-style-type: none;
}
h4 {
margin-top: 0px;
}
h2 {
margin-top: 10px;
font-size: 26px;
font-weight: 100;
}
p {
margin-top: 10px;
b {
font-weight: 700;
}
}
.update-log {
ol {
display: block;
list-style-type: decimal;
margin-block-start: 1em;
margin-block-end: 1em;
margin-inline-start: 0;
margin-inline-end: 0;
padding-inline-start: 40px;
}
}
}
</style>

File diff suppressed because it is too large Load Diff

View File

@ -724,10 +724,6 @@ export default {
},
//
rules: {
nodeType:[
{ required: true, message: "节点类型不能为空", trigger: "blur" },
],
agencyName: [
{ required: true, message: "机构名称不能为空", trigger: "blur" },
],
@ -1113,7 +1109,7 @@ export default {
this.title = "添加机构信息";
},
/** 修改按钮操作 */
async handleUpdate(row) {
handleUpdate(row) {
this.reset();
this.disabled = true;
@ -1122,7 +1118,7 @@ export default {
this.$message.error("请先选择机构");
} else {
// const id = row.id || this.ids;
await getAgency(this.id).then((response) => {
getAgency(this.id).then((response) => {
console.log(response.data, "response.data.parentId");
this.form = response.data;
this.form.communityCode = response.data.communityName;

View File

@ -324,7 +324,7 @@
<el-button
type="primary"
style="width: 15px; height: 15px"
v-if="form.departmentId == scope.row.id"
v-if="form.departmentId == scope.row.departmentCode"
circle
@click="nurseclick(scope.row)"
></el-button>
@ -441,8 +441,9 @@ export default {
},
//
nurseclick(row) {
this.form.departmentId = row.id;
this.form.departmentId = row.departmentCode;
this.form.departmentName = row.departmentName;
// console.log(this.departmentName, "0000");
this.innerVisibleshow = false;
},
updateCPage(index, size) {

View File

@ -1,45 +1,101 @@
<template>
<div class="app-container">
<el-button size="small" @click="classificationOpen = true" style="
<el-button
size="small"
@click="classificationOpen = true"
style="
width: 200px;
font-size: 14px;
text-align: left;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
" :style="handleselectName ? 'color:black' : 'color:#C0C4CC'">
{{ handleselectName ? handleselectName : "选择公众号模板" }}
</el-button>
<el-dialog title="公众号模板选择" :visible.sync="classificationOpen" width="70%" :before-close="classificationOpenfalse">
"
:style="handleselectName ? 'color:black' : 'color:#C0C4CC'"
>{{ handleselectName ? handleselectName : "选择公众号模板" }}</el-button
>
<el-dialog
title="公众号模板选择"
:visible.sync="classificationOpen"
width="70%"
:before-close="classificationOpenfalse"
>
<el-row :gutter="20">
<!--部门数据-->
<el-col :span="6" :xs="24">
<DepartmentList ref="DepartmentList" :modal="false" @clickdepartment="clickdepartment"
:methods="'listWechatTemplateNumtwo'">
<DepartmentList
ref="DepartmentList"
:modal="false"
@clickdepartment="clickdepartment"
:methods="'listWechatTemplateNumtwo'"
>
</DepartmentList>
</el-col>
<!--用户数据-->
<el-col :span="18" :xs="24">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch"
label-width="68px">
<el-form-item label="微信模版名称" prop="wechatTemplateName" label-width="100px">
<el-input v-model="queryParams.wechatTemplateName" placeholder="请输入模版名称" clearable
@keyup.enter.native="handleQuery" />
<el-form
:model="queryParams"
ref="queryForm"
size="small"
:inline="true"
v-show="showSearch"
label-width="68px"
>
<el-form-item
label="微信模版名称"
prop="wechatTemplateName"
label-width="100px"
>
<el-input
v-model="queryParams.wechatTemplateName"
placeholder="请输入模版名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="模板ID" prop="templateId">
<el-input v-model="queryParams.templateId" placeholder="请输入模板ID" clearable
@keyup.enter.native="handleQuery" />
<el-input
v-model="queryParams.templateId"
placeholder="请输入模板ID"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
<el-button
type="primary"
icon="el-icon-search"
size="mini"
@click="handleQuery"
>搜索</el-button
>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
>重置</el-button
>
</el-form-item>
</el-form>
<el-table v-loading="loading" :data="templateList" @row-dblclick="handleselect">
<el-table-column type="index" width="48" align="center" label="序号" />
<el-table-column label="微信模版名称" align="center" prop="wechatTemplateName" />
<el-table
v-loading="loading"
:data="templateList"
@row-dblclick="handleselect"
>
<el-table-column
type="index"
width="48"
align="center"
label="序号"
/>
<el-table-column
label="微信模版名称"
align="center"
prop="wechatTemplateName"
/>
<el-table-column label="模板ID" align="center" prop="templateId" />
<el-table-column label="模板来源" align="center" prop="templateSource">
<el-table-column
label="模板来源"
align="center"
prop="templateSource"
>
<template slot-scope="scope">
{{
scope.row.templateSource == "WE_CHAT_APPLET" ? "小程序" : ""
@ -51,23 +107,55 @@
}}
</template>
</el-table-column>
<el-table-column label="适用任务类型" align="center" prop="suitTaskTypeName" :show-overflow-tooltip="true" />
<el-table-column label="病种名称" align="center" prop="diseaseTypeName" />
<el-table-column label="模板内容" align="center" prop="templateContent" />
<el-table-column
label="适用任务类型"
align="center"
prop="suitTaskTypeName"
:show-overflow-tooltip="true"
/>
<el-table-column
label="病种名称"
align="center"
prop="diseaseTypeName"
/>
<el-table-column
label="模板内容"
align="center"
prop="templateContent"
/>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<el-table-column
label="操作"
align="center"
class-name="small-padding fixed-width"
>
<template slot-scope="scope">
<el-button size="mini" type="text" @click="handleselect(scope.row)"
v-if="handleselectId != scope.row.templateId">选择</el-button>
<el-button size="mini" type="text" @click="nohandleselect(scope.row)"
v-if="handleselectId == scope.row.templateId">取消选择</el-button>
<el-button
size="mini"
type="text"
@click="handleselect(scope.row)"
v-if="handleselectId != scope.row.templateId"
>选择</el-button
>
<el-button
size="mini"
type="text"
@click="nohandleselect(scope.row)"
v-if="handleselectId == scope.row.templateId"
>取消选择</el-button
>
</template>
</el-table-column>
</el-table>
</el-col>
</el-row>
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
@pagination="getList" />
<pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
</el-dialog>
</div>
</template>
@ -154,17 +242,17 @@ export default {
nohandleselect() {
this.handleselectId = ''
this.handleselectName = ''
this.$emit("on-template", { templateId: '', templateName: '', templateContent: "", officialTemplateCode: "" });
this.$emit("on-template", { templateId: '', templateName: '', templateContent: "",officialTemplateCode:"" });
},
handleselect(item) {
this.handleselectId = item.id
this.handleselectName = item.wechatTemplateName
this.$emit("on-template", {
this.$emit("on-template", {
templateId: item.id,
templateName: item.wechatTemplateName,
templateContent: item.textMessageContent,
officialTemplateCode: item.officialTemplateCode,
});
templateName: item.wechatTemplateName,
templateContent: item.textMessageContent,
officialTemplateCode: item.officialTemplateCode,
});
this.classificationOpen = false
},
/** 查询微信模板信息列表 */

View File

@ -26,26 +26,11 @@
@keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="宣教类型" prop="propagandaType">
<el-select v-model="queryParams.propagandaType" placeholder="请选择" clearable>
<el-select v-model="queryParams.propagandaType" placeholder="请选择">
<el-option v-for="item in optionstype" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="来源" prop="source">
<el-select
v-model="queryParams.source"
placeholder="请选择"
clearable
>
<el-option
v-for="item in optionspublick"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
@ -127,18 +112,6 @@ export default {
handleselectName: "",
handleselectId: "",
classificationOpen: false,
//
optionspublick:[
{
value: 'PRIVATE',
label: '私有'
},
{
value: 'PUBLIC',
label: '公共'
},
],
optionstype: [
{
value: "MEDICATION_KNOWLEDGE",
@ -182,7 +155,6 @@ export default {
queryParams: {
pageNum: 1,
pageSize: 10,
source:'PRIVATE',
patientId: null,
propagandaId: null,
departmentName: null,
@ -308,10 +280,7 @@ export default {
},
/** 重置按钮操作 */
resetQuery() {
this.queryParams.propagandaTitle = null
this.queryParams.propagandaType=null
this.queryParams.source=null
// this.resetForm("queryForm");
this.resetForm("queryForm");
this.$refs.DepartmentList.resetQuery()
// this.handleQuery();
},

View File

@ -14,7 +14,6 @@
<span v-if="item.questionType == 'COMBINATION_SCORING_SUBJECT'">组合打分题</span>
<span v-if="item.questionType == 'DATE_BLANKS_SUBJECT'">日期填空题</span>
<span v-if="item.questionType == 'TIME_BLANKS_SUBJECT'">时间填空题</span>
<span v-if="item.questionType == 'FEEDBACK_BLANKS_SUBJECT'">反馈填空题</span>
<el-radio-group v-if="item.questionType == 'MULTIPLE_CHOICE' ||
item.questionType == 'COMBINATION_RADIO_SUBJECT' ||
item.questionType == 'SCORING_QUESTIONS' ||
@ -34,8 +33,7 @@
</el-checkbox-group>
<!-- 填空题组合填空 -->
<div v-if="item.questionType == 'FILL_IN_THE_BLANKS' ||
item.questionType == 'COMBINATION_BLANKS_SUBJECT' ||
item.questionType == 'FEEDBACK_BLANKS_SUBJECT'
item.questionType == 'COMBINATION_BLANKS_SUBJECT'
" class="tk">
<el-input v-model="item.fillBlanksAnswer" disabled placeholder="请输入答案" type="textarea" />
<!-- <el-input></el-input> -->

File diff suppressed because it is too large Load Diff

View File

@ -13,285 +13,103 @@
/>
</div>-->
<div class="head-container">
<el-tree
:data="deptOptions"
:props="defaultProps"
:expand-on-click-node="false"
:filter-node-method="filterNode"
ref="tree"
highlight-current
@node-click="handleNodeClick"
/>
<el-tree :data="deptOptions" :props="defaultProps" :expand-on-click-node="false"
:filter-node-method="filterNode" ref="tree" highlight-current @node-click="handleNodeClick" />
</div>
</el-col>
<el-col :span="19" :xs="24">
<div ref="topform" class="form">
<el-form
:model="queryParams"
ref="queryForm"
size="small"
:inline="true"
v-show="showSearch"
label-width="68px"
>
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch"
label-width="68px">
<el-form-item label="科室名称" prop="departmentName">
<el-input
maxlength="100"
v-model="queryParams.departmentName"
placeholder="请输入科室名称"
clearable
@keyup.enter.native="handleQuery"
/>
<el-input maxlength="100" v-model="queryParams.departmentName" placeholder="请输入科室名称" clearable
@keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="科室代码" prop="departmentCode">
<el-input
maxlength="30"
v-model="queryParams.departmentCode"
placeholder="请输入科室代码"
clearable
@keyup.enter.native="handleQuery"
/>
<el-input maxlength="30" v-model="queryParams.departmentCode" placeholder="请输入科室代码" clearable
@keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item>
<el-button
type="primary"
icon="el-icon-search"
size="mini"
@click="handleQuery"
>搜索</el-button
>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
>重置</el-button
>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
</div>
<div ref="mb8" class="mb8">
<el-row :gutter="10" class="">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['system:department:add']"
>新增</el-button
>
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
v-hasPermi="['system:department:add']">新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['system:department:edit']"
>修改</el-button
>
<el-button type="success" plain icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate"
v-hasPermi="['system:department:edit']">修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['system:department:remove']"
>删除</el-button
>
<el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple"
@click="handleDelete" v-hasPermi="['system:department:remove']">删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="info"
plain
icon="el-icon-upload2"
size="mini"
@click="handleImport"
v-hasPermi="['system:person:importStationPerson']"
>导入</el-button
>
<el-button type="info" plain icon="el-icon-upload2" size="mini" @click="handleImport"
v-hasPermi="['system:person:importStationPerson']">导入</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['system:department:export']"
>导出</el-button
>
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport"
v-hasPermi="['system:department:export']">导出</el-button>
</el-col>
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
</div>
<div ref="table">
<el-table
:max-height="maxTableHeight"
v-loading="loading"
:data="departmentList"
@selection-change="handleSelectionChange"
>
<el-table :max-height="maxTableHeight" v-loading="loading" :data="departmentList"
@selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column
label="科室名称"
align="center"
prop="departmentName"
/>
<el-table-column
label="科室代码"
align="center"
prop="departmentCode"
:show-overflow-tooltip="true"
/>
<el-table-column
label="科室类型"
align="center"
prop="departmentType"
>
<!-- <template slot-scope="scope">
{{
scope.row.departmentType == "ADMINISTRATION_LOGISTICS"
? "行政后勤类"
: ""
}}
{{
scope.row.departmentType == "MEDICAL_ASSISTANCE"
? "医疗辅助类"
: ""
}}
{{
scope.row.departmentType == "MEDICAL_TECHNOLOGY"
? "医疗技术类"
: ""
}}
{{
scope.row.departmentType == "CLINICAL_SERVICES"
? "临床服务类"
: ""
}}
</template> -->
</el-table-column>
<el-table-column
label="提供服务类别"
align="center"
prop="provideServiceCategory"
>
<!-- <template slot-scope="scope"
>{{
scope.row.provideServiceCategory == "OUTPATIENT_SERVICE"
? "门诊"
: ""
}}
{{
scope.row.provideServiceCategory == "EMERGENCY_TREATMENT"
? "急诊"
: ""
}}
{{
scope.row.provideServiceCategory == "BE_HOSPITALIZED"
? "住院"
: ""
}}
{{ scope.row.provideServiceCategory == "WARD" ? "病区" : "" }}
{{
scope.row.provideServiceCategory == "MEDICAL_TECHNOLOGY"
? "医技"
: ""
}}
{{ scope.row.provideServiceCategory == "DRUG" ? "药剂" : "" }}
{{
scope.row.provideServiceCategory == "FINANCE" ? "财务" : ""
}}
{{
scope.row.provideServiceCategory == "ADMINISTRATION"
? "行政"
: ""
}}
{{
scope.row.provideServiceCategory == "PHARMACY" ? "药房" : ""
}}
{{
scope.row.provideServiceCategory == "DRUG_STORAGE"
? "药库"
: ""
}}
{{
scope.row.provideServiceCategory == "PUBLIC_HEALTH"
? "公卫"
: ""
}}
</template> -->
</el-table-column
>
<el-table-column
label="科室电话"
align="center"
prop="departmentPhone"
/>
<el-table-column
label="操作"
align="center"
class-name="small-padding fixed-width"
>
<el-table-column label="科室名称" align="center" prop="departmentName" />
<el-table-column label="科室代码" align="center" prop="departmentCode" :show-overflow-tooltip="true" />
<el-table-column label="科室类型" align="center" prop="departmentType">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['system:department:edit']"
>修改</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['system:department:remove']"
>删除</el-button
>
{{ scope.row.departmentType == "ADMINISTRATION_LOGISTICS" ? "行政后勤类" : "" }}
{{ scope.row.departmentType == "MEDICAL_ASSISTANCE" ? "医疗辅助类" : "" }}
{{ scope.row.departmentType == "MEDICAL_TECHNOLOGY" ? "医疗技术类" : "" }}
{{ scope.row.departmentType == "CLINICAL_SERVICES" ? "临床服务类" : "" }}
</template>
</el-table-column>
<el-table-column label="提供服务类别" align="center" prop="provideServiceCategory">
<template slot-scope="scope">{{ scope.row.provideServiceCategory == "OUTPATIENT_SERVICE" ? "门诊" : "" }}
{{ scope.row.provideServiceCategory == "EMERGENCY_TREATMENT" ? "急诊" : "" }}
{{ scope.row.provideServiceCategory == "BE_HOSPITALIZED" ? "住院" : "" }}
{{ scope.row.provideServiceCategory == "WARD" ? "病区" : "" }}
{{ scope.row.provideServiceCategory == "MEDICAL_TECHNOLOGY" ? "医技" : "" }}
{{ scope.row.provideServiceCategory == "DRUG" ? "药剂" : "" }}
{{ scope.row.provideServiceCategory == "FINANCE" ? "财务" : "" }}
{{ scope.row.provideServiceCategory == "ADMINISTRATION" ? "行政" : "" }}
{{ scope.row.provideServiceCategory == "PHARMACY" ? "药房" : "" }}
{{ scope.row.provideServiceCategory == "DRUG_STORAGE" ? "药库" : "" }}
{{ scope.row.provideServiceCategory == "PUBLIC_HEALTH" ? "公卫" : "" }}
</template></el-table-column>
<el-table-column label="科室电话" align="center" prop="departmentPhone" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
v-hasPermi="['system:department:edit']">修改</el-button>
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
v-hasPermi="['system:department:remove']">删除</el-button>
</template>
</el-table-column>
</el-table>
</div>
<!-- <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize" @pagination="getList" /> -->
<myPagination
v-show="total > 0"
:total="total"
:pageSize="queryParams.pageSize"
:indexFromWrap="queryParams.pageNum"
@updateCPage="updateCPage"
></myPagination>
<myPagination v-show="total > 0" :total="total" :pageSize="queryParams.pageSize"
:indexFromWrap="queryParams.pageNum" @updateCPage="updateCPage"></myPagination>
</el-col>
</el-row>
<!-- 导入 -->
<el-dialog
:title="upload.title"
:visible.sync="upload.open"
width="400px"
append-to-body
>
<el-upload
ref="upload"
:limit="1"
accept=".xlsx, .xls"
:headers="upload.headers"
:action="upload.url"
:disabled="upload.isUploading"
:on-progress="handleFileUploadProgress"
:on-success="handleFileSuccess"
:auto-upload="false"
drag
>
<el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
<el-upload ref="upload" :limit="1" accept=".xlsx, .xls" :headers="upload.headers" :action="upload.url"
:disabled="upload.isUploading" :on-progress="handleFileUploadProgress" :on-success="handleFileSuccess"
:auto-upload="false" drag>
<i class="el-icon-upload"></i>
<div class="el-upload__text">
将文件拖到此处
@ -299,13 +117,8 @@
</div>
<div class="el-upload__tip text-center" slot="tip">
<span>仅允许导入xlsxlsx格式文件</span>
<el-link
type="primary"
:underline="false"
style="font-size: 12px; vertical-align: baseline"
@click="importTemplate"
>下载模板</el-link
>
<el-link type="primary" :underline="false" style="font-size: 12px; vertical-align: baseline"
@click="importTemplate">下载模板</el-link>
</div>
</el-upload>
<div slot="footer" class="dialog-footer">
@ -314,19 +127,8 @@
</div>
</el-dialog>
<!-- 添加或修改科室信息对话框 -->
<el-dialog
:title="title"
:visible.sync="open"
width="1000px"
append-to-body
>
<el-form
ref="form"
:model="form"
:rules="rules"
label-width="120px"
:inline="true"
>
<el-dialog :title="title" :visible.sync="open" width="1000px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="120px" :inline="true">
<!-- <el-form-item label="上级科室id" prop="parentDepartmentId">
<el-input
v-model="form.parentDepartmentId"
@ -345,40 +147,19 @@
<div class="nameinformation">基本信息</div>
<div class="content">
<el-form-item label="科室名称" prop="departmentName">
<el-input
maxlength="100"
v-model="form.departmentName"
placeholder="请输入科室名称"
/>
<el-input maxlength="100" v-model="form.departmentName" placeholder="请输入科室名称" />
</el-form-item>
<el-form-item label="科室代码" prop="departmentCode">
<el-input
maxlength="30"
onKeyUp="value=value.replace(/[\W]/g,'')"
v-model="form.departmentCode"
placeholder="请输入科室代码"
/>
<el-input maxlength="30" onKeyUp="value=value.replace(/[\W]/g,'')" v-model="form.departmentCode"
placeholder="请输入科室代码" />
</el-form-item>
<el-form-item label="科室简称" prop="departmentAbbreviation">
<el-input
maxlength="100"
v-model="form.departmentAbbreviation"
placeholder="请输入科室简称"
/>
<el-input maxlength="100" v-model="form.departmentAbbreviation" placeholder="请输入科室简称" />
</el-form-item>
<el-form-item label="科室类型" prop="departmentType">
<el-select
v-model="form.departmentType"
placeholder="请选择"
style="width: 205px"
clearable=""
>
<el-option
v-for="item in departmentoptions"
:key="item.dictValue"
:label="item.dictLabel"
:value="item.dictValue"
>
<el-select v-model="form.departmentType" placeholder="请选择" style="width: 205px" clearable="">
<el-option v-for="item in departmentoptions" :key="item.dictValue" :label="item.dictLabel"
:value="item.dictValue">
</el-option>
</el-select>
</el-form-item>
@ -389,58 +170,26 @@
/>
</el-form-item> -->
<el-form-item label="科室负责人姓名" prop="departmentPersonName">
<el-input
maxlength="20"
v-model="form.departmentPersonName"
placeholder="请输入科室负责人姓名"
/>
<el-input maxlength="20" v-model="form.departmentPersonName" placeholder="请输入科室负责人姓名" />
</el-form-item>
<el-form-item label="节点类型" prop="nodeType">
<el-select
v-model="form.nodeType"
placeholder="请选择"
style="width: 205px"
clearable
>
<el-option
v-for="item in nodeTypeoptions"
:key="item.dictValue"
:label="item.dictLabel"
:value="item.dictValue"
>
<el-select v-model="form.nodeType" placeholder="请选择" style="width: 205px" clearable>
<el-option v-for="item in nodeTypeoptions" :key="item.dictValue" :label="item.dictLabel"
:value="item.dictValue">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="所属机构" prop="hospitalAgencyName">
<el-cascader
clearable
:props="{ checkStrictly: true }"
:options="treeOptions"
@change="change"
style="width: 205px; color: black"
v-model="form.hospitalAgencyIdtwo"
:show-all-levels="false"
:placeholder="
form.hospitalAgencyName ? form.hospitalAgencyName : ''
"
ref="cascader"
:key="isResouceShow"
></el-cascader>
<el-cascader clearable :props="{ checkStrictly: true }" :options="treeOptions" @change="change"
style="width: 205px; color: black" v-model="form.hospitalAgencyIdtwo" :show-all-levels="false"
:placeholder="form.hospitalAgencyName ? form.hospitalAgencyName : ''" ref="cascader"
:key="isResouceShow"></el-cascader>
</el-form-item>
<el-form-item label="上级科室" prop="parentDepartmentId">
<el-select
v-model="form.parentDepartmentName"
placeholder="请选择"
style="width: 205px"
@change="changeparentDepartment"
clearable
>
<el-option
v-for="item in optionsparentDepartment"
:key="item.id"
:label="item.departmentName"
:value="item.id"
>
<el-select v-model="form.parentDepartmentName" placeholder="请选择" style="width: 205px"
@change="changeparentDepartment" clearable>
<el-option v-for="item in optionsparentDepartment" :key="item.id" :label="item.departmentName"
:value="item.id">
</el-option>
</el-select>
<!-- <el-cascader
@ -463,35 +212,16 @@
<div class="nameinformation">扩展信息</div>
<div class="content">
<el-form-item label="提供服务类别" prop="provideServiceCategory">
<el-select
clearable
v-model="form.provideServiceCategory"
placeholder="请选择"
style="width: 205px"
>
<el-option
v-for="item in options"
:key="item.dictValue"
:label="item.dictLabel"
:value="item.dictValue"
>
<el-select clearable v-model="form.provideServiceCategory" placeholder="请选择" style="width: 205px">
<el-option v-for="item in options" :key="item.dictValue" :label="item.dictLabel" :value="item.dictValue">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="细分类别" prop="subdivisionCategoryId">
<el-select
v-model="form.subdivisionCategoryName"
placeholder="请选择"
style="width: 205px"
clearable
@change="optionsubdivision"
>
<el-option
v-for="item in optionsubdivisionCategory"
:key="item.subdivisionCategoryCode"
:label="item.subdivisionCategoryName"
:value="item.subdivisionCategoryCode"
>
<el-select v-model="form.subdivisionCategoryName" placeholder="请选择" style="width: 205px" clearable
@change="optionsubdivision">
<el-option v-for="item in optionsubdivisionCategory" :key="item.subdivisionCategoryCode"
:label="item.subdivisionCategoryName" :value="item.subdivisionCategoryCode">
</el-option>
</el-select>
</el-form-item>
@ -502,18 +232,9 @@
/>
</el-form-item> -->
<el-form-item label="标准科室对照" prop="normDepartmentCompareId">
<el-select
v-model="form.normDepartmentCompareId"
placeholder="请选择"
style="width: 205px"
clearable
>
<el-option
v-for="item in compareList"
:key="item.departmentId"
:label="item.departmentName"
:value="item.departmentId"
>
<el-select v-model="form.normDepartmentCompareId" placeholder="请选择" style="width: 205px" clearable>
<el-option v-for="item in compareList" :key="item.departmentId" :label="item.departmentName"
:value="item.departmentId">
</el-option>
</el-select>
<!-- <el-input
@ -528,48 +249,24 @@
/>
</el-form-item> -->
<el-form-item label="编制床位数" prop="prepareBedsCount">
<el-input
maxlength="8"
onKeyUp="value=value.replace(/[\W]/g,'')"
v-model="form.prepareBedsCount"
placeholder="请输入编制床位数"
/>
<el-input maxlength="8" onKeyUp="value=value.replace(/[\W]/g,'')" v-model="form.prepareBedsCount"
placeholder="请输入编制床位数" />
</el-form-item>
<el-form-item label="科室电话" prop="departmentPhone">
<el-input
maxlength="12"
onKeyUp="value=value.replace(/[\W]/g,'')"
v-model="form.departmentPhone"
placeholder="请输入科室电话"
/>
<el-input maxlength="12" onKeyUp="value=value.replace(/[\W]/g,'')" v-model="form.departmentPhone"
placeholder="请输入科室电话" />
</el-form-item>
<el-form-item label="科室邮箱" prop="departmentMail">
<el-input
maxlength="20"
v-model="form.departmentMail"
placeholder="请输入科室邮箱"
/>
<el-input maxlength="20" v-model="form.departmentMail" placeholder="请输入科室邮箱" />
</el-form-item>
<el-form-item label="成立日期" prop="establishDate">
<el-date-picker
clearable
v-model="form.establishDate"
type="date"
style="width: 205px"
value-format="yyyy-MM-dd"
placeholder="请选择成立日期"
>
<el-date-picker clearable v-model="form.establishDate" type="date" style="width: 205px"
value-format="yyyy-MM-dd" placeholder="请选择成立日期">
</el-date-picker>
</el-form-item>
<el-form-item label="撤销日期" prop="revokeDate">
<el-date-picker
clearable
v-model="form.revokeDate"
type="date"
style="width: 205px"
value-format="yyyy-MM-dd"
placeholder="请选择撤销日期"
>
<el-date-picker clearable v-model="form.revokeDate" type="date" style="width: 205px"
value-format="yyyy-MM-dd" placeholder="请选择撤销日期">
</el-date-picker>
</el-form-item>
</div>
@ -728,8 +425,8 @@ export default {
id: "",
//
rules: {
nodeType: [
{ required: true, message: "节点类型不能为空", trigger: "blur" },
nodeType:[
{ required: true, message: "节点类型不能为空", trigger: "blur" },
],
hospitalAgencyName: [
{ required: true, message: "所属机构不能为空", trigger: "blur" },
@ -844,6 +541,7 @@ export default {
},
//
change(e) {
console.log(this.form.hospitalAgencyIdtwo)
if (e) {
this.form.hospitalAgencyId = e[e.length - 1];
if (this.form.hospitalAgencyId) {
@ -976,7 +674,6 @@ export default {
createTime: null,
updateBy: null,
updateTime: null,
parentDepartmentName:null,
};
this.resetForm("form");
},
@ -996,46 +693,12 @@ export default {
this.single = selection.length !== 1;
this.multiple = !selection.length;
},
getLeafIds(nodes) {
console.log(nodes, ';node')
this.form.hospitalAgencyIdtwo = JSON.parse(localStorage.getItem('user')).hospitalAgencyId;
let leafIds = [];
nodes.forEach(node => {
if (node.id == this.form.hospitalAgencyIdtwo) {
this.form.hospitalAgencyName = node.label;
} else {
if (node.children) {
// getLeafIds
leafIds = leafIds.concat(this.getLeafIds(node.children));
} else {
// id
leafIds.push(node.id);
}
}
});
return leafIds;
},
/** 新增按钮操作 */
handleAdd() {
this.getinfo()
this.reset();
this.open = true;
this.title = "添加科室信息";
if (localStorage.getItem('roleKey') != 'admin') {
this.getLeafIds(this.treeOptions)
}
this.getinfo()
},
/** 修改按钮操作 */
handleUpdate(row) {
@ -1067,10 +730,6 @@ export default {
this.getList();
});
} else {
if (!this.form.hospitalAgencyId) {
this.form.hospitalAgencyId = this.form.hospitalAgencyIdtwo
}
addDepartment(this.form).then((response) => {
this.$modal.msgSuccess("新增成功");
this.open = false;

File diff suppressed because it is too large Load Diff

View File

@ -141,8 +141,6 @@
<span v-if="item.questionType == 'TIME_BLANKS_SUBJECT'"
>时间填空题</span
>
<span v-if="item.questionType == 'FEEDBACK_BLANKS_SUBJECT'">反馈填空题</span>
<el-radio-group
v-if="
item.questionType == 'MULTIPLE_CHOICE' ||
@ -185,8 +183,7 @@
style="margin: 20px 0 10px 30px"
v-if="
item.questionType == 'FILL_IN_THE_BLANKS' ||
item.questionType == 'COMBINATION_BLANKS_SUBJECT' ||
item.questionType == 'FEEDBACK_BLANKS_SUBJECT'
item.questionType == 'COMBINATION_BLANKS_SUBJECT'
"
class="tk"
>

View File

@ -60,7 +60,10 @@
<el-tab-pane label="签约记录" name="five">
<signingRecords v-if="activeName == 'five'"></signingRecords>
</el-tab-pane>
<el-tab-pane label="任务处理" name="six">
<el-tab-pane
label="任务处理"
name="six"
>
<keep-alive>
<Taskprocess v-if="activeName == 'six'" ref="process"></Taskprocess>
</keep-alive>
@ -130,17 +133,9 @@ export default {
},
//
cencal() {
if (this.$route.query.path == "/task/taskmanagement") {
this.$router.push({
path: "/task/taskmanagement",
});
} else {
this.$router.push({
path: "/task/followup",
});
}
this.$router.push({
path: "/task/followup",
});
},
},
};
@ -280,6 +275,7 @@ export default {
background-color: #fff;
margin: 10px auto;
padding: 10px 0px 10px 20px;
}
.topheaderup {
width: 99%;

View File

@ -49,32 +49,32 @@
<div class="app">
<div class="content">
<div class="words">AI电话拨打次数</div>
<div class="num">{{ echartlist.aiNum }}</div>
<div class="num">1</div>
<div class="rate">成功率:</div>
<el-progress :percentage="echartlist.aiSuccessRate"></el-progress>
<el-progress :percentage="12"></el-progress>
</div>
<div class="content">
<div class="words">人工电话拨打次数</div>
<div class="num">{{ echartlist.commonNum }}</div>
<div class="num">1</div>
<div class="rate">成功率:</div>
<el-progress :percentage="echartlist.commonSuccessRate"></el-progress>
<el-progress :percentage="12"></el-progress>
</div>
<div class="content">
<div class="words">AI电话拨打人数</div>
<div class="num">{{ echartlist.aiPatientNum }}</div>
<div class="num">1</div>
<div class="rate">成功率:</div>
<el-progress :percentage="echartlist.aiPatientSuccessRate"></el-progress>
<el-progress :percentage="12"></el-progress>
</div>
<div class="content">
<div class="words">人工电话拨打人数</div>
<div class="num">{{ echartlist.commonPatientNum }}</div>
<div class="num">1</div>
<div class="rate">成功率:</div>
<el-progress :percentage="echartlist.commonPatientSuccessRate"></el-progress>
<el-progress :percentage="12"></el-progress>
</div>
<div class="content" style="margin-right: 0;">
<div class="words" style="top:20px;font-size: 17px;">总通话人数{{ echartlist.sumPatientNum }}</div>
<div class="words" style="top:60px;font-size: 17px;">短信发送数{{ echartlist.smsNum }}</div>
<div class="words" style="top:100px;font-size: 17px;">小程序通知数{{ echartlist.subscribeNum }}</div>
<div class="words" style="top:20px;font-size: 17px;">总通话人数</div>
<div class="words" style="top:60px;font-size: 17px;">短信发送数</div>
<div class="words" style="top:100px;font-size: 17px;">小程序通知数</div>
</div>
</div>
<div class="trend">
@ -84,56 +84,6 @@
<div id="rightechart" style="height:400px;width: 48%;"> </div>
</div>
</div>
<div class="trend" style="padding-bottom: 50px;">
<div class="tabletitles">
<div :class="queryParams.type == 'dept' ? 'tabletitleleft taptitle' : 'tabletitleleft'"
@click="clicktype('dept')">
科室/人员
</div>
<div :class="queryParams.type == 'date' ? 'tabletitleright taptitle' : 'tabletitleright'"
@click="clicktype('date')">
日期
</div>
</div>
<el-descriptions title="随访明细表" style="padding:20px 0 0 15px;" />
<el-table :data="tableData" style="width: 98%;margin:0 auto;" row-key="rowId" border v-loading="loading"
:tree-props="{ children: 'childerenList', hasChildren: 'hasChildren' }">
<el-table-column prop="rowName" :label="queryParams.type == 'dept' ? '科室/人员' : '统计时间'">
</el-table-column>
<el-table-column prop="patientNum" label="就诊/出院人数" sortable>
</el-table-column>
<el-table-column prop="followUpNum" label="有随访计划人数">
</el-table-column>
<el-table-column prop="followUpCoverRate" label="随访覆盖率" sortable>
<template slot-scope="scope">
{{ scope.row.followUpCoverRate }}%
</template>
</el-table-column>
<el-table-column prop="followUpSuccessNum" label="随访成功人数">
</el-table-column>
<el-table-column prop="followUpSuccessRate" label="随访成功率">
<template slot-scope="scope">
{{ scope.row.followUpSuccessRate }}%
</template>
</el-table-column>
<el-table-column label="按随访任务(方式)" v-if="queryParams.type == 'date'">
<el-table-column prop="aiNum" label="AI电话次数">
</el-table-column>
<el-table-column prop="aiSuccessRate" label="AI电话成功率">
<template slot-scope="scope">
{{ scope.row.aiSuccessRate }}%
</template>
</el-table-column>
<el-table-column prop="commonNum" label="人工随访次数">
</el-table-column>
<el-table-column prop="commonSuccessRate" label="人工随访成功率">
<template slot-scope="scope">
{{ scope.row.commonSuccessRate }}%
</template>
</el-table-column>
</el-table-column>
</el-table>
</div>
</div>
</div>
</template>
@ -143,10 +93,6 @@ import {
selectAgencyList,
getAgencyList,
} from "@/api/manage/selectAgencyList";
import {
getFollowUpDetail,
getFollowUpRate
} from '@/api/system/followupstatistics'
import * as echarts from 'echarts';
export default {
name: "followupstatistics",
@ -155,6 +101,8 @@ export default {
maxTableHeight: undefined,
//
queryParams: {
pageNum: 1,
pageSize: 10,
startDate: null,
endDate: null,
hospitalAgencyId: null,
@ -165,7 +113,6 @@ export default {
departmentName: null,
wardId: null,
wardName: null,
type: 'dept'
},
visitDate: [],
//list
@ -176,25 +123,18 @@ export default {
departmentlist: [],
//list
wardlist: [],
echartlist: [],
loading: false,
tableData: [],
};
},
created() {
this.selectAgencyinfo();
this.getList();
this.getFollowUpDetailinfo();
},
mounted() {
this.echartinfo();
this.echartinfotwo();
this.getMaxTableHeight()
this.screenChange()
},
methods: {
clicktype(index) {
this.queryParams.type = index
this.getFollowUpDetailinfo();
},
echartinfo() {
var chartDom = document.getElementById('leftechart');
var myChart = echarts.init(chartDom);
@ -213,7 +153,7 @@ export default {
},
xAxis: {
type: 'category',
data: this.echartlist.numTrendVoList.map(e => e.followUpMonth)
data: ['2024年9月', '2024年10月']
},
yAxis: {
type: 'value',
@ -223,7 +163,8 @@ export default {
{
name: 'AI电话拨打人数',
type: 'line',
data: this.echartlist.numTrendVoList.map(e => e.aiPatientNum),
stack: 'Total',
data: [120, 132],
lineStyle: {
width: 3,
color: '#942CCA',
@ -232,7 +173,8 @@ export default {
{
name: '人工电话拨打人数',
type: 'line',
data: this.echartlist.numTrendVoList.map(e => e.commonPatientNum),
stack: 'Total',
data: [220, 182],
lineStyle: {
width: 3,
color: '#22B14C',
@ -241,7 +183,8 @@ export default {
{
name: '短信发送数',
type: 'line',
data: this.echartlist.numTrendVoList.map(e => e.smsNum),
stack: 'Total',
data: [150, 232],
lineStyle: {
width: 3,
color: '#ED1C24',
@ -250,7 +193,8 @@ export default {
{
name: '小程序通知数',
type: 'line',
data: this.echartlist.numTrendVoList.map(e => e.subscribeNum),
stack: 'Total',
data: [320, 332],
lineStyle: {
width: 3,
color: '#FF7F27',
@ -265,18 +209,7 @@ export default {
var myChart = echarts.init(chartDom);
var option = {
tooltip: {
trigger: 'axis',
formatter: function (params) {
var result = params[0].name + "<br>";
params.forEach(function (item) {
if (item.value >= 0) {
result += item.marker + " " + item.seriesName + " : " + item.value + "%</br>";
} else {
result += item.marker + " " + item.seriesName + " : - </br>";
}
});
return result;
},
trigger: 'axis'
},
legend: {
data: ['AI电话拨打次数成功率', '人工电话拨打次数成功率', 'AI电话拨打人数成功率', '人工电话拨打人数成功率']
@ -289,31 +222,18 @@ export default {
},
xAxis: {
type: 'category',
data: this.echartlist.rateTrendVoList.map(e => e.followUpMonth)
data: ['2024年9月', '2024年10月']
},
yAxis: {
type: 'value',
padding: [0, 50, 20, 20] // padding
},
yAxis: [
{
type: 'value',
padding: [0, 50, 20, 20], // padding
// name: '%',
nameGap: 35,
nameTextStyle: { color: '#666666' },
axisTick: { show: false },
axisLabel: {
show: true,
interval: 0, // 使x
color: '#666666',
formatter: '{value}%' //y
},
axisLine: { show: true, lineStyle: { color: '#dddddd' } },
splitLine: { lineStyle: { type: 'dashed', color: '#eeeeee' } }
}
],
series: [
{
name: 'AI电话拨打次数成功率',
type: 'line',
data: this.echartlist.rateTrendVoList.map(e => e.aiSuccessRate),
stack: 'Total',
data: [150, 232],
lineStyle: {
width: 3,
color: '#FFF200',
@ -322,7 +242,8 @@ export default {
{
name: '人工电话拨打次数成功率',
type: 'line',
data: this.echartlist.rateTrendVoList.map(e => e.commonSuccessRate),
stack: 'Total',
data: [320, 332],
lineStyle: {
width: 3,
color: '#00A2E8',
@ -331,7 +252,8 @@ export default {
{
name: 'AI电话拨打人数成功率',
type: 'line',
data: this.echartlist.rateTrendVoList.map(e => e.aiPatientSuccessRate),
stack: 'Total',
data: [120, 132],
lineStyle: {
width: 3,
color: '#3F48CC',
@ -340,7 +262,8 @@ export default {
{
name: '人工电话拨打人数成功率',
type: 'line',
data: this.echartlist.rateTrendVoList.map(e => e.commonPatientSuccessRate),
stack: 'Total',
data: [220, 182],
lineStyle: {
width: 3,
color: '#880015',
@ -351,7 +274,7 @@ export default {
option && myChart.setOption(option);
},
/** 查询 */
async getList() {
getList() {
if (this.visitDate?.length > 0) {
this.queryParams.startDate = this.visitDate[0];
this.queryParams.endDate = this.visitDate[1];
@ -359,40 +282,11 @@ export default {
this.queryParams.startDate = null;
this.queryParams.endDate = null;
}
await getFollowUpRate(this.queryParams).then(res => {
this.echartlist = res.data
this.echartinfo();
this.echartinfotwo();
})
},
async getFollowUpDetailinfo() {
if (this.visitDate?.length > 0) {
this.queryParams.startDate = this.visitDate[0];
this.queryParams.endDate = this.visitDate[1];
} else {
this.queryParams.startDate = null;
this.queryParams.endDate = null;
}
this.loading = true
await getFollowUpDetail(this.queryParams).then(res => {
var id = 1
res.data.forEach(e => {
id++
e.rowId = id
if (e.childerenList?.length > 0) {
e.childerenList.forEach(el => {
id++
el.rowId = id
})
}
})
this.tableData = res.data
this.loading = false
})
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
this.getFollowUpDetailinfo();
},
/** 重置按钮操作 */
resetQuery() {
@ -400,7 +294,6 @@ export default {
this.queryParams.visitDateStart = null;
this.queryParams.visitDateEnd = null;
this.resetForm("queryForm");
this.handleQuery()
},
selectAgencyinfo() {
let query = {
@ -498,41 +391,6 @@ export default {
};
</script>
<style scoped lang="scss">
::v-deep .el-table .cell {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.tabletitles {
width: 130px;
line-height: 30px;
height: 50px;
display: flex;
text-align: center;
padding-top: 20px;
margin: 0 0 0 18px;
}
.taptitle {
color: #009982 !important;
border: 1px solid #009982 !important;
}
.tabletitleleft {
border-radius: 3px 0 0 3px;
width: 85px;
color: #908490;
border: 1px solid #DBDBDB;
}
.tabletitleright {
border-radius: 0 3px 3px 0;
width: 45px;
color: #908490;
border: 1px solid #DBDBDB;
}
.bottomstatistics {
height: 100%;
overflow-y: auto;

View File

@ -140,12 +140,12 @@
align="center"
prop="taskNodeType"
>
<!-- <template slot-scope="scope">
<template slot-scope="scope">
{{scope.row.taskNodeType=='PHONE_OUTBOUND'?'电话外呼':''}}
{{scope.row.taskNodeType=='QUESTIONNAIRE_SCALE'?'问卷量表':''}}
{{scope.row.taskNodeType=='PROPAGANDA_ARTICLE'?'宣教文章':''}}
{{scope.row.taskNodeType=='TEXT_REMIND'?'文字提醒':''}}
</template> -->
</template>
</el-table-column>

View File

@ -36,13 +36,7 @@
<div ref="table">
<el-table :max-height="maxTableHeight" v-loading="loading" :data="questionList">
<el-table-column label="序号" type="index" width="48" align="center" />
<el-table-column label="姓名" align="center" prop="patientName">
<!-- <template slot-scope="scope">
<el-button type="text" @click="handleAuthRole(scope.row)">
{{ scope.row.patientName }}
</el-button>
</template> -->
</el-table-column>
<el-table-column label="姓名" align="center" prop="patientName" />
<el-table-column label="问卷标题" align="center" prop="questionnaireName" />
<el-table-column label="得分" align="center" prop="totalScore" />
<el-table-column label="填写时间" align="center" prop="createTime" />
@ -77,8 +71,6 @@
<span v-if="item.questionType == 'COMBINATION_SCORING_SUBJECT'">组合打分题</span>
<span v-if="item.questionType == 'DATE_BLANKS_SUBJECT'">日期填空题</span>
<span v-if="item.questionType == 'TIME_BLANKS_SUBJECT'">时间填空题</span>
<span v-if="item.questionType == 'FEEDBACK_BLANKS_SUBJECT'">反馈填空题</span>
<el-radio-group
v-if="item.questionType == 'MULTIPLE_CHOICE' || item.questionType == 'COMBINATION_RADIO_SUBJECT' || item.questionType == 'SCORING_QUESTIONS' || item.questionType == 'COMBINATION_SCORING_SUBJECT'"
v-model="item.checked" class="custom-radio-group" @change="radioGroupChange($event, item)">
@ -94,7 +86,7 @@
{{ aitem.optionName }}
</el-checkbox>
</el-checkbox-group>
<div v-if="item.questionType == 'FILL_IN_THE_BLANKS' || item.questionType == 'COMBINATION_BLANKS_SUBJECT' || item.questionType == 'FEEDBACK_BLANKS_SUBJECT'"
<div v-if="item.questionType == 'FILL_IN_THE_BLANKS' || item.questionType == 'COMBINATION_BLANKS_SUBJECT'"
class="tk">
<el-input disabled v-model="item.fillBlanksAnswer" placeholder="请输入答案" type="textarea" />
</div>
@ -187,36 +179,6 @@ export default {
this.screenChange()
},
methods: {
/** 详情操作 */
handleAuthRole(row) {
this.$router.push({
path: "/patient/patientdetails",
query: {
path: "/patient/patientInfo",
patientId: row.patientId,
patientName: row.patientName,
patientPhone: row.patientPhone,
familyMemberPhone: row.familyMemberPhone,
cardNo: row.cardNo,
mainDiagnosis: row.mainDiagnosis,
hospitalAgencyName: row.hospitalAgencyName,
campusAgencyName: row.campusAgencyName,
departmentName: row.departmentName,
wardName: row.wardName,
certificateIssuingDoctorName: row.certificateIssuingDoctorName,
appointmentTreatmentGroup: row.appointmentTreatmentGroup,
responsibleNurse: row.responsibleNurse,
registrationNo: row.registrationNo,
registrationDate: row.registrationDate,
appointmentDate: row.appointmentDate,
sex: row.sex,
birthDate: row.birthDate,
patientSource: row.patientSource,
createTime: row.createTime,
age: row.birthDate ? getAge(row.birthDate) :row.age,
},
});
},
//
look(item) {
selectQuestionnaireResult(item.patientQuestionSubmitResultId).then(res => {

View File

@ -55,7 +55,7 @@
</div>
</div>
</div>
<div class="informationrecord">
<div class="information">
<div class="top">
<div>身份证号{{ list.cardNo }}</div>
<div>患者电话{{ list.patientPhone }}</div>
@ -242,7 +242,6 @@
<span v-if="item.questionType == 'TIME_BLANKS_SUBJECT'"
>时间填空题</span
>
<span v-if="item.questionType == 'FEEDBACK_BLANKS_SUBJECT'">反馈填空题</span>
<el-radio-group
v-if="
item.questionType == 'MULTIPLE_CHOICE' ||
@ -286,8 +285,7 @@
<div
v-if="
item.questionType == 'FILL_IN_THE_BLANKS' ||
item.questionType == 'COMBINATION_BLANKS_SUBJECT' ||
item.questionType == 'FEEDBACK_BLANKS_SUBJECT'
item.questionType == 'COMBINATION_BLANKS_SUBJECT'
"
class="tk"
>
@ -975,7 +973,7 @@ export default {
background-color: #fff;
margin: 0 auto;
.informationrecord {
.information {
display: flex;
flex-wrap: wrap;
padding: 10px 20px;

View File

@ -124,9 +124,10 @@ export default {
/** 查询信息列表 */
getList() {
this.loading = true;
this.queryParams.params = {};
satisfactionSurvey(this.queryParams).then(response => {
response.rows.forEach(e => {
e.birthDate ? e.age = getAge(e.birthDate) : e.age
e.birthDate ? e.age = getAge(e.birthDate) : ''
})
this.patientInfoList = response.rows;
this.total = response.total;
@ -154,7 +155,7 @@ export default {
address: row.address,
patientSource: row.patientSource,
createTime: row.createTime,
age: row.age,
age: row.birthDate ? getAge(row.birthDate) : "",
},
});
// })

View File

@ -104,8 +104,9 @@
<propaganda @on-template="propagandaontemplate" :templateId="form.templateId"
:templateName="form.templateName"></propaganda>
</el-form-item>
<span style="display: inline-block; width: 10px"
v-if="form.taskNodeType == 'PROPAGANDA_ARTICLE' && form.templateId">
<span style="display: inline-block; width: 10px" v-if="
form.taskNodeType == 'PROPAGANDA_ARTICLE' && form.templateId
">
<el-button @click="imagepreviews">预览</el-button>
</span>
</el-form>
@ -515,10 +516,10 @@ export default {
},
mounted() { },
methods: {
//
//
changephoneRedialTimes(e) {
if (
this.optionslistS.find((el) => el.dictValue == e)?.dictLabel != "不重"
this.optionslistS.find((el) => el.dictValue == e)?.dictLabel != "不重"
) {
this.form.phoneTimeInterval = 30;
} else {
@ -661,11 +662,17 @@ export default {
);
this.form = this.lists[0].list[0];
//
if (this.form.taskNodeType == "PROPAGANDA_ARTICLE" && this.form.templateId) {
if (
this.form.taskNodeType == "PROPAGANDA_ARTICLE" &&
this.form.templateId
) {
getPropaganda(this.form.templateId).then((response) => {
this.formview = response.data;
});
} else if (this.form.templateId && this.form.taskNodeType == "QUESTIONNAIRE_SCALE") {
} else if (
this.form.templateId &&
this.form.taskNodeType == "QUESTIONNAIRE_SCALE"
) {
//
questionname(this.form.templateId).then((res) => {
this.lookitemnew = res.data;
@ -806,12 +813,21 @@ export default {
this.form.officialRemindContent = item.templateContent;
},
//
async TemporaryStorage() {
console.log(this.form)
if (this.form.taskNodeType != "QUESTIONNAIRE_SCALE" && this.form.taskNodeType != "PROPAGANDA_ARTICLE") {
TemporaryStorage() {
if (
this.form.taskNodeType != "QUESTIONNAIRE_SCALE" &&
this.form.taskNodeType != "PROPAGANDA_ARTICLE"
) {
this.$refs.wangeditor.emit();
}
await this.$confirm("确认暂存时将过滤掉部分内容未填写完成的子节点,是否确认暂存?", "提示", { confirmButtonText: "确认", cancelButtonText: "取消", }).then(() => {
this.$confirm(
"确认暂存时将过滤掉部分内容未填写完成的子节点,是否确认暂存?",
"提示",
{
confirmButtonText: "确认",
cancelButtonText: "取消",
}
).then(() => {
const loading = this.$loading({
lock: true,
text: "暂存中",
@ -823,14 +839,17 @@ export default {
e.list.length > 0 ? e.list.forEach((el) => {
el.routeNodeDay = e.routeNodeDay;
el.routeNodeName = e.routeNodeName;
el.phonePushSign = null;
if (el.phoneDialMethod == "COMMON" && el.templateId) {
el.phonePushSign = "1";
} else if (el.phoneDialMethod == "AI" && el.templateId) {
el.phonePushSign = "1";
} else if (el.phoneDialMethod == "COMMON" && el.phoneTemplateId) {
el.taskNodeType = "QUESTIONNAIRE_SCALE";
} else if (
el.phoneDialMethod == "COMMON" &&
el.phoneTemplateId
) {
el.phonePushSign = "1";
el.taskNodeType = "PHONE_OUTBOUND";
} else if (el.phoneDialMethod == "AI" && el.phoneTemplateId) {
el.taskNodeType = "PHONE_OUTBOUND";
el.phonePushSign = "1";
}
this.updata.specialDiseaseNodeList.push(el);
@ -847,32 +866,43 @@ export default {
// );
// return;
this.updata.specialDiseaseNodeList.forEach((ele) => {
loading.close();
if (ele.taskNodeType == "PHONE_OUTBOUND") {
if (ele.phoneDialMethod == null || ele.phoneDialMethod == "") {
loading.close();
return this.$message.error("请先选择推送方式");
} else if (ele.phoneTemplateId == null || ele.phoneTemplateId == "") {
loading.close();
return this.$message.error("请先选择话术模板");
this.$message.error("请先选择推送方式");
} else if (
ele.phoneTemplateId == null ||
ele.phoneTemplateId == ""
) {
this.$message.error("请先选择话术模板");
} else {
specialDiseaseNode(this.updata).then((res) => {
let wangeditorlist = [];
if (localStorage.getItem("wangeditorlist")) {
wangeditorlist = JSON.parse(
localStorage.getItem("wangeditorlist")
);
wangeditorlist = wangeditorlist.filter(
(e) =>
e.specialDiseaseNodeId == this.form.specialDiseaseNodeId
);
localStorage.setItem(
"wangeditorlist",
JSON.stringify(wangeditorlist)
);
}
this.info();
loading.close();
this.$modal.msgSuccess("暂存成功!");
this.listindex = 0;
this.itemindex = 0;
});
setTimeout(() => {
loading.close();
}, 3000);
}
}
});
specialDiseaseNode(this.updata).then((res) => {
let wangeditorlist = [];
if (localStorage.getItem("wangeditorlist")) {
wangeditorlist = JSON.parse(localStorage.getItem("wangeditorlist"));
wangeditorlist = wangeditorlist.filter((e) => e.specialDiseaseNodeId == this.form.specialDiseaseNodeId);
localStorage.setItem("wangeditorlist", JSON.stringify(wangeditorlist));
}
this.info();
loading.close();
this.$modal.msgSuccess("暂存成功!");
this.listindex = 0;
this.itemindex = 0;
});
setTimeout(() => {
loading.close();
}, 3000);
});
},
//
@ -904,7 +934,6 @@ export default {
},
//
async bottomclickevent(uitem, index, uindex) {
this.form = uitem;
await this.onemit();
const loading = this.$loading({
lock: true,
@ -941,6 +970,7 @@ export default {
if (uitem.taskType) {
this.changeTaskType(uitem.taskType, uitem.taskSubdivision);
}
this.form = uitem;
setTimeout(() => {
loading.close();
}, 1200);
@ -956,11 +986,13 @@ export default {
});
},
//
async changeTaskType(code, taskSubdivision) {
changeTaskType(code, taskSubdivision) {
this.taskPartitionDictId = "";
let id = this.selectTaskTypeList?.find((e) => e.taskTypeCode == code)?.id;
this.form.taskTypeName = this.selectTaskTypeList?.find((e) => e.taskTypeCode == code)?.taskTypeName;
await taskPartitionList(id).then((res) => {
this.form.taskTypeName = this.selectTaskTypeList?.find(
(e) => e.taskTypeCode == code
)?.taskTypeName;
taskPartitionList(id).then((res) => {
// res.data?.forEach(e => {
// if (e.taskNodeType == 'PHONE_OUTBOUND') {
// e.taskPartitionName = e.taskPartitionName + '()'
@ -975,7 +1007,7 @@ export default {
this.taskPartitionList = res.data;
this.form.taskSubdivision = "";
this.form.taskSubdivisionName = "";
// this.form.taskNodeType = "";
this.form.taskNodeType = "";
this.taskStatusDictList = [];
if (taskSubdivision) {
this.form.taskSubdivision = taskSubdivision;
@ -985,7 +1017,11 @@ export default {
},
//
changetaskSubdivision(code, type) {
if (this.form.taskNodeType != "QUESTIONNAIRE_SCALE" && this.form.taskNodeType != "PROPAGANDA_ARTICLE" && this.form.taskNodeType != "PHONE_OUTBOUND") {
if (
this.form.taskNodeType != "QUESTIONNAIRE_SCALE" &&
this.form.taskNodeType != "PROPAGANDA_ARTICLE" &&
this.form.taskNodeType != "PHONE_OUTBOUND"
) {
this.$refs.wangeditor.emit();
}
setTimeout(() => {
@ -998,19 +1034,31 @@ export default {
if (!type) {
this.form.taskStatus = "";
}
this.form.taskSubdivisionName = this.taskPartitionList?.find((e) => e.taskPartitionCode == code)?.taskPartitionName;
let id = this.taskPartitionList?.find((e) => e.taskPartitionCode == code)?.id;
this.form.taskSubdivisionName = this.taskPartitionList?.find(
(e) => e.taskPartitionCode == code
)?.taskPartitionName;
let id = this.taskPartitionList?.find(
(e) => e.taskPartitionCode == code
)?.id;
this.taskPartitionDictId = id;
this.form.secondClassifyDescribe = this.taskPartitionList?.find((e) => e.taskPartitionCode == code)?.secondClassifyDescribe;
this.form.executionTime = this.taskPartitionList?.find((e) => e.taskPartitionCode == code)?.executionTime;
this.form.secondClassifyDescribe = this.taskPartitionList?.find(
(e) => e.taskPartitionCode == code
)?.secondClassifyDescribe;
this.form.executionTime = this.taskPartitionList?.find(
(e) => e.taskPartitionCode == code
)?.executionTime;
taskStatusDictList(id).then((res) => {
this.taskStatusDictList = res.data;
});
this.taskPartitionList.forEach((el) => {
if (code == el.taskPartitionCode) {
this.form.executionTime = el.executionTime;
// this.form.taskNodeType = el.taskNodeType;
if (this.form.taskNodeType == "PHONE_OUTBOUND" || this.form.taskNodeType == "PROPAGANDA_ARTICLE" || this.form.taskNodeType == "QUESTIONNAIRE_SCALE") {
this.form.taskNodeType = el.taskNodeType;
if (
this.form.taskNodeType == "PHONE_OUTBOUND" ||
this.form.taskNodeType == "PROPAGANDA_ARTICLE" ||
this.form.taskNodeType == "QUESTIONNAIRE_SCALE"
) {
this.form.nodeContent = `<p></p>`;
}
if (!type) {
@ -1022,11 +1070,15 @@ export default {
if (localStorage.getItem("wangeditorlist")) {
wangeditorlist = JSON.parse(localStorage.getItem("wangeditorlist"));
this.form.nodeContent = "<p></p>";
this.form.nodeContent = wangeditorlist.find((e) => e.taskSubdivision == this.form.taskSubdivision && e.specialDiseaseNodeId == this.form.specialDiseaseNodeId)?.nodeContent;
this.form.nodeContent = wangeditorlist.find(
(e) =>
e.taskSubdivision == this.form.taskSubdivision &&
e.specialDiseaseNodeId == this.form.specialDiseaseNodeId
)?.nodeContent;
}
// this.form.taskNodeType = this.taskPartitionList?.find(
// (e) => e.taskPartitionCode == code
// )?.taskNodeType;
this.form.taskNodeType = this.taskPartitionList?.find(
(e) => e.taskPartitionCode == code
)?.taskNodeType;
});
loading.close();
}, 500);

View File

@ -355,7 +355,7 @@ export default {
address: row.address,
patientSource: row.patientSource,
createTime: row.createTime,
age: row.birthDate ? getAge(row.birthDate) : row.age,
age: row.birthDate ? getAge(row.birthDate) : "",
},
});
},

View File

@ -455,7 +455,7 @@ export default {
this.form.phoneRedialTimes = '重拨二次'
}
else if (this.form.phoneRedialTimes == 'NOT_REPLAY') {
this.form.phoneRedialTimes = '不重'
this.form.phoneRedialTimes = '不重'
} else {
this.form.phoneRedialTimes = ''
}

View File

@ -290,13 +290,13 @@
</el-dialog>
<!-- 设置机构 -->
<el-dialog :title="title" :visible.sync="innerVisibleshow" width="1200px">
<el-row :gutter="20" style="height: 650px">
<el-row :gutter="20">
<el-col :span="10">
<div class="table-title">
<span v-if="agencyNum">可设置机构:{{ agencyNum }}</span>
<span v-else>可设置机构:0条</span>
</div>
<div style="margin-top: 3% ;">
<div style="margin-top: 3%">
<el-form ref="queryForm" :model="formmat" :rules="rules" label-width="80px" :inline="true">
<el-form-item label="机构名称" prop="agencyName" label-width="120">
<el-input v-model="formmat.agencyName" placeholder="请输入机构名称" clearable />
@ -309,7 +309,7 @@
</el-form>
</div>
<!-- 穿梭框左边 -->
<el-table ref="multipleTable" :data="tableData1" height="503" tooltip-effect="dark" style="width: 100%;"
<el-table ref="multipleTable" :data="tableData1" height="300" tooltip-effect="dark" style="width: 100%"
@selection-change="handleSelectionChangenleft" class="el-table-dialog" row-key="id">
<el-table-column type="selection" width="55" align="center">
</el-table-column>
@ -399,7 +399,7 @@
</el-form>
</div>
<!-- 穿梭框左边 -->
<el-table ref="multipleTabledep" :data="tableDatadep1" height="300" tooltip-effect="dark" style="width: 100%;height:503px"
<el-table ref="multipleTabledep" :data="tableDatadep1" height="300" tooltip-effect="dark" style="width: 100%"
@selection-change="handleSelectionChangendep" class="el-table-dialog" row-key="id">
<el-table-column type="selection" width="55" align="center">
</el-table-column>
@ -434,7 +434,7 @@
<!-- 穿梭框右边 -->
<div style="margin-top: 5%">
<el-table ref="multipleTablesdep" :data="tableDatadep2" max-height="300" tooltip-effect="dark"
style="width: 100%;height:503px" @selection-change="handleSelectionChangenrightdep" row-key="id"
style="width: 100%" @selection-change="handleSelectionChangenrightdep" row-key="id"
class="el-table-dialog">
<el-table-column type="selection" width="55" align="center"></el-table-column>
<!-- <el-table-column type="index" label="序号" align="center">
@ -1218,7 +1218,6 @@ export default {
}
.pagination-container {
left: 10px;
height: 10vh;
}
</style>

View File

@ -445,7 +445,7 @@ export default {
patientName: row.patientName,
patientPhone: row.patientPhone,
sex: row.sex,
age: row.birthDate ? getAge(row.birthDate) :row.age,
age: row.birthDate ? getAge(row.birthDate) : '',
hospitalAgencyId: row.hospitalAgencyId,
hospitalAgencyName: row.hospitalAgencyName
},

View File

@ -97,7 +97,7 @@ module.exports = {
.plugin('ScriptExtHtmlWebpackPlugin')
.after('html')
.use('script-ext-html-webpack-plugin', [{
// `runtime` must same as runtimeChunk name. default is `runtime`
// `runtime` must same as runtimeChunk name. default is `runtime`
inline: /runtime\..*\.js$/
}])
.end()
@ -127,8 +127,8 @@ module.exports = {
})
config.optimization.runtimeChunk('single'),
{
from: path.resolve(__dirname, './public/robots.txt'), //防爬虫文件
to: './' //到根目录下
from: path.resolve(__dirname, './public/robots.txt'), //防爬虫文件
to: './' //到根目录下
}
}
)