25 changed files with 2371 additions and 1529 deletions
@ -1,107 +1,121 @@ |
|||||
import { login, logout, getInfo } from '@/api/login' |
import { login, logout, getInfo } from "@/api/login"; |
||||
import { getToken, setToken, removeToken } from '@/utils/auth' |
import { getToken, setToken, removeToken } from "@/utils/auth"; |
||||
import { isHttp, isEmpty } from "@/utils/validate" |
import { isHttp, isEmpty } from "@/utils/validate"; |
||||
import defAva from '@/assets/images/profile.jpg' |
import defAva from "@/assets/images/profile.jpg"; |
||||
|
|
||||
const user = { |
const user = { |
||||
state: { |
state: { |
||||
token: getToken(), |
token: getToken(), |
||||
id: '', |
id: "", |
||||
name: '', |
name: "", |
||||
avatar: '', |
avatar: "", |
||||
roles: [], |
roles: [], |
||||
permissions: [] |
permissions: [], |
||||
|
forceUpdPwdFlag: 0, |
||||
}, |
}, |
||||
|
|
||||
mutations: { |
mutations: { |
||||
SET_TOKEN: (state, token) => { |
SET_TOKEN: (state, token) => { |
||||
state.token = token |
state.token = token; |
||||
}, |
}, |
||||
SET_ID: (state, id) => { |
SET_ID: (state, id) => { |
||||
state.id = id |
state.id = id; |
||||
}, |
}, |
||||
SET_NAME: (state, name) => { |
SET_NAME: (state, name) => { |
||||
state.name = name |
state.name = name; |
||||
}, |
}, |
||||
SET_AVATAR: (state, avatar) => { |
SET_AVATAR: (state, avatar) => { |
||||
state.avatar = avatar |
state.avatar = avatar; |
||||
}, |
}, |
||||
SET_ROLES: (state, roles) => { |
SET_ROLES: (state, roles) => { |
||||
state.roles = roles |
state.roles = roles; |
||||
}, |
}, |
||||
SET_PERMISSIONS: (state, permissions) => { |
SET_PERMISSIONS: (state, permissions) => { |
||||
state.permissions = permissions |
state.permissions = permissions; |
||||
} |
}, |
||||
|
SET_PWDFLAG: (state, data) => { |
||||
|
state.forceUpdPwdFlag = data; |
||||
|
}, |
||||
}, |
}, |
||||
|
|
||||
actions: { |
actions: { |
||||
// 登录
|
// 登录
|
||||
Login({ commit }, userInfo) { |
Login({ commit }, userInfo) { |
||||
const username = userInfo.username.trim() |
const username = userInfo.username.trim(); |
||||
const password = userInfo.password |
const password = userInfo.password; |
||||
const code = userInfo.code |
const code = userInfo.code; |
||||
const uuid = userInfo.uuid |
const uuid = userInfo.uuid; |
||||
return new Promise((resolve, reject) => { |
return new Promise((resolve, reject) => { |
||||
login(username, password, code, uuid).then(res => { |
login(username, password, code, uuid) |
||||
setToken(res.token) |
.then((res) => { |
||||
commit('SET_TOKEN', res.token) |
setToken(res.token); |
||||
resolve() |
commit("SET_TOKEN", res.token); |
||||
}).catch(error => { |
resolve(); |
||||
reject(error) |
}) |
||||
}) |
.catch((error) => { |
||||
}) |
reject(error); |
||||
|
}); |
||||
|
}); |
||||
}, |
}, |
||||
|
|
||||
// 获取用户信息
|
// 获取用户信息
|
||||
GetInfo({ commit, state }) { |
GetInfo({ commit, state }) { |
||||
return new Promise((resolve, reject) => { |
return new Promise((resolve, reject) => { |
||||
getInfo().then(res => { |
getInfo() |
||||
const user = res.user |
.then((res) => { |
||||
localStorage.setItem("user", JSON.stringify(user)) |
const user = res.user; |
||||
let avatar = user.avatar || "" |
commit("SET_PWDFLAG", res.forceUpdPwdFlag); |
||||
if (!isHttp(avatar)) { |
localStorage.setItem("user", JSON.stringify(user)); |
||||
avatar = (isEmpty(avatar)) ? defAva : process.env.VUE_APP_BASE_API + avatar |
let avatar = user.avatar || ""; |
||||
} |
if (!isHttp(avatar)) { |
||||
if (res.roles && res.roles.length > 0) { // 验证返回的roles是否是一个非空数组
|
avatar = isEmpty(avatar) |
||||
commit('SET_ROLES', res.roles) |
? defAva |
||||
commit('SET_PERMISSIONS', res.permissions) |
: process.env.VUE_APP_BASE_API + avatar; |
||||
} else { |
} |
||||
commit('SET_ROLES', ['ROLE_DEFAULT']) |
if (res.roles && res.roles.length > 0) { |
||||
} |
// 验证返回的roles是否是一个非空数组
|
||||
commit('SET_ID', user.userId) |
commit("SET_ROLES", res.roles); |
||||
commit('SET_NAME', user.userName) |
commit("SET_PERMISSIONS", res.permissions); |
||||
commit('SET_AVATAR', avatar) |
} else { |
||||
resolve(res) |
commit("SET_ROLES", ["ROLE_DEFAULT"]); |
||||
}).catch(error => { |
} |
||||
reject(error) |
commit("SET_ID", user.userId); |
||||
}) |
commit("SET_NAME", user.userName); |
||||
}) |
commit("SET_AVATAR", avatar); |
||||
|
resolve(res); |
||||
|
}) |
||||
|
.catch((error) => { |
||||
|
reject(error); |
||||
|
}); |
||||
|
}); |
||||
}, |
}, |
||||
|
|
||||
// 退出系统
|
// 退出系统
|
||||
LogOut({ commit, state }) { |
LogOut({ commit, state }) { |
||||
return new Promise((resolve, reject) => { |
return new Promise((resolve, reject) => { |
||||
logout(state.token).then(() => { |
logout(state.token) |
||||
commit('SET_TOKEN', '') |
.then(() => { |
||||
commit('SET_ROLES', []) |
commit("SET_TOKEN", ""); |
||||
commit('SET_PERMISSIONS', []) |
commit("SET_ROLES", []); |
||||
removeToken() |
commit("SET_PERMISSIONS", []); |
||||
resolve() |
removeToken(); |
||||
}).catch(error => { |
resolve(); |
||||
reject(error) |
}) |
||||
}) |
.catch((error) => { |
||||
}) |
reject(error); |
||||
|
}); |
||||
|
}); |
||||
}, |
}, |
||||
|
|
||||
// 前端 登出
|
// 前端 登出
|
||||
FedLogOut({ commit }) { |
FedLogOut({ commit }) { |
||||
return new Promise(resolve => { |
return new Promise((resolve) => { |
||||
commit('SET_TOKEN', '') |
commit("SET_TOKEN", ""); |
||||
removeToken() |
removeToken(); |
||||
resolve() |
resolve(); |
||||
}) |
}); |
||||
} |
}, |
||||
} |
}, |
||||
} |
}; |
||||
|
|
||||
export default user |
export default user; |
||||
|
Binary file not shown.
Binary file not shown.
@ -1,57 +1,65 @@ |
|||||
import request from '@/utils/request' |
import request from "@/utils/request"; |
||||
|
|
||||
// 查询缓存详细
|
// 查询缓存详细
|
||||
export function getCache() { |
export function getCache() { |
||||
return request({ |
return request({ |
||||
url: '/monitor/cache', |
url: "/monitor/cache", |
||||
method: 'get' |
method: "get", |
||||
}) |
}); |
||||
} |
} |
||||
|
|
||||
// 查询缓存名称列表
|
// 查询缓存名称列表
|
||||
export function listCacheName() { |
export function listCacheName() { |
||||
return request({ |
return request({ |
||||
url: '/monitor/cache/getNames', |
url: "/monitor/cache/getNames", |
||||
method: 'get' |
method: "get", |
||||
}) |
}); |
||||
} |
} |
||||
|
|
||||
// 查询缓存键名列表
|
// 查询缓存键名列表
|
||||
export function listCacheKey(cacheName) { |
export function listCacheKey(cacheName) { |
||||
return request({ |
return request({ |
||||
url: '/monitor/cache/getKeys/' + cacheName, |
url: "/monitor/cache/getKeys/" + cacheName, |
||||
method: 'get' |
method: "get", |
||||
}) |
}); |
||||
} |
} |
||||
|
|
||||
// 查询缓存内容
|
// 查询缓存内容
|
||||
export function getCacheValue(cacheName, cacheKey) { |
export function getCacheValue(cacheName, cacheKey) { |
||||
return request({ |
return request({ |
||||
url: '/monitor/cache/getValue/' + cacheName + '/' + cacheKey, |
url: "/monitor/cache/getValue/" + cacheName + "/" + cacheKey, |
||||
method: 'get' |
method: "get", |
||||
}) |
}); |
||||
} |
} |
||||
|
|
||||
// 清理指定名称缓存
|
// 清理指定名称缓存
|
||||
export function clearCacheName(cacheName) { |
export function clearCacheName(cacheName) { |
||||
return request({ |
return request({ |
||||
url: '/monitor/cache/clearCacheName/' + cacheName, |
url: "/monitor/cache/clearCacheName/" + cacheName, |
||||
method: 'delete' |
method: "delete", |
||||
}) |
}); |
||||
} |
} |
||||
|
|
||||
// 清理指定键名缓存
|
// 清理指定键名缓存
|
||||
export function clearCacheKey(cacheKey) { |
export function clearCacheKey(cacheKey) { |
||||
return request({ |
return request({ |
||||
url: '/monitor/cache/clearCacheKey/' + cacheKey, |
url: "/monitor/cache/clearCacheKey/" + cacheKey, |
||||
method: 'delete' |
method: "delete", |
||||
}) |
}); |
||||
} |
} |
||||
|
|
||||
// 清理全部缓存
|
// 清理全部缓存
|
||||
export function clearCacheAll() { |
export function clearCacheAll() { |
||||
return request({ |
return request({ |
||||
url: '/monitor/cache/clearCacheAll', |
url: "/monitor/cache/clearCacheAll", |
||||
method: 'delete' |
method: "delete", |
||||
}) |
}); |
||||
|
} |
||||
|
// 新增修改
|
||||
|
export function cacheAdd(query) { |
||||
|
return request({ |
||||
|
url: "/monitor/cache/add", |
||||
|
method: "get", |
||||
|
params: query, |
||||
|
}); |
||||
} |
} |
||||
|
@ -1,345 +1,620 @@ |
|||||
<template> |
<template> |
||||
<div class="app-container"> |
<div class="app-container"> |
||||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" |
<el-form |
||||
label-width="80px"> |
:model="queryParams" |
||||
<el-form-item label="标题" prop="reportTitle"> |
ref="queryForm" |
||||
<el-input v-model="queryParams.param.reportTitle" placeholder="请输入" clearable |
size="small" |
||||
@keyup.enter.native="handleQuery" /> |
:inline="true" |
||||
</el-form-item> |
v-show="showSearch" |
||||
<el-form-item> |
label-width="80px" |
||||
<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 label="标题" prop="reportTitle"> |
||||
</el-form-item> |
<el-input |
||||
</el-form> |
v-model="queryParams.param.reportTitle" |
||||
<el-row :gutter="10" class="mb8"> |
placeholder="请输入" |
||||
<el-col :span="1.5"> |
clearable |
||||
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd">新增</el-button> |
@keyup.enter.native="handleQuery" |
||||
</el-col> |
/> |
||||
<el-col :span="1.5"> |
</el-form-item> |
||||
<el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" |
<el-form-item> |
||||
@click="handleDelete">删除</el-button> |
<el-button |
||||
</el-col> |
type="primary" |
||||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> |
icon="el-icon-search" |
||||
</el-row> |
size="mini" |
||||
|
@click="handleQuery" |
||||
|
>搜索</el-button |
||||
|
> |
||||
|
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery" |
||||
|
>重置</el-button |
||||
|
> |
||||
|
</el-form-item> |
||||
|
</el-form> |
||||
|
<el-row :gutter="10" class="mb8"> |
||||
|
<el-col :span="1.5"> |
||||
|
<el-button |
||||
|
type="primary" |
||||
|
plain |
||||
|
icon="el-icon-plus" |
||||
|
size="mini" |
||||
|
@click="handleAdd" |
||||
|
>新增</el-button |
||||
|
> |
||||
|
</el-col> |
||||
|
<el-col :span="1.5"> |
||||
|
<el-button |
||||
|
type="danger" |
||||
|
plain |
||||
|
icon="el-icon-delete" |
||||
|
size="mini" |
||||
|
:disabled="multiple" |
||||
|
@click="handleDelete" |
||||
|
>删除</el-button |
||||
|
> |
||||
|
</el-col> |
||||
|
<right-toolbar |
||||
|
:showSearch.sync="showSearch" |
||||
|
@queryTable="getList" |
||||
|
></right-toolbar> |
||||
|
</el-row> |
||||
|
|
||||
<el-table v-loading="loading" :data="listData" @selection-change="handleSelectionChange" max-height="600"> |
<el-table |
||||
<el-table-column type="selection" width="55" align="center" /> |
v-loading="loading" |
||||
<el-table-column fixed label="标题" align="center" prop="reportTitle" min-width="100" /> |
:data="listData" |
||||
<el-table-column fixed label="类型" align="center" prop="typeName" show-overflow-tooltip min-width="100"> |
@selection-change="handleSelectionChange" |
||||
</el-table-column> |
max-height="600" |
||||
<el-table-column fixed label="开始时间" align="center" prop="timeRangeStart" show-overflow-tooltip |
> |
||||
min-width="100"> |
<el-table-column type="selection" width="55" align="center" /> |
||||
<template slot-scope="scope"> |
<el-table-column |
||||
<span> |
fixed |
||||
{{ parseTime(scope.row.timeRangeStart, "{y}-{m}-{d}") }} |
label="标题" |
||||
</span> |
align="center" |
||||
</template> |
prop="reportTitle" |
||||
</el-table-column> |
min-width="100" |
||||
<el-table-column fixed label="结束时间" align="center" prop="timeRangeEnd" show-overflow-tooltip |
/> |
||||
min-width="100"> |
<el-table-column |
||||
<template slot-scope="scope"> |
fixed |
||||
<span> |
label="类型" |
||||
{{ parseTime(scope.row.timeRangeEnd, "{y}-{m}-{d}") }} |
align="center" |
||||
</span> |
prop="typeName" |
||||
</template> |
show-overflow-tooltip |
||||
</el-table-column> |
min-width="100" |
||||
<el-table-column label="创建人/创建时间" align="center" min-width="140"> |
> |
||||
<template slot-scope="scope"> |
</el-table-column> |
||||
<div>{{scope.row.createBy}}</div> |
<el-table-column |
||||
<span> |
label="单位" |
||||
{{ parseTime(scope.row.createTime, "{y}-{m}-{d} {h}:{i}") }} |
align="center" |
||||
</span> |
prop="tenantIdList" |
||||
</template> |
min-width="250" |
||||
</el-table-column> |
show-overflow-tooltip |
||||
<el-table-column fixed="right" label="操作" align="center" class-name="small-padding fixed-width" width="200"> |
> |
||||
<template slot-scope="scope"> |
<template slot-scope="scope"> |
||||
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" |
<!-- 通过id列表找到tenantsData中匹配的数据并替换为中文,数据后面添加逗号 --> |
||||
:disabled="scope.row.id == 1 || scope.row.id == 2">修改</el-button> |
<template v-for="(item, index) in scope.row.tenantIdList"> |
||||
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" |
<template v-if="tenantsData.some((tenant) => tenant.id === item)"> |
||||
:disabled="scope.row.id == 1 || scope.row.id == 2">删除</el-button> |
{{ tenantsData.find((tenant) => tenant.id === item).name |
||||
</template> |
}}{{ index < scope.row.tenantIdList.length - 1 ? "," : "" }} |
||||
</el-table-column> |
</template> |
||||
</el-table> |
</template> |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
<el-table-column |
||||
|
fixed |
||||
|
label="开始时间" |
||||
|
align="center" |
||||
|
prop="timeRangeStart" |
||||
|
show-overflow-tooltip |
||||
|
min-width="100" |
||||
|
> |
||||
|
<template slot-scope="scope"> |
||||
|
<span> |
||||
|
{{ parseTime(scope.row.timeRangeStart, "{y}-{m}-{d}") }} |
||||
|
</span> |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
<el-table-column |
||||
|
fixed |
||||
|
label="结束时间" |
||||
|
align="center" |
||||
|
prop="timeRangeEnd" |
||||
|
show-overflow-tooltip |
||||
|
min-width="100" |
||||
|
> |
||||
|
<template slot-scope="scope"> |
||||
|
<span> |
||||
|
{{ parseTime(scope.row.timeRangeEnd, "{y}-{m}-{d}") }} |
||||
|
</span> |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
<el-table-column |
||||
|
label="状态" |
||||
|
align="center" |
||||
|
prop="status" |
||||
|
show-overflow-tooltip |
||||
|
min-width="100" |
||||
|
> |
||||
|
<template slot-scope="scope"> |
||||
|
<span v-if="scope.row.status === 0"> 未开始 </span> |
||||
|
<span v-if="scope.row.status === 1"> 进行中 </span> |
||||
|
<span v-if="scope.row.status === 2"> 已结束 </span> |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
<!-- <el-table-column |
||||
|
label="开启/结束" |
||||
|
align="center" |
||||
|
prop="typeName" |
||||
|
show-overflow-tooltip |
||||
|
min-width="100" |
||||
|
> |
||||
|
<template slot-scope="scope"> |
||||
|
<el-switch |
||||
|
v-model="scope.row.status" |
||||
|
active-color="#13ce66" |
||||
|
inactive-color="#ff4949" |
||||
|
></el-switch> |
||||
|
</template> |
||||
|
</el-table-column> --> |
||||
|
<el-table-column label="创建人/创建时间" align="center" min-width="140"> |
||||
|
<template slot-scope="scope"> |
||||
|
<div>{{ scope.row.createBy }}</div> |
||||
|
<span> |
||||
|
{{ parseTime(scope.row.createTime, "{y}-{m}-{d} {h}:{i}") }} |
||||
|
</span> |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
|
||||
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" |
<el-table-column |
||||
:limit.sync="queryParams.pageSize" @pagination="getList" /> |
fixed="right" |
||||
|
label="操作" |
||||
|
align="center" |
||||
|
class-name="small-padding fixed-width" |
||||
|
width="150" |
||||
|
> |
||||
|
<template slot-scope="scope"> |
||||
|
<el-button |
||||
|
v-if="scope.row.status === 0 || scope.row.status === 2" |
||||
|
size="mini" |
||||
|
type="text" |
||||
|
icon="el-icon-folder-checked" |
||||
|
@click="handleSwitch(scope.row, 1)" |
||||
|
>开启</el-button |
||||
|
> |
||||
|
<el-button |
||||
|
v-if="scope.row.status === 1" |
||||
|
size="mini" |
||||
|
type="text" |
||||
|
icon="el-icon-folder-delete" |
||||
|
@click="handleSwitch(scope.row, 2)" |
||||
|
>结束</el-button |
||||
|
> |
||||
|
<el-button |
||||
|
size="mini" |
||||
|
type="text" |
||||
|
icon="el-icon-document" |
||||
|
@click="handleDetails(scope.row)" |
||||
|
>上报详情</el-button |
||||
|
> |
||||
|
<el-button |
||||
|
size="mini" |
||||
|
type="text" |
||||
|
icon="el-icon-download" |
||||
|
@click="handleDownload(scope.row)" |
||||
|
>上报汇总表</el-button |
||||
|
> |
||||
|
<el-button |
||||
|
:disabled="scope.row.status === 1" |
||||
|
size="mini" |
||||
|
type="text" |
||||
|
icon="el-icon-edit" |
||||
|
@click="handleUpdate(scope.row)" |
||||
|
>修改</el-button |
||||
|
> |
||||
|
<el-button |
||||
|
:disabled="scope.row.status === 1" |
||||
|
size="mini" |
||||
|
type="text" |
||||
|
icon="el-icon-delete" |
||||
|
@click="handleDelete(scope.row)" |
||||
|
>删除</el-button |
||||
|
> |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
</el-table> |
||||
|
|
||||
<!-- 添加或修改公告对话框 --> |
<pagination |
||||
<el-dialog class="popup" :title="title" :visible.sync="open" width="780px" append-to-body> |
v-show="total > 0" |
||||
<el-form ref="form" :model="form" :rules="rules" label-width="140px" class="formStep"> |
:total="total" |
||||
<el-form-item label="标题" prop="reportTitle"> |
:page.sync="queryParams.pageNum" |
||||
<el-input v-model="form.reportTitle" placeholder="请输入" /> |
:limit.sync="queryParams.pageSize" |
||||
</el-form-item> |
@pagination="getList" |
||||
<el-form-item label="上报类型" prop="reportType"> |
/> |
||||
<el-select v-model="form.reportType" placeholder="请选择"> |
|
||||
<el-option v-for="item in reporTypeList" :key="item.id" :label="item.typeName" :value="item.id"> |
<!-- 添加或修改公告对话框 --> |
||||
</el-option> |
<el-dialog |
||||
</el-select> |
class="popup" |
||||
</el-form-item> |
:title="title" |
||||
<el-form-item label="时间范围" prop="time"> |
:visible.sync="open" |
||||
<!-- <el-date-picker format="yyyy-MM-dd" value-format="yyyy-MM-dd" v-model="form.timeRangeStart" |
width="780px" |
||||
type="date" placeholder="选择日期"> |
append-to-body |
||||
</el-date-picker> --> |
> |
||||
<el-date-picker format="yyyy-MM-dd" value-format="yyyy-MM-dd" v-model="form.time" type="daterange" |
<el-form |
||||
range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" @input="$forceUpdate()"> |
ref="form" |
||||
</el-date-picker> |
:model="form" |
||||
</el-form-item> |
:rules="rules" |
||||
<!-- <el-form-item label="结束时间" prop="timeRangeEnd"> |
label-width="100px" |
||||
<el-date-picker format="yyyy-MM-dd" value-format="yyyy-MM-dd" v-model="form.timeRangeEnd" type="date" |
class="formStep" |
||||
placeholder="选择日期"> |
> |
||||
</el-date-picker> |
<el-form-item label="标题" prop="reportTitle"> |
||||
</el-form-item> --> |
<el-input v-model="form.reportTitle" placeholder="请输入" /> |
||||
</el-form> |
</el-form-item> |
||||
<div slot="footer" class="dialog-footer"> |
<el-form-item label="上报类型" prop="reportType"> |
||||
<el-button type="primary" @click="submitForm">确 定</el-button> |
<el-select |
||||
<el-button @click="cancel">取 消</el-button> |
v-model="form.reportType" |
||||
</div> |
placeholder="请选择" |
||||
</el-dialog> |
@change="handleTypeChage" |
||||
</div> |
> |
||||
|
<el-option |
||||
|
v-for="item in reporTypeList" |
||||
|
:key="item.id" |
||||
|
:label="item.typeName" |
||||
|
:value="item.id" |
||||
|
> |
||||
|
</el-option> |
||||
|
</el-select> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="单位" prop="tenantIdList"> |
||||
|
<el-select v-model="form.tenantIdList" multiple placeholder="请选择"> |
||||
|
<el-option |
||||
|
v-for="item in tenantsData" |
||||
|
:key="item.id" |
||||
|
:label="item.name" |
||||
|
:value="item.id" |
||||
|
> |
||||
|
</el-option> |
||||
|
</el-select> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="时间范围" prop="time"> |
||||
|
<el-date-picker |
||||
|
format="yyyy-MM-dd" |
||||
|
value-format="yyyy-MM-dd" |
||||
|
v-model="form.time" |
||||
|
type="daterange" |
||||
|
range-separator="至" |
||||
|
start-placeholder="开始日期" |
||||
|
end-placeholder="结束日期" |
||||
|
@input="$forceUpdate()" |
||||
|
> |
||||
|
</el-date-picker> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="状态" prop="status" v-if="!form.id"> |
||||
|
<el-radio-group v-model="form.status"> |
||||
|
<el-radio :label="0">未开始</el-radio> |
||||
|
<el-radio :label="1">进行中</el-radio> |
||||
|
<el-radio :label="2">已结束</el-radio> |
||||
|
</el-radio-group> |
||||
|
</el-form-item> |
||||
|
</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> |
||||
|
</div> |
||||
</template> |
</template> |
||||
|
|
||||
<script> |
<script> |
||||
import { |
import { |
||||
managerQuery, |
managerQuery, |
||||
managerAdd, |
managerAdd, |
||||
managerUpd, |
managerUpd, |
||||
managerDel, |
managerDel, |
||||
reportList |
reportList, |
||||
} from "@/api/report"; |
reportDown, |
||||
export default { |
} from "@/api/report"; |
||||
name: "Notice", |
import { tenantsList } from "@/api/member"; |
||||
data() { |
export default { |
||||
return { |
name: "Notice", |
||||
reporTypeList: [], |
data() { |
||||
queryParams: { |
return { |
||||
param: { |
reporTypeList: [], |
||||
reportTitle: "", |
queryParams: { |
||||
} |
pageNum: 1, |
||||
}, |
pageSize: 10, |
||||
listData: [], |
param: { |
||||
title: '', |
reportTitle: "", |
||||
open: false, |
}, |
||||
total: 0, |
}, |
||||
form: {}, |
listData: [], |
||||
loading: false, |
title: "", |
||||
showSearch: true, |
open: false, |
||||
multiple: false, |
total: 0, |
||||
// 表单校验 |
form: {}, |
||||
rules: { |
loading: false, |
||||
reportTitle: [{ |
showSearch: true, |
||||
required: true, |
multiple: false, |
||||
message: "标题不能为空", |
// 表单校验 |
||||
trigger: "blur", |
rules: { |
||||
}], |
reportTitle: [ |
||||
reportType: [{ |
{ |
||||
required: true, |
required: true, |
||||
message: "类型不能为空", |
message: "标题不能为空", |
||||
trigger: "blur", |
trigger: "blur", |
||||
}], |
}, |
||||
time: [{ |
], |
||||
required: true, |
reportType: [ |
||||
message: "时间范围不能为空", |
{ |
||||
trigger: "change", |
required: true, |
||||
}] |
message: "类型不能为空", |
||||
// timeRangeStart: [{ |
trigger: "blur", |
||||
// required: true, |
}, |
||||
// message: "开始时间不能为空", |
], |
||||
// trigger: "blur", |
time: [ |
||||
// }], |
{ |
||||
// timeRangeEnd: [{ |
required: true, |
||||
// required: true, |
message: "时间范围不能为空", |
||||
// message: "结束时间不能为空", |
trigger: "change", |
||||
// trigger: "blur" |
}, |
||||
// }], |
], |
||||
}, |
tenantIdList: [ |
||||
}; |
{ |
||||
}, |
required: true, |
||||
created() { |
message: "单位不能为空", |
||||
this.getList(); |
trigger: "change", |
||||
this.getReportType(); |
}, |
||||
}, |
], |
||||
methods: { |
// timeRangeStart: [{ |
||||
getReportType() { |
// required: true, |
||||
reportList({ |
// message: "开始时间不能为空", |
||||
pageNum: -1, |
// trigger: "blur", |
||||
param: {}, |
// }], |
||||
}).then((res) => { |
// timeRangeEnd: [{ |
||||
this.reporTypeList = res.data.list; |
// required: true, |
||||
}); |
// message: "结束时间不能为空", |
||||
}, |
// trigger: "blur" |
||||
/** 查询公告列表 */ |
// }], |
||||
getList() { |
}, |
||||
this.loading = true; |
tenantsData: [], |
||||
managerQuery(this.queryParams).then((res) => { |
qzUrl: process.env.VUE_APP_API_QZURL, // 二维码路径 |
||||
this.listData = res.data.list; |
}; |
||||
this.total = res.data.total; |
}, |
||||
this.loading = false; |
created() { |
||||
}); |
this.getList(); |
||||
}, |
this.getReportType(); |
||||
// 取消按钮 |
this.getTenantsList(); |
||||
cancel() { |
}, |
||||
this.open = false; |
methods: { |
||||
this.reset(); |
handleDownload(row) { |
||||
}, |
reportDown({ |
||||
// 表单重置 |
managementId: row.id, |
||||
reset() { |
}).then((res) => { |
||||
this.form = { |
if (res.data) { |
||||
"reportTitle": "", |
window.open(this.qzUrl + res.data); |
||||
"reportType": "", |
} else { |
||||
time:[], |
this.$modal.msgError("暂无上报汇总表"); |
||||
"timeRangeStart": "", |
} |
||||
"timeRangeEnd": "", |
}); |
||||
}; |
}, |
||||
this.resetForm("form"); |
// 上报详情 |
||||
}, |
handleDetails(row) { |
||||
/** 搜索按钮操作 */ |
this.$router.push({ |
||||
handleQuery() { |
path: "/medicalFile/index", |
||||
this.queryParams.pageNum = 1; |
query: { managementId: row.id }, |
||||
this.getList(); |
}); |
||||
}, |
}, |
||||
/** 重置按钮操作 */ |
// 获取上报类型切换处理 |
||||
resetQuery() { |
handleTypeChage() { |
||||
this.queryParams.param = { |
// form.reportType reporTypeList 找到对应的id 然后获取到tenantIdList |
||||
reportTitle: "", |
let reportType = this.form.reportType; |
||||
}; |
let tenantIdList = this.reporTypeList.find( |
||||
this.handleQuery(); |
(item) => item.id == reportType |
||||
}, |
).tenantIdList; |
||||
// 多选框选中数据 |
this.form.tenantIdList = tenantIdList; |
||||
handleSelectionChange(selection) { |
}, |
||||
this.ids = selection.map((item) => item.id); |
// 获取上报类型 |
||||
this.single = selection.length != 1; |
getReportType() { |
||||
this.multiple = !selection.length; |
reportList({ |
||||
}, |
pageNum: -1, |
||||
/** 新增按钮操作 */ |
param: {}, |
||||
handleAdd() { |
}).then((res) => { |
||||
this.reset(); |
this.reporTypeList = res.data.list; |
||||
this.open = true; |
}); |
||||
this.title = "新增上报"; |
}, |
||||
}, |
/** 查询公告列表 */ |
||||
/** 修改按钮操作 */ |
getTenantsList() { |
||||
handleUpdate(row) { |
tenantsList({ |
||||
this.open = true; |
pageNum: -1, |
||||
this.title = "修改上报"; |
param: {}, |
||||
this.form = JSON.parse(JSON.stringify(row)) |
}).then((res) => { |
||||
let timeRangeStart = this.parseTime(this.form.timeRangeStart, "{y}-{m}-{d}") |
this.tenantsData = res.data.list; |
||||
let timeRangeEnd = this.parseTime(this.form.timeRangeEnd, "{y}-{m}-{d}") |
}); |
||||
this.form.time = [] |
}, |
||||
this.form.time[0] = timeRangeStart |
/** 查询公告列表 */ |
||||
this.form.time[1] = timeRangeEnd |
getList() { |
||||
}, |
this.loading = true; |
||||
/** 诊疗档案 */ |
managerQuery(this.queryParams).then((res) => { |
||||
submitForm: function() { |
this.listData = res.data.list; |
||||
this.$refs["form"].validate((valid) => { |
this.total = res.data.total; |
||||
if (valid) { |
this.loading = false; |
||||
let data = JSON.parse(JSON.stringify(this.form)) |
}); |
||||
let time = data.time |
}, |
||||
data.timeRangeStart = data.time[0] |
// 取消按钮 |
||||
data.timeRangeEnd = data.time[1] |
cancel() { |
||||
if (data.id != undefined) { |
this.open = false; |
||||
managerUpd(data).then((response) => { |
this.reset(); |
||||
this.$modal.msgSuccess("修改成功"); |
}, |
||||
this.open = false; |
// 表单重置 |
||||
this.getList(); |
reset() { |
||||
}); |
this.form = { |
||||
} else { |
reportTitle: "", |
||||
managerAdd(data).then((response) => { |
reportType: "", |
||||
this.$modal.msgSuccess("新增成功"); |
time: [], |
||||
this.open = false; |
timeRangeStart: "", |
||||
this.getList(); |
timeRangeEnd: "", |
||||
}); |
tenantIdList: [], |
||||
} |
status: 0, |
||||
} |
}; |
||||
}); |
this.resetForm("form"); |
||||
}, |
}, |
||||
|
/** 搜索按钮操作 */ |
||||
|
handleQuery() { |
||||
|
this.queryParams.pageNum = 1; |
||||
|
this.getList(); |
||||
|
}, |
||||
|
/** 重置按钮操作 */ |
||||
|
resetQuery() { |
||||
|
this.queryParams.param = { |
||||
|
reportTitle: "", |
||||
|
}; |
||||
|
this.handleQuery(); |
||||
|
}, |
||||
|
// 多选框选中数据 |
||||
|
handleSelectionChange(selection) { |
||||
|
this.ids = selection.map((item) => item.id); |
||||
|
this.single = selection.length != 1; |
||||
|
this.multiple = !selection.length; |
||||
|
}, |
||||
|
/** 新增按钮操作 */ |
||||
|
handleAdd() { |
||||
|
this.reset(); |
||||
|
this.open = true; |
||||
|
this.title = "新增上报"; |
||||
|
}, |
||||
|
/** 修改按钮操作 */ |
||||
|
handleSwitch(row, status) { |
||||
|
this.form = JSON.parse(JSON.stringify(row)); |
||||
|
this.form.status = status; |
||||
|
managerUpd(this.form).then((response) => { |
||||
|
this.$modal.msgSuccess("操作成功"); |
||||
|
this.getList(); |
||||
|
}); |
||||
|
}, |
||||
|
/** 修改按钮操作 */ |
||||
|
handleUpdate(row) { |
||||
|
this.open = true; |
||||
|
this.title = "修改上报"; |
||||
|
this.form = JSON.parse(JSON.stringify(row)); |
||||
|
let timeRangeStart = this.parseTime( |
||||
|
this.form.timeRangeStart, |
||||
|
"{y}-{m}-{d}" |
||||
|
); |
||||
|
let timeRangeEnd = this.parseTime(this.form.timeRangeEnd, "{y}-{m}-{d}"); |
||||
|
this.form.time = []; |
||||
|
this.form.time[0] = timeRangeStart; |
||||
|
this.form.time[1] = timeRangeEnd; |
||||
|
}, |
||||
|
/** 诊疗档案 */ |
||||
|
submitForm: function () { |
||||
|
this.$refs["form"].validate((valid) => { |
||||
|
if (valid) { |
||||
|
let data = JSON.parse(JSON.stringify(this.form)); |
||||
|
let time = data.time; |
||||
|
data.timeRangeStart = data.time[0]; |
||||
|
data.timeRangeEnd = data.time[1]; |
||||
|
if (data.id != undefined) { |
||||
|
managerUpd(data).then((response) => { |
||||
|
this.$modal.msgSuccess("修改成功"); |
||||
|
this.open = false; |
||||
|
this.getList(); |
||||
|
}); |
||||
|
} else { |
||||
|
managerAdd(data).then((response) => { |
||||
|
this.$modal.msgSuccess("新增成功"); |
||||
|
this.open = false; |
||||
|
this.getList(); |
||||
|
}); |
||||
|
} |
||||
|
} |
||||
|
}); |
||||
|
}, |
||||
|
|
||||
/** 删除按钮操作 */ |
/** 删除按钮操作 */ |
||||
handleDelete(row) { |
handleDelete(row) { |
||||
const idList = row.id ? [row.id] : this.ids; |
const idList = row.id ? [row.id] : this.ids; |
||||
this.$modal |
this.$modal |
||||
.confirm("是否确认删除当前选择的数据?") |
.confirm("是否确认删除当前选择的数据?") |
||||
.then(function() { |
.then(function () { |
||||
return managerDel({ |
return managerDel({ |
||||
idList: idList, |
idList: idList, |
||||
}); |
}); |
||||
}) |
}) |
||||
.then(() => { |
.then(() => { |
||||
this.$modal.msgSuccess("删除成功"); |
this.$modal.msgSuccess("删除成功"); |
||||
this.getList(); |
this.getList(); |
||||
}) |
}) |
||||
.catch(() => {}); |
.catch(() => {}); |
||||
}, |
}, |
||||
}, |
}, |
||||
}; |
}; |
||||
</script> |
</script> |
||||
<style scoped src="@/assets/styles/common.css"></style> |
<style scoped src="@/assets/styles/common.css"></style> |
||||
|
|
||||
<style scoped> |
<style scoped> |
||||
.div-title1 { |
.div-title1 { |
||||
font-size: 22px; |
font-size: 22px; |
||||
font-weight: bold; |
font-weight: bold; |
||||
margin-bottom: 10px; |
margin-bottom: 10px; |
||||
} |
} |
||||
|
|
||||
.div-title2 { |
.div-title2 { |
||||
font-size: 20px; |
font-size: 20px; |
||||
font-weight: bold; |
font-weight: bold; |
||||
margin-bottom: 10px; |
margin-bottom: 10px; |
||||
} |
} |
||||
|
|
||||
.div-title3 { |
.div-title3 { |
||||
font-size: 18px; |
font-size: 18px; |
||||
font-weight: bold; |
font-weight: bold; |
||||
margin-bottom: 10px; |
margin-bottom: 10px; |
||||
} |
} |
||||
|
|
||||
.span-but { |
.span-but { |
||||
display: inline-block; |
display: inline-block; |
||||
border-radius: 4px; |
border-radius: 4px; |
||||
border: 1px solid #dcdfe6; |
border: 1px solid #dcdfe6; |
||||
line-height: 32px; |
line-height: 32px; |
||||
padding: 0 15px; |
padding: 0 15px; |
||||
margin: 5px; |
margin: 5px; |
||||
} |
} |
||||
|
|
||||
.span-but-active { |
.span-but-active { |
||||
border: 1px solid #1890ff; |
border: 1px solid #1890ff; |
||||
} |
} |
||||
|
|
||||
.human-body { |
.human-body { |
||||
display: flex; |
display: flex; |
||||
flex-wrap: wrap; |
flex-wrap: wrap; |
||||
} |
} |
||||
|
|
||||
.human-body>>>.el-form-item { |
.human-body >>> .el-form-item { |
||||
width: 49%; |
width: 49%; |
||||
margin-right: 2%; |
margin-right: 2%; |
||||
} |
} |
||||
|
|
||||
.human-body>>>.el-form-item:nth-of-type(2n) { |
.human-body >>> .el-form-item:nth-of-type(2n) { |
||||
margin-right: 0; |
margin-right: 0; |
||||
} |
} |
||||
|
|
||||
.formStep1>>>.el-form-item__label {} |
.formStep1 >>> .el-form-item__label { |
||||
|
} |
||||
|
|
||||
.form-item-zd { |
.form-item-zd { |
||||
width: 100%; |
width: 100%; |
||||
text-align: left; |
text-align: left; |
||||
} |
} |
||||
|
|
||||
.form-item-age { |
.form-item-age { |
||||
display: flex; |
display: flex; |
||||
align-items: center; |
align-items: center; |
||||
} |
} |
||||
|
|
||||
.form-item-age span { |
.form-item-age span { |
||||
margin: 0 10px; |
margin: 0 10px; |
||||
} |
} |
||||
|
|
||||
.form-item-age>>>.el-input { |
.form-item-age >>> .el-input { |
||||
width: 100px; |
width: 100px; |
||||
} |
} |
||||
|
|
||||
>>>.el-drawer.rtl { |
>>> .el-drawer.rtl { |
||||
width: 50% !important; |
width: 50% !important; |
||||
} |
} |
||||
</style> |
</style> |
||||
|
@ -1,265 +1,504 @@ |
|||||
<template> |
<template> |
||||
<div class="app-container"> |
<div class="app-container"> |
||||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" |
<el-form |
||||
label-width="80px"> |
:model="queryParams" |
||||
<el-form-item label="类型名称" prop="typeName"> |
ref="queryForm" |
||||
<el-input v-model="queryParams.param.typeName" placeholder="请输入" clearable |
size="small" |
||||
@keyup.enter.native="handleQuery" /> |
:inline="true" |
||||
</el-form-item> |
v-show="showSearch" |
||||
<el-form-item> |
label-width="80px" |
||||
<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 label="类型名称" prop="typeName"> |
||||
</el-form-item> |
<el-input |
||||
</el-form> |
v-model="queryParams.param.typeName" |
||||
<el-row :gutter="10" class="mb8"> |
placeholder="请输入" |
||||
<el-col :span="1.5"> |
clearable |
||||
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd">新增</el-button> |
@keyup.enter.native="handleQuery" |
||||
</el-col> |
/> |
||||
<el-col :span="1.5"> |
</el-form-item> |
||||
<el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" |
<el-form-item> |
||||
@click="handleDelete">删除</el-button> |
<el-button |
||||
</el-col> |
type="primary" |
||||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> |
icon="el-icon-search" |
||||
</el-row> |
size="mini" |
||||
|
@click="handleQuery" |
||||
|
>搜索</el-button |
||||
|
> |
||||
|
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery" |
||||
|
>重置</el-button |
||||
|
> |
||||
|
</el-form-item> |
||||
|
</el-form> |
||||
|
<el-row :gutter="10" class="mb8"> |
||||
|
<el-col :span="1.5"> |
||||
|
<el-button |
||||
|
type="primary" |
||||
|
plain |
||||
|
icon="el-icon-plus" |
||||
|
size="mini" |
||||
|
@click="handleAdd" |
||||
|
>新增</el-button |
||||
|
> |
||||
|
</el-col> |
||||
|
<el-col :span="1.5"> |
||||
|
<el-button |
||||
|
type="danger" |
||||
|
plain |
||||
|
icon="el-icon-delete" |
||||
|
size="mini" |
||||
|
:disabled="multiple" |
||||
|
@click="handleDelete" |
||||
|
>删除</el-button |
||||
|
> |
||||
|
</el-col> |
||||
|
<right-toolbar |
||||
|
:showSearch.sync="showSearch" |
||||
|
@queryTable="getList" |
||||
|
></right-toolbar> |
||||
|
</el-row> |
||||
|
|
||||
<el-table v-loading="loading" :data="listData" @selection-change="handleSelectionChange" max-height="600"> |
<el-table |
||||
<el-table-column type="selection" width="55" align="center" /> |
v-loading="loading" |
||||
<el-table-column fixed label="类型名称" align="center" prop="typeName" min-width="100" /> |
:data="listData" |
||||
<el-table-column label="创建人/创建时间" align="center" min-width="140"> |
@selection-change="handleSelectionChange" |
||||
<template slot-scope="scope"> |
max-height="600" |
||||
<div>{{scope.row.createBy}}</div> |
> |
||||
<span> |
<el-table-column type="selection" width="55" align="center" /> |
||||
{{ parseTime(scope.row.createTime, "{y}-{m}-{d} {h}:{i}") }} |
<el-table-column |
||||
</span> |
fixed |
||||
</template> |
label="类型名称" |
||||
</el-table-column> |
align="center" |
||||
<el-table-column fixed="right" label="操作" align="center" class-name="small-padding fixed-width" width="200"> |
prop="typeName" |
||||
<template slot-scope="scope"> |
min-width="100" |
||||
<el-button size="mini" type="text" icon="el-icon-edit" |
show-overflow-tooltip |
||||
@click="handleUpdate(scope.row)">修改</el-button> |
/> |
||||
<el-button size="mini" type="text" icon="el-icon-delete" |
<el-table-column |
||||
@click="handleDelete(scope.row)">删除</el-button> |
label="单位" |
||||
</template> |
align="center" |
||||
</el-table-column> |
prop="tenantIdList" |
||||
</el-table> |
min-width="250" |
||||
|
show-overflow-tooltip |
||||
|
> |
||||
|
<template slot-scope="scope"> |
||||
|
<!-- 通过id列表找到tenantsData中匹配的数据并替换为中文,数据后面添加逗号 --> |
||||
|
<template v-for="(item, index) in scope.row.tenantIdList"> |
||||
|
<template v-if="tenantsData.some((tenant) => tenant.id === item)"> |
||||
|
{{ tenantsData.find((tenant) => tenant.id === item).name |
||||
|
}}{{ index < scope.row.tenantIdList.length - 1 ? "," : "" }} |
||||
|
</template> |
||||
|
</template> |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
<el-table-column |
||||
|
label="附件" |
||||
|
align="center" |
||||
|
prop="typeName" |
||||
|
min-width="150" |
||||
|
show-overflow-tooltip |
||||
|
> |
||||
|
<template slot-scope="scope"> |
||||
|
<el-button type="text" size="mini" @click="handleDownload(scope.row)"> |
||||
|
<span v-if="scope.row.file"> |
||||
|
<i class="el-icon-download"></i> |
||||
|
<span>{{ |
||||
|
scope.row.file.substring(scope.row.file.lastIndexOf("/") + 1) |
||||
|
}}</span> |
||||
|
</span> |
||||
|
</el-button> |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
<el-table-column |
||||
|
label="备注" |
||||
|
align="center" |
||||
|
prop="remark" |
||||
|
min-width="150" |
||||
|
show-overflow-tooltip |
||||
|
/> |
||||
|
<el-table-column label="创建人/创建时间" align="center" min-width="140"> |
||||
|
<template slot-scope="scope"> |
||||
|
<div>{{ scope.row.createBy }}</div> |
||||
|
<span> |
||||
|
{{ parseTime(scope.row.createTime, "{y}-{m}-{d} {h}:{i}") }} |
||||
|
</span> |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
<el-table-column |
||||
|
fixed="right" |
||||
|
label="操作" |
||||
|
align="center" |
||||
|
class-name="small-padding fixed-width" |
||||
|
width="200" |
||||
|
> |
||||
|
<template slot-scope="scope"> |
||||
|
<el-button |
||||
|
size="mini" |
||||
|
type="text" |
||||
|
icon="el-icon-edit" |
||||
|
@click="handleUpdate(scope.row)" |
||||
|
>修改</el-button |
||||
|
> |
||||
|
<el-button |
||||
|
size="mini" |
||||
|
type="text" |
||||
|
icon="el-icon-delete" |
||||
|
@click="handleDelete(scope.row)" |
||||
|
>删除</el-button |
||||
|
> |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
</el-table> |
||||
|
|
||||
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" |
<pagination |
||||
:limit.sync="queryParams.pageSize" @pagination="getList" /> |
v-show="total > 0" |
||||
|
:total="total" |
||||
|
:page.sync="queryParams.pageNum" |
||||
|
:limit.sync="queryParams.pageSize" |
||||
|
@pagination="getList" |
||||
|
/> |
||||
|
|
||||
<!-- 添加或修改公告对话框 --> |
<!-- 添加或修改公告对话框 --> |
||||
<el-dialog class="popup" :title="title" :visible.sync="open" width="780px" append-to-body> |
<el-dialog |
||||
<el-form ref="form" :model="form" :rules="rules" label-width="90px" class="formStep"> |
class="popup" |
||||
<el-form-item label="类型名称" prop="typeName"> |
:title="title" |
||||
<el-input v-model="form.typeName" placeholder="请输入" /> |
:visible.sync="open" |
||||
</el-form-item> |
width="780px" |
||||
</el-form> |
append-to-body |
||||
<div slot="footer" class="dialog-footer"> |
> |
||||
<el-button type="primary" @click="submitForm">确 定</el-button> |
<el-form |
||||
<el-button @click="cancel">取 消</el-button> |
ref="form" |
||||
</div> |
:model="form" |
||||
</el-dialog> |
:rules="rules" |
||||
</div> |
label-width="90px" |
||||
|
class="formStep" |
||||
|
> |
||||
|
<el-form-item label="类型名称" prop="typeName"> |
||||
|
<el-input v-model="form.typeName" placeholder="请输入" /> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="单位" prop="tenantIdList"> |
||||
|
<el-select v-model="form.tenantIdList" multiple placeholder="请选择"> |
||||
|
<el-option |
||||
|
v-for="item in tenantsData" |
||||
|
:key="item.id" |
||||
|
:label="item.name" |
||||
|
:value="item.id" |
||||
|
> |
||||
|
</el-option> |
||||
|
</el-select> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="附件" prop="file"> |
||||
|
<el-upload |
||||
|
:limit="1" |
||||
|
class="avatar-uploader wj-uploader" |
||||
|
:headers="headers" |
||||
|
:action="uploadFileUrl" |
||||
|
accept=".xlsx,.xls,.pdf,.doc,.docx" |
||||
|
:before-upload="handleBeforePdfUpload1" |
||||
|
:on-success="handleUploadPdfAdd1" |
||||
|
:on-remove="handleRemove" |
||||
|
:file-list="fileList" |
||||
|
:show-file-list="true" |
||||
|
> |
||||
|
<i class="el-icon-upload"></i> |
||||
|
<div class="el-upload__text"> |
||||
|
将文件拖到此处,或 |
||||
|
<em>点击上传</em> |
||||
|
</div> |
||||
|
</el-upload> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="备注" prop="remark"> |
||||
|
<el-input |
||||
|
type="textarea" |
||||
|
v-model="form.remark" |
||||
|
placeholder="请输入" |
||||
|
/> |
||||
|
</el-form-item> |
||||
|
</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> |
||||
|
</div> |
||||
</template> |
</template> |
||||
|
|
||||
<script> |
<script> |
||||
import { |
import { getToken } from "@/utils/auth"; |
||||
reportList, |
import { tenantsList } from "@/api/member"; |
||||
reportAdd, |
import { reportList, reportAdd, reportUpd, reportDel } from "@/api/report"; |
||||
reportUpd, |
export default { |
||||
reportDel |
name: "Notice", |
||||
} from "@/api/report"; |
data() { |
||||
export default { |
return { |
||||
name: "Notice", |
uploadFileUrl: process.env.VUE_APP_API_QZURL + "/common/upload", // 上传的图片服务器地址 |
||||
data() { |
headers: { |
||||
return { |
Authorization: "Bearer " + getToken(), |
||||
dataSourceList: [], |
}, |
||||
queryParams: { |
dataSourceList: [], |
||||
param: { |
queryParams: { |
||||
name: "", |
param: { |
||||
} |
name: "", |
||||
}, |
}, |
||||
listData: [], |
}, |
||||
title: '', |
listData: [], |
||||
open: false, |
title: "", |
||||
total: 0, |
open: false, |
||||
form: {}, |
total: 0, |
||||
loading: false, |
form: {}, |
||||
showSearch: true, |
loading: false, |
||||
multiple: false, |
showSearch: true, |
||||
// 表单校验 |
multiple: false, |
||||
rules: { |
// 表单校验 |
||||
typeName: [{ |
rules: { |
||||
required: true, |
typeName: [ |
||||
message: "上报类型不能为空", |
{ |
||||
trigger: "blur", |
required: true, |
||||
}], |
message: "上报类型不能为空", |
||||
}, |
trigger: "blur", |
||||
}; |
}, |
||||
}, |
], |
||||
created() { |
tenantIdList: [ |
||||
this.getList(); |
{ |
||||
}, |
required: true, |
||||
methods: { |
message: "单位不能为空", |
||||
/** 查询公告列表 */ |
trigger: "change", |
||||
getList() { |
}, |
||||
this.loading = true; |
], |
||||
reportList(this.queryParams).then((res) => { |
file: [ |
||||
this.listData = res.data.list; |
{ |
||||
this.total = res.data.total; |
required: true, |
||||
this.loading = false; |
message: "附件不能为空", |
||||
}); |
trigger: "change", |
||||
}, |
}, |
||||
// 取消按钮 |
], |
||||
cancel() { |
}, |
||||
this.open = false; |
tenantsData: [], |
||||
this.reset(); |
fileList: [], |
||||
}, |
qzUrl: process.env.VUE_APP_API_QZURL, // 二维码路径 |
||||
// 表单重置 |
}; |
||||
reset() { |
}, |
||||
this.form = { |
created() { |
||||
"typeName": "", |
this.getList(); |
||||
}; |
this.getTenantsList(); |
||||
this.resetForm("form"); |
}, |
||||
}, |
methods: { |
||||
/** 搜索按钮操作 */ |
handleDownload(row) { |
||||
handleQuery() { |
window.open(this.qzUrl + row.file); |
||||
this.queryParams.pageNum = 1; |
}, |
||||
this.getList(); |
handleRemove(file, fileList) { |
||||
}, |
this.form.file = ""; |
||||
/** 重置按钮操作 */ |
this.fileList = []; |
||||
resetQuery() { |
}, |
||||
this.queryParams.param = { |
// 上传成功回 - pdg |
||||
typeName: "", |
handleUploadPdfAdd1(res) { |
||||
}; |
if (res.code == 200) { |
||||
this.handleQuery(); |
this.$message.success(res.msg || "导入成功"); |
||||
}, |
this.form.file = res.fileName; |
||||
// 多选框选中数据 |
setTimeout(() => { |
||||
handleSelectionChange(selection) { |
this.$refs["form"].validateField("file", (errorMessage) => {}); |
||||
this.ids = selection.map((item) => item.id); |
}); |
||||
this.single = selection.length != 1; |
} else { |
||||
this.multiple = !selection.length; |
this.$message.error(res.msg || "导入失败"); |
||||
}, |
this.fileList = []; |
||||
/** 新增按钮操作 */ |
} |
||||
handleAdd() { |
}, |
||||
this.reset(); |
|
||||
this.open = true; |
|
||||
this.title = "新增上报类型"; |
|
||||
}, |
|
||||
/** 修改按钮操作 */ |
|
||||
handleUpdate(row) { |
|
||||
this.open = true; |
|
||||
this.title = "修改诊疗档案"; |
|
||||
this.form = JSON.parse(JSON.stringify(row)) |
|
||||
}, |
|
||||
/** 诊疗档案 */ |
|
||||
submitForm: function() { |
|
||||
this.$refs["form"].validate((valid) => { |
|
||||
if (valid) { |
|
||||
if (this.form.id != undefined) { |
|
||||
reportUpd(this.form).then((response) => { |
|
||||
this.$modal.msgSuccess("修改成功"); |
|
||||
this.open = false; |
|
||||
this.getList(); |
|
||||
}); |
|
||||
} else { |
|
||||
reportAdd(this.form).then((response) => { |
|
||||
this.$modal.msgSuccess("新增成功"); |
|
||||
this.open = false; |
|
||||
this.getList(); |
|
||||
}); |
|
||||
} |
|
||||
} |
|
||||
}); |
|
||||
}, |
|
||||
|
|
||||
/** 删除按钮操作 */ |
// 上传前校检格式和大小 - 文件 |
||||
handleDelete(row) { |
handleBeforePdfUpload1(file) { |
||||
const idList = row.id ? [row.id] : this.ids; |
const fileSuffix = file.name.substring(file.name.lastIndexOf(".") + 1); |
||||
this.$modal |
const whiteList = ["xlsx", "xls", "pdf", "doc", "docx"]; |
||||
.confirm("是否确认删除当前选择的数据?") |
if (whiteList.indexOf(fileSuffix) === -1) { |
||||
.then(function() { |
this.$message.error("上传文件只能是xlsx/xls/pdf/doc/docx 格式!"); |
||||
return reportDel({ |
return false; |
||||
idList: idList, |
} |
||||
}); |
}, |
||||
}) |
/** 查询公告列表 */ |
||||
.then(() => { |
getTenantsList() { |
||||
this.getList(); |
tenantsList({ |
||||
this.$modal.msgSuccess("删除成功"); |
pageNum: -1, |
||||
}) |
param: {}, |
||||
.catch(() => {}); |
}).then((res) => { |
||||
}, |
this.tenantsData = res.data.list; |
||||
}, |
}); |
||||
}; |
}, |
||||
|
/** 查询公告列表 */ |
||||
|
getList() { |
||||
|
this.loading = true; |
||||
|
reportList(this.queryParams).then((res) => { |
||||
|
this.listData = res.data.list; |
||||
|
this.total = res.data.total; |
||||
|
this.loading = false; |
||||
|
}); |
||||
|
}, |
||||
|
// 取消按钮 |
||||
|
cancel() { |
||||
|
this.open = false; |
||||
|
this.reset(); |
||||
|
}, |
||||
|
// 表单重置 |
||||
|
reset() { |
||||
|
this.fileList = []; |
||||
|
this.form = { |
||||
|
typeName: "", |
||||
|
tenantIdList: [], |
||||
|
remark: "", |
||||
|
file: "", |
||||
|
}; |
||||
|
this.resetForm("form"); |
||||
|
}, |
||||
|
/** 搜索按钮操作 */ |
||||
|
handleQuery() { |
||||
|
this.queryParams.pageNum = 1; |
||||
|
this.getList(); |
||||
|
}, |
||||
|
/** 重置按钮操作 */ |
||||
|
resetQuery() { |
||||
|
this.queryParams.param = { |
||||
|
typeName: "", |
||||
|
}; |
||||
|
this.handleQuery(); |
||||
|
}, |
||||
|
// 多选框选中数据 |
||||
|
handleSelectionChange(selection) { |
||||
|
this.ids = selection.map((item) => item.id); |
||||
|
this.single = selection.length != 1; |
||||
|
this.multiple = !selection.length; |
||||
|
}, |
||||
|
/** 新增按钮操作 */ |
||||
|
handleAdd() { |
||||
|
this.reset(); |
||||
|
this.open = true; |
||||
|
this.title = "新增上报类型"; |
||||
|
}, |
||||
|
/** 修改按钮操作 */ |
||||
|
handleUpdate(row) { |
||||
|
this.open = true; |
||||
|
this.title = "修改上报类型"; |
||||
|
this.form = JSON.parse(JSON.stringify(row)); |
||||
|
if (row.file) { |
||||
|
this.fileList = [ |
||||
|
{ |
||||
|
// 截取字符串,获取文件名 |
||||
|
name: row.file.substring(row.file.lastIndexOf("/") + 1), |
||||
|
url: row.file, |
||||
|
}, |
||||
|
]; |
||||
|
} else { |
||||
|
this.fileList = []; |
||||
|
} |
||||
|
}, |
||||
|
/** 诊疗档案 */ |
||||
|
submitForm: function () { |
||||
|
this.$refs["form"].validate((valid) => { |
||||
|
if (valid) { |
||||
|
if (this.form.id != undefined) { |
||||
|
reportUpd(this.form).then((response) => { |
||||
|
this.$modal.msgSuccess("修改成功"); |
||||
|
this.open = false; |
||||
|
this.getList(); |
||||
|
}); |
||||
|
} else { |
||||
|
reportAdd(this.form).then((response) => { |
||||
|
this.$modal.msgSuccess("新增成功"); |
||||
|
this.open = false; |
||||
|
this.getList(); |
||||
|
}); |
||||
|
} |
||||
|
} |
||||
|
}); |
||||
|
}, |
||||
|
|
||||
|
/** 删除按钮操作 */ |
||||
|
handleDelete(row) { |
||||
|
const idList = row.id ? [row.id] : this.ids; |
||||
|
this.$modal |
||||
|
.confirm("是否确认删除当前选择的数据?") |
||||
|
.then(function () { |
||||
|
return reportDel({ |
||||
|
idList: idList, |
||||
|
}); |
||||
|
}) |
||||
|
.then(() => { |
||||
|
this.getList(); |
||||
|
this.$modal.msgSuccess("删除成功"); |
||||
|
}) |
||||
|
.catch(() => {}); |
||||
|
}, |
||||
|
}, |
||||
|
}; |
||||
</script> |
</script> |
||||
<style scoped src="@/assets/styles/common.css"></style> |
<style scoped src="@/assets/styles/common.css"></style> |
||||
|
|
||||
<style scoped> |
<style scoped> |
||||
.div-title1 { |
>>> .el-upload-list__item:first-child { |
||||
font-size: 22px; |
margin-top: 0 !important; |
||||
font-weight: bold; |
} |
||||
margin-bottom: 10px; |
.div-title1 { |
||||
} |
font-size: 22px; |
||||
|
font-weight: bold; |
||||
|
margin-bottom: 10px; |
||||
|
} |
||||
|
|
||||
.div-title2 { |
.div-title2 { |
||||
font-size: 20px; |
font-size: 20px; |
||||
font-weight: bold; |
font-weight: bold; |
||||
margin-bottom: 10px; |
margin-bottom: 10px; |
||||
} |
} |
||||
|
|
||||
.div-title3 { |
.div-title3 { |
||||
font-size: 18px; |
font-size: 18px; |
||||
font-weight: bold; |
font-weight: bold; |
||||
margin-bottom: 10px; |
margin-bottom: 10px; |
||||
} |
} |
||||
|
|
||||
.span-but { |
.span-but { |
||||
display: inline-block; |
display: inline-block; |
||||
border-radius: 4px; |
border-radius: 4px; |
||||
border: 1px solid #dcdfe6; |
border: 1px solid #dcdfe6; |
||||
line-height: 32px; |
line-height: 32px; |
||||
padding: 0 15px; |
padding: 0 15px; |
||||
margin: 5px; |
margin: 5px; |
||||
} |
} |
||||
|
|
||||
.span-but-active { |
.span-but-active { |
||||
border: 1px solid #1890ff; |
border: 1px solid #1890ff; |
||||
} |
} |
||||
|
|
||||
.human-body { |
.human-body { |
||||
display: flex; |
display: flex; |
||||
flex-wrap: wrap; |
flex-wrap: wrap; |
||||
} |
} |
||||
|
|
||||
.human-body>>>.el-form-item { |
.human-body >>> .el-form-item { |
||||
width: 49%; |
width: 49%; |
||||
margin-right: 2%; |
margin-right: 2%; |
||||
} |
} |
||||
|
|
||||
.human-body>>>.el-form-item:nth-of-type(2n) { |
.human-body >>> .el-form-item:nth-of-type(2n) { |
||||
margin-right: 0; |
margin-right: 0; |
||||
} |
} |
||||
|
|
||||
.formStep1>>>.el-form-item__label {} |
.formStep1 >>> .el-form-item__label { |
||||
|
} |
||||
|
|
||||
.form-item-zd { |
.form-item-zd { |
||||
width: 100%; |
width: 100%; |
||||
text-align: left; |
text-align: left; |
||||
} |
} |
||||
|
|
||||
.form-item-age { |
.form-item-age { |
||||
display: flex; |
display: flex; |
||||
align-items: center; |
align-items: center; |
||||
} |
} |
||||
|
|
||||
.form-item-age span { |
.form-item-age span { |
||||
margin: 0 10px; |
margin: 0 10px; |
||||
} |
} |
||||
|
|
||||
.form-item-age>>>.el-input { |
.form-item-age >>> .el-input { |
||||
width: 100px; |
width: 100px; |
||||
} |
} |
||||
|
|
||||
>>>.el-drawer.rtl { |
>>> .el-drawer.rtl { |
||||
width: 50% !important; |
width: 50% !important; |
||||
} |
} |
||||
</style> |
</style> |
||||
|
Binary file not shown.
Loading…
Reference in new issue