Commit 8a3117ba authored by liang's avatar liang
parents 4cd8b6b5 5dc80d7e
<template>
<el-row class="el-table-self">
<el-table
:max-height="maxHeight || maxTableHeight"
:height="tableHeight"
ref="selftab"
v-loading="listLoading"
:data="tableData"
:show-overflow-tooltip="true"
:highlight-current-row="highLight"
:header-row-class-name="headerClass"
style="width: 100%"
>
<template v-for="(column, index) in columns">
<template v-if="!column.type && !column.operType">
<el-table-column
:key="column.value"
:show-overflow-tooltip="true"
:fixed="column.fixed"
:prop="column.value"
:label="column.label"
:width="column.width"
:min-width="column.minWidth"
align="center"
:sortable="column.sortable"
:formatter="column.formatter"
:class-name="column.className"
:label-class-name="column.labelClassName"
>
<!-- 表头插槽 -->
<template slot="header" slot-scope="scope">
<span :style="{ fontSize: fontSize[fontIndex] }">{{
column.label
}}</span>
</template>
<!-- 表内容插槽 -->
<template slot-scope="scope">
<span :style="{ fontSize: fontSize[fontIndex] }">
{{ scope.row[column.value] }}</span
>
</template>
</el-table-column>
</template>
<template v-else>
<el-table-column
:key="index"
:fixed="column.fixed"
:prop="column.value"
:label="column.label"
:sortable="column.sortable"
:width="column.width"
:min-width="column.minWidth"
align="center"
>
<!-- 表头插槽 -->
<template slot="header" slot-scope="scope">
<span :style="{ fontSize: fontSize[fontIndex] }">{{
column.label
}}</span>
</template>
<!-- 表内容插槽 -->
<template slot-scope="scope">
<!-- 按钮 -->
<template
v-if="column.type === 'button' || column.operType === 'button'"
>
<!-- 按钮数组 -->
<template v-for="(op, opIndex) in column.operations">
<el-button
:key="opIndex"
:disabled="
op.formatter ? op.formatter(scope.row).disabled : false
"
:style="{ fontSize: fontSize[fontIndex] }"
:type="
op.formatter
? op.formatter(scope.row).type
: op.type || ''
"
:icon="op.icon"
@click="op.func(scope.row, scope.$index)"
>
{{
op.formatter
? op.formatter(scope.row).label
: op.label
? op.label
: scope.row[column.value]
}}
</el-button>
</template>
</template>
<!-- html -->
<template v-if="column.type === 'html'">
<div v-html="scope.row[column.value]" class="highlight"></div>
</template>
</template>
</el-table-column>
</template>
</template>
</el-table>
<!-- 分页 -->
<div v-if="pageSize && totalCounts > 0" class="pagination-footer">
<!-- <span class="description">{{ description }}</span> -->
<el-pagination
background
:current-page="currentPage"
:page-sizes="pageSizes"
:page-size="pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="totalCounts"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
></el-pagination>
</div>
</el-row>
</template>
<script>
import resize from "../TabComponents/resize.js"
import { mapGetters } from "vuex"
export default {
props: {
tableHeight: Number, // 表格的高度
maxHeight: Number, // 表格的最大高度
listLoading: Boolean, // table 加载层
pageSizes: Array, // 决定每页显示的条数[10,15,20,25]
pageSize: Number,
totalCount: [Number, String], // 表格数据总数
currentPage: { type: Number, default: 1 },
highLight: { type: Boolean, default: true },
headerClass: { type: String, default: "default" }, // 头部背景色Class名称,默认default
columns: Array, // 表格列配置数据,{vlaue:对应数据对象中的属性,label:对应的是标题文字,fixed:列是否固定,width:列宽, sortable:是否可排序,formatter:列格式化, className:对应的是列的样式类名}
tableData: Array, // 表格数据
},
mixins: [resize],
data() {
return {
fontSize: ["12px", "14px", "16px"],
}
},
computed: {
...mapGetters({
fontIndex: "table/fontIndex",
}),
totalCounts() {
return this.totalCount - 0
},
},
watch: {},
mounted() {},
methods: {
// 切换页面显示条数
handleSizeChange(val) {
this.$emit("pageSizeChange", val)
},
// 跳转页码
handleCurrentChange(val) {
this.$emit("currentPageChange", val)
},
},
}
</script>
<style lang="scss" scoped>
.el-table__empty-block {
position: relative;
min-height: 60px;
text-align: center;
width: 100%;
height: 100%;
}
.el-table__empty-text {
position: absolute;
left: 50%;
width: 110px;
height: 110px;
top: 50%;
line-height: 220px;
-ms-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
color: #5e7382;
background-position: center center;
background-repeat: no-repeat;
background-size: cover;
}
</style>
This diff is collapsed.
<template>
<div style="min-width: 1440px; overflow: overlay">
<Layout>
<Header class="layout-header">
<div class="logotitle">
<div class="leftLogo"></div>
<div class="rightText">
国家消化道早癌防治中心联盟 <br />早期胃癌筛查项目
</div>
<header class="layout-header">
<div class="logotitle">
<div class="leftLogo"></div>
<div class="rightText">
国家消化道早癌防治中心联盟 <br />早期胃癌筛查项目
</div>
<div v-if="!allianceToken" class="login">
<div class="login_title text-center">
筛查随访数据库登录
<Form ref="form" :model="form" :rules="rules" inline>
<FormItem prop="username" label="登录名:">
<Input
v-model="form.username"
type="text"
placeholder="请输入登录名"
>
</Input>
</FormItem>
<FormItem prop="password" label="密码:">
<Input
v-model="form.password"
type="password"
placeholder="请输入密码"
>
</Input>
</FormItem>
<FormItem>
<Button
type="primary"
class="login_button"
:loading="loading"
@click="handleSubmit('form')"
>登录</Button
>
</FormItem>
</Form>
</div>
</div>
<div v-if="allianceToken" class="userInfo">
<div class="white"></div>
<div class="text">欢迎,LIXid胡</div>
<div class="exit" @click="logout">退出</div>
</div>
</Header>
<div class="sider">
<Menu mode="horizontal" :active-name="currentRoute" class="siderMenu">
<MenuItem
v-for="(item, index) in menuList"
:key="index"
:name="item.route"
:to="item.route"
style="width: 10%; text-align: center; min-width: 120px"
</div>
<div v-if="!allianceToken" class="login">
<div class="login_title text-center">
筛查随访数据库登录
<el-form
ref="form"
label-position="top"
:model="form"
label-suffix=":"
label-width="100%"
:rules="rules"
>
{{ item.name }}
</MenuItem>
</Menu>
<el-form-item prop="username" label="登录名">
<el-input
v-model="form.username"
placeholder="请输入登录名"
></el-input>
</el-form-item>
<el-form-item prop="password" label="密码">
<el-input
v-model="form.password"
type="password"
placeholder="请输入密码"
></el-input>
</el-form-item>
<el-form-item>
<el-button
type="primary"
class="login_button"
:loading="loading"
@click="handleSubmit('form')"
>登录</el-button
>
</el-form-item>
</el-form>
</div>
</div>
<div v-if="allianceToken" class="userInfo">
<div class="white"></div>
<div class="text">欢迎,LIXid胡</div>
<div class="exit" @click="logout">退出</div>
</div>
<Content style="overflow: hidden; padding: 32px 10%; background: #f3f3f3">
<transition name="fade-transform" mode="out-in">
<router-view></router-view>
</transition>
</Content>
<Footer class="layout-footer-center text-center"
>copyright@ 联盟信息等</Footer
</header>
<div class="sider">
<el-menu
mode="horizontal"
:default-active="currentRoute"
class="siderMenu"
router
>
</Layout>
<el-menu-item
v-for="(item, index) in menuList"
:key="index"
:index="item.route"
style="width: 10%; text-align: center; min-width: 120px"
>
{{ item.name }}
</el-menu-item>
</el-menu>
</div>
<section style="overflow: hidden; padding: 32px 10%; background: #f3f3f3">
<transition name="fade-transform" mode="out-in">
<router-view></router-view>
</transition>
</section>
<footer class="layout-footer-center text-center">
copyright@ 联盟信息等
</footer>
</div>
</template>
<script>
......@@ -184,7 +190,7 @@ export default {
background-position: center;
background-size: cover;
display: flex;
padding-right: 10%;
padding: 0 10% 0 5%;
justify-content: space-between;
align-items: center;
.logotitle {
......@@ -263,20 +269,14 @@ export default {
width: 100%;
height: 108px;
background: #efefef;
line-height: 68px;
line-height: 108px;
}
::v-deep {
.ivu-form {
.ivu-form-item {
display: block;
margin-bottom: 10px;
}
.ivu-form-item-label {
font-size: 14px;
font-family: AlibabaPuHuiTiR;
color: #333333;
}
}
.el-menu--horizontal > .el-menu-item:not(.is-disabled):hover,
.el-menu--horizontal > .el-menu-item:not(.is-disabled):focus {
background-color: transparent;
}
.el-form-item {
text-align: left;
}
/* fade-transform */
.fade-transform-leave-active,
......
......@@ -28,9 +28,8 @@ router.beforeResolve(async (to, from, next) => {
if (!loginInterception) hasToken = true
if (hasToken) {
if (to.path === "/home") {
next({
path: "/",
})
next()
// { path: "/" }
if (progressBar) VabProgress.done()
} else if (routesWhiteList.indexOf(to.path) !== -1) {
next()
......@@ -49,6 +48,7 @@ router.beforeResolve(async (to, from, next) => {
accessRoutes = await store.dispatch("routes/setAllRoutes", menulist)
}
router.addRoutes(accessRoutes)
console.log(router)
if (accessRoutes.length === 1) {
Message({
message: "暂无菜单权限,请联系管理员",
......
......@@ -53,7 +53,7 @@ export default {
async () => {
const fullPath = this.$route.fullPath
await this.$store.dispatch("user/logout")
this.$router.push(`/login?redirect=${fullPath}`)
this.$router.push(`/home?redirect=${fullPath}`)
}
)
},
......
......@@ -4,9 +4,40 @@
<vab-remix-icon class="logo" icon-class="logo" />
<span class="hidden-xs-only">无症状人群胃癌筛查随访数据中心</span>
</div>
<div class="right-panel">
<div class="userInfo">
<error-log></error-log>
<avatar></avatar>
<!-- <avatar></avatar> -->
<div class="fontSelect">
<div
v-for="(item, index) in fontList"
:key="index"
:class="['font', index == fontIndex ? 'active' : '']"
@click="changeFont(index)"
>
<div class="label">
{{ item.label }}
</div>
</div>
</div>
<div
v-show="curSelectedIndex != -1"
class="community"
@click="openModalFlag"
>
<img src="~@/assets/img/DataCenter/shift.png" alt="" />
{{ screeningList[curSelectedIndex].title }}
</div>
<div class="user">
<img src="~@/assets/img/DataCenter/user.png" alt="" />
<avatar></avatar>
</div>
<el-badge :value="messageCount" :class-name="'badge'">
<div class="user">
<img src="~@/assets/img/DataCenter/message.png" alt="" />
消息
</div>
</el-badge>
</div>
</div>
</template>
......@@ -31,10 +62,37 @@ export default {
FullScreenBar,
ThemeBar,
},
props: {
curSelectedIndex: {
type: Number,
default: -1,
},
},
data() {
return {
pulse: false,
isDot: true,
messageCount: 10,
screeningList: [
{
title: "社区筛查",
src: require("@/assets/img/DataCenter/shequ.png"),
},
{
title: "医院筛查",
src: require("@/assets/img/DataCenter/yiyuan.png"),
},
{
title: "体检筛查",
src: require("@/assets/img/DataCenter/tijian.png"),
},
],
fontList: [
{ fontSize: "12px", label: "A-" },
{ fontSize: "14px", label: "A" },
{ fontSize: "16px", label: "A+" },
],
fontIndex: localStorage.getItem("fontIndex") || 1,
}
},
computed: {
......@@ -46,6 +104,8 @@ export default {
feedBackNumber: "user/feedBackNumber",
}),
},
created() {},
mounted() {},
methods: {
handleCollapse() {
this.$store.dispatch("settings/changeCollapse")
......@@ -60,6 +120,14 @@ export default {
this.pulse = false
}, 1000)
},
openModalFlag() {
this.$emit("openModalFlag")
},
changeFont(i) {
this.fontIndex = i
this.$store.commit("table/setFontIndex", i)
localStorage.setItem("fontIndex", i)
},
},
}
</script>
......@@ -104,61 +172,65 @@ export default {
}
}
}
.right-panel {
.userInfo {
display: flex;
align-content: center;
align-items: center;
justify-content: flex-end;
height: 74px;
::v-deep {
.user-avatar {
margin-top: 2px;
margin-right: 5px;
font-weight: 600;
cursor: pointer;
}
.user-name {
position: relative;
margin-right: 35px;
margin-left: 5px;
font-weight: 600;
cursor: pointer;
}
.user-name + i {
position: absolute;
top: 4px;
right: 15px;
}
svg {
width: 1em;
height: 1em;
margin-right: 20px;
font-size: $base-font-size-big;
color: $base-color-gray;
padding-right: 40px;
.fontSelect {
display: flex;
margin-right: 20px;
.font {
width: 40px;
height: 40px;
background: #4e68ff;
border-radius: 4px;
border: 1px solid #ffffff;
text-align: center;
line-height: 40px;
cursor: pointer;
fill: $base-color-gray;
margin-left: 20px;
}
button {
svg {
margin-right: 0;
color: $base-color-white;
cursor: pointer;
fill: $base-color-white;
.active {
box-sizing: border-box;
background: #ffffff;
height: 40px;
color: #4e68ff;
padding: 1px;
.label {
height: 36px;
border: 1px solid #4e68ff;
}
}
.el-badge {
margin-right: 20px;
padding: 0 5px;
svg {
margin-right: 0px;
}
}
.community {
width: 106px;
height: 30px;
white-space: nowrap;
background: rgba(255, 255, 255, 0.1);
color: #fff;
display: flex;
justify-content: center;
align-items: center;
cursor: pointer;
img {
margin-right: 4px;
width: 18px;
height: 18px;
}
}
.user {
white-space: nowrap;
margin-left: 40px;
height: 30px;
display: flex;
justify-content: center;
align-items: center;
cursor: pointer;
color: #fff;
img {
margin-right: 4px;
width: 18px;
height: 18px;
}
}
}
......
......@@ -32,7 +32,10 @@
}"
>
<div :class="header === 'fixed' ? 'fixed-header' : ''">
<nav-bar></nav-bar>
<nav-bar
:cur-selected-index="curSelectedIndex"
@openModalFlag="openModalFlag"
></nav-bar>
</div>
<side-bar></side-bar>
<div class="vab-main" :class="collapse ? 'is-collapse-main' : ''">
......@@ -40,6 +43,51 @@
</div>
</div>
<back-to-top transition-name="fade"></back-to-top>
<el-dialog
:title="''"
:visible="modalFlag"
:close-on-click-modal="false"
:close-on-press-escape="false"
:show-close="false"
width="70%"
>
<div class="modalContent">
<div class="title">请选择您的筛查填报场景</div>
<ul class="list">
<li
v-for="(item, index) in screeningList"
:key="index"
@click="selectedIndex = index"
>
<div class="screeningItem">
<div class="circle">
<img
v-if="selectedIndex !== index"
src="~@/assets/img/DataCenter/circle.png"
alt=""
srcset=""
/>
<img
v-if="selectedIndex == index"
src="~@/assets/img/DataCenter/selected.png"
alt=""
srcset=""
/>
</div>
<div class="itemTitle">{{ item.title }}</div>
</div>
<div class="ItemIamge">
<img :src="item.src" alt="" />
</div>
</li>
</ul>
<div class="submit">
<el-button type="primary" class="btn" @click="setSelectedIndex"
>保存</el-button
>
</div>
</div>
</el-dialog>
</div>
</template>
......@@ -68,7 +116,25 @@ export default {
},
mixins: [Media],
data() {
return {}
return {
modalFlag: false,
screeningList: [
{
title: "社区筛查",
src: require("@/assets/img/DataCenter/shequ.png"),
},
{
title: "医院筛查",
src: require("@/assets/img/DataCenter/yiyuan.png"),
},
{
title: "体检筛查",
src: require("@/assets/img/DataCenter/tijian.png"),
},
],
selectedIndex: 0,
curSelectedIndex: "",
}
},
computed: {
...mapGetters({
......@@ -84,7 +150,18 @@ export default {
}
},
},
created() {
this.selectedIndex = localStorage.getItem("selectedIndex") || ""
this.curSelectedIndex = this.selectedIndex ? this.selectedIndex - 0 : -1
},
mounted() {
if (!this.selectedIndex) {
this.modalFlag = true
this.selectedIndex = 0
} else {
this.selectedIndex = this.selectedIndex - 0
this.curSelectedIndex = this.selectedIndex ? this.selectedIndex : -1
}
this.$nextTick(() => {
window.addEventListener(
"storage",
......@@ -100,6 +177,15 @@ export default {
...mapActions({
handleFoldSideBar: "settings/foldSideBar",
}),
setSelectedIndex() {
console.log(this.selectedIndex)
this.curSelectedIndex = this.selectedIndex
localStorage.setItem("selectedIndex", this.selectedIndex)
this.modalFlag = false
},
openModalFlag() {
this.modalFlag = true
},
},
}
</script>
......@@ -238,4 +324,63 @@ export default {
height: calc(100vh - 90px);
}
}
::v-deep .el-dialog__header {
display: none;
}
.modalContent {
padding: 60px;
.title {
text-align: center;
height: 30px;
font-size: 24px;
font-family: AlibabaPuHuiTiM;
color: #333333;
line-height: 30px;
margin-bottom: 60px;
}
.list {
display: flex;
justify-content: space-between;
li {
cursor: pointer;
}
.screeningItem {
display: flex;
.circle {
width: 26px;
height: 26px;
margin-right: 12px;
img {
width: 100%;
height: 100%;
}
}
.itemTitle {
height: 24px;
font-size: 18px;
font-family: AlibabaPuHuiTiM;
color: #333333;
font-weight: bold;
line-height: 24px;
}
}
.ItemIamge {
width: 90%;
// height: 180px;
margin-top: 14px;
img {
width: 100%;
height: 100%;
}
}
}
.submit {
margin-top: 60px;
text-align: center;
.btn {
width: 100px;
height: 32px;
}
}
}
</style>
......@@ -6,12 +6,9 @@ import store from "./store"
import router from "./router"
import "./plugins"
import "./mixins"
import iView from "view-design"
import "view-design/dist/styles/iview.css"
import "@/assets/style/common.scss"
// const { mockXHR } = require("../mock/static")
// mockXHR()
Vue.use(iView)
Vue.config.productionTip = false
new Vue({
......
......@@ -9,7 +9,7 @@ export const constantRoutes = [
{
path: "/home",
name: "Home",
redirect: "/home",
// redirect: "/home",
component: layout,
children: [
{
......
const state = {
fontIndex: localStorage.getItem("fontIndex") || 1,
}
const getters = {
fontIndex: (state) => state.fontIndex,
}
const mutations = {
setFontIndex(state, fontIndex) {
state.fontIndex = fontIndex
},
}
const actions = {}
export default {
state,
getters,
mutations,
actions,
}
......@@ -5,8 +5,8 @@
<video :src="videoSrc" controls class="video" />
</div>
<div class="right box tabbox">
<Tabs :value="curTab">
<TabPane
<el-tabs v-model="curTab">
<el-tab-pane
v-for="(e, index) in tabList"
:key="index"
:label="e.title"
......@@ -23,8 +23,8 @@
</div>
</li>
</ul>
</TabPane>
</Tabs>
</el-tab-pane>
</el-tabs>
</div>
</div>
<!-- 数据分析 -->
......
<template>
<div>数据概览</div>
<div class="dataCenter">
<div class="header">
<div
v-for="(item, index) in headList"
:key="index"
:class="['btn', selectedIndex == index ? 'active' : '']"
@click="setSelectedIndex(index)"
>
{{ item }}
</div>
</div>
<customs-table
ref="table"
:table-data="tableData"
:columns="columns"
:header-class="'newHeader'"
:list-loading="listLoading"
:current-page="pageIndex"
:total-count="total"
:page-sizes="pageSizes"
:page-size="pageSize"
@pageSizeChange="handleSizeChange"
@currentPageChange="handleCurrentChange"
/>
</div>
</template>
<script>
import CustomsTable from "@/components/CustomsTable"
import paginationMixin from "@/components/TabComponents/mixin"
export default {
// 数据概览
name: "",
components: {
CustomsTable,
},
mixins: [paginationMixin],
data() {
return {}
return {
listLoading: false,
selectedIndex: sessionStorage.getItem("homeSelectedIndex") - 0 || 0,
headList: ["社区筛查", "医院筛查", "体检筛查"],
columns: [
{
label: "医联体",
minWidth: 120,
value: "name",
},
{
label: "累计上报量",
minWidth: 120,
value: "1",
},
{
label: "最近一季度上报量",
minWidth: 120,
value: "2",
},
{
label: "累计审核合格量",
minWidth: 120,
value: "3",
},
{
label: "高风险",
minWidth: 120,
value: "4",
},
{
label: "中风险",
minWidth: 120,
value: "5",
},
{
label: "低风险",
minWidth: 120,
value: "6",
},
{
label: "胃癌",
minWidth: 120,
value: "7",
},
{
label: "早期胃癌",
minWidth: 120,
value: "8",
},
{
label: "食道癌",
minWidth: 120,
value: "9",
},
],
tableData: [
{
name: "1",
1: 2,
},
],
}
},
methods: {},
mounted() {},
watch: {},
mounted() {},
methods: {
setSelectedIndex(i) {
console.log(this.selectedIndex)
this.selectedIndex = i
sessionStorage.setItem("homeSelectedIndex", this.selectedIndex)
},
},
}
</script>
<style lang="scss" scoped></style>
<style lang="scss" scoped>
.dataCenter {
padding: 24px;
height: 100%;
display: flex;
flex-direction: column;
.header {
display: flex;
margin-bottom: 20px;
.btn {
cursor: pointer;
width: 112px;
height: 48px;
background: #ffffff;
border-radius: 4px;
border: 1px solid #dddddd;
font-size: 16px;
font-family: AlibabaPuHuiTiM;
color: #000;
text-align: center;
line-height: 48px;
margin-right: 24px;
}
.active {
background: #4e68ff;
border: none;
color: #ffffff;
}
}
}
</style>
<template>
<div class="screeningSearch">
<div class="top">
<form-components :forms="formList"></form-components>
</div>
<div class="bot">
<customs-table
ref="table"
:table-data="tableData"
:columns="columns"
:header-class="'newHeader'"
:list-loading="listLoading"
:current-page="pageIndex"
:total-count="total"
:page-sizes="pageSizes"
:page-size="pageSize"
@pageSizeChange="handleSizeChange"
@currentPageChange="handleCurrentChange"
/>
</div>
</div>
</template>
<script>
import FormComponents from "@/components/FormComponents"
import CustomsTable from "@/components/CustomsTable"
import paginationMixin from "@/components/TabComponents/mixin"
export default {
components: {
FormComponents,
CustomsTable,
},
mixins: [paginationMixin],
data() {
return {
listLoading: false,
keyword: "",
modifiedFlag: false,
columns: [
{
label: "医联体",
minWidth: 120,
value: "groupName",
},
{
label: "姓名",
minWidth: 120,
value: "name",
},
{
label: "性别",
minWidth: 120,
value: "sex",
},
{
label: "身份证",
minWidth: 120,
value: "idCard",
},
{
label: "年龄",
minWidth: 120,
value: "age",
},
{
label: "筛查时间",
minWidth: 120,
value: "screenTime",
},
{
label: "风险评估结果",
minWidth: 120,
value: "result",
},
{
label: "上次随访时间",
minWidth: 120,
value: "targetFieldCode",
},
{
label: "筛查审核状态",
minWidth: 180,
value: "createTime",
},
{
label: "操作",
width: 220,
fixed: "right",
operType: "button",
operations: [
{
func: this.rowOpration,
formatter(row) {
return {
label: " 录入",
type: "text",
}
},
},
],
},
],
tableData: [
{
groupName: "第一个",
},
{
groupName: "第一个",
},
{
groupName: "第一个",
},
{
groupName: "第一个",
},
{
groupName: "第一个",
},
{
groupName: "第一个",
},
{
groupName: "第一个",
},
{
groupName: "第一个",
},
{
groupName: "第十个",
},
{
groupName: "第一个",
},
{
groupName: "第一个",
},
{
groupName: "第一个",
},
{
groupName: "第一个",
},
{
groupName: "第一个",
},
{
groupName: "第一个",
},
{
groupName: "第一个",
},
{
groupName: "第一个",
},
{
groupName: "第十个",
},
{
groupName: "第一个",
},
{
groupName: "第er一个",
},
],
formList: [
{
type: "select",
label: "筛查时间",
prop: "screeningTime",
placeholder: "请选择时间",
rules: [],
opts: [{ label: "123", value: "1" }],
},
{
type: "select",
label: "随访审核状态",
prop: "screeningStatus",
placeholder: "请选择随访状态",
rules: [],
opts: [{ label: "123", value: "1" }],
},
{
type: "select",
label: "随访进度",
prop: "screeningProgress",
placeholder: "请选择随访进度",
rules: [],
opts: [{ label: "123", value: "1" }],
},
{
type: "select",
label: "计划随访时间",
prop: "planScreeningTime",
placeholder: "请选择计划随访时间",
rules: [],
opts: [{ label: "123", value: "1" }],
},
{
type: "input",
label: "关键词",
prop: "keyWord",
placeholder: "请输入医联体/姓名/身份证",
rules: [],
},
{
type: "btn",
list: [
{
btnType: "button",
type: "",
style: {
width: "80px",
height: "32px",
borderRadius: "4px",
fontSize: "14px",
marginLeft: "40px",
},
btnText: "查询",
func: () => {
this.onSearch()
},
},
{
btnType: "tobeModified",
tobeModified: 20,
},
],
},
],
}
},
watch: {},
mounted() {
this.total = 20
},
methods: {
changeModified() {
this.modifiedFlag = !this.modifiedFlag
},
setSelectedIndex(i) {
console.log(this.selectedIndex)
this.selectedIndex = i
sessionStorage.setItem("homeSelectedIndex", this.selectedIndex)
},
handleSizeChange(v) {
console.log(v)
},
onSearch() {
console.log(123456)
},
rowOpration(row, index) {
console.log(row, index)
},
},
}
</script>
<style lang="scss" scoped>
.screeningSearch {
.top {
width: 100%;
// height: 72px;
padding: 0 116px 0 44px;
display: flex;
justify-content: space-between;
align-items: center;
}
.bot {
padding: 0 24px;
}
}
::v-deep {
.el-table {
thead {
.newHeader {
height: 60px;
background: #f6f6f6;
}
}
}
}
</style>
<template>
<div class="screeningSearch">
<div class="top">
<form-components :forms="formList"></form-components>
</div>
<div class="bot">
<customs-table
ref="table"
:table-data="tableData"
:columns="columns"
:header-class="'newHeader'"
:list-loading="listLoading"
:current-page="pageIndex"
:total-count="total"
:page-sizes="pageSizes"
:page-size="pageSize"
@pageSizeChange="handleSizeChange"
@currentPageChange="handleCurrentChange"
/>
</div>
</div>
</template>
<script>
import FormComponents from "@/components/FormComponents"
import CustomsTable from "@/components/CustomsTable"
import paginationMixin from "@/components/TabComponents/mixin"
export default {
components: {
CustomsTable,
FormComponents,
},
mixins: [paginationMixin],
data() {
return {
listLoading: false,
keyword: "",
modifiedFlag: false,
columns: [
{
label: "医联体",
value: "name",
minWidth: 120,
},
{
label: "姓名",
value: "1",
minWidth: 120,
},
{
label: "性别",
value: "2",
minWidth: 120,
},
{
label: "身份证",
value: "3",
minWidth: 120,
},
{
label: "年龄",
minWidth: 120,
},
{
label: "筛查时间",
value: "5",
minWidth: 120,
},
{
label: "风险评估结果",
value: "6",
minWidth: 120,
},
{
label: "上次随访时间",
value: "7",
minWidth: 120,
},
{
label: "随访进度",
value: "8",
minWidth: 120,
},
{
label: "计划随访时间",
value: "9",
minWidth: 120,
},
{
label: "操作",
width: 220,
fixed: "right",
operType: "button",
operations: [
{
func: this.rowOpration,
formatter(row) {
return {
label: " 录入",
type: "text",
}
},
},
],
},
],
tableData: [
{
name: "1",
1: 2,
},
],
formList: [
{
xs: 24,
sm: 12,
md: 12,
lg: 7,
xl: 7,
type: "select",
label: "计划随访时间",
prop: "planScreeningTime",
placeholder: "请选择计划随访时间",
rules: [],
opts: [{ label: "123", value: "1" }],
},
{
xs: 24,
sm: 12,
md: 12,
lg: 7,
xl: 7,
type: "input",
label: "关键词",
prop: "keyWord",
placeholder: "请输入医联体/姓名/身份证",
rules: [],
},
{
xs: 24,
sm: 12,
md: 12,
lg: 7,
xl: 7,
type: "select",
label: "随访进度",
prop: "screeningProgress",
placeholder: "请选择随访进度",
rules: [],
opts: [{ label: "123", value: "1" }],
},
{
xs: 1,
sm: 2,
md: 2,
lg: 2,
xl: 2,
type: "btn",
list: [
{
btnType: "button",
type: "",
style: {
width: "80px",
height: "32px",
borderRadius: "4px",
fontSize: "14px",
marginLeft: "40px",
},
btnText: "查询",
func: () => {
this.onSearch()
},
},
// {
// btnType: "tobeModified",
// tobeModified: 20,
// },
],
},
],
}
},
watch: {},
mounted() {},
methods: {
changeModified() {
this.modifiedFlag = !this.modifiedFlag
},
setSelectedIndex(i) {
console.log(this.selectedIndex)
this.selectedIndex = i
sessionStorage.setItem("homeSelectedIndex", this.selectedIndex)
},
changePage(v) {
this.page[v.type] = v.value
console.log(this.page)
this.$refs.customTable.loading = false
},
onSearch() {
console.log(123456)
},
},
}
</script>
<style lang="scss" scoped>
.screeningSearch {
.top {
width: 100%;
// height: 72px;
padding: 0 116px 0 44px;
display: flex;
justify-content: space-between;
align-items: center;
}
.bot {
padding: 0 24px;
}
}
</style>
......@@ -2042,11 +2042,6 @@ async-limiter@~1.0.0:
resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd"
integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==
async-validator@^3.3.0:
version "3.5.2"
resolved "https://registry.npmmirror.com/async-validator/-/async-validator-3.5.2.tgz#68e866a96824e8b2694ff7a831c1a25c44d5e500"
integrity sha512-8eLCg00W9pIRZSB781UUX/H6Oskmm8xloZfr09lz5bikRpBVDlJ3hRVuxxP1SxcwsEYfJ4IU8Q19Y8/893r3rQ==
async-validator@~1.8.1:
version "1.8.5"
resolved "https://registry.yarnpkg.com/async-validator/-/async-validator-1.8.5.tgz#dc3e08ec1fd0dddb67e60842f02c0cd1cec6d7f0"
......@@ -2203,11 +2198,6 @@ base@^0.11.1:
mixin-deep "^1.2.0"
pascalcase "^0.1.1"
batch-processor@1.0.0:
version "1.0.0"
resolved "https://registry.npmmirror.com/batch-processor/-/batch-processor-1.0.0.tgz#75c95c32b748e0850d10c2b168f6bdbe9891ace8"
integrity sha512-xoLQD8gmmR32MeuBHgH0Tzd5PuSZx71ZsbhVxOCRbgktZEPe4SQy7s9Z50uPp0F/f7iw2XmkHN2xkgbMfckMDA==
batch@0.6.1:
version "0.6.1"
resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16"
......@@ -3655,11 +3645,6 @@ deepmerge@^1.2.0, deepmerge@^1.5.2:
resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-1.5.2.tgz#10499d868844cdad4fee0842df8c7f6f0c95a753"
integrity sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==
deepmerge@^2.2.1:
version "2.2.1"
resolved "https://registry.npmmirror.com/deepmerge/-/deepmerge-2.2.1.tgz#5d3ff22a01c00f645405a2fbc17d0778a1801170"
integrity sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==
default-gateway@^4.2.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b"
......@@ -3954,13 +3939,6 @@ electron-to-chromium@^1.3.649:
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.704.tgz#894205a237cbe0097d63da8f6d19e605dd13ab51"
integrity sha512-6cz0jvawlUe4h5AbfQWxPzb+8LzVyswGAWiGc32EJEmfj39HTQyNPkLXirc7+L4x5I6RgRkzua8Ryu5QZqc8cA==
element-resize-detector@^1.2.0:
version "1.2.4"
resolved "https://registry.npmmirror.com/element-resize-detector/-/element-resize-detector-1.2.4.tgz#3e6c5982dd77508b5fa7e6d5c02170e26325c9b1"
integrity sha512-Fl5Ftk6WwXE0wqCgNoseKWndjzZlDCwuPTcoVZfCP9R3EHQF8qUtr3YUPNETegRBOKqQKPW3n4kiIWngGi8tKg==
dependencies:
batch-processor "1.0.0"
element-ui@^2.15.2:
version "2.15.3"
resolved "https://registry.yarnpkg.com/element-ui/-/element-ui-2.15.3.tgz#55108ab82a3bcc646e7b0570871c48ba96300652"
......@@ -6271,11 +6249,6 @@ js-base64@^2.1.9:
resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.6.4.tgz#f4e686c5de1ea1f867dbcad3d46d969428df98c4"
integrity sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==
js-calendar@^1.2.3:
version "1.2.3"
resolved "https://registry.npmmirror.com/js-calendar/-/js-calendar-1.2.3.tgz#a583b0644b4e695ba394f344d103dbcc7a7a7d3e"
integrity sha512-dAA1/Zbp4+c5E+ARCVTIuKepXsNLzSYfzvOimiYD4S5eeP9QuplSHLcdhfqFSwyM1o1u6ku6RRRCyaZ0YAjiBw==
js-cookie@^2.2.1:
version "2.2.1"
resolved "https://registry.yarnpkg.com/js-cookie/-/js-cookie-2.2.1.tgz#69e106dc5d5806894562902aa5baec3744e9b2b8"
......@@ -6644,11 +6617,6 @@ lodash.memoize@^4.1.2:
resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe"
integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=
lodash.throttle@^4.1.1:
version "4.1.1"
resolved "https://registry.npmmirror.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4"
integrity sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==
lodash.transform@^4.6.0:
version "4.6.0"
resolved "https://registry.yarnpkg.com/lodash.transform/-/lodash.transform-4.6.0.tgz#12306422f63324aed8483d3f38332b5f670547a0"
......@@ -8110,11 +8078,6 @@ pnp-webpack-plugin@^1.6.4:
dependencies:
ts-pnp "^1.1.6"
popper.js@^1.14.6:
version "1.16.1"
resolved "https://registry.npmmirror.com/popper.js/-/popper.js-1.16.1.tgz#2a223cb3dc7b6213d740e40372be40de43e65b1b"
integrity sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==
portfinder@^1.0.26:
version "1.0.28"
resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.28.tgz#67c4622852bd5374dd1dd900f779f53462fac778"
......@@ -10318,11 +10281,6 @@ timsort@^0.3.0:
resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4"
integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=
tinycolor2@^1.4.1:
version "1.4.2"
resolved "https://registry.npmmirror.com/tinycolor2/-/tinycolor2-1.4.2.tgz#3f6a4d1071ad07676d7fa472e1fac40a719d8803"
integrity sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA==
title-case@^2.1.0:
version "2.1.1"
resolved "https://registry.yarnpkg.com/title-case/-/title-case-2.1.1.tgz#3e127216da58d2bc5becf137ab91dae3a7cd8faa"
......@@ -10774,11 +10732,6 @@ uuid@^3.3.2, uuid@^3.4.0:
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
v-click-outside-x@^3.7.1:
version "3.7.1"
resolved "https://registry.npmmirror.com/v-click-outside-x/-/v-click-outside-x-3.7.1.tgz#aa03eaa0e41e44cb5207dcf86c2d9f0dd64084c1"
integrity sha512-WmUgmcIXr9clVpm1AYS/FgHtcDicfnfoxgQCNg4O6vfk9GVnxA0vSqO321ogUo0b7czYTidj7fQENvWFMWOkUg==
v8-compile-cache@^2.0.3, v8-compile-cache@^2.2.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee"
......@@ -10836,20 +10789,6 @@ vfile@^4.0.0:
unist-util-stringify-position "^2.0.0"
vfile-message "^2.0.0"
view-design@^4.7.0:
version "4.7.0"
resolved "https://registry.npmmirror.com/view-design/-/view-design-4.7.0.tgz#98c4ec18ed70d1b58157007f8107a77158334846"
integrity sha512-WRvVRfsZciN0aJYlz+6b1zxs5G8tLFb4OUKOu+PiN0QyIGmdgWVziEyEmioYtJahQpueWiQpRYGzyxrpz3UkWQ==
dependencies:
async-validator "^3.3.0"
deepmerge "^2.2.1"
element-resize-detector "^1.2.0"
js-calendar "^1.2.3"
lodash.throttle "^4.1.1"
popper.js "^1.14.6"
tinycolor2 "^1.4.1"
v-click-outside-x "^3.7.1"
vm-browserify@^1.0.1:
version "1.1.2"
resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0"
......
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