postdischarge-ui/src/views/components/SearchForm.vue

1111 lines
32 KiB
Vue
Raw Normal View History

2024-08-01 15:19:05 +08:00
<template>
2024-11-29 17:32:20 +08:00
<Form
ref="form"
:label-width="labelWidth"
:size="size"
style="display: flex"
class="item-search-form"
>
<div
id="searchFilter"
ref="searchFilter"
:gutter="10"
style="display: flex; flex-wrap: wrap"
:style="{ width: widths + '%' }"
>
<slot></slot>
</div>
<div
style="width: 20%; text-align: right; padding-right: 18px"
:style="{
width:
this.$router.currentRoute.path == '/patient/Patientmanagement'
? '27%'
: '20%',
}"
>
<Button type="primary" @click="handleQuery" size="mini">搜索</Button>
<Button @click="handleReset" size="mini">重置</Button>
<el-button
type="warning"
plain
icon="el-icon-upload2"
size="mini"
@click="handleUpload"
2024-12-06 15:46:13 +08:00
v-if="patientUploadButtonVisible == 'true'"
2024-11-29 17:32:20 +08:00
>导入</el-button
>
2024-12-09 17:12:29 +08:00
<el-button
2024-12-16 16:15:07 +08:00
type="primary"
plain
2024-12-09 17:12:29 +08:00
size="mini"
@click="handleback"
v-if="this.$router.currentRoute.path == '/patient/ImportDetails'"
>返回</el-button
>
2024-12-16 16:15:07 +08:00
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-if="this.$router.currentRoute.path == '/task/Satisfactionsurvey'"
>导出</el-button
>
2024-11-29 17:32:20 +08:00
<Button
v-show="collapsiable"
type="text"
@click="shiftCollapsiable"
size="mini"
>
<span>
{{ fold ? "收起" : "展开" }}
<i :class="fold ? 'el-icon-arrow-up' : 'el-icon-arrow-down'"></i>
</span>
</Button>
</div>
2024-12-02 17:54:53 +08:00
<!-- 导入添加-->
2024-11-29 17:32:20 +08:00
<el-dialog title="导入" :visible.sync="open" width="600px" append-to-body>
2024-12-02 17:54:53 +08:00
<el-form ref="form" :model="form" :rules="rules" label-width="110px">
<div v-for="(item, index) in form.deptAliasVOS" :key="index">
2024-12-06 15:46:13 +08:00
<el-form-item required>
2024-12-02 17:54:53 +08:00
<template slot="label">
{{ item.deptAlias }}
</template>
<el-select
v-model="item.departmentName"
placeholder="请选择科室"
style="width: 208px"
@change="changeway($event, index)"
2024-11-29 17:32:20 +08:00
>
2024-12-02 17:54:53 +08:00
<el-option
v-for="item in form.departments"
:key="item.id"
:label="item.departmentName"
:value="item.departmentName"
>
</el-option>
</el-select>
<el-button
type="primary"
plain
style="margin-left: 8px"
@click="additem(item, index)"
>添加</el-button
>
</el-form-item>
</div>
2024-11-29 17:32:20 +08:00
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
<!-- //导入 -->
<el-dialog
title="导入"
:visible.sync="uploadopen"
width="400px"
append-to-body
>
<el-upload
drag
class="upload-demo"
ref="upload"
:action="action.url"
:headers="action.headers"
:on-preview="handlePreview"
:on-remove="handleRemove"
:file-list="fileList"
:auto-upload="false"
:on-success="handleAvatarSuccess"
:data="action.data"
>
<i class="el-icon-upload"></i>
<div class="el-upload__text">将文件拖到此处<em>点击上传</em></div>
<div class="el-upload__tip" slot="tip" style="line-height: 25px">
<div>
1.
<span
style="color: #1890ff; cursor: pointer"
@click="importTemplate"
>下载导入模板</span
>
</div>
<div>2.最大支持2MB的xls/xlsx文件</div>
<div>3.一次导入患者数量不能超过5000</div>
2024-12-09 17:03:58 +08:00
<el-checkbox v-model="isDistinct" style="font-size: 12px"
2024-12-02 17:54:53 +08:00
>自动去除当日重复记录</el-checkbox
>
2024-11-29 17:32:20 +08:00
</div>
</el-upload>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitUpload"> </el-button>
<el-button @click="uploadcancel"> </el-button>
</div>
</el-dialog>
<!-- 添加或修改科室信息对话框 -->
<el-dialog
title="添加"
:visible.sync="openadd"
width="1000px"
append-to-body
>
<el-form
ref="formadd"
:model="formadd"
:rules="rulesadd"
label-width="120px"
:inline="true"
>
<!-- <el-form-item label="上级科室id" prop="parentDepartmentId">
<el-input
v-model="form.parentDepartmentId"
placeholder="请输入上级科室id"
/>
</el-form-item>
<el-form-item label="所属机构id" prop="hospitalAgencyId">
<el-input v-model="form.hospitalAgencyId" placeholder="请输入所属机构id" />
</el-form-item>
<el-form-item label="所属机构名称" prop="agencyName">
<el-input
v-model="form.agencyName"
placeholder="请输入所属机构名称"
/>
</el-form-item> -->
<div class="nameinformation">基本信息</div>
<div class="content">
<el-form-item label="科室名称" prop="departmentName">
<el-input
maxlength="100"
v-model="formadd.departmentName"
placeholder="请输入科室名称"
/>
</el-form-item>
<el-form-item label="科室代码" prop="departmentCode">
<el-input
maxlength="30"
onKeyUp="value=value.replace(/[\W]/g,'')"
v-model="formadd.departmentCode"
placeholder="请输入科室代码"
/>
</el-form-item>
<el-form-item label="所属机构" prop="hospitalAgencyName">
<el-cascader
2024-12-25 17:54:09 +08:00
class="custom-cascader"
2024-11-29 17:32:20 +08:00
clearable
:props="{ checkStrictly: true }"
:options="treeOptions"
@change="change"
style="width: 205px; color: black"
v-model="formadd.hospitalAgencyIdtwo"
:show-all-levels="false"
:placeholder="
formadd.hospitalAgencyName ? formadd.hospitalAgencyName : ''
"
ref="cascader"
:key="isResouceShow"
></el-cascader>
</el-form-item>
<el-form-item label="节点类型" prop="nodeType">
<el-select
v-model="formadd.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="departmentAbbreviation">
<el-input
maxlength="100"
v-model="formadd.departmentAbbreviation"
placeholder="请输入科室简称"
/>
</el-form-item>
<el-form-item label="科室类型" prop="departmentType">
<el-select
v-model="formadd.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>
<!-- <el-form-item label="科室负责人id" prop="departmentPersonId">
<el-input
v-model="form.departmentPersonId"
placeholder="请输入科室负责人id"
/>
</el-form-item> -->
<el-form-item label="科室负责人姓名" prop="departmentPersonName">
<el-input
maxlength="20"
v-model="formadd.departmentPersonName"
placeholder="请输入科室负责人姓名"
/>
</el-form-item>
<el-form-item label="上级科室" prop="parentDepartmentId">
<el-select
v-model="formadd.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-form-item>
</div>
<div class="nameinformation">扩展信息</div>
<div class="content">
<el-form-item label="提供服务类别" prop="provideServiceCategory">
<el-select
clearable
v-model="formadd.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="formadd.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>
<el-form-item label="标准科室对照" prop="normDepartmentCompareId">
<el-select
v-model="formadd.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-form-item>
<el-form-item label="编制床位数" prop="prepareBedsCount">
<el-input
maxlength="8"
onKeyUp="value=value.replace(/[\W]/g,'')"
v-model="formadd.prepareBedsCount"
placeholder="请输入编制床位数"
/>
</el-form-item>
<el-form-item label="科室电话" prop="departmentPhone">
<el-input
maxlength="12"
onKeyUp="value=value.replace(/[\W]/g,'')"
v-model="formadd.departmentPhone"
placeholder="请输入科室电话"
/>
</el-form-item>
<el-form-item label="科室邮箱" prop="departmentMail">
<el-input
maxlength="20"
v-model="formadd.departmentMail"
placeholder="请输入科室邮箱"
/>
</el-form-item>
<el-form-item label="成立日期" prop="establishDate">
<el-date-picker
clearable
v-model="formadd.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="formadd.revokeDate"
type="date"
style="width: 205px"
value-format="yyyy-MM-dd"
placeholder="请选择撤销日期"
>
</el-date-picker>
</el-form-item>
2024-08-01 15:19:05 +08:00
</div>
2024-11-29 17:32:20 +08:00
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitFormadd"> </el-button>
<el-button @click="canceladd"> </el-button>
</div>
</el-dialog>
2024-12-02 17:54:53 +08:00
<!-- 手机号 -->
2024-11-29 17:32:20 +08:00
<el-dialog
title="查看"
:visible.sync="openphone"
width="900px"
append-to-body
>
2024-12-02 17:54:53 +08:00
<el-table v-loading="loading" :data="patientInfoList">
<el-table-column label="科室名称" align="center" prop="deptAlias" />
<el-table-column label="就诊时间" align="center" prop="visitDate" />
<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="age" />
<el-table-column label="诊断" align="center" prop="mainDiagnosis" />
</el-table>
2024-11-29 17:32:20 +08:00
<div slot="footer" class="dialog-footer">
2024-12-02 17:54:53 +08:00
<el-button type="primary" @click="cancelphone"> </el-button>
2024-11-29 17:32:20 +08:00
</div>
</el-dialog>
<!-- 遮罩层 -->
<div class="mask" v-if="showMask">
<!-- 图片 -->
<div class="maskimg">
<div class="wrap">
<div class="progress-bar">
<div class="progress"></div>
<div class="inner" :style="{ '--left': progress + '%' }"></div>
<div class="runner" :style="{ '--left': progress + '%' }"></div>
</div>
2024-08-01 15:19:05 +08:00
</div>
2024-11-29 17:32:20 +08:00
<div class="text">导入中请稍等</div>
</div>
</div>
</Form>
2024-08-01 15:19:05 +08:00
</template>
<script>
import { Form, FormItem, Button } from 'element-ui'
2024-11-29 17:32:20 +08:00
import { faL, fas } from '@fortawesome/free-solid-svg-icons'
import { listCompare } from "@/api/system/compare";
import { listSubdivision } from "@/api/system/subdivision";
import { agencyList, getAgencytype } from "@/api/system/agency";
import { getToken } from "@/utils/auth";
import {
addDepartment,
getDepartmentList,
secondaryUpload,
} from "@/api/system/department";
2024-08-01 15:19:05 +08:00
export default {
2024-11-29 17:32:20 +08:00
name: 'SearchFilter',
components: { Form, FormItem, Button },
props: {
labelWidth: {
type: String,
default: '80px',
},
widths: {
type: Number,
default: 80,
},
labelWidths: {
type: Number,
default: 280,
},
size: {
type: String,
default: 'small',
},
2024-12-06 15:46:13 +08:00
patientUploadButtonVisible: {
type: String,
default: 'false'
2024-12-16 16:15:07 +08:00
},
2024-12-25 17:54:09 +08:00
query: {
2024-12-16 16:15:07 +08:00
type: Object,
default: () => ({})
},
2024-11-29 17:32:20 +08:00
},
data() {
return {
2024-12-25 17:54:09 +08:00
querlist: {},//导出
2024-12-02 17:54:53 +08:00
departmentsshow: false,//添加按钮
loading: false,
patientInfoList: [],
datalist: [],
openphone: false,
2024-11-29 17:32:20 +08:00
form: {},
uploadopen: false,
fileList: [],
2024-12-09 17:03:58 +08:00
isDistinct: true,//是否自动去重true表示去重
2024-12-02 17:54:53 +08:00
2024-11-29 17:32:20 +08:00
action: {
data: {
2024-12-09 17:03:58 +08:00
isDistinct: '',
2024-08-01 15:19:05 +08:00
},
2024-11-29 17:32:20 +08:00
headers: {
Authorization: "Bearer " + getToken(),
2024-08-01 15:19:05 +08:00
},
2024-11-29 17:32:20 +08:00
url: process.env.VUE_APP_BASE_API + "/manage/patientInfo/patientUpload",
},
open: false,
openadd: false,//添加弹框
formadd: {},//添加对象
collapsiable: false,
fold: false,
// 最大展示数默认3个超过则隐藏为0时不限制
maxShow: undefined,
rules: {
deptAliasVOS: {
departmentName: [
2024-12-02 17:54:53 +08:00
{ required: true, message: "1111111", trigger: "blur", }
2024-11-29 17:32:20 +08:00
]
2024-08-01 15:19:05 +08:00
},
2024-11-29 17:32:20 +08:00
},
treeOptions: [],
// 细分
optionsubdivisionCategory: [],
// 标准科室对照4
compareList: [],
option: [],
options: [],
optionsparentDepartment: [],
departmentoptions: [],
nodeTypeoptions: [],
isResouceShow: 1,
2024-12-02 17:54:53 +08:00
indexadd: undefined,
2024-11-29 17:32:20 +08:00
showMask: false,//遮罩层
progress: 0,
// 表单校验--添加
rulesadd: {
nodeType: [
{ required: true, message: "节点类型不能为空", trigger: "blur" },
],
hospitalAgencyName: [
{ required: true, message: "所属机构不能为空", trigger: "blur" },
],
departmentName: [
{ required: true, message: "科室名称不能为空", trigger: "blur" },
],
departmentCode: [
{ required: true, message: "科室代码不能为空", trigger: "blur" },
],
departmentPhone: [
{
pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
message: "请输入正确的科室电话",
trigger: "blur",
},
],
departmentMail: [
{
type: "email",
message: "请输入正确的邮箱地址",
trigger: ["blur", "change"],
},
],
},
}
},
2024-12-25 17:54:09 +08:00
created(){
this.gettreelist();
},
2024-11-29 17:32:20 +08:00
mounted() {
// 通过最大显示个数控制展开/折叠
this.minShowCtrol()
this.$emit('fold', this.fold)
const currentRoute = this.$router.currentRoute;
console.log(currentRoute, 'currentRoute')
},
watch: {
2024-12-25 17:54:09 +08:00
query: {
2024-12-16 16:15:07 +08:00
handler(val) {
2024-12-20 11:28:47 +08:00
console.log(val, 'val')
2024-12-25 17:54:09 +08:00
this.querlist = val
2024-12-16 16:15:07 +08:00
2024-12-25 17:54:09 +08:00
},
deep: true,
immediate: true,
2024-12-16 16:15:07 +08:00
},
2024-11-29 17:32:20 +08:00
'$store.state.app.sidebar.opened'(newVal, Val) {
if (newVal) {
const group = window.document.querySelectorAll(`#searchFilter .el-form-item.el-form-item--${this.size}`)
group[this.maxShow - 1].hidden = true
}
setTimeout(() => {
this.minShowCtrol()
}, 500);
}
},
methods: {
handleAvatarSuccess(response, file, fileList) {
console.log(response, file, fileList, 'response, file, fileList')
2024-12-02 17:54:53 +08:00
if (response.code == 500 && !response.data) {
2024-11-29 17:32:20 +08:00
this.$modal.msgError(response.msg);
2024-12-02 17:54:53 +08:00
} else if (response.code == 5002) {
this.openphone = true;
2024-12-06 15:46:13 +08:00
this.patientInfoList = response.data
2024-12-02 17:54:53 +08:00
} else if (response.code == 500 && response.data) {
if (response.data.departments) {
this.form = response.data
} else {
this.form.deptAliasVOS = response.data.deptAliasVOS
this.form.departments = []
this.departmentsshow = true
}
this.open = true;
2024-11-29 17:32:20 +08:00
}
2024-12-02 17:54:53 +08:00
else if (response.code == 200 && !response.data) {
2024-12-06 15:46:13 +08:00
this.$modal.msgSuccess(response.msg);
2024-11-29 17:32:20 +08:00
this.$emit('handleRules')
} else if (response.code == 200 && response.data) {
this.form = response.data
this.open = true;
}
this.uploadcancel();
this.fileList = [];
},
handleRemove(file, fileList) {
console.log(file, fileList);
},
handlePreview(file) {
},
//导入相关的方法
submitUpload() {
2024-12-09 17:03:58 +08:00
if (this.isDistinct == true) {
this.action.data.isDistinct = 1
2024-12-02 17:54:53 +08:00
} else {
2024-12-09 17:03:58 +08:00
this.action.data.isDistinct = 0
2024-11-29 17:32:20 +08:00
}
this.$refs.upload.submit();
},
//取消导入
uploadcancel() {
this.uploadopen = false;
},
/** 下载模板操作 */
importTemplate() {
this.download(
"/system/importDownload/downloadTemplate?fileType=patientInfoImport",
{},
`门诊随访记录 - 未随访.xlsx`
);
},
// 列表取消
2024-12-02 17:54:53 +08:00
cancelphone() {
this.openphone = false;
2024-11-29 17:32:20 +08:00
},
2024-12-09 17:12:29 +08:00
// 返回
2024-12-16 16:15:07 +08:00
handleback() {
2024-12-09 17:12:29 +08:00
this.$router.push({
2024-12-16 16:15:07 +08:00
path: "/patient/patientinfoimport",
});
2024-12-09 17:12:29 +08:00
},
2024-12-16 16:15:07 +08:00
/** 导出按钮操作 */
handleExport() {
this.download(
"/manage/signnode/export ",
{
...this.querlist,
},
`外呼记录_${new Date().getTime()}.xlsx`
);
},
2024-11-29 17:32:20 +08:00
// 导入
handleUpload() {
// this.openphone=true;
this.uploadopen = true;
2024-12-09 17:03:58 +08:00
this.isDistinct = true;
2024-11-29 17:32:20 +08:00
this.fileList = [];
this.form = {};
// this.showMask = true;
// this.progress = 0;
// this.timer = setInterval(() => {
// if (this.progress < 99) {
// this.progress += 5;
// } else {
// clearInterval(this.timer); // 停止计时器
// // 延时 1 秒后执行关闭遮罩或其他操作
// // setTimeout(() => {
// // this.showMask = false;
// // // 关闭遮罩或执行其他操作
// // }, 1000);
// }
// }, 2000); // 每 900 毫秒0.9秒)增加 1% 进度
// this.$refs.form.resetFields();
// this.open = true;
},
// 取消按钮
cancel() {
this.open = false;
// this.reset();
},
2024-12-09 17:12:29 +08:00
// 添加
2024-11-29 17:32:20 +08:00
additem(item, index) {
this.indexadd = index
this.reset();
this.infocompare();
this.getinfolist();
this.getinfo();
this.info();
this.infodepartment();
this.infolist();
this.openadd = true
if (localStorage.getItem('roleKey') != 'admin') {
this.getLeafIds(this.treeOptions)
}
console.log(item, index, 'item')
// this.$emit('additem',item,index)
},
// 点击事件
changeway(e, index) {
console.log(e, index, 'e')
2024-12-06 15:46:13 +08:00
// this.$set(this.form.deptAliasVOS[this.indexadd], 'departmentName', this.formadd.departmentName)
2024-12-02 17:54:53 +08:00
// this.form.deptAliasVOS[index].departmentName = this.form.departments.find(f => f.id == e).departmentName
2024-11-29 17:32:20 +08:00
// this.form.deptAliasVOS[index].departmentId = e
this.$nextTick(() => {
this.$forceUpdate()
})
},
getLeafIds(nodes) {
console.log(nodes, ';node')
2024-12-25 17:54:09 +08:00
this.formadd.hospitalAgencyIdtwo = JSON.parse(localStorage.getItem('user')).hospitalAgencyId;
2024-11-29 17:32:20 +08:00
let leafIds = [];
nodes.forEach(node => {
if (node.id == this.formadd.hospitalAgencyIdtwo) {
this.formadd.hospitalAgencyName = node.label;
} else {
if (node.children) {
// 如果有子节点递归调用getLeafIds
leafIds = leafIds.concat(this.getLeafIds(node.children));
} else {
// 如果没有子节点取当前节点的id
leafIds.push(node.id);
}
}
});
return leafIds;
},
// 所属机构
gettreelist() {
agencyList().then((res) => {
// 接口请求
this.treeOptions = res.data.map((item) => {
return { value: item.id, ...item };
});
});
2024-08-01 15:19:05 +08:00
},
2024-11-29 17:32:20 +08:00
// 所属机构
change(e) {
console.log(this.formadd.hospitalAgencyIdtwo)
if (e) {
this.formadd.hospitalAgencyId = e[e.length - 1];
if (this.formadd.hospitalAgencyId) {
const arr = this.$refs["cascader"].getCheckedNodes()[0].pathLabels;
this.formadd.hospitalAgencyName = arr.slice(-1).join(",");
this.gethaveinfo(e[e.length - 1])
this.formadd.parentDepartmentId = ''
this.formadd.parentDepartmentName = ''
} else {
this.formadd.parentDepartmentId = ''
this.formadd.hospitalAgencyName = "";
2024-08-01 15:19:05 +08:00
}
2024-11-29 17:32:20 +08:00
} else {
this.getinfo();
}
},
2024-12-03 09:25:33 +08:00
gethaveinfo(id) {
getDepartmentList({ hospitalAgencyId: id }).then((res) => {
this.optionsparentDepartment = res.data;
});
},
2024-11-29 17:32:20 +08:00
/** 查询标准科室对照信息列表 */
infocompare() {
this.loading = true;
listCompare(this.queryParamscompare).then((response) => {
this.compareList = response.rows;
// this.total = response.total;
this.loading = false;
});
},
// 细分类别
getinfolist() {
listSubdivision().then((res) => {
this.optionsubdivisionCategory = res.rows;
});
},
// 上级科室
getinfo() {
getDepartmentList().then((res) => {
this.optionsparentDepartment = res.data;
});
},
// 上级科室
changeparentDepartment(e) {
this.form.parentDepartmentId = e;
},
// 节点类型
info() {
var dictType = "department_node_type";
getAgencytype(dictType).then((res) => {
this.nodeTypeoptions = res.data;
});
},
// 科室类型
infodepartment() {
var dictType = "department_type";
getAgencytype(dictType).then((res) => {
this.departmentoptions = res.data;
});
},
// 服务类别
infolist() {
var dictType = "provide_service_category";
getAgencytype(dictType).then((res) => {
this.options = res.data;
});
2024-08-01 15:19:05 +08:00
},
2024-08-12 11:35:18 +08:00
2024-11-29 17:32:20 +08:00
// 取消按钮
canceladd() {
this.openadd = false;
this.reset();
2024-08-01 15:19:05 +08:00
},
2024-11-29 17:32:20 +08:00
optionsubdivision(e) {
// this.form.subdivisionCategoryId = this.optionsubdivisionCategory.find(
// (e) => e.id == this.form.subdivisionCategoryId
// ).subdivisionCategoryName;
// console.log(this.form.subdivisionCategoryName)
},
// 表单重置
reset() {
this.formadd = {
id: null,
parentDepartmentId: null,
hospitalAgencyId: null,
hospitalAgencyIdtwo: null,
hospitalAgencyName: null,
departmentName: null,
departmentCode: null,
departmentType: null,
departmentAbbreviation: null,
departmentPersonId: null,
departmentPersonName: null,
nodeType: null,
provideServiceCategory: null,
subdivisionCategoryId: null,
subdivisionCategoryName: null,
normDepartmentCompareId: null,
normDepartmentCompareName: null,
prepareBedsCount: null,
departmentPhone: null,
departmentMail: null,
establishDate: null,
revokeDate: null,
createBy: null,
createTime: null,
updateBy: null,
updateTime: null,
parentDepartmentName: null,
};
this.resetForm("formadd");
},
/** 提交按钮 --添加*/
submitFormadd() {
let reg = new RegExp("-", "g");
if (this.formadd.establishDate && this.formadd.revokeDate && new Date(this.formadd.establishDate.replace(reg, "/")) >
new Date(this.formadd.revokeDate.replace(reg, "/"))) {
this.$message.error("撤销日期要大于成立日期");
}
else {
this.$refs["formadd"].validate((valid) => {
if (valid) {
if (!this.formadd.hospitalAgencyId) {
2024-12-02 17:54:53 +08:00
this.formadd.hospitalAgencyId = this.formadd.hospitalAgencyIdtwo
}
2024-11-29 17:32:20 +08:00
var obj = {
departmentName: this.formadd.departmentName,
id: ''
2024-08-01 15:19:05 +08:00
}
2024-11-29 17:32:20 +08:00
console.log(this.formadd, 'this.formadd')
2024-12-02 17:54:53 +08:00
console.log(this.form, 'this.form')
2024-11-29 17:32:20 +08:00
addDepartment(this.formadd).then((response) => {
this.$modal.msgSuccess("添加成功");
2024-12-02 17:54:53 +08:00
this.form.departments.push(obj)
console.log(this.form.deptAliasVOS)
// this.form.deptAliasVOS[this.indexadd].departmentName = this.formadd.departmentName
this.$set(this.form.deptAliasVOS[this.indexadd], 'departmentName', this.formadd.departmentName)
2024-11-29 17:32:20 +08:00
this.openadd = false;
// this.getList();
});
}
});
}
},
/** 提交按钮 */
submitForm() {
2024-12-02 17:54:53 +08:00
// this.$forceUpdate()
var emptyItems = []
2024-12-06 15:46:13 +08:00
emptyItems = this.form.deptAliasVOS.filter(f => f.departmentName == "" || f.departmentName == null)
2024-12-02 17:54:53 +08:00
console.log(emptyItems, 'this.emptyItems')
2024-12-06 15:46:13 +08:00
if (emptyItems.length > 0) {
2024-12-02 17:54:53 +08:00
this.$modal.msgError("必填项请填写完整,再进行提交");
2024-12-06 15:46:13 +08:00
} else {
secondaryUpload(this.form).then(response => {
2024-12-16 16:15:07 +08:00
if (response.code == 200) {
this.$modal.msgSuccess(response.msg);
} else {
2024-12-11 09:33:43 +08:00
this.$modal.msgError(response.msg);
}
2024-12-06 15:46:13 +08:00
this.open = false;
this.$emit('handleRules')
2024-12-16 16:15:07 +08:00
}).catch(() => {
2024-12-11 09:33:43 +08:00
this.open = false;
})
2024-12-02 17:54:53 +08:00
}
2024-08-01 15:19:05 +08:00
},
2024-11-29 17:32:20 +08:00
// 屏幕resize监听
screenChange() {
// 屏幕resize监听事件一旦屏幕宽高发生变化就会执行resize
window.addEventListener('resize', this.minShowCtrol, true)
// 将屏幕监听事件移除
// 这步是必须的。离开页面时不移除,再返回,或者进入到别的有相同元素的页面会报错
// 或者将这里的方法直接写在beforeDestroy函数中也可以
this.$once('hook:beforeDestroy', () => {
window.removeEventListener('resize', this.minShowCtrol, true)
})
},
shiftCollapsiable() {
this.fold = !this.fold
this.$emit('fold', this.fold)
this.minShowCtrol()
},
// 通过maxShow控制元素显示/折叠
minShowCtrol() {
this.maxShow = Math.floor(this.$refs.searchFilter.offsetWidth / this.labelWidths)
const group = window.document.querySelectorAll(`#searchFilter .el-form-item.el-form-item--${this.size}`)
const len = group?.length ? group?.length - 1 : 0
if (this.maxShow < len) {
group.forEach((item, index) => {
item.hidden = false
if (index > this.maxShow - 1) {
item.hidden = !this.fold
}
})
this.collapsiable = true
} else {
this.collapsiable = false
}
this.screenChange();
this.$emit('minShowCtrol')
2024-08-01 15:19:05 +08:00
},
2024-11-29 17:32:20 +08:00
handleQuery() {
this.$emit('search')
},
handleReset() {
this.$emit('reset')
},
},
2024-08-01 15:19:05 +08:00
}
</script>
<style lang="scss" scoped>
2024-11-29 17:32:20 +08:00
.item-search-form {
::v-deep .el-form-item {
2024-08-01 15:19:05 +08:00
height: 28px !important;
2024-11-29 17:32:20 +08:00
}
}
2024-12-02 17:54:53 +08:00
::v-deep .el-checkbox__label {
2024-11-29 17:32:20 +08:00
font-size: 12px;
}
2024-12-02 17:54:53 +08:00
::v-deep .el-checkbox__inner {
2024-11-29 17:32:20 +08:00
width: 12px;
2024-12-02 17:54:53 +08:00
height: 12px;
2024-11-29 17:32:20 +08:00
}
2024-12-19 17:24:51 +08:00
.custom-cascader ::v-deep .el-input__inner::placeholder {
color: #606266; /* 你想要的颜色 */
2024-11-29 17:32:20 +08:00
}
.nameinformation {
border-left: 3px solid #4d9de7;
width: 200px;
height: 20px;
padding-left: 10px;
font-size: 18px;
// margin-top: 8px;
color: black;
}
.content {
margin: 22px;
}
.el-cascader .el-input input::-webkit-input-placeholder {
color: #686a6d;
}
// 遮罩层
.mask {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(255, 255, 255, 0.7); /* 半透明背景 */
// display: flex;
justify-content: center;
align-items: center;
z-index: 1000; /* 确保遮罩层在顶部 */
.maskimg {
position: absolute;
// top: 49%;
top: 45%;
left: 50%;
transform: translate(-50%, -50%);
.text {
position: absolute;
left: 19%;
width: 123px;
// color: #1989fa;
color: #f28e01;
}
// 加载
.newloding {
margin-top: 10px;
}
.wrap {
position: relative;
height: 40px;
// background: beige;
width: 200px;
}
.progress-bar {
position: absolute;
top: 23px;
width: 100%;
height: 12px;
border-radius: 6px;
background-color: rgb(255, 237, 212);
.inner {
position: absolute;
top: 0;
z-index: 10;
border-radius: 6px;
height: 12px;
width: 100px;
background: #f28e01;
transition: left 1s ease-in-out;
// animation: shrink 5s linear infinite;
animation: changeWidth 1s forwards linear, shrink 1s linear infinite;
background-image: url(~@/assets/images/jd.png);
}
}
.progress {
width: 0%;
height: 100%;
background-color: #00aaff;
transition: width 1s ease-in-out;
}
.runner {
width: 60px;
height: 24px;
background-image: url(~@/assets/images/run.gif);
background-size: contain;
position: absolute;
top: -27px;
transition: left 1s ease-in-out;
animation: run 1s forwards linear;
margin-left: -55px;
}
@keyframes run {
0% {
left: 0;
}
100% {
left: var(--left);
}
}
@keyframes changeWidth {
0% {
width: 0;
}
100% {
width: var(--left);
background-position: 40px 0;
}
}
@keyframes shrink {
0% {
background-position: 0 0;
}
100% {
background-position: 40px 0;
}
}
}
2024-08-01 15:19:05 +08:00
}
2024-12-09 17:12:29 +08:00
</style>