Commit f0d29149 authored by miaojiale's avatar miaojiale

Merge branch 'dev' into dev_Miaojiale

parents fe84976a 3dce4ce7
......@@ -224,6 +224,9 @@ export default {
if (data.type === "dynamic") {
data.prop = "fixed_field"
}
if (data.type == "title") {
delete data.label
}
data.cType = column.children.type === "form" ? "form" : "table"
data.subfield = true
delete data.icon
......
import request from "@/utils/request"
/* 患者数据 */
export function getPatientPage(params = {}) {
let url = "/disease-data/data/patient/page?"
let keys = Object.keys(params)
for (let key of keys) {
url += `${encodeURIComponent(key)}=${params[key]}&`
}
url = url.substring(0, url.length - 1)
return request({
url: url,
method: "get",
})
}
// 随访分页
export function getPatientFollowPage(params = {}) {
let url = "/disease-data/data/patient/follow/page?"
let keys = Object.keys(params)
for (let key of keys) {
url += `${encodeURIComponent(key)}=${params[key]}&`
}
url = url.substring(0, url.length - 1)
return request({
url: url,
method: "get",
})
}
export function delPatient(id) {
return request({
url: `/cloud-upms/sys/menu/${id}`,
method: "delete",
})
}
// 填报
export function addPatient(data = {}, type = "") {
return request({
url: `/disease-data/data/patient/${type}`,
method: "post",
data,
})
}
/* 患者数据详情 */
export function getPatientDetail(params = {}) {
return request({
url: "/disease-data/data/patient/info",
method: "get",
params,
})
}
/* 获取表单填报记录list*/
export function getRecordList(params = {}) {
return request({
url: "/disease-data/data/patient/form/record/list",
method: "get",
params,
})
}
// 患者质控列表 分页查询
export function getQcPage(params = {}) {
return request({
url: "/disease-data/data/qc/page",
method: "get",
params,
})
}
// 质控
export function qcPatient(data = {}, type = "") {
return request({
url: `/disease-data/data/qc`,
method: "post",
data,
})
}
// 获取九院口腔癌患者信息(同屏对照使用)
export function getJYpatientInfo(params = {}) {
return request({
url: "/jiuyuan-gather/patient/kqa/info",
method: "get",
params,
})
}
// 获取九院口腔癌随访表(同屏对照使用)
export function getJYFollowInfo(params = {}) {
return request({
url: "/jiuyuan-gather/patient/kqa/follow/info",
method: "get",
params,
})
}
// 获取同济口腔 牙周病(yzb) | 口腔癌(kqa) 患者信息(同屏对照使用)
export function getTJpatientInfo(params = {}, diseases = "yzb") {
return request({
url: `/tjkq-gather/patient/${diseases}/info`,
method: "get",
params,
})
}
// 获取九院牙周炎患者信息(同屏对照使用)
export function getJYyzyPatientInfo(params = {}) {
return request({
url: "/jiuyuan-gather/patient/yzy/info",
method: "get",
params,
})
}
// 获取急性胰腺炎患者信息/检查信息/术治疗(同屏对照使用)
export function getJxyzyPatientInfo(type, params = {}) {
return request({
url: `/changhai-gather/patient/${type}/info`,
method: "get",
params,
})
}
// 获取中山医院病历/检查信息/治疗(同屏对照使用)
export function getZsyzyPatientInfo(params = {}) {
return request({
url: "/zsyzy-gather/patient/yzb/info",
method: "get",
params,
})
}
// 急性胰腺炎-评分表
// 评分表新增修改
export function saveApScore(data = {}) {
return request({
url: `disease-data/ap/score`,
method: "post",
data,
})
}
// 根据patientId查询评分表数据
export function getApScore(patientId) {
return request({
url: `/disease-data/ap/score/list?patientId=${patientId}`,
method: "get",
})
}
// 根据patientId+type查询(评分趋势图用)
export function getApScoreTypeList(params = {}) {
return request({
url: "disease-data/ap/score/type/list",
method: "get",
params,
})
}
// 根据patientId, scoreId查询detailList
export function getApScoreDetailList(params = {}) {
return request({
url: "/disease-data/ap/score/detail/list",
method: "get",
params,
})
}
......@@ -141,25 +141,21 @@ export function ssoLogin(token) {
})
}
//异常反馈
export function getAbnormalList(params) {
return request({
url: `/disease-data/sys/message/exception/feedBack/select/all/msg`,
method: "get",
params
params,
})
}
// 修改系统信息-点击单条消息(进行已读操作)
export function setAbnormalStatus(params) {
return request({
url: `/disease-data/sys/message/exception/feedBack/do/read`,
method: "get",
params
params,
})
}
......@@ -171,3 +167,11 @@ export function getFeedBackNumber(id) {
})
}
// 获取B端日志
export function getLogPage(params = {}) {
return request({
url: "/cloud-upms/sys/log/page",
method: "get",
params,
})
}
......@@ -67,7 +67,19 @@
:is-show-important="isShowImportant"
></form-dynamic>
</div>
<el-col
v-else-if="c.type === 'title'"
:xs="c.xs || 24"
:sm="c.sm || 24"
:md="c.md || 24"
:lg="c.span || 12"
:key="columnIndex"
v-show="c.display"
>
<div class="form_title" :style="c.styles">
<span>{{ c.value }}</span>
</div>
</el-col>
<el-col
:xs="c.xs || 24"
:sm="c.sm || 24"
......
<template>
<div>2222</div>
</template>
<template>
<ConfigForms form-type="1"></ConfigForms>
</template>
<script>
import ConfigForms from "./components/ConfigForms.vue"
export default {
name: "ScreeningAdd",
components: {
ConfigForms,
},
data() {
return {}
},
methods: {},
created() {},
}
</script>
<style lang="scss" scoped></style>
<template>
<div>
<el-tabs
v-model="activeName"
type="card"
style="margin-top: 10px"
v-loading="fromLoading"
v-if="formTabs && formTabs.length > 0"
@tab-click="handleTabClick"
>
<el-tab-pane
:label="form.label"
:name="'index' + index"
v-for="(form, index) in formTabs"
:key="form.id"
>
<transition mode="out-in" name="fade-transform">
<div v-show="activeName === 'index' + index">
<template v-if="form.formId">
<form-tab
:patient-id="patientId"
:patient-standby-id="patientStandbyId"
:form="form"
:disabled="disabled"
contrast
@setFormJson="setFormJson"
@handleConfirm="handleConfirm"
></form-tab>
</template>
</div>
</transition>
</el-tab-pane>
</el-tabs>
<el-empty v-else description="暂无数据"></el-empty>
</div>
</template>
<script>
import mixin from "./mixin"
export default {
name: "ConfigForms",
mixins: [mixin],
props: {
disabled: Boolean,
formType: String,
patientId: String,
},
data() {
return {}
},
methods: {
handleConfirm(data, done, cb) {
this.addPatient(data, done, cb)
},
},
created() {
// 字典formType 1 筛查表单
this.getCurrentFormByType(this.formType)
},
}
</script>
<template>
<el-container>
<el-main v-loading="pageLoading" class="transition-box">
<i
v-if="contrast"
:class="asideShow ? 'el-icon-s-unfold' : 'el-icon-s-fold'"
:title="asideShow ? '收起' : '展开'"
class="arrow"
@click="asideShow = !asideShow"
></i>
<el-empty v-if="isEmpty" description="暂无数据"></el-empty>
<template v-if="!isEmpty">
<!-- 多次记录 -->
<el-row v-if="form.fillType === 1">
<tags-scroll-bar
v-if="repeatedlyList.length > 0"
:tags-list="repeatedlyList"
:props="{ label: 'time' }"
ref="tags"
@change="changeRepeate"
:disabled="disabled"
@add="handleAdd"
></tags-scroll-bar>
</el-row>
<el-row class="header">
<template v-if="formData.percent.autoPercent">
<span class="label">自动采集完整度:</span>
<span class="value">{{ formData.percent.autoPercent }}%</span>
</template>
<template v-if="formData.percent.personalPercent">
<span class="label">人工补录完整度:</span>
<span class="value"
>{{ formData.percent.personalPercent }}%</span
></template
>
<span class="label"> 仅显示重要字段 :</span>
<span class="value">
<el-switch v-model="isShowImprotant" @change="imFieldChange">
</el-switch>
</span>
</el-row>
<div
class="my-form"
ref="my-form"
:class="externalScroll ? 'no-scroll' : ''"
>
<custom-form
ref="form"
@scrollTop="scrollTop"
:options="widgetFormPreview"
@handleConfirm="handleConfirm"
:form-edit="formData.formEdit"
></custom-form>
</div>
</template>
</el-main>
<el-aside
:width="sideWidth"
class="transition-box"
:class="{ hidden: !asideShow }"
v-if="contrast"
>
<div class="side-content"></div>
</el-aside>
</el-container>
</template>
<script>
import { getPatientDetail, getRecordList } from "@/api/patient.js"
import { getFormDetail } from "@/api/field"
import CustomForm from "@/components/FormComponents/CustomForm/index"
import TagsScrollBar from "@/components/TagsScrollBar/index"
export default {
name: "FormTab",
props: {
externalScroll: Boolean, //外部滚动
disabled: Boolean,
contrast: Boolean, //同屏对照
form: Object,
patientId: String,
patientStandbyId: String,
getAll: Boolean, // 获取页面所有数据
},
components: { CustomForm, TagsScrollBar },
data() {
return {
btnType: "",
isShowImprotant: false,
asideShow: true,
widgetFormPreview: {},
formData: {
formEdit: {},
percent: {},
formRecordId: null,
},
loading: false,
formloading: false,
repeatedlyList: [],
formCacheList: [],
}
},
// mixins: [resizeMixin],
computed: {
isEmpty() {
return !(Object.keys(this.widgetFormPreview) || this.widgetFormPreview)
.length
},
sideWidth() {
return this.asideShow ? "200px" : "0px"
},
pageLoading() {
return this.loading || this.formloading
},
},
methods: {
initData() {
this.formData.formRecordId = null
this.formCacheList = []
this.getPatientDetail()
if (this.form.fillType === 1) {
this.$nextTick(() => {
this.$refs.form && this.$refs.form.resetForm()
})
this.getRecordList()
}
},
scrollTop() {
this.$refs["my-form"].scrollTop = 0
},
handleAdd() {
this.$refs.form && this.$refs.form.resetForm()
this.formData = {
formEdit: {},
percent: {},
formRecordId: null,
}
},
// 切换时间
changeRepeate(index) {
const item = this.repeatedlyList[index]
if (item.id === this.formData.formRecordId) return
const data = this.formCacheList.find((_) => _.formRecordId === item.id)
if (data) {
this.$refs.form && this.$refs.form.resetForm()
this.formData = data
return
}
this.formData.formRecordId = item.id
this.getPatientDetail()
},
imFieldChange(val) {
this.$refs.form.imFieldChange(val)
},
initForm() {
this.formloading = true
if (this.form.formJson) {
const obj = eval("(" + this.form.formJson + ")")
if (this.disabled) {
obj.menuBtn = false
obj.disabled = true
obj.detail = true
}
setTimeout(() => {
this.widgetFormPreview = obj
this.formloading = false
}, 100)
return
}
getFormDetail(this.form.formId)
.then((res) => {
if (res.code === 1 && res.data) {
const formJson = res.data.formJson
this.$emit("setFormJson", formJson)
const obj = eval("(" + formJson + ")")
if (this.disabled) {
obj.menuBtn = false
obj.disabled = true
obj.detail = true
}
this.widgetFormPreview = obj
}
})
.finally(() => {
this.formloading = false
})
},
handleConfirm(data, done) {
this.$emit(
"handleConfirm",
{
data,
formId: this.form.formId,
patientId: this.patientId || this.patientStandbyId,
formRecordId: this.formData.formRecordId,
},
done,
(res) => {
// 多次填写的表单新增时,获取最新数据
if (this.form.fillType === 1 && !this.formData.formRecordId) {
this.getRecordList(res.data.formRecordId)
}
this.formatData(res, this.form.fillType !== 1)
}
)
},
getPatientDetail() {
this.$nextTick(() => {
this.$refs.form && this.$refs.form.resetForm()
})
if (!this.patientId || this.form.silent) return
this.loading = true
getPatientDetail({
patientId: this.patientId,
formId: this.form.formId,
formRecordId: this.formData.formRecordId,
})
.then((res) => {
this.formatData(res)
})
.finally(() => {
this.loading = false
})
},
formatData(res, cache) {
const d = res.data || {}
const form = d.data || {}
if (form["YZZKJC"] && typeof form["YZZKJC"] === "string") {
form["YZZKJC"] = JSON.parse(form["YZZKJC"])
}
if (!cache) {
this.formData.formEdit = form
}
this.formData.formRecordId = d.formRecordId
this.formData.percent = d.percent || {}
const index = this.formCacheList.findIndex(
(_) => _.formRecordId === d.formRecordId
)
if (index > -1) {
this.formCacheList.splice(index, 1, this.deepClone(this.formData))
} else {
this.formCacheList.push(this.deepClone(this.formData))
}
},
getRecordList(formRecordId) {
if (!this.patientId) return
getRecordList({
patientId: this.patientId,
formId: this.form.formId,
}).then((res) => {
this.repeatedlyList = res.data.map((_, index) => {
return {
..._,
time: _.createTime,
}
})
this.$nextTick(() => {
const el = this.$refs.tags
if (el) {
el.tabActive =
formRecordId ||
(this.repeatedlyList[0] && this.repeatedlyList[0].id)
}
})
})
},
},
created() {
this.initForm()
if (this.getAll) {
// 监听patientId 获取页面所有数据
this.$watch(
"patientId",
() => {
this.initData()
},
{ immediate: true }
)
} else {
// 监听form.silent 获取当前tab页数据
this.$watch(
"form.silent",
() => {
this.initData()
},
{ immediate: true }
)
}
},
}
</script>
<style scoped lang="scss">
.el-main {
position: relative;
padding: 0;
.arrow {
position: absolute;
right: 0;
top: 0;
cursor: pointer;
font-size: 22px;
z-index: 9;
}
.header {
box-shadow: 0 1px 4px rgb(0 21 41 / 8%);
padding-right: 20px;
position: relative;
font-size: 15px;
}
}
.el-aside {
padding-left: 10px;
border-left: 1px solid #ccc;
.side-content {
// height: calc(100vh - #{"272px"});
// overflow: auto;
}
}
.my-form {
height: calc(100vh - #{"270px"});
overflow-y: auto;
padding-top: 20px;
position: relative;
&::-webkit-scrollbar-thumb {
background-color: #fff;
}
&:hover::-webkit-scrollbar-thumb {
background-color: rgba(0, 0, 0, 0.4);
}
&.no-scroll {
height: auto;
}
}
.label {
font-size: 14px;
color: #8492a6;
line-height: 38px;
float: left;
margin-right: 20px;
}
.value {
font-size: 14px;
line-height: 38px;
float: left;
font-weight: 600;
margin-right: 50px;
}
.el-slider {
float: left;
width: 150px;
}
.transition-box {
transition: all 0.2s;
&.hidden {
opacity: 0;
height: 0px;
}
}
</style>
import { addPatient } from "@/api/patient.js"
import FormTab from "./FormTab"
import { mapGetters } from "vuex"
import { getCurrentFormByType } from "@/api/coop-group.js"
export default {
components: { FormTab },
data() {
return {
activeName: "index0",
fromLoading: false,
patientStandbyId: null, // 备用id
formTabs: [],
formTabsList: [],
isUpdated: false,
name: "",
patient_number: "",
}
},
computed: {
...mapGetters({
group: ["user/group"],
}),
},
methods: {
handleTabClick({ index, name }) {
const { formId, id, silent } = this.formTabs[index]
if (formId && silent) {
this.formTabs[index]["silent"] = false //控制是否获取接口数据
return
}
this.formTabs.splice(index, 1, {
...this.formTabsList.find((_) => _.id === id),
})
},
async addPatient(data, done, cb, type) {
addPatient(data, type)
.then((res) => {
this.$message.success("操作成功")
if (res.data) {
this.isUpdated = true
this.patientStandbyId = res.data.patientId
if (
cb &&
Object.prototype.toString.call(cb) === "[object Function]"
) {
cb(res)
}
}
})
.finally((e) => {
done()
})
},
// json存储
setFormJson(formJson) {
const idx = this.activeName.replace("index", "")
this.formTabs[idx].formJson = formJson
this.formTabsList[idx].formJson = formJson
},
getCurrentFormByType(type = 1) {
this.fromLoading = true
getCurrentFormByType({
type: 1,
groupId: this.group.groupId,
})
.then((res) => {
if (res.code === 1) {
const formTabs = []
this.formTabsList = res.data.map((item, index) => {
if (index === 0) {
formTabs.push({
silent: false,
...item,
label: item.tabName,
})
} else {
formTabs.push({
id: item.id,
silent: true,
label: item.tabName,
})
}
return {
...item,
silent: false,
label: item.tabName,
}
})
this.formTabs = formTabs
}
})
.finally(() => {
this.fromLoading = false
})
},
},
}
<template>
<div>添加筛查新病例</div>
<div class="container">
<div v-show="!isDetail">
<direct-search
ref="form"
:label-position="'right'"
:forms="searchList"
:style="{ textAlign: 'left' }"
@handleSearch="handleFormSearch"
/>
<el-table-self
ref="table"
:table-data="tableData"
:columns="columns"
:list-loading="listLoading"
:current-page="pageIndex"
:total-count="total"
:page-sizes="pageSizes"
:page-size="pageSize"
@pageSizeChange="handleSizeChange"
@currentPageChange="handleCurrentChange"
:sortChange="sortChange"
/>
</div>
<div v-if="isDetail">
<div>
<el-button icon="el-icon-back" @click="isDetail = false"
>返 回</el-button
>
</div>
<ConfigForms
form-type="1"
:patient-id="patientId"
:disabled="disabled"
></ConfigForms>
</div>
</div>
</template>
<script>
import paginationMixin from "@/components/TabComponents/mixin"
import { getPatientPage } from "@/api/patient.js"
import ConfigForms from "./components/ConfigForms.vue"
export default {
name: "ScreeningIndex",
mixins: [paginationMixin],
components: { ConfigForms },
data() {
return {}
return {
isDetail: false,
listLoading: false,
disabled: false,
tableData: [],
cacheForm: {},
searchList: [
{
type: "input",
label: "姓名",
prop: "patientName",
},
{
label: "性别",
type: "select",
prop: "gender",
optsFormatter: () => {
return this.dictMap && this.dictMap["d-sex"]
},
},
{
type: "daterange",
dateType: "datetimerange",
label: "创建时间",
prop: "CreateTime",
valueFormat: "yyyy-MM-dd HH:mm:ss",
},
{
type: "daterange",
dateType: "datetimerange",
label: "保存时间",
prop: "Time",
valueFormat: "yyyy-MM-dd HH:mm:ss",
},
{
type: "button",
icon: "el-icon-search",
value: "搜索",
},
],
columns: [
{
label: "姓名",
minWidth: 120,
value: "hzxx_xm",
},
{
label: "出生日期",
minWidth: 120,
value: "hzxx_csrq",
},
{
label: "性别",
minWidth: 80,
value: "hzxx_xb",
formatter: (row) => {
return this.$handle.formatDicList(
this.dictMap["d-sex"],
row.hzxx_xb
)
},
},
{
label: "创建时间",
minWidth: 180,
sortable: "custom",
value: "create_time",
},
{
label: "保存时间",
minWidth: 180,
sortable: "custom",
value: "update_time",
},
{
label: "操作",
width: 180,
fixed: "right",
operType: "button",
operations: [
{
func: this.handleView,
formatter(row) {
return {
label: "查看",
type: "text",
}
},
},
{
func: this.handleAdd,
formatter(row) {
return {
label: "修改",
type: "text",
}
},
},
],
},
],
}
},
methods: {
handleView(row) {
this.handleAdd(row, true)
},
handleAdd({ patient_id, hzxx_xm }, disabled = false) {
this.disabled = disabled
this.isDetail = true
this.patientId = patient_id || null
this.name = hzxx_xm
},
sortChange({ prop, order }) {
const asc = order ? (order === "ascending" ? true : false) : ""
const column = order ? prop : ""
this.handleSearch({ "orders[0].asc": asc, "orders[0].column": column })
},
// 查询
handleFormSearch(form) {
this.pageIndex = 1
this.handleSearch(form)
},
handleSearch(form) {
this.listLoading = true
const params = Object.assign(this.cacheForm, form)
const data = {}
for (let key in params) {
if (params[key] !== "" && params[key] !== null) {
if (key.includes("Time") && params[key]) {
data["start" + key] = params[key][0]
data["end" + key] = params[key][1]
} else {
data[key] = params[key]
}
}
}
data.current = this.pageIndex
data.size = this.pageSize
getPatientPage(data).then((res) => {
this.listLoading = false
if (res.code === 1) {
const d = res.data
this.tableData = d.records || []
this.total = Number(d.total)
}
})
},
},
created() {
this.handleFormSearch()
},
methods: {},
mounted() {},
watch: {},
}
</script>
<style lang="scss" scoped></style>
<template>
<div class="container">
<direct-search
ref="form"
:label-position="'right'"
:forms="searchList"
:style="{ textAlign: 'left' }"
@handleSearch="handleFormSearch"
/>
<el-table-self
ref="table"
:table-data="tableData"
:columns="columns"
:list-loading="listLoading"
:current-page="pageIndex"
:total-count="total"
:page-sizes="pageSizes"
:page-size="pageSize"
@pageSizeChange="handleSizeChange"
@currentPageChange="handleCurrentChange"
/>
<dialog-form
width="450px"
:close-modal="false"
ref="dialog"
:title="formEdit.id ? '编辑' : '新增'"
:form-edit="formEdit"
:form-data="formData"
@handleConfirm="handleConfirm"
></dialog-form>
<direct-search
ref="form"
:label-position="'right'"
:forms="searchList"
:style="{ textAlign: 'left' }"
@handleSearch="handleFormSearch"
/>
<el-table-self
ref="table"
:table-data="tableData"
:columns="columns"
:list-loading="listLoading"
:current-page="pageIndex"
:total-count="total"
:page-sizes="pageSizes"
:page-size="pageSize"
@pageSizeChange="handleSizeChange"
@currentPageChange="handleCurrentChange"
/>
<dialog-form
width="450px"
:close-modal="false"
ref="dialog"
:title="formEdit.id ? '编辑' : '新增'"
:form-edit="formEdit"
:form-data="formData"
@handleConfirm="handleConfirm"
></dialog-form>
</div>
</template>
......@@ -184,14 +184,6 @@ export default {
prop: "tabName",
rules: [{ required: true, message: "请输入表单重命名" }],
},
{
type: "select",
label: "机构/科室",
placeholder: "请选择机构/科室",
prop: "deptId",
opts: [],
rules: [{ required: true, message: "请选择机构/科室" }],
},
{
type: "select",
label: "类型",
......@@ -202,6 +194,7 @@ export default {
},
rules: [{ required: true, message: "请选择类型" }],
},
{
type: "select",
label: "填报方式",
......@@ -219,6 +212,14 @@ export default {
],
rules: [{ required: true, message: "请选择填报方式" }],
},
{
type: "select",
label: "机构/科室",
placeholder: "请选择机构/科室",
prop: "deptId",
opts: [],
},
{
type: "select",
label: "对照模板",
......@@ -273,7 +274,6 @@ export default {
})
},
handleCopyAdd(row) {
const data = Object.assign({}, row)
delete data.id
......
......@@ -23,7 +23,7 @@
width="800px"
:close-modal="false"
ref="dialog"
:title="formEdit.id ? '添加数据库' : '编辑数据库'"
:title="formEdit.id ? '编辑数据库' : '添加数据库'"
:form-edit="formEdit"
:form-data="formData"
@handleConfirm="handleConfirm"
......
......@@ -184,11 +184,6 @@ export default {
minWidth: 120,
value: "fieldCode",
},
{
label: "数据库存储表名称",
minWidth: 120,
value: "tableName",
},
{
label: "数据库存字段类型",
minWidth: 120,
......@@ -261,6 +256,7 @@ export default {
{ type: "input", display: true },
form
)
console.log(this.widgetFormSelect)
this.widgetVisible = true
},
handleConfirm(form) {
......
......@@ -38,9 +38,9 @@
<span
@click="handClick(index, item)"
:class="{ active: index == isActive }"
style="cursor: pointer"
style="cursor: pointer; word-break: break-word"
>
{{ item.name }} | {{ item.code }}
{{ item.name }} <br />{{ item.code }}
</span>
<span class="item-del">
<!-- <i class="el-icon-edit-outline" @click="handleAdd(item)"></i> -->
......
......@@ -100,6 +100,8 @@ export default {
customOldFields.push({
...field,
tableName: item.tableName,
tableCode: item.tableCode,
tableId: item.tableId,
})
})
......
<template>
<div class="container">
<direct-search
ref="form"
:label-position="'right'"
:forms="searchList"
:style="{ textAlign: 'left' }"
@handleSearch="handleFormSearch"
/>
<el-table-self
ref="table"
:table-data="tableData"
:columns="columns"
:list-loading="listLoading"
:current-page="pageIndex"
:total-count="total"
:page-sizes="pageSizes"
:page-size="pageSize"
:sortChange="sortChange"
@pageSizeChange="handleSizeChange"
@currentPageChange="handleCurrentChange"
/>
</div>
</template>
<script>
import { getLogPage } from "@/api/user";
import directSearch from "@/components/FormComponents/directSearch";
import elTableSelf from "@/components/TabComponents/index";
import paginationMixin from "@/components/TabComponents/mixin";
export default {
name: "Log",
mixins: [paginationMixin],
components: {
elTableSelf,
directSearch,
},
data() {
return {
formEdit: {},
title: "",
// 查询列表
searchList: [
{
label: "操作名称",
type: "input",
prop: "title",
placeholder: "请输入操作名称",
},
{
label: "请求方式",
type: "input",
prop: "method",
placeholder: "请输入请求方式",
},
{
label: "参数",
type: "input",
prop: "params",
placeholder: "请输入参数",
},
{
type: "button",
icon: "el-icon-search",
value: "查询",
},
],
tableData: [],
listLoading: false,
columns: [
{
label: "操作名称",
value: "title",
minWidth: 220,
},
{
label: "用户IP",
value: "remoteAddr",
minWidth: 180,
},
{
label: "操作人",
value: "createBy",
minWidth: 180,
},
{
label: "代理",
value: "userAgent",
minWidth: 220,
},
{
label: "请求路径",
value: "requestUri",
minWidth: 150,
},
{
label: "请求方式",
value: "method",
minWidth: 100,
},
{
label: "请求参数",
value: "params",
minWidth: 150,
},
{
label: "异常",
value: "exception",
minWidth: 150,
},
{
label: "操作时间",
value: "createTime",
minWidth: 150,
sortable: "custom",
},
],
cacheForm: {},
};
},
methods: {
sortChange({ prop, order }) {
const asc = order ? (order === "ascending" ? true : false) : "";
const column = order ? prop : "";
if (column) {
this.handleSearch({
"orders[0].asc": asc,
"orders[0].column": this.$handle.toUnderline(column),
});
} else {
delete this.cacheForm["orders[0].asc"];
delete this.cacheForm["orders[0].column"];
this.handleSearch();
}
},
// 查询
handleFormSearch(form) {
this.pageIndex = 1;
this.handleSearch(form);
},
// 数据page
handleSearch(form = {}) {
this.cacheForm = Object.assign(this.cacheForm, form);
this.listLoading = true;
const params = Object.assign({}, this.cacheForm);
for (let key in params) {
if (params[key] === "") {
delete params[key];
}
}
params.current = this.pageIndex;
params.size = this.pageSize;
getLogPage(params).then((res) => {
if (res.code === 1) {
const d = res.data;
let total = 0;
let result = [];
if (d && d.total > 0) {
result = d.records;
total = d.total;
}
this.tableData = result;
this.total = total;
this.listLoading = false;
}
});
},
},
mounted() {
this.handleFormSearch();
},
};
</script>
<style lang="scss"></style>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment