Commit 16a1f1e6 authored by 姬鋆屾's avatar 姬鋆屾
parents 2a93a96b b3df15f5
......@@ -9,5 +9,5 @@ VUE_APP_TBAS_KEY=admin.tabs
VUE_APP_TBAS_TITLES_KEY=admin.tabs.titles
#VUE_APP_API_BASE_URL=http://api.iczer.com
#门户
#VUE_APP_API_portal_URL=http://192.168.0.98:11072
VUE_APP_API_portal_URL=http://10.12.185.213:11072
\ No newline at end of file
VUE_APP_API_portal_URL=http://192.168.0.98:11072
# VUE_APP_API_portal_URL=http://10.12.185.213:11072
\ No newline at end of file
......@@ -3,7 +3,7 @@
color:#1890FF;
}
.delete{
color:#FF4D4F;
color:#FA4D4C;
}
.green{
color:#1BBC9B;
......@@ -15,7 +15,7 @@
color:#fff;
}
.bgdel{
background-color: #FF4D4F;
background-color: #FA4D4C;
}
.bgpr{
background-color: #1890FF;
......@@ -150,6 +150,9 @@
.pdl20{
padding-left:20px;
}
.pdr6{
padding-right:6px;
}
.pdr10{
padding-right:10px;
}
......@@ -220,3 +223,6 @@
.empty {
height: 100%;
}
.pointer{
cursor: pointer;
}
\ No newline at end of file
@import './common.less';
@import '../../theme/default/color.less';
@import "./common.less";
@import "../../theme/default/color.less";
// 字体大小
@fz18: 18px;
@fz16: 16px;
......@@ -10,13 +10,13 @@
@cl999: #999;
@cl000: #000; //表头
@cl333: #333; //表体
@cl8B: #8B96A6;
@dlecl: #FA4D4C; //表格删除
@redact: #1890FF; //表格编辑
@cl8B: #8b96a6;
@dlecl: #fa4d4c; //表格删除
@redact: #1890ff; //表格编辑
// 按钮背景色
@addbg: linear-gradient(90deg, #5ab6ff 0%, #2e9aff 100%); //新增
@delbg: #FA4D4C; //删除
@qubg: #E1F0FE; //取消 重置
@delbg: #fa4d4c; //删除
@qubg: #e1f0fe; //取消 重置
// 分页显示位置
.pagination {
......@@ -24,6 +24,10 @@
margin-right: 10px;
text-align: right;
}
.ant-tabs-nav-container {
border-bottom: 1px solid rgb(224, 224, 224) !important;
}
/* 溢出表格滚动条 */
/* 表格 */
......@@ -36,22 +40,32 @@
overflow: hidden !important;
margin-bottom: 0 !important;
padding-right: 6px;
tr:only-child > th:last-child {
border-right-color: #f0f0f0 !important;
}
}
.ant-table-placeholder{
width:calc(100% - 6px)
}
.ant-table-header {
background: #fff;
}
::-webkit-scrollbar {
width: 6px;
height:6px;
height: 6px;
overflow-y: auto;
}
::-webkit-scrollbar-thumb {
border-radius: 6px;
background-color: rgba(144, 147, 153, .5);
background-color: rgba(144, 147, 153, 0.5);
}
::-webkit-scrollbar-track {
border-radius: 6px;
background: #fff;
background: rgba(144, 147, 153, 0);
}
.color_title {
......@@ -65,18 +79,30 @@
position: absolute;
top: 1px;
left: -16px;
background-color: rgba(5, 149, 253, 1);
background-color: #1890ff;
}
}
.ant-input{
.ant-input {
resize: none;
}
.ant-btn-primary {
background: linear-gradient(90deg, #5ab6ff, #2e9aff) !important;
border: none !important;
border-color: transparent !important;
}
.ant-form-explain{
position:absolute
.ant-form-explain {
position: absolute;
}
.ant-form-item {
display: flex;
align-items: center;
margin-bottom: 20px;
}
// .table-header{
// padding-right:6px;
// display: flex;
// align-items: center;
// justify-content:space-between;
// margin-bottom: 20px;
// }
\ No newline at end of file
.ant-modal {
box-shadow: none !important;
}
.ant-form-item {
margin-bottom: 0;
display: flex;
align-items: center;
}
.ant-form-item-children {
display: flex;
align-items: center;
}
.ant-form-item-children input,
.ant-form-item-children textarea {
font-size: 14px;
font-weight: 400;
color: #999;
}
.ant-form-item-label label {
font-size: 14px;
font-weight: 400;
color: #8B96A6;
}
.ant-modal {
box-shadow: 0px 2px 12px 0px rgba(0, 0, 0, 0.1);
}
.ant-modal-title {
color: #1890FF !important;
font-size: 18px;
font-weight: bold;
}
.ant-modal-close {
color: #188fff !important;
}
.ant-modal-close svg {
font-size: 26px !important;
}
.ant-vue-dark .ant-table-thead .ant-table-column-title {
font-size: 16px;
font-weight: 500;
color: #000;
}
.ant-vue-dark .ant-table-tbody {
font-size: 14px;
font-weight: 400;
color: #333;
}
.ant-vue-light .ant-table-thead .ant-table-column-title {
font-size: 16px;
font-weight: 500;
color: #000;
}
.ant-vue-light .ant-table-tbody {
font-size: 14px;
font-weight: 400;
color: #333;
}
.del {
color: #FA4D4C;
padding: 0 4px;
display: inline-block;
}
.del:hover {
color: #FA4D4C;
cursor: pointer;
}
.redact {
color: #1890FF;
padding: 0 4px;
display: inline-block;
}
.redact:hover {
color: #1890FF;
cursor: pointer;
}
.search input {
font-size: 14px;
color: #BFBFBF;
}
.search .chaxun {
color: #fff;
border: 1px solid #5ab6ff;
padding: 0 14px;
background: linear-gradient(90deg, #5ab6ff 0%, #2e9aff 100%);
}
.btn {
margin-top: 20px;
}
.btnclass {
font-size: 14px;
border-radius: 4px;
border: none;
margin-right: 12px;
}
.delclass {
background: #FA4D4C !important;
color: #fff !important;
}
.addclass {
background: linear-gradient(90deg, #5ab6ff 0%, #2e9aff 100%) !important;
color: #fff !important;
}
.quclass {
background: #E1F0FE !important;
color: #42A5FA !important;
border: 1px solid #E1F0FE;
}
/**
* 上传图片、文件父级添加class
* 文字和控件将向上对齐
*/
.up_load_file .ant-form-item {
align-items: flex-start;
}
.up_load_file .ant-form-item-label {
position: relative;
top: -4px;
}
.up_load_pic .ant-form-item {
align-items: flex-start;
}
.up_load_pic .ant-upload-list {
float: left;
}
th {
text-align: center !important;
}
td {
text-align: center;
}
.btn_box {
display: flex;
align-items: center;
justify-content: center;
}
.search_block {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 20px;
}
.card_title {
font-size: 16px;
font-weight: 600;
color: #464646;
padding-left: 10px;
position: relative;
margin-bottom: 15px;
}
.card_title::before {
content: '';
position: absolute;
background: #1890ff;
border-color: #1890FF;
border-style: solid;
border-width: 2px;
height: 15px;
top: 4px;
left: 0;
}
.ant-tabs-nav-wrap {
background: #fff;
}
.ant-tabs-bar {
background: #fff;
padding-right: 20px !important;
}
.ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-tab {
border-left: none !important;
border-top: none !important;
border-right: none !important;
border-bottom: none !important;
color: #999 !important;
}
.ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-tab-active {
border-left: none !important;
border-top: none !important;
border-right: none !important;
}
.tabs-view-content {
background: #fff;
margin: 0 24px;
padding: 20px 24px;
min-height: 80vh;
}
.admin-layout .admin-layout-content {
padding: 20px 0 0 !important;
background: #F0F2F5;
}
.ant-pagination-item-active {
background: #1890FF;
border-radius: 4px;
}
.ant-pagination-item-active a {
color: #fff;
}
......@@ -223,22 +223,22 @@ td{
background: #fff;
}
.ant-tabs-bar{
background: #fff;
padding-right: 20px !important;
}
.ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-tab{
border-left: none !important;
border-top: none !important;
border-right: none !important;
border-bottom: none !important;
color: #999 !important;
}
.ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-tab-active{
border-left: none !important;
border-top: none !important;
border-right: none !important;
}
// .ant-tabs-bar{
// background: #fff;
// padding-right: 20px !important;
// }
// .ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-tab{
// border-left: none !important;
// border-top: none !important;
// border-right: none !important;
// border-bottom: none !important;
// color: #999 !important;
// }
// .ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-tab-active{
// border-left: none !important;
// border-top: none !important;
// border-right: none !important;
// }
// 内容
.tabs-view-content{
// background: #fff;
......
......@@ -5,6 +5,7 @@
<a-tree
:load-data="onLoadData"
:tree-data="treeData"
:expandedKeys.sync="expandedKeys"
:replaceFields="{ title: 'label', key: 'id' }"
@select="onSelect"
>
......@@ -26,6 +27,7 @@ export default {
return {
treeData: [], //树结构
id: "",
expandedKeys: [],
};
},
......@@ -40,6 +42,13 @@ export default {
const { data, code } = res.data;
if (code === 1) {
this.treeData = data.data;
// let obj = {
// dataRef: {
// id: data.data[0].id,
// },
// };
// this.onLoadData(obj);
this.expandedKeys = [data.data[0].id];
}
},
......
export const pageSizeOptions = ["10", "30", "50", "100", "200"]; // 翻页-每页显示数量
import local from "@/utils/local";
// import local from "@/utils/local";
import store from "@/store/index";
// 皮肤模板页面权限
export const permission = {
inserted: function(el, binding) {
const { value } = binding;
const roles = local.getLocal("baseUserInfo").id;
// const roles = local.getLocal("baseUserInfo").id;
const roles = store.getters["site/userInfo"].id;
if (value) {
const permissionRoles = value;
const hasPermission = permissionRoles.includes(roles);
......
......@@ -5,7 +5,7 @@
<div class="flex aic">
<router-link to="/" class="flex aic">
<img class="mr10" width="32" src="@/assets/img/logo.png" />
<h1 class="title">基础设置平台</h1>
<h1 class="title">基础设置系统</h1>
</router-link>
<HeaderSite class="ml20"></HeaderSite>
</div>
......@@ -28,7 +28,7 @@
<a-layout-sider width="200" style="background: #fff">
<i-menu theme="light" :options="menuData" class="menu" />
</a-layout-sider>
<a-layout class="main" style="padding: 0 24px 24px">
<a-layout class="main">
<a-layout-content>
<keep-alive>
<!-- 需要缓存的视图组件 -->
......@@ -93,7 +93,23 @@ export default {
}
.main {
height: calc(100vh - 64px);
padding: 0px 24px 24px;
overflow-y: auto;
&::-webkit-scrollbar {
width: 6px;
height: 6px;
overflow-y: auto;
}
&::-webkit-scrollbar-thumb {
border-radius: 6px;
background-color: rgba(144, 147, 153, 0.5);
}
&::-webkit-scrollbar-track {
border-radius: 6px;
background: rgba(144, 147, 153, 0);
}
}
.ant-layout-content {
height: 100%;
......
......@@ -29,14 +29,12 @@
>
</div>
<div class="site-btn">
<a-button
type="primary"
style="margin-right: 10px"
@click="onSucessSite"
:disabled="isSite"
<a-button style="margin-right: 10px" @click="visible = false"
>取消</a-button
>
<a-button type="primary" @click="onSucessSite" :disabled="isSite"
>确定</a-button
>
<a-button @click="visible = false">取消</a-button>
</div>
</div>
</template>
......@@ -45,6 +43,7 @@
</template>
<script>
import { getSiteTree } from "@/services/basicsetFun";
import { mapMutations } from "vuex";
import local from "@/utils/local";
// import Cookie from "js-cookie";
export default {
......@@ -65,6 +64,7 @@ export default {
},
mounted() {},
methods: {
...mapMutations("site", ["SET_SITE_ID", "SET_siteName"]),
// 确认站点
onSucessSite() {
if (this.checkarr.length == 0) return;
......@@ -114,7 +114,7 @@ export default {
const { siteTree } = data;
this.sitelist = siteTree;
let arr = [];
const treeFn = function (e) {
const treeFn = function(e) {
e.forEach((element) => {
arr.push(element);
if (element.children && element.children.length > 0) {
......@@ -137,6 +137,8 @@ export default {
// };
local.setLocal("siteId", obj.id);
local.setLocal("siteName", obj.label);
this.SET_SITE_ID(obj.id);
this.SET_siteName(obj.label);
this.show = false;
if (location.href.search(/token/gi) >= 0) {
setTimeout(() => {
......
......@@ -30,9 +30,11 @@
</span>
</template>
<template slot="active" slot-scope="text">
<a class="look-more" @click="lookMore(text.content)">查看详情</a>
<a class="edit" @click="editAccept(text)">编辑</a>
<a class="delete" @click="handleDel(text.id)">删除</a>
<span class="primary pointer" @click="lookMore(text.content)"
>查看详情</span
>
<span class="primary pointer" @click="editAccept(text)">编辑</span>
<span class="delete pointer" @click="handleDel(text.id)">删除</span>
</template>
</a-table>
</div>
......@@ -85,6 +87,7 @@ import {
// getSiteMatterList,
} from "@/services/matter";
import local from "@/utils/local";
import { pageSizeOptions } from "@/config/pageConfig.js";
const columns = [
{
title: "序号",
......@@ -121,7 +124,7 @@ export default {
source: 1,
},
loading: false,
pageSizeOptions: ["10", "30", "50", "100"],
pageSizeOptions,
rules: {
content: [
{ required: true, message: "受理条件不能为空", trigger: "blur" },
......@@ -251,13 +254,6 @@ export default {
.header {
margin-bottom: 20px;
}
.edit {
color: #03d76f;
margin: 0 15px;
}
.delete {
color: #fa6464;
}
}
/deep/.ant-form-item {
display: block !important;
......
......@@ -39,9 +39,17 @@
>
</template>
<template slot="operate" slot-scope="text">
<span class="look_more mr" @click="readMore(text)">查看更多</span>
<span class="edit mr" @click="editMaterial(text)">编辑</span>
<span class="del" @click="delMaterial(text.id)">删除</span>
<a-space>
<span class="primary pointer" @click="readMore(text)"
>查看更多</span
>
<span class="primary pointer" @click="editMaterial(text)"
>编辑</span
>
<span class="delete pointer" @click="delMaterial(text.id)"
>删除</span
>
</a-space>
</template>
</a-table>
</div>
......@@ -73,6 +81,7 @@ import addmaterials from "../group/addmaterials.vue";
import materialDetails from "../group/materialDetails.vue";
import downloadTable from "../group/downloadTable.vue";
import { getMatterDatumList, delMatterDatum } from "@/services/matter";
import { pageSizeOptions } from "@/config/pageConfig.js";
let columns = [
{
title: "序号",
......@@ -121,7 +130,7 @@ export default {
columns,
dict: {}, // 材料字典
loading: false,
pageSizeOptions: ["10", "30", "50", "100"],
pageSizeOptions,
dataSource: [],
selectedRows: [], // 选中数据
formVisible: false,
......@@ -258,12 +267,5 @@ export default {
border-radius: 2px;
cursor: pointer;
}
.edit {
color: #03d76f;
cursor: pointer;
}
.look_more {
cursor: pointer;
}
}
</style>
......@@ -31,8 +31,8 @@
</template>
<template slot="active" slot-scope="text">
<a-space size="middle">
<a class="edit" @click="handleEdit(text)">编辑</a>
<a class="delete" @click="handleDel(text.id)">删除</a>
<span class="primary pointer" @click="handleEdit(text)">编辑</span>
<span class="delete pointer" @click="handleDel(text.id)">删除</span>
</a-space>
</template>
</a-table>
......@@ -49,6 +49,7 @@
<script>
import { getMatterflowlimitList, delMatterflowlimit } from "@/services/matter";
import { pageSizeOptions } from "@/config/pageConfig.js";
import addFlow from "../group/addFlow.vue";
import local from "@/utils/local";
......@@ -103,7 +104,7 @@ export default {
current: 1,
size: 10,
total: 0,
pageSizeOptions: ["10", "30", "50", "100"],
pageSizeOptions,
title: "新增流程",
visible: false,
};
......
......@@ -37,8 +37,8 @@
</template>
<template slot="active" slot-scope="text">
<a-space size="middle">
<a class="edit" @click="handleEdit(text)">编辑</a>
<a class="delete" @click="handleDel(text.id)">删除</a>
<span class="primary pointer" @click="handleEdit(text)">编辑</span>
<span class="delete pointer" @click="handleDel(text.id)">删除</span>
</a-space>
</template>
</a-table>
......@@ -64,6 +64,7 @@
<script>
import local from "@/utils/local";
import { pageSizeOptions } from "@/config/pageConfig.js";
import addPursuant from "../group/addPursuant.vue";
import { getMattersetbase, delMattersetbase } from "@/services/matter";
const columns = [
......@@ -103,7 +104,7 @@ export default {
data() {
return {
loading: false,
pageSizeOptions: ["10", "30", "50", "100"],
pageSizeOptions,
columns,
tableData: [],
current: 1,
......@@ -221,13 +222,7 @@ export default {
.header {
margin-bottom: 20px;
}
.edit {
color: #03d76f;
margin: 0 10px;
}
.delete {
color: #fa6464;
}
.ant-pagination {
margin: 10px 0;
}
......
......@@ -30,9 +30,11 @@
<template slot="active" slot-scope="text">
<a-space size="middle">
<a class="look-more" @click="handleMore(text)">查看详情</a>
<a class="edit" @click="handleEdit(text)">编辑</a>
<a class="delete" @click="handleDel(text.id)">删除</a>
<span class="primary pointer" @click="handleMore(text)"
>查看详情</span
>
<span class="primary pointer" @click="handleEdit(text)">编辑</span>
<span class="delete pointer" @click="handleDel(text.id)">删除</span>
</a-space>
</template>
</a-table>
......@@ -41,8 +43,8 @@
<!-- 新增问题 -->
<a-modal v-model="visible" :title="title" @cancel="handleClose">
<template slot="footer">
<a-button type="primary" @click="handleOk">确定</a-button>
<a-button @click="handleInit">重置</a-button>
<a-button type="primary" @click="handleOk">确定</a-button>
</template>
<a-form-model
......@@ -87,6 +89,7 @@
</template>
<script>
import { pageSizeOptions } from "@/config/pageConfig.js";
const columns = [
{
title: "序号",
......@@ -124,7 +127,7 @@ export default {
return {
columns,
loading: false,
pageSizeOptions: ["10", "30", "50", "100"],
pageSizeOptions,
tableData: [],
siteId: "",
matterList: [],
......@@ -270,13 +273,7 @@ export default {
.header {
margin-bottom: 20px;
}
.edit {
color: #03d76f;
margin: 0 15px;
}
.delete {
color: #fa6464;
}
.ant-pagination {
margin: 10px 0;
}
......
......@@ -9,7 +9,7 @@
>
<template slot="footer">
<a-button @click="handleInit">重置</a-button>
<a-button @click="handleOk" type="primary">保存</a-button>
<a-button @click="handleOk" type="primary">确定</a-button>
</template>
<a-form-model
:label-col="{ span: 4 }"
......
......@@ -8,7 +8,7 @@
>
<template slot="footer">
<a-button @click="handleInit">重置</a-button>
<a-button @click="handleOk" type="primary">保存</a-button>
<a-button @click="handleOk" type="primary">确定</a-button>
</template>
<a-form-model
:model="form"
......
......@@ -12,6 +12,7 @@
<a-tab-pane key="/appmarket/terminalapp" tab="终端应用"> </a-tab-pane>
<a-tab-pane key="/appmarket/moveapp" tab="移动端应用"> </a-tab-pane>
<a-tab-pane key="/appmarket/blackapp" tab="应用黑名单"> </a-tab-pane>
<a-tab-pane key="/appmarket/appTheme" tab="应用主题"> </a-tab-pane>
</a-tabs>
<div class="app-out-box flex1">
<router-view></router-view>
......@@ -131,6 +132,9 @@ export default {
overflow-y: auto;
}
}
/deep/.ant-tabs-extra-content {
padding-right: 20px;
}
/deep/.ant-form-item {
align-items: flex-start;
}
......
......@@ -87,13 +87,15 @@
<!-- 操作 -->
<template slot="action" slot-scope="text">
<a-space size="middle">
<a
class="primary"
<span
class="primary pointer"
:disabled="text.used ? true : false"
@click="handleUse(text.id)"
>使用</a
>使用</span
>
<span class="primary pointer" @click="handlePreview(text.id)"
>预览</span
>
<a class="primary" @click="handlePreview(text.id)">预览</a>
</a-space>
</template>
</a-table>
......@@ -117,6 +119,7 @@ import {
previewVersion,
} from "@/services/market";
import CheckSite from "../modal/CheckSite.vue";
import { pageSizeOptions } from "@/config/pageConfig.js";
import { filterItems } from "@/utils";
import { mapGetters } from "vuex";
export default {
......@@ -178,7 +181,7 @@ export default {
size: 10,
total: 0,
loading: false,
pageSizeOptions: ["10", "30", "50", "100"],
pageSizeOptions,
form: {},
tableData: [],
siteVisible: false,
......
<template>
<div class="app-category">
<div class="header flex aic jcb mb20 pdr6">
<a-space>
<a-button type="primary" @click="handleAdd"> 新增主题 </a-button>
<a-button type="danger" @click="handleDelAll"> 批量移除 </a-button>
</a-space>
<a-input-search
style="width: 300px"
placeholder="请输入主题名称搜索"
enter-button="搜索"
v-model="searchVal"
allowClear
@search="onSearch"
/>
</div>
<!-- 表格 -->
<div class="table-content">
<a-table
:row-selection="{
selectedRowKeys: selectedRowKeys,
onChange: onSelectChange,
}"
:loading="loading"
bordered
:scroll="{ y: 580 }"
:columns="columns"
:pagination="{
showTotal: (total) => `共 ${total} 条`,
current: current,
total: total,
pageSize: size,
showSizeChanger: true,
showQuickJumper: true,
pageSizeOptions: pageSizeOptions,
onChange: handleChange,
onShowSizeChange: showSizeChange,
}"
:data-source="tableData"
:rowKey="(record) => record.id"
>
<!-- 序号 -->
<span slot="num" slot-scope="text, record, index">{{
(current - 1) * size + index + 1
}}</span>
<!-- 创建时间 -->
<template slot="createTime" slot-scope="text">
{{ text.createTime | dateFormat }}
</template>
<!-- 操作 -->
<template slot="action" slot-scope="text">
<a-space size="middle">
<span class="primary pointer" @click="handleEdit(text)">编辑</span>
<span class="delete pointer" @click="handleDel(text.id)">删除</span>
</a-space>
</template>
</a-table>
</div>
<!-- 新增、编辑分类 -->
<AddTheme
ref="AddTheme"
:title="title"
:addVisile.sync="addVisile"
@addSuccess="getCategoryList"
></AddTheme>
</div>
</template>
<script>
import { getCategoryList, deleteCategory } from "@/services/market";
import AddTheme from "../modal/AddTheme";
import local from "@/utils/local";
import { pageSizeOptions } from "@/config/pageConfig.js";
const columns = [
{
title: "序号",
dataIndex: "num",
width: "65px",
scopedSlots: {
customRender: "num",
},
},
{
title: "站点名称",
dataIndex: "siteName",
},
{
title: "主题名称",
dataIndex: "categoryName",
},
{
title: "主题编码",
dataIndex: "categoryCode",
},
{
title: "排序",
dataIndex: "sort",
},
{
title: "创建时间",
scopedSlots: {
customRender: "createTime",
},
},
{
title: "操作",
width: "150px",
scopedSlots: { customRender: "action" },
},
];
export default {
components: {
AddTheme,
},
data() {
return {
api: process.env.VUE_APP_API_BASE_URL + "/",
api2: process.env.VUE_APP_API_IMG_URL,
columns,
siteId: local.getLocal("siteId"),
tableData: [], // 表格数据
loading: false,
searchVal: "", // 搜索
current: 1,
size: 10,
total: 0,
pageSizeOptions,
selectedRowKeys: [], // 表格勾选数据
AddVisible: false,
title: "新增主题",
addVisile: false,
};
},
created() {
this.getCategoryList();
},
methods: {
// 获取分类列表
async getCategoryList() {
this.loading = true;
let res = await getCategoryList({
page: this.current,
size: this.size,
siteId: this.siteId,
categoryName: `%${this.searchVal}%`,
});
this.loading = false;
let { data, total } = res.data.data;
if (res.data.code === 1) {
if (!data.length && this.current > 1) {
this.current -= 1;
this.getCategoryList();
}
this.tableData = data;
this.total = total;
}
},
// 新增
handleAdd() {
this.title = "新增主题";
this.$refs.AddTheme.onAdd();
this.addVisile = true;
},
// 搜索
onSearch() {
this.current = 1;
this.selectedRowKeys = [];
this.getCategoryList();
},
// 翻页
handleChange(cur) {
this.current = cur;
this.getCategoryList();
},
// 改变每页显示数量
showSizeChange(current, size) {
this.current = current;
this.size = size;
this.getCategoryList();
},
// 勾选表格
onSelectChange(keys) {
this.selectedRowKeys = keys;
},
// 编辑
handleEdit(row) {
this.title = "编辑主题";
this.$refs.AddTheme.onEdit(row);
this.addVisile = true;
},
// 批量移除
handleDelAll() {
if (!this.selectedRowKeys.length) {
this.$message.warning("请先勾选数据");
return;
}
let ids = this.selectedRowKeys.join(",");
this.handleDel(ids);
},
// 删除
handleDel(id) {
let _this = this;
_this.$confirm({
title: "系统提示",
content: "删除不可恢复,确定要删除吗?",
okText: "确定",
okType: "danger",
cancelText: "取消",
centered: true,
icon: "exclamation-circle",
maskClosable: true,
async onOk() {
let res = await deleteCategory({ id });
let { code, msg } = res.data;
if (code === 1) {
_this.$message.success(msg);
this.selectedRowKeys = [];
_this.getCategoryList();
}
},
onCancel() {
console.log("Cancel");
},
});
},
},
};
</script>
<style lang="less" scoped></style>
......@@ -2,8 +2,8 @@
<div class="black-app">
<div class="left">
<div class="header">
<h3 class="titel">设备应用黑名单</h3>
<div class="control">
<div class="titel">设备应用黑名单</div>
<div class="control pdr6">
<a-button type="danger" @click="handleDelAll"> 批量移除 </a-button>
<div class="business-control">
<a-space>
......@@ -66,8 +66,11 @@
</span>
</template>
<template slot="action" slot-scope="text">
<a href="javascript:;" class="delete" @click="handleDel(text.id)"
>移除</a
<span
href="javascript:;"
class="delete pointer"
@click="handleDel(text.id)"
>移除</span
>
</template>
</a-table>
......@@ -76,12 +79,12 @@
<!-- 右 -->
<div class="right">
<div class="header">
<h3 class="titel">站点设备</h3>
<div class="titel">站点设备</div>
<div class="control">
<div>
<!-- <a-button type="primary" @click="handleAddAll"> 批量加入 </a-button> -->
</div>
<div class="business-control">
<div class="business-control pdr6">
<a-space>
<a-select
style="min-width: 120px"
......@@ -149,7 +152,9 @@
<template slot="action" slot-scope="text">
<a-space size="middle">
<a class="jion" @click="handleIn(text)">加入黑名单</a>
<span class="primary pointer" @click="handleIn(text)"
>加入黑名单</span
>
</a-space>
</template>
</a-table>
......@@ -164,7 +169,7 @@
</div>
</template>
<script>
<script>
import {
getDeviceList,
getBlackAppList,
......@@ -172,6 +177,7 @@ import {
} from "@/services/market";
import local from "@/utils/local";
import DevToBlack from "../modal/DevToBlack.vue";
import { pageSizeOptions } from "@/config/pageConfig.js";
const devType = [
"排队机",
"窗口屏",
......@@ -279,7 +285,7 @@ export default {
rightTotal: 0,
leftSize: 10,
rightSize: 10,
pageSizeOptions: ["10", "30", "50", "100"],
pageSizeOptions,
siteId: local.getLocal("siteId"), // 站点id
deviceList: [], // 站点设备列表
blackApp: [], // 应用黑名单列表
......@@ -324,7 +330,6 @@ export default {
let { data, total } = res.data.data;
this.deviceList = data;
this.rightTotal = total;
console.log(data);
}
this.rightLoading = false;
},
......@@ -438,7 +443,7 @@ export default {
};
</script>
<style lang="less" scoped>
<style lang="less" scoped>
.black-app {
width: 100%;
height: 100%;
......@@ -459,6 +464,7 @@ export default {
.header {
height: 100px;
.titel {
font-size: 18px;
margin-bottom: 15px;
}
}
......@@ -475,9 +481,4 @@ export default {
justify-content: space-between;
}
}
.add-btn {
background-color: #04cb8f;
color: #fff;
}
</style>
<template>
<div class="data-update">
<!-- 头部 -->
<div class="header flex aic jcb mb20">
<div class="header flex aic jcb mb20 pdr6">
<a-button type="primary" @click="handleAdd">新增</a-button>
<div class="search-box">
<a-input-group compact>
......@@ -84,8 +84,8 @@
<!-- 操作 -->
<template slot="action" slot-scope="text">
<a-space size="middle">
<a class="edit" @click="handleEdit(text)">编辑</a>
<a class="delete" @click="handleDel(text.id)">删除</a>
<span class="primary pointer" @click="handleEdit(text)">编辑</span>
<span class="delete pointer" @click="handleDel(text.id)">删除</span>
</a-space>
</template>
</a-table>
......@@ -107,6 +107,7 @@
<script>
import AddData from "../modal/AddData.vue";
import { pageSizeOptions } from "@/config/pageConfig.js";
import {
getDatasetList,
deleteDataset,
......@@ -137,7 +138,7 @@ export default {
current: 1,
size: 10,
total: 0,
pageSizeOptions: ["10", "30", "50", "100"],
pageSizeOptions,
searchVal: "",
tableData: [],
AddVisible: false,
......
<template>
<div class="field-config">
<!-- 头部 -->
<div class="header flex aic jcb mb20">
<div class="header flex aic jcb mb20 pdr6">
<a-button type="primary" @click="handleAdd">新增字段</a-button>
<a-input-search
style="width: 300px"
......@@ -43,8 +43,8 @@
<!-- 操作 -->
<template slot="action" slot-scope="text">
<a-space size="middle">
<a class="edit" @click="handleEdit(text)">编辑</a>
<a class="delete" @click="handleDel(text.id)">删除</a>
<span class="primary pointer" @click="handleEdit(text)">编辑</span>
<span class="delete pointer" @click="handleDel(text.id)">删除</span>
</a-space>
</template>
</a-table>
......@@ -62,7 +62,7 @@
<script>
import AddField from "../modal/AddField.vue";
import { getTempleteList, deleteTemplete } from "@/services/market";
import { pageSizeOptions } from "@/config/pageConfig.js";
export default {
// props: {
// // 应用信息
......@@ -126,7 +126,7 @@ export default {
current: 1,
size: 10,
total: 0,
pageSizeOptions: ["10", "30", "50", "100"],
pageSizeOptions,
searchVal: "",
tableData: [],
fieldVisible: false,
......
<template>
<div class="terminal">
<div class="header flex aic jcb mb20">
<div class="header flex aic jcb mb20 pdr6">
<a-space>
<a-button type="primary" @click="handleAdd"> 新增应用 </a-button>
<a-button type="primary" @click="handleClone"> 克隆 </a-button>
......@@ -55,7 +55,7 @@
</template>
<!-- 主题类型 -->
<template slot="appThemeName" slot-scope="text">
{{ filterItems(text.appThemeName, dict.appThemeName) }}
{{ filterItems(text.appThemeName) }}
</template>
<!-- 简介 -->
<template slot="summary" slot-scope="text">
......@@ -83,13 +83,15 @@
<!-- 操作 -->
<template slot="action" slot-scope="text">
<a-space size="middle">
<a class="edit" @click="handleEdit(text)">编辑</a>
<a class="primary" @click="handleCheck(text.id)">查看</a>
<a
class="delete"
<span class="primary pointer" @click="handleEdit(text)">编辑</span>
<span class="primary pointer" @click="handleCheck(text.id)"
>查看</span
>
<span
class="delete pointer"
:class="{ unDelete: text.distribute }"
@click="handleDel(text.distribute, text.id)"
>删除</a
>删除</span
>
</a-space>
</template>
......@@ -98,7 +100,7 @@
<!-- 新增应用 -->
<AddApp
ref="AddApp"
:dict="dict"
:categoryList="categoryList"
@success="getAppList"
:AddVisible.sync="AddVisible"
:title="title"
......@@ -115,11 +117,16 @@
<script>
import YSwitch from "../../../../components/yswitch/YSwitch.vue";
import { pageSizeOptions } from "@/config/pageConfig.js";
import AddApp from "../modal/AddApp.vue";
import CheckSite from "../modal/CheckSite.vue";
import { getAppList, deleteApp, saveApp } from "@/services/market";
import {
getAppList,
deleteApp,
saveApp,
getCategoryList,
} from "@/services/market";
import { mapMutations } from "vuex";
import { filterItems } from "@/utils";
import local from "@/utils/local";
const columns = [
{
......@@ -178,7 +185,6 @@ export default {
},
data() {
return {
filterItems,
api: process.env.VUE_APP_API_BASE_URL + "/",
api2: process.env.VUE_APP_API_IMG_URL,
columns,
......@@ -189,12 +195,13 @@ export default {
current: 1,
size: 10,
total: 0,
pageSizeOptions: ["10", "30", "50", "100"],
pageSizeOptions,
selectedRowKeys: [], // 表格勾选数据
AddVisible: false,
title: "新增应用",
siteVisible: false,
dict: {}, // 字典
categoryList: [], // 应用分类列表
};
},
// 进入路由前
......@@ -216,10 +223,24 @@ export default {
// }
// },
created() {
this.getCategoryList();
this.getAppList();
},
methods: {
...mapMutations("site", ["SET_appDict"]),
// 获取分类列表
async getCategoryList() {
this.loading = true;
let res = await getCategoryList({
page: 1,
size: -1,
siteId: this.siteId,
});
let { data } = res.data.data;
if (res.data.code === 1) {
this.categoryList = data;
}
},
// 获取应用列表
async getAppList() {
this.loading = true;
......@@ -351,6 +372,12 @@ export default {
this.getAppList();
}
},
// 过滤分类展示
filterItems(appThemeName) {
return (
this.categoryList.find((v) => v.id == appThemeName).categoryName || "--"
);
},
},
};
</script>
......
<template>
<div class="terminal">
<div class="header flex aic jcb mb20">
<div class="header flex aic jcb mb20 pdr6">
<a-space>
<a-button type="primary" @click="handleAdd"> 新增应用 </a-button>
<a-button type="primary" @click="handleClone"> 克隆 </a-button>
......@@ -55,7 +55,7 @@
</template>
<!-- 主题类型 -->
<template slot="appThemeName" slot-scope="text">
{{ filterItems(text.appThemeName, dict.appThemeName) }}
{{ filterItems(text.appThemeName) }}
</template>
<!-- 简介 -->
<template slot="summary" slot-scope="text">
......@@ -83,13 +83,15 @@
<!-- 操作 -->
<template slot="action" slot-scope="text">
<a-space size="middle">
<a class="edit" @click="handleEdit(text)">编辑</a>
<a class="primary" @click="handleCheck(text.id)">查看</a>
<a
class="delete"
<span class="primary pointer" @click="handleEdit(text)">编辑</span>
<span class="primary pointer" @click="handleCheck(text.id)"
>查看</span
>
<span
class="delete pointer"
:class="{ unDelete: text.distribute }"
@click="handleDel(text.distribute, text.id)"
>删除</a
>删除</span
>
</a-space>
</template>
......@@ -98,7 +100,7 @@
<!-- 新增应用 -->
<AddApp
ref="AddApp"
:dict="dict"
:categoryList="categoryList"
@success="getAppList"
:AddVisible.sync="AddVisible"
:title="title"
......@@ -117,10 +119,15 @@
import YSwitch from "../../../../components/yswitch/YSwitch.vue";
import AddApp from "../modal/AddApp.vue";
import CheckSite from "../modal/CheckSite.vue";
import { getAppList, deleteApp, saveApp } from "@/services/market";
import {
getAppList,
deleteApp,
saveApp,
getCategoryList,
} from "@/services/market";
import local from "@/utils/local";
import { mapMutations } from "vuex";
import { filterItems } from "@/utils";
import { pageSizeOptions } from "@/config/pageConfig.js";
const columns = [
{
title: "序号",
......@@ -178,7 +185,6 @@ export default {
},
data() {
return {
filterItems,
api: process.env.VUE_APP_API_BASE_URL + "/",
api2: process.env.VUE_APP_API_IMG_URL,
columns,
......@@ -189,20 +195,36 @@ export default {
current: 1,
size: 10,
total: 0,
pageSizeOptions: ["10", "30", "50", "100"],
pageSizeOptions,
selectedRowKeys: [], // 表格勾选数据
AddVisible: false,
title: "新增应用",
siteVisible: false,
dict: {}, // 字典
categoryList: [], // 应用分类列表
};
},
created() {
this.getCategoryList();
this.getAppList();
},
methods: {
...mapMutations("site", ["SET_appDict"]),
// 获取分类列表
async getCategoryList() {
this.loading = true;
let res = await getCategoryList({
page: 1,
size: -1,
siteId: this.siteId,
});
let { data } = res.data.data;
if (res.data.code === 1) {
this.categoryList = data;
}
},
// 获取应用列表
async getAppList() {
this.loading = true;
......@@ -335,6 +357,12 @@ export default {
this.getAppList();
}
},
// 过滤分类展示
filterItems(appThemeName) {
return (
this.categoryList.find((v) => v.id == appThemeName).categoryName || "--"
);
},
},
};
</script>
......
......@@ -24,11 +24,11 @@
<a-form-model-item label="应用主题" prop="appThemeName">
<a-select v-model="form.appThemeName" placeholder="请选择应用主题">
<a-select-option
v-for="(v, key) in dict.appThemeName"
:value="key"
:key="key"
v-for="v in categoryList"
:value="'' + v.id"
:key="v.id"
>
{{ v }}
{{ v.categoryName }}
</a-select-option>
</a-select>
</a-form-model-item>
......@@ -163,7 +163,7 @@
>
<a-space size="middle">
<a-button @click="onClose"> 取消 </a-button>
<a-button type="primary" @click="onSubmit"> 保存 </a-button>
<a-button type="primary" @click="onSubmit"> 确定 </a-button>
</a-space>
</div>
<!-- 预览 -->
......@@ -180,6 +180,7 @@ import YSwitch from "../../../../components/yswitch/YSwitch.vue";
import { saveApp } from "@/services/market";
import { mapGetters } from "vuex";
import { changeCodeNumber } from "@/utils/validate";
// import local from "@/utils/local";
import PrevieModal from "@/components/PrevieModal.vue";
export default {
components: {
......@@ -197,12 +198,10 @@ export default {
required: true,
default: false,
},
dict: {
type: Object,
categoryList: {
type: Array,
required: true,
default: () => {
return {};
},
default: () => [],
},
},
data() {
......
<template>
<div>
<a-modal
v-model="Visible"
:maskClosable="false"
:title="title"
@cancel="handleClose"
destroyOnClose
centered
>
<template slot="footer">
<a-button @click="handleReset">重置</a-button>
<a-button type="primary" @click="handleOk">确定</a-button>
</template>
<a-form-model
ref="form"
:model="form"
:rules="rules"
:label-col="{ span: 4 }"
:wrapper-col="{ span: 20 }"
>
<a-form-model-item label="主题名称" prop="categoryName">
<a-input v-model="form.categoryName" placeholder="请输入主题名称" />
</a-form-model-item>
<a-form-model-item label="主题编码" prop="categoryCode">
<a-input v-model="form.categoryCode" placeholder="请输入主题编码" />
</a-form-model-item>
<a-form-model-item label="排序" prop="sort">
<a-input-number v-model="form.sort" :min="1" />
</a-form-model-item>
</a-form-model>
</a-modal>
</div>
</template>
<script>
import { saveCategory } from "@/services/market";
import local from "@/utils/local";
export default {
props: {
addVisile: {
type: Boolean,
require: true,
default: false,
},
title: {
require: true,
default: "新增分类",
},
},
components: {},
data() {
return {
form: {
siteId: local.getLocal("siteId"), // 站点id
siteName: local.getLocal("siteName"), // 站点名称
categoryName: "", // 分类名称
categoryCode: "", // 分类编码
sort: 99, // 排序
},
rules: {
categoryName: [
{ required: true, message: "请输入分类名称", trigger: "blur" },
],
categoryCode: [
{ required: true, message: "请输入分类编码", trigger: "blur" },
],
},
};
},
computed: {
Visible: {
get() {
return this.addVisile;
},
set(val) {
this.$emit("update:addVisile", val);
},
},
},
created() {},
methods: {
// 新增
onAdd() {
Object.assign(this.form, this.$options.data().form);
this.form.id && this.$delete(this.form, "id");
},
// 编辑
onEdit(data) {
this.form = { ...data };
},
// 关闭弹窗
handleClose() {
this.$refs.form.resetFields();
this.Visible = false;
},
// 保存
handleOk() {
this.$refs.form.validate(async (valid) => {
if (valid) {
let res = await saveCategory(this.form);
let { code, msg } = res.data;
if (code == 1) {
this.$message.success(msg);
this.$emit("addSuccess");
this.handleClose();
}
}
});
},
// 重置
handleReset() {
this.$refs.form.resetFields();
},
},
};
</script>
<style lang="less" scoped></style>
......@@ -2,11 +2,15 @@
<div class="basicset-tab1">
<div class="left">
<div class="header">
<h3 class="titel">站点业务列表</h3>
<div class="control">
<div class="titel">站点业务列表</div>
<div class="control pdr6">
<div>
<a-button type="danger" @click="handleDelAll"> 批量移除 </a-button>
<a-button class="add-btn" @click="showModal"> 新增业务 </a-button>
<a-space size="middle">
<a-button type="primary" @click="showModal"> 新增业务 </a-button>
<a-button type="danger" @click="handleDelAll">
批量移除
</a-button>
</a-space>
</div>
<div class="business-control">
<a-input-search
......@@ -60,15 +64,20 @@
{{ text.businessName }}
</template>
<template slot="action" slot-scope="text">
<a href="javascript:;" class="edit" @click="handleEdit(text)"
>编辑</a
<a-space size="middle">
<span
href="javascript:;"
class="primary pointer"
@click="handleEdit(text)"
>编辑</span
>
<a
<span
href="javascript:;"
class="delete"
class="delete pointer"
@click="handleDel(text.id, text)"
>删除</a
>删除</span
>
</a-space>
</template>
</a-table>
</div>
......@@ -76,8 +85,8 @@
<!-- 右 -->
<div class="right">
<div class="header">
<h3 class="titel">一体化业务列表</h3>
<div class="control">
<div class="titel">一体化业务列表</div>
<div class="control pdr6">
<div>
<a-button type="primary" @click="handleAddAll"> 批量加入 </a-button>
</div>
......@@ -132,13 +141,17 @@
{{ text.name }}
</template>
<template slot="action" slot-scope="text">
<a class="jion" @click="handleIn(text.id)">加入</a>
<a
<a-space size="middle">
<span class="primary pointer" @click="handleIn(text.id)"
>加入</span
>
<span
href="javascript:;"
class="delete"
class="delete pointer"
@click="handleDelRight(+text.id)"
>删除</a
>删除</span
>
</a-space>
</template>
</a-table>
</div>
......@@ -156,6 +169,7 @@
<script>
import addprofession from "../group/addprofession.vue";
import local from "@/utils/local";
import { pageSizeOptions } from "@/config/pageConfig.js";
import {
getBusinessList,
delSiteBusiness,
......@@ -234,7 +248,7 @@ export default {
rightTotal: 0,
leftSize: 10,
rightSize: 10,
pageSizeOptions: ["10", "30", "50", "100"],
pageSizeOptions,
serchData: "",
siteId: local.getLocal("siteId"), // 站点id
businessIds: "", // 业务id
......@@ -542,24 +556,12 @@ export default {
.header {
height: 100px;
.titel {
font-size: 18px;
margin-bottom: 15px;
}
.ant-btn {
margin-right: 19px;
}
}
}
.edit {
color: #03d76f;
margin-right: 10px;
}
.delete {
color: #f94545;
}
.jion {
color: #67b6ff;
margin-right: 10px;
}
// .ant-pagination {
// margin-top: 20px;
// }
......@@ -572,10 +574,7 @@ export default {
// .table-content {
// height: 500px;
// }
.add-btn {
background-color: #04cb8f;
color: #fff;
}
// .table-name {
// width: 92%;
// text-align: center;
......
......@@ -2,8 +2,8 @@
<div class="basicset-tab2">
<div class="left">
<div class="header">
<h3 class="titel">站点事项列表</h3>
<div class="header-bottom">
<div class="titel">站点事项列表</div>
<div class="header-bottom pdr6">
<div class="left-btn">
<a-button type="danger" @click="handleDelAll"> 批量移除 </a-button>
</div>
......@@ -11,14 +11,34 @@
<a-space>
<a-select
style="width: 120px"
allowClear
v-model="leftSource"
class="select-department"
placeholder="事项来源"
>
<a-select-option value=""> 全部来源 </a-select-option>
<a-select-option :value="0"> 一体化添加 </a-select-option>
<a-select-option :value="1"> 手动添加 </a-select-option>
</a-select>
<a-select
showSearch
style="min-width: 120px"
v-model="leftDept"
class="select-department"
placeholder="部门搜索"
optionFilterProp="label"
>
<a-select-option value="" label="全部部门">
全部部门
</a-select-option>
<a-select-option
v-for="v in deptList"
:key="v.id"
:value="v.deptNumber"
:label="v.name"
>
{{ v.name }}
</a-select-option>
</a-select>
<a-input-search
v-model="searchLeftVal"
placeholder="请输入事项名称搜索"
......@@ -87,18 +107,18 @@
<!-- 操作 -->
<template slot="action" slot-scope="text">
<a-space>
<a
<span
href="javascript:;"
v-if="text.source == 1"
class="edit"
class="primary pointer"
@click="handleSiteEdit(text)"
>编辑</a
>编辑</span
>
<a
<span
href="javascript:;"
class="delete"
class="delete pointer"
@click="handleDel(text.id, text)"
>移除</a
>移除</span
>
</a-space>
</template>
......@@ -108,24 +128,48 @@
<!-- 右 -->
<div class="right">
<div class="header">
<h3 class="titel">基础事项列表</h3>
<div class="control">
<div class="titel">基础事项列表</div>
<div class="control pdr6">
<div>
<a-button type="primary" @click="handleAddAll"> 批量加入 </a-button>
<a-button class="add-btn" @click="addMatter"> 新增事项 </a-button>
<a-space size="middle">
<a-button type="primary" @click="handleAddAll">
批量加入
</a-button>
<a-button type="primary" @click="addMatter"> 新增事项 </a-button>
</a-space>
</div>
<div>
<a-space>
<a-select
style="width: 120px"
allowClear
v-model="rightSource"
class="select-department"
placeholder="事项来源"
>
<a-select-option value=""> 全部来源 </a-select-option>
<a-select-option :value="0"> 一体化事项 </a-select-option>
<a-select-option :value="1"> 自建事项 </a-select-option>
</a-select>
<a-select
showSearch
style="min-width: 120px"
v-model="rightDept"
class="select-department"
placeholder="部门搜索"
optionFilterProp="label"
>
<a-select-option value="" label="全部部门">
全部部门
</a-select-option>
<a-select-option
v-for="v in deptList"
:key="v.id"
:value="v.deptNumber"
:label="v.name"
>
{{ v.name }}
</a-select-option>
</a-select>
<a-input-search
v-model="searchRightVal"
placeholder="请输入事项名称搜索"
......@@ -185,22 +229,24 @@
</template>
<!-- 操作 -->
<template slot="action" slot-scope="text">
<a href="javascript:;" class="jion" @click="handleIn(text.id)"
<a-space size="middle">
<a href="javascript:;" class="primary" @click="handleIn(text.id)"
>加入</a
>
<a
<span
href="javascript:;"
v-if="text.source == 1"
class="edit"
class="primary pointer"
@click="handleEdit(text.id)"
>编辑</a
>编辑</span
>
<a
<span
href="javascript:;"
class="delete"
class="delete pointer"
@click="handleDelRight(text.id)"
>删除</a
>删除</span
>
</a-space>
</template>
</a-table>
</div>
......@@ -223,8 +269,9 @@ import {
delMatter,
} from "@/services/matter";
import { getBusinessMatterList, delBusinessMatter } from "@/services/business";
import { getDeptList } from "@/services/dept";
import EditSiteMatter from "../group/EditSiteMatter.vue";
// import { getDeptList } from "@/services/dept";
import { pageSizeOptions } from "@/config/pageConfig.js";
import local from "@/utils/local";
import { mapMutations } from "vuex";
const leftColumns = [
......@@ -286,7 +333,7 @@ const rightColumns = [
},
{
title: "操作",
width: "130px",
width: "140px",
scopedSlots: {
customRender: "action",
},
......@@ -303,8 +350,10 @@ export default {
rightColumns,
leftLoading: false,
rightLoading: false,
leftSource: undefined, // 左边来源
rightSource: undefined, // 右边来源
leftSource: "", // 左边来源
leftDept: "", // 左边部门搜索
rightDept: "", // 右边部门搜索
rightSource: "", // 右边来源
selectedRowKeys: [],
matterSiteData: [], // 站点事项
matterDataList: [], //事项列表数据
......@@ -317,7 +366,7 @@ export default {
rightTotal: 0,
leftSize: 10,
rightSize: 10,
pageSizeOptions: ["10", "30", "50", "100"],
pageSizeOptions,
siteId: local.getLocal("siteId"), // 站点id
matterIds: "", // 事项id
deptList: [], // 站点部门
......@@ -329,12 +378,28 @@ export default {
};
},
created() {
this.getDeptListData();
this.getMatterSiteData();
this.getMatterListData();
},
methods: {
...mapMutations("site", ["SET_matterDict"]),
// 获取部门列表
async getDeptListData(obj = {}) {
this.deptLoading = true;
let res = await getDeptList({
siteId: this.siteId,
page: 1,
size: -1,
...obj,
});
this.deptLoading = false;
let { code, data } = res.data;
if (code === 1) {
this.deptList = data.data;
}
},
// 获取站点事项
async getMatterSiteData(search = {}) {
this.leftLoading = true;
......@@ -344,6 +409,7 @@ export default {
siteId: this.siteId,
source: this.leftSource,
matterName: `%${this.searchLeftVal}%`,
deptCode: this.leftDept,
...search,
});
let { pageInfo, data } = res.data.data;
......@@ -364,6 +430,7 @@ export default {
size: this.rightSize,
matterName: this.searchRightVal,
source: this.rightSource,
deptCode: this.rightDept,
...search,
});
if (res.data.code === 1) {
......@@ -602,11 +669,9 @@ export default {
.header {
height: 100px;
.titel {
font-size: 18px;
margin-bottom: 15px;
}
.ant-btn {
margin-right: 19px;
}
}
.matter-name {
margin-bottom: 10px;
......@@ -625,17 +690,6 @@ export default {
}
}
}
.edit {
color: #03d76f;
margin-right: 10px;
}
.delete {
color: #f94545;
}
.jion {
color: #67b6ff;
margin-right: 10px;
}
.control {
display: flex;
......@@ -647,10 +701,10 @@ export default {
margin-left: 10px;
}
}
.add-btn {
background-color: #04cb8f;
color: #fff;
}
// .add-btn {
// background-color: #04cb8f;
// color: #fff;
// }
// .table-content {
// height: 500px;
// }
......
......@@ -2,8 +2,8 @@
<div class="basicset-tab3">
<div class="left">
<div class="header">
<h3 class="titel">站点业务列表</h3>
<div class="header-bottom">
<div class="titel">站点业务列表</div>
<div class="header-bottom pdr6">
<div class="left-btn">
<a-button type="danger" @click="handleDelAll"> 批量解除 </a-button>
</div>
......@@ -49,11 +49,11 @@
<template slot="action" slot-scope="text">
<a-tooltip>
<template slot="title"> 解除查看 </template>
<a
<span
href="javascript:;"
class="delete"
class="delete pointer"
@click="handleisUnbound(text)"
>解除</a
>解除</span
>
</a-tooltip>
</template>
......@@ -63,12 +63,33 @@
<!-- 右 -->
<div class="right">
<div class="header">
<h3 class="titel">站点事项列表</h3>
<div class="control">
<div class="titel">站点事项列表</div>
<div class="control pdr6">
<div>
<a-button type="primary" @click="handleAddAll"> 批量关联 </a-button>
</div>
<div>
<a-space>
<a-select
showSearch
style="min-width: 120px"
v-model="deptSearch"
class="select-department"
placeholder="部门搜索"
optionFilterProp="label"
>
<a-select-option value="" label="全部部门">
全部部门
</a-select-option>
<a-select-option
v-for="v in deptList"
:key="v.id"
:value="v.deptNumber"
:label="v.name"
>
{{ v.name }}
</a-select-option>
</a-select>
<a-input-search
v-model="rightSearchVal"
placeholder="请输入事项名称搜索"
......@@ -76,6 +97,7 @@
@search="onSearchRight"
allowClear
/>
</a-space>
</div>
</div>
</div>
......@@ -127,7 +149,12 @@
</template>
<!-- 操作 -->
<template slot="action" slot-scope="text">
<a href="javascript:;" class="jion" @click="handleIn(text)">关联</a>
<span
href="javascript:;"
class="primary pointer"
@click="handleIn(text)"
>关联</span
>
</template>
</a-table>
</div>
......@@ -154,7 +181,7 @@
<a-select
style="width: 85%"
show-search
:filter-option="filterOption"
optionFilterProp="label"
allowClear
placeholder="请选择业务"
:showArrow="false"
......@@ -165,6 +192,7 @@
v-for="v in SiteBusinessData"
:key="v.id"
:value="v.businessId"
:label="v.businessName"
>
{{ v.businessName }}
</a-select-option>
......@@ -251,6 +279,8 @@
<script>
import { getSiteMatterList } from "@/services/matter";
import { pageSizeOptions } from "@/config/pageConfig.js";
import { getDeptList } from "@/services/dept";
import {
getSiteBusinessList,
// addBusinessMatter,
......@@ -260,7 +290,6 @@ import {
addBatchSave,
// getMatterlistData,
} from "@/services/business";
// import { getDeptList } from "@/services/dept";
import local from "@/utils/local";
const leftColumns = [
{
......@@ -323,6 +352,7 @@ export default {
Leftloading: false,
rightloading: false,
leftSearchVal: "", // 左边搜索
deptSearch: "", // 右边
rightSearchVal: "", // 右边搜索
SiteBusinessData: [], // 站点业务
SiteMatterData: [], //站点事项
......@@ -338,10 +368,10 @@ export default {
rightTotal: 0,
leftSize: 10,
rightSize: 10,
pageSizeOptions: ["10", "30", "50", "100"],
pageSizeOptions,
siteId: local.getLocal("siteId"), // 站点id
matterIds: "", // 业务id
// deptList: [], // 站点部门
deptList: [], // 站点部门
rightSearch: "", // 事项搜索
businessMatterData: [], // 业务关联事项列表数据
unboundBusinessData: {}, // 解除-业务数据
......@@ -363,6 +393,7 @@ export default {
};
},
created() {
this.getDeptListData();
this.getBusinessMatterData();
this.getMatterlistData();
this.getSiteBusinessData();
......@@ -370,6 +401,21 @@ export default {
},
methods: {
// 获取部门列表
async getDeptListData(obj = {}) {
this.deptLoading = true;
let res = await getDeptList({
siteId: this.siteId,
page: 1,
size: -1,
...obj,
});
this.deptLoading = false;
let { code, data } = res.data;
if (code === 1) {
this.deptList = data.data;
}
},
// 获取站点业务关联列表
async getBusinessMatterData(search = {}) {
this.Leftloading = true;
......@@ -432,6 +478,7 @@ export default {
size: this.rightSize,
matterName: `%${this.rightSearchVal}%`,
siteId: this.siteId,
deptCode: this.leftDept,
...search,
});
let { pageInfo, data } = res.data.data;
......@@ -653,8 +700,8 @@ export default {
},
// 关闭关联对话框
handleclose() {
this.selectedRowKeys = [];
this.allCorrelationData = [];
// this.selectedRowKeys = [];
// this.allCorrelationData = [];
this.$refs.formData.resetFields();
this.isCorrelation = false;
},
......@@ -682,11 +729,9 @@ export default {
.header {
height: 100px;
.titel {
font-size: 18px;
margin-bottom: 15px;
}
.ant-btn {
margin-right: 19px;
}
}
}
.matter-name {
......@@ -705,17 +750,7 @@ export default {
}
}
}
.edit {
color: #03d76f;
margin-right: 10px;
}
.delete {
color: #f94545;
}
.jion {
color: #67b6ff;
margin-right: 10px;
}
.ant-pagination {
margin-top: 20px;
}
......@@ -729,10 +764,7 @@ export default {
margin-left: 10px;
}
}
.add-btn {
background-color: #04cb8f;
color: #fff;
}
// .table-content {
// height: 500px;
// }
......
rrent" <template>
<template>
<div class="basicset-tab4">
<div class="left">
<div class="header">
<h3 class="titel">站点事项列表</h3>
<div class="header-bottom flex aic jcb">
<div class="titel">站点事项列表</div>
<div class="header-bottom flex aic jcb pdr6">
<div class="left-btn"></div>
<div>
<a-space>
......@@ -57,6 +57,7 @@ rrent" <template>
current: current,
total: total,
pageSize: size,
size: 'middle',
showSizeChanger: true,
showQuickJumper: true,
pageSizeOptions: pageSizeOptions,
......@@ -118,6 +119,7 @@ rrent" <template>
<script>
import { getSiteMatterList, addSitematter } from "@/services/matter";
import { pageSizeOptions } from "@/config/pageConfig.js";
import { getDeptList } from "@/services/dept";
import local from "@/utils/local";
const columns = [
......@@ -169,7 +171,7 @@ export default {
current: 1,
total: 0,
size: 10,
pageSizeOptions: ["10", "30", "50", "100"],
pageSizeOptions,
siteId: local.getLocal("siteId"), // 站点id
deptList: [], // 站点部门
searchVal: "", // 站点事项搜索
......@@ -283,6 +285,10 @@ export default {
padding: 0px 20px;
.header {
margin-bottom: 15px;
.titel {
font-size: 18px;
margin-bottom: 15px;
}
}
.workguide_btn {
cursor: pointer;
......
......@@ -7,7 +7,7 @@
:maskClosable="false"
>
<a-button slot="footer" @click="handleReset">重置</a-button>
<a-button slot="footer" type="primary" @click="handleOk">保存</a-button>
<a-button slot="footer" type="primary" @click="handleOk">确定</a-button>
<a-form-model
:model="form"
ref="formData"
......
......@@ -90,6 +90,7 @@
<script>
import { getStatementList, delStatement } from "@/services/basicsetFun";
import AddStatement from "../modal/AddStatement.vue";
import { pageSizeOptions } from "@/config/pageConfig.js";
const columns = [
{
title: "序号",
......@@ -140,7 +141,7 @@ export default {
total: 0,
size: 10,
current: 1,
pageSizeOptions: ["10", "30", "50", "100"],
pageSizeOptions,
selectedRowKeys: [],
tableData: [],
addStatementVisile: false,
......
<template>
<div class="deploy">
<a-card title="部署板块管理" :bordered="false">
<div class="control">
<a-tabs activeKey="model">
<a-tab-pane key="model" tab="部署板块管理">
<div class="control pdr6">
<div>
<a-button type="primary" style="margin-right: 10px" @click="handleAdd"
<a-button
type="primary"
style="margin-right: 10px"
@click="handleAdd"
>新增模块</a-button
>
<a-button type="danger" @click="handleDelAll">批量删除模块</a-button>
<a-button type="danger" @click="handleDelAll"
>批量删除模块</a-button
>
</div>
<div class="search-box">
<a-input-search
......@@ -28,8 +34,8 @@
}"
:loading="loading"
bordered
:scroll="{ y: 560 }"
:columns="columns"
:scroll="{ y: 580 }"
:pagination="{
showTotal: (total) => `共 ${total} 条`,
current: current,
......@@ -79,23 +85,30 @@
<!-- 操作 -->
<template slot="action" slot-scope="text">
<a-space>
<a
<span
href="javascript:;"
class="primary"
class="primary pointer"
@click="statementManage(text)"
>配置报表</a
>配置报表</span
>
<a href="javascript:;" class="edit" @click="handleEdit(text)"
>编辑</a
<span
href="javascript:;"
class="primary pointer"
@click="handleEdit(text)"
>编辑</span
>
<a href="javascript:;" class="delete" @click="handleDel(text.id)"
>删除</a
<span
href="javascript:;"
class="delete pointer"
@click="handleDel(text.id)"
>删除</span
>
</a-space>
</template>
</a-table>
</div>
</a-card>
</a-tab-pane>
</a-tabs>
<!-- 新增模块 -->
<a-modal
v-model="visible"
......@@ -233,6 +246,7 @@
import { modelList, addMode, delMode } from "@/services/basicsetFun";
import PrevieModal from "@/components/PrevieModal.vue";
import StatementManage from "./components/StatementManage.vue";
import { pageSizeOptions } from "@/config/pageConfig.js";
const columns = [
{
title: "序号",
......@@ -288,6 +302,7 @@ export default {
},
data() {
return {
pageSizeOptions,
api: process.env.VUE_APP_API_BASE_URL + "/",
api2: process.env.VUE_APP_API_IMG_URL,
accept: "image/jpeg,image/png,image/svg+xml", // 上传类型
......@@ -310,7 +325,6 @@ export default {
current: 1,
size: 10,
total: 0,
pageSizeOptions: ["10", "30", "50", "100"],
searchValue: "", // 搜索
fileList: [], // 上传列表
rules: {
......@@ -520,6 +534,7 @@ export default {
width: 100%;
height: 100%;
background-color: #fff;
.control {
display: flex;
justify-content: space-between;
......@@ -532,20 +547,20 @@ export default {
// .table-content {
// height: 620px;
// }
.edit {
color: #03d76f;
}
.delete {
color: #f94545;
}
}
.ant-tabs {
width: 100%;
background-color: #fff;
min-height: 100%;
}
/deep/.ant-tabs-content {
padding: 0px 15px 15px 15px;
}
.handle-upload {
margin-bottom: 30px !important;
align-items: flex-start !important;
}
/deep/.ant-card {
width: 100% !important;
}
.svg-box,
/deep/.ant-upload-list-item-thumbnail {
background-color: #54788c;
......
......@@ -10,7 +10,7 @@
</template>
<div class="header">
<span class="title">窗口事项列表</span>
<div class="control">
<div class="control pdr6">
<div class="btn">
<a-button
type="primary"
......@@ -71,12 +71,21 @@
<y-switch v-model="text.isShow" :disabled="!text.isEdit"></y-switch>
</template>
<template slot="action" slot-scope="text">
<a href="javascript:;" class="edit" @click="handleEdit(text)">{{
text.isEdit ? "保存" : "编辑"
}}</a>
<a href="javascript:;" @click="handleDel(+text.id)" class="delete"
>删除</a
<a-space size="middle">
<span
href="javascript:;"
class="pointer"
:class="text.isEdit ? 'edit' : 'primary'"
@click="handleEdit(text)"
>{{ text.isEdit ? "保存" : "编辑" }}</span
>
<span
href="javascript:;"
@click="handleDel(+text.id)"
class="delete pointer"
>删除</span
>
</a-space>
</template>
</a-table>
</div>
......@@ -133,9 +142,14 @@
:pagination="{
showTotal: (total) => `共 ${total} 条`,
current: page,
pageSize: matterSize,
total: matterTotal,
size: 'small',
onChange: changeMatter,
showSizeChanger: true,
showQuickJumper: true,
pageSizeOptions: pageSizeOptions,
onShowSizeChange: sizeChange,
}"
:columns="matterColumns"
:data-source="siteMatterData"
......@@ -163,6 +177,7 @@
<script>
import { getSiteMatterList } from "@/services/matter";
import { pageSizeOptions } from "@/config/pageConfig.js";
import {
saveWindowbatch,
getWindowmatterList,
......@@ -247,11 +262,12 @@ export default {
Current: 1,
size: 10,
total: 0,
pageSizeOptions: ["10", "30", "50", "100"],
pageSizeOptions,
tableData: [],
siteMatterData: [], // 站点事项列表
matterTotal: 0,
page: 1,
matterSize: 10,
matterLoading: false,
matterKeys: [],
matterRows: [],
......@@ -296,7 +312,7 @@ export default {
this.matterLoading = true;
let res = await getSiteMatterList({
page: this.page,
size: 10,
size: this.matterSize,
siteId: this.windowInfo.siteId,
matterName: `%${this.matterNameSearch}%`,
source: this.source,
......@@ -305,6 +321,7 @@ export default {
let { data, total } = res.data.data;
this.siteMatterData = data;
this.matterTotal = total;
console.log(data);
this.matterLoading = false;
},
// 站点事项翻页
......@@ -312,6 +329,13 @@ export default {
this.page = cur;
this.getSiteMatterData();
},
// 站点事项改变每页显示数量
sizeChange(current, size) {
console.log(current, size);
this.page = current;
this.matterSize = size;
this.getSiteMatterData();
},
// 站点事项搜索
onSearchMatter() {
this.page = 1;
......@@ -497,13 +521,6 @@ export default {
margin-top: 10px;
}
.edit {
color: #03d76f;
margin-right: 10px;
}
.delete {
color: #fa6d6e;
}
.ant-form-item {
display: flex;
align-items: center !important;
......
......@@ -75,11 +75,42 @@
<!-- 窗口管理 -->
<div class="ff window-box">
<div class="department_right_add">
<div>窗口管理</div>
<div class="flex aic jcb">
<a-button type="primary" @click="addModal" class="department_btnadd"
>新增窗口</a-button
<div class="department_manage">窗口管理</div>
<div class="flex aic jcb pdr6">
<a-space>
<a-button type="primary" @click="addModal">新增窗口</a-button>
<a-dropdown>
<a-menu slot="overlay">
<a-menu-item key="1">
<a-upload
name="file"
:multiple="false"
:action="api + 'base/window/importData'"
:showUploadList="false"
:headers="{
Authorization: token,
}"
@change="handleChange"
:data="{
siteId,
}"
accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-excel"
>
<div style="color: #1890ff">批量导入</div>
</a-upload>
</a-menu-item>
<a-menu-item key="2">
<a style="color: #1890ff" @click="handleDownload">
模板下载</a
>
</a-menu-item>
</a-menu>
<a-button style="margin-left: 8px">
更多操作 <a-icon type="down" />
</a-button>
</a-dropdown>
</a-space>
<a-input-search
placeholder="请输入窗口编号搜索"
v-model="windowSearch"
......@@ -96,6 +127,7 @@
<a-table
:scroll="{ y: 580 }"
:loading="loading"
bordered
:columns="columns"
:data-source="windowData"
:pagination="{
......@@ -141,11 +173,19 @@
</template>
<!-- 操作 -->
<div slot="action" slot-scope="text">
<div class="flex flexwrap">
<a class="yewu" type="primary" @click="workModal(text)">业务</a>
<a class="shixiang" @click="addWindowMatter(text)">事项</a>
<a class="edit" type="primary" @click="editModal(text)">编辑</a>
<a class="delete" @click="delWindow(text.id)">删除</a>
<div class="flex jcb flexwrap">
<span class="primary pointer" @click="workModal(text)"
>业务</span
>
<span class="primary pointer" @click="addWindowMatter(text)"
>事项</span
>
<span class="primary pointer" @click="editModal(text)"
>编辑</span
>
<span class="delete pointer" @click="delWindow(text.id)"
>删除</span
>
</div>
</div>
</a-table>
......@@ -178,18 +218,28 @@
<script>
import { Empty } from "ant-design-vue";
import { pageSizeOptions } from "@/config/pageConfig.js";
import adddepartment from "./components/adddepartment.vue";
import addwindow from "./components/addwindow.vue";
import addWindowBusiness from "./components/addWindowBusiness.vue";
import local from "@/utils/local";
import { mapGetters } from "vuex";
import {
getDeptList,
delDept,
getWindowList,
delWindow,
getWindowTemplate,
} from "@/services/dept";
const columns = [
export default {
components: {
adddepartment,
addwindow,
addWindowBusiness,
},
data() {
const columns = [
{
title: "序号",
width: "6%",
......@@ -204,13 +254,17 @@ const columns = [
},
{
title: "编号",
dataIndex: "fromnum",
width: "10%",
customRender: (text) => {
return text.fromnum || "--";
},
},
{
title: "所属部门",
width: "10%",
dataIndex: "deptName",
customRender: (text) => {
return text.deptName || "--";
},
},
{
title: "工作人员",
......@@ -253,16 +307,10 @@ const columns = [
customRender: "action",
},
},
];
export default {
components: {
adddepartment,
addwindow,
addWindowBusiness,
},
data() {
];
return {
spinning: false,
api: process.env.VUE_APP_API_BASE_URL + "/",
loading: false,
deptLoading: false,
simpleImage: Empty.PRESENTED_IMAGE_SIMPLE,
......@@ -285,7 +333,7 @@ export default {
page: 1,
size: 10,
total: 0,
pageSizeOptions: ["10", "30", "50", "100"],
pageSizeOptions,
// businessPage: 1, // 站点业务翻页
// businessTotal: 0, // 站点业务总数
rules: {
......@@ -334,6 +382,9 @@ export default {
this.$route.meta.isBack = false;
}
},
computed: {
...mapGetters("site", ["token"]),
},
created() {},
methods: {
// 去掉空children
......@@ -544,6 +595,35 @@ export default {
},
});
},
// 批量导入窗口模板下载
async handleDownload() {
let res = await getWindowTemplate({}, { responseType: "blob" });
const blob = new Blob([res.data], {
type: "application/octet-stream",
});
let fileName = "批量导入窗口模板";
const link = document.createElement("a");
link.href = URL.createObjectURL(blob);
link.setAttribute("download", `${fileName}.xlsx`); // 设置下载文件名称
document.body.appendChild(link);
link.click();
document.body.appendChild(link);
},
// 导入窗口
handleChange({ file }) {
this.spinning = true;
if (file.status === "done") {
let { code, msg } = file.response;
if (code == 1) {
this.$message.success(msg);
this.getWindowListData();
} else {
this.$message.error(msg);
}
this.spinning = false;
}
},
},
};
</script>
......@@ -565,7 +645,8 @@ export default {
margin-right: 30px;
}
.department_manage {
margin-bottom: 10px;
font-size: 18px;
margin-bottom: 15px;
}
.department_add {
background-color: #0595fd;
......@@ -641,20 +722,12 @@ export default {
margin-left: 10px;
}
.department_right_tab {
margin-top: 20px;
margin-top: 10px;
}
.department_right_table {
font-size: 5px;
background-color: #fff;
}
.edit {
color: #03d76f;
margin-right: 5px;
}
.delete {
color: red;
cursor: pointer;
}
.yewu {
color: #0595fd;
margin-right: 5px;
......
<template>
<div class="hall-manage">
<div class="control flex aic jcb mb20">
<div class="control flex aic jcb mb20 pdr6">
<a-space size="middle">
<a-button type="primary" @click="handleAdd">新增大厅</a-button>
<a-button type="danger" @click="handleDelAll">批量删除</a-button>
......@@ -53,11 +53,17 @@
<!-- 操作 -->
<template slot="action" slot-scope="text">
<a-space size="middle">
<a href="javascript:;" class="edit" @click="handleEdit(text)"
>编辑</a
<span
href="javascript:;"
class="primary pointer"
@click="handleEdit(text)"
>编辑</span
>
<a href="javascript:;" class="delete" @click="handleDel(text.id)"
>删除</a
<span
href="javascript:;"
class="delete pointer"
@click="handleDel(text.id)"
>删除</span
>
</a-space>
</template>
......@@ -75,6 +81,7 @@
<script>
import { getHallList, delHall } from "@/services/hall";
import { pageSizeOptions } from "@/config/pageConfig.js";
import loacl from "@/utils/local";
import AddHall from "./modal/AddHall.vue";
export default {
......@@ -141,7 +148,7 @@ export default {
size: 10,
total: 0,
siteId: loacl.getLocal("siteId"),
pageSizeOptions: ["10", "30", "50", "100"],
pageSizeOptions,
searchValue: "", // 搜索
dataList: [],
};
......
......@@ -2,8 +2,8 @@
<div class="hall-window">
<div class="left">
<div class="header">
<h3 class="titel">大厅窗口</h3>
<div class="control">
<div class="titel">大厅窗口</div>
<div class="control pdr6">
<a-button type="danger" @click="handleDelAll"> 批量移除 </a-button>
<div class="business-control">
<a-space>
......@@ -68,8 +68,11 @@
</span>
</template>
<template slot="action" slot-scope="text">
<a href="javascript:;" class="delete" @click="handleDel(text.id)"
>移除</a
<span
href="javascript:;"
class="delete pointer"
@click="handleDel(text.id)"
>移除</span
>
</template>
</a-table>
......@@ -78,8 +81,8 @@
<!-- 右 -->
<div class="right">
<div class="header">
<h3 class="titel">站点窗口</h3>
<div class="control">
<div class="titel">站点窗口</div>
<div class="control pdr6">
<div>
<a-button type="primary" @click="handleAddAll"> 批量加入 </a-button>
</div>
......@@ -148,7 +151,9 @@
<template slot="action" slot-scope="text">
<a-space size="middle">
<a class="jion" @click="handleIn([text])">加入大厅</a>
<span class="primary pointer" @click="handleIn([text])"
>加入大厅</span
>
</a-space>
</template>
</a-table>
......@@ -166,6 +171,7 @@
<script>
import { getHallList, getWindowHallList, delWindowHall } from "@/services/hall";
import { pageSizeOptions } from "@/config/pageConfig.js";
import WindowToHall from "./modal/WindowToHall.vue";
import local from "@/utils/local";
import { getDeptList, getSubHalllist } from "@/services/dept";
......@@ -248,7 +254,7 @@ export default {
rightTotal: 0,
leftSize: 10,
rightSize: 10,
pageSizeOptions: ["10", "30", "50", "100"],
pageSizeOptions,
siteId: local.getLocal("siteId"), // 站点id
hallWindowData: [], // 大厅窗口数据
siteWindowData: [], // 站点窗口数据
......@@ -455,6 +461,7 @@ export default {
.header {
height: 100px;
.titel {
font-size: 18px;
margin-bottom: 15px;
}
}
......
<template>
<div class="festival festival">
<div class="skins_bnt btn-box">
<div class="skins_bnt btn-box pdr6">
<!-- 新增按钮 -->
<a-button type="primary" @click="showModal" class="skins_btn_1"
>新增节日</a-button
>
<div>
<a-input-search
style="width: 300px"
allowClear
placeholder="请输入年份查询"
enter-button="搜索"
<a-space>
<a-select
showSearch
optionFilterProp="label"
v-model="year"
@search="onSearch"
/>
style="width: 180px"
placeholder="请选择年份查询"
>
<a-select-option value="" label="全部年份">
全部年份
</a-select-option>
<a-select-option
:label="v"
v-for="v in yearData"
:key="v"
:value="v"
>
{{ v }}
</a-select-option>
</a-select>
<a-button type="primary" @click="onSearch"> 搜索 </a-button>
</a-space>
</div>
</div>
<div class="table-content">
......@@ -63,8 +77,8 @@
</template>
<!-- 操作 -->
<template slot="action" slot-scope="text">
<a-space>
<a @click="handleEdit(text)" class="edit">编辑</a>
<a-space size="middle">
<a @click="handleEdit(text)" class="primary">编辑</a>
<a class="delet" @click="handleDel(text.id)">删除</a>
</a-space>
</template>
......@@ -80,6 +94,7 @@
<script>
import { getHolidayList, DelHoliday } from "@/services/festival";
import { pageSizeOptions } from "@/config/pageConfig.js";
import addfestivals from "./components/addfestivals.vue";
import local from "@/utils/local";
const columns = [
......@@ -147,13 +162,15 @@ export default {
page: 1,
size: 10,
total: 0,
pageSizeOptions: ["10", "30", "50", "100"],
pageSizeOptions,
year: "",
siteId: local.getLocal("siteId"),
yearData: [], // 年份搜索数据
};
},
created() {
this.getHolidayData();
this.getYearData();
},
methods: {
// 获取节假日列表
......@@ -229,6 +246,13 @@ export default {
},
});
},
// 获取年份选择数据
getYearData() {
let curYear = new Date().getFullYear();
for (let i = curYear; i >= 1990; i--) {
this.yearData.push(i);
}
},
},
};
</script>
......
......@@ -6,6 +6,7 @@
<script>
import local from "@/utils/local";
import { mapMutations } from "vuex";
export default {
data() {
return {};
......@@ -14,6 +15,12 @@ export default {
this.getToken();
},
methods: {
...mapMutations("site", [
"SET_userInfo",
"SET_token",
"SET_SITE_ID",
"SET_siteName",
]),
// 获取token
getToken() {
let token = this.$route.query.token;
......@@ -22,8 +29,12 @@ export default {
let siteName = this.$route.query.siteName;
if (token && userInfo) {
userInfo = JSON.parse(userInfo);
local.setLocal("token", token);
local.setLocal("baseUserInfo", userInfo);
this.SET_userInfo(userInfo);
this.SET_token(token);
this.SET_SITE_ID(siteId);
this.SET_siteName(siteName);
// local.setLocal("token", token);
// local.setLocal("baseUserInfo", userInfo);
local.setLocal("siteId", siteId);
local.setLocal("siteName", siteName);
this.$router.push("/website");
......@@ -38,5 +49,4 @@ export default {
};
</script>
<style lang="less" scoped>
</style>
\ No newline at end of file
<style lang="less" scoped></style>
......@@ -786,20 +786,7 @@ export default {
height: 100px;
object-fit: cover;
}
.color_title {
margin-left: 15px;
position: relative;
margin-bottom: 15px;
&::before {
content: "";
width: 4px;
height: 20px;
position: absolute;
top: 1px;
left: -16px;
background-color: rgba(5, 149, 253, 1);
}
}
.building,
.level {
position: relative;
......@@ -829,9 +816,14 @@ export default {
}
/deep/.model-id {
display: flex !important;
align-items: flex-start;
.ant-form-item-label {
line-height: 22px;
}
.ant-checkbox-group {
display: grid;
grid-template-columns: 160px 160px 160px 160px 160px 160px;
}
.ant-checkbox-wrapper {
margin-left: 0px;
margin-right: 6px;
......
......@@ -18,6 +18,7 @@
<div class="site_box">
<div class="site_message">站点信息</div>
<div class="btn-box">
<a-space size="middle">
<a-button
v-permission="[1]"
type="primary"
......@@ -30,6 +31,7 @@
<a-button type="danger" @click="deleteSite(item.id, index)"
>删除</a-button
>
</a-space>
</div>
</div>
......@@ -468,17 +470,17 @@ export default {
.site_message {
font-weight: 600;
}
.ant-btn-primary {
background-color: rgba(4, 202, 143, 1);
border-color: rgba(4, 202, 143, 1);
padding-left: 20px;
padding-right: 20px;
margin-right: 30px;
}
.ant-btn-danger {
padding-left: 20px;
padding-right: 20px;
}
// .ant-btn-primary {
// background-color: rgba(4, 202, 143, 1);
// border-color: rgba(4, 202, 143, 1);
// padding-left: 20px;
// padding-right: 20px;
// margin-right: 30px;
// }
// .ant-btn-danger {
// padding-left: 20px;
// padding-right: 20px;
// }
.btn-box {
margin-right: 20px;
}
......@@ -531,11 +533,13 @@ export default {
display: flex;
flex-wrap: wrap;
.item {
width: 120px;
background-color: rgba(30, 159, 255, 0.2);
margin-right: 10px;
margin-bottom: 10px;
padding: 6px 16px;
padding: 6px;
border-radius: 5px;
text-align: center;
}
}
}
......@@ -547,20 +551,6 @@ export default {
}
}
}
.color_title {
margin-left: 15px;
position: relative;
margin-bottom: 15px;
&::before {
content: "";
width: 4px;
height: 20px;
position: absolute;
top: 1px;
left: -16px;
background-color: rgba(5, 149, 253, 1);
}
}
.model_base {
/deep/.ant-col-3 {
......
......@@ -11,7 +11,7 @@
</a-tooltip>
<span>皮肤模板</span>
</div>
<div class="header">
<div class="header pdr6">
<a-space>
<a-button type="primary" @click="handleAddTemplate"
>新增皮肤模板</a-button
......@@ -61,8 +61,11 @@
</template>
<!-- 操作 -->
<template slot="action" slot-scope="text">
<a-space>
<a href="javascript:;" class="edit" @click="handleEdit(text)"
<a-space size="middle">
<a
href="javascript:;"
class="primary"
@click="handleEdit(text)"
>编辑</a
>
<a
......@@ -75,26 +78,12 @@
</template>
</a-table>
</div>
<!-- 翻页 -->
<!-- <div class="pagination" v-if="leftTotal">
<a-pagination
v-model="leftCurrent"
:show-total="(total) => `共 ${total} 条`"
:total="leftTotal"
@change="changeLeft"
show-less-items
show-size-changer
show-quick-jumper
:pageSizeOptions="pageSizeOptions"
@showSizeChange="showSizeChange"
/>
</div> -->
</a-card>
</div>
<!-- 右 -->
<div class="right">
<a-card title="模板属性" :bodyStyle="{ height: '79vh' }">
<div class="header">
<div class="header pdr6">
<div>
<a-space>
<a-button type="primary" @click="handleAddField"
......@@ -173,8 +162,8 @@
</template>
<!-- 操作 -->
<template slot="action" slot-scope="text">
<a-space>
<a class="edit" @click="handleEditRight(text)">编辑</a>
<a-space size="middle">
<a class="primary" @click="handleEditRight(text)">编辑</a>
<a
href="javascript:;"
class="delete"
......@@ -185,20 +174,6 @@
</template>
</a-table>
</div>
<!-- 分页 -->
<!-- <div class="pagination" v-if="rightTotal">
<a-pagination
v-model="rightCurrent"
:show-total="(total) => `共 ${total} 条`"
:total="rightTotal"
@change="changeRight"
show-less-items
show-size-changer
show-quick-jumper
:pageSizeOptions="pageSizeOptions"
@showSizeChange="showSizeChangeRight"
/>
</div> -->
</a-card>
</div>
</div>
......@@ -231,6 +206,7 @@ import {
} from "@/services/surface";
import AddTemplate from "./modal/AddTemplate.vue";
import AddField from "./modal/AddField.vue";
import { pageSizeOptions } from "@/config/pageConfig.js";
const leftColumns = [
{
title: "序号",
......@@ -325,7 +301,7 @@ export default {
rightCurrent: 1,
rightSize: 10,
rightTotal: 0,
pageSizeOptions: ["10", "30", "50", "100"],
pageSizeOptions,
visibleTemplate: false,
visibleField: false,
titleTemplate: "",
......
......@@ -12,7 +12,7 @@
<!-- 头部 -->
<div class="header flex jcb">
<div class="header-title flex aic">
<img src="../../../../assets/img/logo.png" />
<!-- <img src="../../../../assets/img/logo.png" /> -->
<h1 :style="{ color: filterItem('2', 0) }">政务服务中心</h1>
</div>
<div class="flex header-right jcb">
......
......@@ -12,7 +12,7 @@
<!-- 头部 -->
<div class="header flex jcb">
<div class="header-title flex aic">
<img src="../../../../assets/img/logo.png" />
<!-- <img src="../../../../assets/img/logo.png" /> -->
<h1 :style="{ color: filterItem('2', 0) }">政务服务中心</h1>
</div>
<div
......
......@@ -12,7 +12,7 @@
<!-- 头部 -->
<div class="header flex aic jcb">
<div class="title flex aic">
<img src="../../../../assets/img/logo.png" />
<!-- <img src="../../../../assets/img/logo.png" /> -->
<h1 :style="{ color: filterItem('2', 0) }">政务服务中心</h1>
</div>
<div class="time" :style="{ color: filterItem('3', 0) }">
......@@ -157,6 +157,122 @@
</div>
</div>
</div>
<!-- 集中显示屏 竖版 -->
<div
class="vertical-skin"
:id="conponentsId"
v-else-if="imageResolution === '2'"
:style="{
background: filterItem('1', 0),
}"
>
<!-- 头部 -->
<div class="header flex aic jcc">
<h1 :style="{ color: filterItem('2', 0) }">政务服务中心</h1>
</div>
<!-- 主体 -->
<div class="main flex flexc aic jcb">
<div class="call-out flex flexc jcb">
<div class="call-out-item">
<div class="call-out-item-title">正在呼叫</div>
<div class="call-out-item-text call-out-item-text-1">
<span
class="call-out-item-code"
:style="{ color: filterItem('7', 0) }"
>A0004号</span
>
<span
class="call-out-item-code"
:style="{ color: filterItem('7', 0) }"
>03号窗口</span
>
</div>
</div>
<div class="call-out-item">
<div class="call-out-item-title">正在办理</div>
<div class="call-out-item-text call-out-item-text-2">
<span
class="call-out-item-code"
:style="{ color: filterItem('7', 0) }"
>A0004号</span
>
<span
class="call-out-item-code"
:style="{ color: filterItem('7', 0) }"
>03号窗口</span
>
</div>
</div>
<div class="call-out-item">
<div class="call-out-item-title">正在办理</div>
<div class="call-out-item-text call-out-item-text-2">
<span
class="call-out-item-code"
:style="{ color: filterItem('7', 0) }"
>A0004号</span
>
<span
class="call-out-item-code"
:style="{ color: filterItem('7', 0) }"
>03号窗口</span
>
</div>
</div>
<div class="call-out-item" v-for="v in 4" :key="v">
<div class="call-out-item-title">等待中</div>
<div class="call-out-item-text call-out-item-text-3">
<span
class="call-out-item-code"
:style="{ color: filterItem('7', 0) }"
>A0004号</span
>
<span
class="call-out-item-code"
:style="{ color: filterItem('7', 0) }"
>--</span
>
</div>
</div>
</div>
<!-- banner -->
<div class="banner border flex aic jcc">banner</div>
</div>
<!-- 尾部 -->
<div class="footer flex aic jca">
<div class="footer-item flex flexc jcc aic">
<p :style="{ color: filterItem('5', 0) }">今日取号量</p>
<p class="footer-count" :style="{ color: filterItem('6', 0) }">
200次
</p>
</div>
<div class="footer-item flex flexc jcc aic">
<p :style="{ color: filterItem('5', 0) }">累计取号量</p>
<p class="footer-count" :style="{ color: filterItem('6', 0) }">
200次
</p>
</div>
<div class="footer-item flex flexc jcc aic">
<p :style="{ color: filterItem('5', 0) }">当前等待人数</p>
<p class="footer-count" :style="{ color: filterItem('6', 0) }">
200人
</p>
</div>
<div class="footer-item flex flexc jcc aic">
<p :style="{ color: filterItem('5', 0) }">评价等待时间</p>
<p class="footer-count" :style="{ color: filterItem('6', 0) }">
12分钟
</p>
</div>
</div>
</div>
<!-- 空数据显示 -->
<div class="empty flex aic jcc" v-else>
<a-empty
......@@ -255,6 +371,9 @@ export default {
</script>
<style lang="less" scoped>
.border {
border: 1px dashed #1890ff;
}
.centralize-across {
width: 1000px;
height: 562.5px;
......@@ -347,4 +466,90 @@ export default {
}
}
}
.vertical-skin {
height: 1000px;
width: 562px;
padding: 0px 10px;
background-image: linear-gradient(#26c5ff, #2c66ff);
background-repeat: no-repeat !important;
background-position: center !important;
background-size: 100% 100% !important;
.header {
height: 80px;
h1 {
margin: 0px;
margin-left: 10px;
font-size: 30px;
font-weight: bold;
color: #fff;
}
}
.main {
width: 100%;
padding: 10px;
border-radius: 4px;
background-color: #fff;
.banner {
width: 100%;
height: 360px;
border-radius: 4px;
color: #1890ff;
}
.call-out {
width: 100%;
.call-out-item {
width: 100%;
height: 50px;
margin-bottom: 10px;
border-radius: 8px;
position: relative;
background-color: #ccc;
.call-out-item-title {
height: 100%;
width: 20%;
text-align: center;
line-height: 50px;
color: #fff;
font-size: 16px;
border-radius: inherit;
}
.call-out-item-text {
height: 100%;
width: 80%;
line-height: 50px;
font-size: 20px;
padding: 0px 20px;
border-radius: 12px 8px 8px 0px;
position: absolute;
top: 0px;
right: 0px;
color: #000;
font-weight: 600;
text-align: left;
span {
margin: 0px 10px;
}
}
.call-out-item-text-1 {
background-color: #fdf7f2;
}
.call-out-item-text-2 {
background-color: #f1f8fe;
}
.call-out-item-text-3 {
background-color: #f4f5f6;
}
}
}
}
.footer {
margin-top: 20px;
width: 100%;
color: #fff;
.footer-count {
font-size: 18px;
font-weight: 600;
}
}
}
</style>
\ No newline at end of file
......@@ -47,7 +47,9 @@ export default {
// 搜索
onSearch(val) {
this.getProductList({ productName: `%${val}%` });
if (val) {
this.$emit("searchProduct", val);
}
},
changeMenu(index, row) {
......@@ -66,14 +68,28 @@ export default {
</script>
<style lang="less" scoped>
.left-menu {
height: 100%;
}
.search-box {
padding: 15px 15px 0px;
}
.menu {
height: 70vh;
margin-top: 15px;
overflow-y: auto;
padding: 0px 15px 15px 15px;
.active {
background-color: #1890ff;
color: #fff;
}
}
/deep/.ant-card-grid {
height: 90px;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
}
</style>
\ No newline at end of file
......@@ -12,6 +12,7 @@
</a-select-option>
</a-select>
</div>
<a-spin size="small" :spinning="spinning">
<div class="preview-list">
<div v-if="previewList.length > 0">
<div
......@@ -26,6 +27,7 @@
</div>
<a-empty v-else :image="simpleImage" />
</div>
</a-spin>
<div class="preview-btn">
<a-button type="primary" style="margin-bottom: 10px" @click="AddSurface"
>新增皮肤</a-button
......@@ -54,6 +56,7 @@ export default {
simpleImage: Empty.PRESENTED_IMAGE_SIMPLE,
categoryId: "", // 分类ID
previewList: [], // 皮肤列表
spinning: false,
};
},
computed: {
......@@ -93,6 +96,7 @@ export default {
// 获取皮肤列表
async getSkinList(search = {}) {
this.isActive = 0;
this.spinning = true;
let res = await getSkinList({
page: 1,
size: -1,
......@@ -100,7 +104,9 @@ export default {
categoryId: this.categoryId,
...search,
});
this.spinning = false;
let { imageResolution } = res.data.dict;
if (res.data.code == 1) {
let { data } = res.data.data;
this.SET_imageResolution(imageResolution);
this.previewList = data;
......@@ -111,6 +117,7 @@ export default {
this.SET_curSkin({});
this.SET_curSkinIndex(0);
}
}
},
// 选取预览图
changePreview(index, row) {
......@@ -151,12 +158,16 @@ export default {
height: 80vh;
display: flex;
flex-direction: column;
padding: 15px 0px;
.preview-seach {
height: 32px;
padding: 0px 15px;
margin-bottom: 15px;
}
.preview-list {
flex: 1;
height: 65vh;
padding: 0px 15px;
display: flex;
flex-direction: column;
border-bottom: 1px solid #ccc;
......
......@@ -22,9 +22,7 @@
</div>
<div class="show-btn flex aic jcc">
<a-space size="middle">
<a-button class="edit-btn" @click="editSurface"
>修改皮肤参数</a-button
>
<a-button type="primary" @click="editSurface">修改皮肤参数</a-button>
<a-button type="danger" @click="handleClose(curSkin.id)"
>删除皮肤</a-button
>
......@@ -205,10 +203,6 @@ export default {
object-fit: contain;
}
}
.edit-btn {
background-color: #03be64;
color: #fff;
}
}
}
// 媒体查询
......
......@@ -174,7 +174,7 @@
type="primary"
:loading="loading"
@click="getPrintScreen"
>保存</a-button
>确定</a-button
>
</a-space>
</div>
......
......@@ -62,7 +62,7 @@
<a-icon type="edit" style="margin-right: 6px" />
<span>编辑</span>
</div>
<div>
<div v-else>
<a-icon type="undo" style="margin-right: 6px" />
<span>保存</span>
</div>
......@@ -98,7 +98,7 @@
</div>
</div>
<div style="text-align: center" v-else>
<a-button class="add-btn" @click="handleAdd">
<a-button type="primary" @click="handleAdd">
<a-icon type="plus" />
新增分类
</a-button>
......@@ -361,7 +361,7 @@ export default {
text-align: center;
cursor: pointer;
line-height: 26px;
background-color: #1890ff;
background: linear-gradient(90deg, #5ab6ff, #2e9aff);
color: #fff;
border-radius: 0px 0px 0px 10px;
}
......
......@@ -12,7 +12,7 @@
<!-- 头部 -->
<div class="header flex aic jcb">
<div class="left flex aic">
<img class="mr20" src="../../../../assets/img/logo.png" />
<!-- <img class="mr20" src="../../../../assets/img/logo.png" /> -->
<div
class="title"
:style="{
......
......@@ -155,14 +155,13 @@ export default {
display: flex;
.menu-box {
width: 20%;
padding: 15px;
height: 100%;
}
.show-box {
width: 65%;
}
.preview-box {
width: 15%;
padding: 15px;
}
}
}
......
......@@ -16,7 +16,7 @@
</div>
<div class="right flex1 flex flexc aic">
<div class="header flex aic jcc">
<img src="../../../../assets/img/logo.png" />
<!-- <img src="../../../../assets/img/logo.png" /> -->
<div>
<h1 :style="{ color: filterItem('7', 0) }">政务服务中心</h1>
</div>
......
......@@ -12,7 +12,7 @@
<!-- 头部 -->
<div class="header flex aic jcb">
<div class="left flex aic">
<img class="mr20" src="../../../../assets/img/logo.png" />
<!-- <img class="mr20" src="../../../../assets/img/logo.png" /> -->
<div
class="title"
:style="{
......
<template>
<div class="parameter">
<div class="control flex aic jcb mb15">
<div class="control flex aic jcb mb15 pdr6">
<div>
<a-button type="primary" style="margin-right: 10px" @click="handleAdd"
>新增</a-button
......@@ -39,7 +39,6 @@
onChange: handleChange,
onShowSizeChange: showSizeChange,
}"
size="small"
:data-source="tableData"
:rowKey="(record) => record.id"
>
......@@ -63,11 +62,17 @@
<!-- 操作 -->
<template slot="action" slot-scope="text">
<a-space size="middle">
<a href="javascript:;" class="edit" @click="handleEdit(text)"
>编辑</a
<span
href="javascript:;"
class="primary pointer"
@click="handleEdit(text)"
>编辑</span
>
<a href="javascript:;" class="delete" @click="handleDel(text.id)"
>删除</a
<span
href="javascript:;"
class="delete pointer"
@click="handleDel(text.id)"
>删除</span
>
</a-space>
</template>
......@@ -86,6 +91,7 @@
<script>
import { getSystemParameterList, delSystemParameter } from "@/services/system";
import { pageSizeOptions } from "@/config/pageConfig.js";
import AddParameter from "./modal/AddParameter.vue";
export default {
components: {
......@@ -168,7 +174,7 @@ export default {
current: 1,
size: 10,
total: 0,
pageSizeOptions: ["10", "30", "50", "100"],
pageSizeOptions,
searchValue: "", // 搜索
tableData: [],
selectedRowKeys: [],
......
......@@ -7,7 +7,7 @@
:maskClosable="false"
>
<a-button slot="footer" @click="handleReset">重置</a-button>
<a-button slot="footer" type="primary" @click="handleOk">保存</a-button>
<a-button slot="footer" type="primary" @click="handleOk">确定</a-button>
<a-form-model
:model="form"
ref="form"
......
<template>
<!-- 系统日志 -->
<div class="system-logs">
<div class="control">
<div class="control pdr6">
<div class="search-box">
<a-input-search
placeholder="请输入请求地址搜索"
......@@ -19,7 +19,6 @@
bordered
:scroll="{ y: 590 }"
:columns="columns"
size="small"
:pagination="{
showTotal: (total) => `共 ${total} 条`,
current: current,
......@@ -49,6 +48,7 @@
<script>
import { getSystemLogsList } from "@/services/system";
import { pageSizeOptions } from "@/config/pageConfig.js";
const columns = [
{
title: "序号",
......@@ -93,7 +93,7 @@ export default {
current: 1,
size: 10,
total: 0,
pageSizeOptions: ["10", "30", "50", "100"],
pageSizeOptions,
searchValue: "", // 搜索
tableData: [],
};
......
<template>
<div class="task-set">
<div class="control flex aic jcb mb15">
<div class="control flex aic jcb mb15 pdr6">
<div>
<a-button type="primary" style="margin-right: 10px" @click="handleAdd"
>新增</a-button
......@@ -39,7 +39,6 @@
onChange: handleChange,
onShowSizeChange: showSizeChange,
}"
size="small"
:data-source="tableData"
:rowKey="(record) => record.id"
>
......@@ -64,11 +63,17 @@
<!-- 操作 -->
<template slot="action" slot-scope="text">
<a-space size="middle">
<a href="javascript:;" class="edit" @click="handleEdit(text)"
>编辑</a
<span
href="javascript:;"
class="primary pointer"
@click="handleEdit(text)"
>编辑</span
>
<a href="javascript:;" class="delete" @click="handleDel(text.id)"
>删除</a
<span
href="javascript:;"
class="delete pointer"
@click="handleDel(text.id)"
>删除</span
>
</a-space>
</template>
......@@ -87,6 +92,7 @@
<script>
import { getSystemTaskList, delSystemTask } from "@/services/system";
import { pageSizeOptions } from "@/config/pageConfig.js";
import AddTask from "./modal/AddTask.vue";
export default {
components: {
......@@ -154,7 +160,7 @@ export default {
current: 1,
size: 10,
total: 0,
pageSizeOptions: ["10", "30", "50", "100"],
pageSizeOptions,
searchValue: "", // 搜索
tableData: [],
selectedRowKeys: [],
......
......@@ -7,7 +7,7 @@
:maskClosable="false"
>
<a-button slot="footer" @click="handleReset">重置</a-button>
<a-button slot="footer" type="primary" @click="handleOk">保存</a-button>
<a-button slot="footer" type="primary" @click="handleOk">确定</a-button>
<a-form-model
:model="form"
ref="form"
......
......@@ -39,8 +39,8 @@
<a-form-model-item label="所属部门" prop="deptId">
<a-select
showSearch
v-model="form.deptId"
optionFilterProp="label"
v-model="form.deptId"
placeholder="请选择部门"
@change="handleDeptSelect"
allowClear
......@@ -56,28 +56,35 @@
</a-select>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="经办人Id" prop="operatorId">
<a-input v-model="form.operatorId" placeholder="请输入经办人Id" />
</a-form-model-item>
</a-col>
<!-- <a-col :span="12">
<a-form-model-item label="所属窗口" prop="windowId">
<a-select
v-model="form.windowId"
placeholder="请选择窗口"
@change="handleWindowSelect"
showSearch
allowClear
optionFilterProp="label"
>
<a-select-option
v-for="v in windowData"
:key="v.id"
:value="v.id"
>{{ v.name }}</a-select-option
:label="v.name + v.fromnum"
:data-name="v.name"
>
<span>{{ v.name }}</span>
<span>--</span>
<span>{{ v.fromnum }}</span>
</a-select-option>
</a-select>
</a-form-model-item>
</a-col> -->
<a-col :span="12">
<a-form-model-item label="经办人Id" prop="operatorId">
<a-input v-model="form.operatorId" placeholder="请输入经办人Id" />
</a-form-model-item>
</a-col>
</a-row>
<a-row>
<a-col :span="12">
......@@ -123,6 +130,8 @@
</a-select>
</a-form-model-item>
</a-col>
</a-row>
<a-row>
<a-col :span="12">
<a-form-model-item label="称号" prop="dangyuan">
<a-select
......@@ -392,7 +401,7 @@ export default {
loading: false,
imageUrl: "",
labelCol: { span: 5 },
wrapperCol: { span: 14 },
wrapperCol: { span: 19 },
indeterminate: true,
checkAll: false,
modelIds: [], // 模块
......@@ -401,12 +410,13 @@ export default {
siteId: "",
siteName: "",
},
curWindow: {}, // 当前选择窗口
form: {
// roleId: "", // 权限id
deptId: undefined, // 部门id
deptName: "", //部门名称
windowName: "", // 窗口名称
// windowId: undefined, // 窗口id
windowId: undefined, // 窗口id
siteName: "", // 站点名称
siteId: "", // 站点id
name: "", // 姓名
......@@ -469,6 +479,15 @@ export default {
this.siteInfo.siteId = info.id;
this.siteInfo.siteName = info.label;
},
// 获取窗口列表
async getWindowList(deptId) {
let windowData = [];
let res = await getWindowList({ deptId, page: 1, size: -1 });
if (res.data.code == 1) {
windowData = res.data.data.data;
}
return windowData;
},
// 获取模块
async getModelList() {
let res = await modelList({ page: 1, size: -1 });
......@@ -477,21 +496,30 @@ export default {
// 部门选择
async handleDeptSelect(val, node) {
this.form.windowId = undefined;
// this.form.windowId = undefined;
// this.form.windowName = "";
if (val) {
let { text } = node.componentOptions.children[0];
this.form.deptName = text;
let res = await getWindowList({ deptId: val, page: 1, size: -1 });
this.windowData = res.data.data.data;
// this.windowData = await this.getWindowList(val);
} else {
this.form.deptName = "";
// this.windowData = [];
}
},
//编辑获取窗口
async editWindow(val) {
let res = await getWindowList({ deptId: val, page: 1, size: -1 });
this.windowData = res.data.data.data;
this.windowData = await this.getWindowList(val);
},
// 窗口选择
handleWindowSelect(val, node) {
let { text } = node.componentOptions.children[0];
this.form.windowName = text;
if (val) {
let name = node.data.attrs["data-name"];
this.form.windowName = name;
} else {
this.form.windowName = "";
}
this.$forceUpdate();
},
// 保存
hideModal() {
......@@ -509,9 +537,11 @@ export default {
},
// 编辑
onEdit(data) {
// this.editWindow(data.deptId);
this.form = { ...data };
this.form.loginName && this.$delete(this.form, "loginName");
this.form.loginPwd && this.$delete(this.form, "loginPwd");
this.form.windowId = this.form.windowId ? this.form.windowId : undefined;
if (this.form.photoPath) {
this.fileList = [
{
......@@ -523,16 +553,19 @@ export default {
},
];
}
// this.editWindow(data.deptId);
},
// 关闭对话框
handleClose() {
// this.$refs.formData.resetFields();
this.$refs.formData.resetFields();
this.fileList = [];
this.loading = false;
this.Visible = false;
// this.windowData = [];
// this.form.windowName = "";
},
// 重置
handleReset() {
// this.form.windowName = "";
this.$refs.formData.resetFields();
},
// 照片上传
......
......@@ -39,8 +39,8 @@
<a-form-model-item label="所属部门" prop="deptId">
<a-select
showSearch
v-model="form.deptId"
optionFilterProp="label"
v-model="form.deptId"
placeholder="请选择部门"
@change="handleDeptSelect"
allowClear
......@@ -56,28 +56,35 @@
</a-select>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="经办人Id" prop="operatorId">
<a-input v-model="form.operatorId" placeholder="请输入经办人Id" />
</a-form-model-item>
</a-col>
<!-- <a-col :span="12">
<a-form-model-item label="所属窗口" prop="windowId">
<a-select
v-model="form.windowId"
placeholder="请选择窗口"
@change="handleWindowSelect"
showSearch
allowClear
optionFilterProp="label"
>
<a-select-option
v-for="v in windowData"
:key="v.id"
:value="v.id"
>{{ v.name }}</a-select-option
:label="v.name + v.fromnum"
:data-name="v.name"
>
<span>{{ v.name }}</span>
<span>--</span>
<span>{{ v.fromnum }}</span>
</a-select-option>
</a-select>
</a-form-model-item>
</a-col> -->
<a-col :span="12">
<a-form-model-item label="经办人Id" prop="operatorId">
<a-input v-model="form.operatorId" placeholder="请输入经办人Id" />
</a-form-model-item>
</a-col>
</a-row>
<a-row>
<a-col :span="12">
......@@ -123,6 +130,8 @@
</a-select>
</a-form-model-item>
</a-col>
</a-row>
<a-row>
<a-col :span="12">
<a-form-model-item label="称号" prop="dangyuan">
<a-select
......@@ -426,7 +435,7 @@ export default {
loading: false,
imageUrl: "",
labelCol: { span: 5 },
wrapperCol: { span: 14 },
wrapperCol: { span: 19 },
indeterminate: true,
checkAll: false,
modelIds: [], // 模块
......@@ -442,7 +451,7 @@ export default {
deptId: undefined, // 部门id
deptName: "", //部门名称
windowName: "", // 窗口名称
// windowId: undefined, // 窗口id
windowId: undefined, // 窗口id
siteName: "", // 站点名称
siteId: "", // 站点id
name: "", // 姓名
......@@ -510,23 +519,40 @@ export default {
let res = await modelList({ page: 1, size: -1 });
this.modelIds = res.data.data.data;
},
// 获取窗口列表
async getWindowList(deptId) {
let windowData = [];
let res = await getWindowList({ deptId, page: 1, size: -1 });
if (res.data.code == 1) {
windowData = res.data.data.data;
}
return windowData;
},
// 部门选择
async handleDeptSelect(val, node) {
this.form.windowId = undefined;
// this.form.windowId = undefined;
// this.form.windowName = "";
if (val) {
let { text } = node.componentOptions.children[0];
this.form.deptName = text;
let res = await getWindowList({ deptId: val, page: 1, size: -1 });
this.windowData = res.data.data.data;
// this.windowData = await this.getWindowList(val);
} else {
this.form.deptName = "";
// this.windowData = [];
}
},
//编辑获取窗口
async editWindow(val) {
let res = await getWindowList({ deptId: val, page: 1, size: -1 });
this.windowData = res.data.data.data;
this.windowData = await this.getWindowList(val);
},
// 窗口选择
handleWindowSelect(val, node) {
let { text } = node.componentOptions.children[0];
this.form.windowName = text;
if (val) {
let name = node.data.attrs["data-name"];
this.form.windowName = name;
} else {
this.form.windowName = "";
}
},
// 保存
hideModal() {
......@@ -548,18 +574,18 @@ export default {
},
// 重置
handleReset() {
// this.form.windowName = "";
this.$refs.formData.resetFields();
},
// 新增
onAdd() {
Object.assign(this.form, this.$options.data().form);
this.windowData = [];
this.form.id && this.$delete(this.form, "id");
},
// 编辑
onEdit(data) {
this.form = { ...data };
this.editWindow(data.deptId);
// this.editWindow(data.deptId);
if (this.form.photoPath) {
this.fileList = [
{
......@@ -575,6 +601,9 @@ export default {
// 关闭对话框
handleClose() {
// this.$refs.formData.resetFields();
// this.windowData = [];
this.fileList = [];
// this.form.windowName = "";
this.loading = false;
this.Visible = false;
},
......
......@@ -3,7 +3,7 @@
<div class="website">
<!-- 右边 -->
<div class="right ff">
<div class="person_message">工作人员管理</div>
<!-- <div class="person_message">工作人员管理</div> -->
<div class="person_chang">
<div class="person_gruop">选择部门:</div>
<div class="person_gruop1">
......@@ -125,7 +125,7 @@
</a-radio-group> -->
</div>
</div>
<div class="on btn">
<div class="on btn pdr6">
<div>
<a-button type="primary" @click="showModal">新增人员</a-button>
<a-dropdown>
......@@ -136,7 +136,9 @@
:multiple="false"
:action="api + 'base/workman/importData'"
:showUploadList="false"
:headers="headers"
:headers="{
Authorization: token,
}"
@change="handleChange"
:data="{
siteId,
......@@ -160,7 +162,9 @@
:multiple="false"
:action="api + 'base/file/commonupload'"
:showUploadList="false"
:headers="headers"
:headers="{
Authorization: token,
}"
@change="handleChangeImg"
accept="application/x-zip-compressed"
>
......@@ -178,7 +182,8 @@
</div>
<div class="in">
<a-input-search
placeholder="请输入姓名或者工号"
placeholder="请输入姓名或者工号搜索"
v-model="searchVal"
enter-button="搜索"
allowClear
@search="onSearch"
......@@ -199,6 +204,7 @@
onChange: handlePagination,
onShowSizeChange: showSizeChange,
}"
bordered
:scroll="{ y: 530 }"
:loading="loading"
:columns="columns"
......@@ -216,6 +222,7 @@
:src="api2 + text.photoPath"
class="pht"
/>
<span v-else>--</span>
</template>
<!-- 电话 -->
......@@ -230,7 +237,7 @@
</div>
<span v-else>--</span>
</template>
<!-- 创建时间 -->
<!-- 所属窗口 -->
<template slot="windowName" slot-scope="text">
{{ text.windowName ? text.windowName : "--" }}
</template>
......@@ -239,20 +246,24 @@
{{ text.createTime | dateFormat }}
</template>
<!-- 最后登录时间 -->
<template slot="logintime" slot-scope="text">
<span v-if="text.logintime">{{
text.logintime | dateFormat
<template slot="lastLoginTime" slot-scope="text">
<span v-if="text.lastLoginTime">{{
text.lastLoginTime | dateFormat
}}</span>
<span v-else>--</span>
</template>
<!-- 操作 -->
<span slot="action" slot-scope="text">
<a-space>
<a class="edit" type="primary" @click="editModal(text)">编辑</a>
<a class="edit-pwd" type="primary" @click="changePwd(text)"
>修改密码</a
<span class="primary pointer" @click="editModal(text)"
>编辑</span
>
<span class="primary pointer" @click="changePwd(text)"
>修改密码</span
>
<span class="delete pointer" @click="handleDel(text.id)"
>删除</span
>
<a class="delet" @click="handleDel(text.id)">删除</a>
</a-space>
</span>
</a-table>
......@@ -288,6 +299,8 @@ import EditPwd from "./components/EditPwd";
import EditPersonel from "./components/EditPersonel.vue";
import local from "@/utils/local";
import { Empty } from "ant-design-vue";
import { pageSizeOptions } from "@/config/pageConfig.js";
import { mapGetters } from "vuex";
// import axios from "axios";
import {
getDeptList,
......@@ -356,13 +369,13 @@ const columns = [
{
title: "最后登录时间",
scopedSlots: {
customRender: "logintime",
customRender: "lastLoginTime",
},
},
{
title: "操作",
width: "160px",
width: "170px",
scopedSlots: {
customRender: "action",
},
......@@ -376,9 +389,6 @@ export default {
},
data() {
return {
headers: {
Authorization: local.getLocal("token"),
},
spinning: false,
columns,
simpleImage: Empty.PRESENTED_IMAGE_SIMPLE,
......@@ -393,17 +403,21 @@ export default {
WorkmanData: [], // 工作人员列表
deptSearch: "", //部门搜索
windowSearch: "", // 窗口搜索
searchVal: "",
visibleAll: false,
page: 1,
size: 10,
total: 0,
pageSizeOptions: ["10", "30", "50", "100"],
pageSizeOptions,
designationDict: {}, // 称号字典
politicalDict: {}, // 政治面貌字典
curDept: "", // 当前选中部门
curWindow: "", // 当前选中窗口
};
},
computed: {
...mapGetters("site", ["token"]),
},
created() {
this.getDeptList();
this.getWindowData();
......@@ -424,6 +438,8 @@ export default {
// 获取部门窗口
async getWindowData() {
let res = await getWindowList({
page: 1,
size: -1,
siteId: this.siteId,
deptId: this.deptSearch,
});
......@@ -433,12 +449,19 @@ export default {
// 获取工作人员列表
async getWorkmanData(search = {}) {
this.loading = true;
let obj = {};
if (/^[\u4e00-\u9fa5]+$/.test(this.searchVal)) {
obj.name = `%${this.searchVal}%`;
} else if (/^[a-zA-z0-9]+$/.test(this.searchVal)) {
obj.number = `%${this.searchVal}%`;
}
let res = await getWorkmanList({
siteId: this.siteId,
page: this.page,
size: this.size,
deptId: this.deptSearch,
windowId: this.windowSearch,
...obj,
...search,
});
let { data, pageInfo, dict } = res.data.data;
......@@ -504,15 +527,16 @@ export default {
});
},
// 搜索
onSearch(val) {
onSearch() {
this.page = 1;
if (/^[\u4e00-\u9fa5]+$/.test(val)) {
this.getWorkmanData({ name: `%${val}%` });
} else if (/^[a-zA-z0-9]+$/.test(val)) {
this.getWorkmanData({ number: `%${val}%` });
} else {
this.getWorkmanData();
}
// if (/^[\u4e00-\u9fa5]+$/.test(val)) {
// this.getWorkmanData({ name: `%${val}%` });
// } else if (/^[a-zA-z0-9]+$/.test(val)) {
// this.getWorkmanData({ number: `%${val}%` });
// } else {
// this.getWorkmanData();
// }
},
// 新增工作人员
showModal() {
......@@ -547,7 +571,7 @@ export default {
const blob = new Blob([res.data], {
type: "application/octet-stream",
});
let fileName = "批量导入工作人员模";
let fileName = "批量导入工作人员模";
const link = document.createElement("a");
link.href = URL.createObjectURL(blob);
......@@ -618,12 +642,6 @@ export default {
</script>
<style lang="less" scoped>
.skins_btn_1 {
width: 100px;
height: 36px;
background-color: rgba(5, 149, 253, 1);
border-color: rgba(5, 149, 253, 1);
}
.website {
.right {
width: 100%;
......@@ -632,7 +650,7 @@ export default {
color: #333;
padding-left: 20px;
.person_message {
font-weight: 600;
font-size: 18px;
}
}
......@@ -657,44 +675,12 @@ export default {
margin-bottom: 6px;
}
}
.btn_add {
width: 80px;
height: 36px;
background-color: rgba(5, 149, 253, 1);
font-size: 13px;
text-align: center;
line-height: normal;
text-transform: none;
border: none;
margin-top: 15px;
}
.btn_to {
width: 80px;
height: 36px;
background-color: rgba(5, 149, 253, 1);
font-size: 13px;
text-align: center;
line-height: normal;
text-transform: none;
margin-left: 12px;
border: none;
margin-top: 20px;
margin-bottom: 20px;
}
.pht {
width: 56px;
height: 74px;
object-fit: cover;
}
.edit {
color: #03d76f;
}
.edit-pwd {
color: #1890ff;
}
.delet {
color: red;
}
div.person_gruop1 {
display: inline;
flex: 1;
......@@ -714,14 +700,6 @@ export default {
height: 36px;
margin-right: 10px;
}
.btn_search {
width: 72px;
height: 36px;
border: 0;
background: inherit;
// margin-b: 10px;
background-color: rgba(5, 149, 253, 1);
}
.on {
margin: 10px 0px;
......@@ -778,8 +756,8 @@ export default {
border-radius: 0px 4px 4px 0px;
}
.active {
background-color: #1890ff;
border-color: #1890ff;
background: linear-gradient(90deg, #5ab6ff, #2e9aff);
border-color: transparent;
color: #fff;
&:hover {
color: #fff;
......
<template>
<exception-page home-route="/demo" :style="`min-height: ${minHeight}`" type="404" />
<exception-page
home-route="/website"
:style="`min-height: ${minHeight}`"
type="404"
/>
</template>
<script>
import ExceptionPage from '@/components/exception/ExceptionPage'
import {mapState} from 'vuex'
import ExceptionPage from "@/components/exception/ExceptionPage";
import { mapState } from "vuex";
export default {
name: 'Exp404',
components: {ExceptionPage},
name: "Exp404",
components: { ExceptionPage },
computed: {
...mapState('setting', ['pageMinHeight']),
...mapState("setting", ["pageMinHeight"]),
minHeight() {
return this.pageMinHeight ? this.pageMinHeight + 'px' : '100vh'
}
}
}
return this.pageMinHeight ? this.pageMinHeight + "px" : "100vh";
},
},
};
</script>
<style scoped lang="less">
......
......@@ -264,6 +264,14 @@ const options = {
invisible: true,
},
},
{
path: "appTheme",
component: () =>
import("@/pages/basicset/appmarket/components/AppTheme"),
meta: {
invisible: true,
},
},
],
},
{
......
......@@ -2,7 +2,8 @@ import { hasAuthority } from "@/utils/authority-utils";
// import {loginIgnore} from '@/router/index'
// import {checkAuthorization} from '@/utils/request'
import NProgress from "nprogress";
import local from "@/utils/local";
// import local from "@/utils/local";
import store from "@/store/index";
NProgress.configure({ showSpinner: false });
......@@ -28,7 +29,8 @@ const progressStart = (to, from, next) => {
* @param options
*/
const loginGuard = (to, from, next) => {
let token = local.getLocal("token") ? true : false;
// let token = local.getLocal("token") ? true : false;
let token = store.getters["site/token"];
if (token) {
next();
} else {
......
......@@ -158,7 +158,8 @@ module.exports = {
info: `${BASE_URL}/base/window/info`,
save: `${BASE_URL}/base/window/save`,
delete: `${BASE_URL}/base/window/delete`,
exportExcel: `${BASE_URL}/base/window/exportExcel`,
template: `${BASE_URL}/base/window/downloadTemplate`, // 导入模板下载
importData: `${BASE_URL}/base/window/importData`,
subList: `${BASE_URL}/base/window/subHalllist`, // 查询当前站点所有没有在大厅配置的过的窗口
},
// 工作人员
......@@ -317,6 +318,13 @@ module.exports = {
used: `${BASE_URL}/base/app/version/used`,
preview: `${BASE_URL}/base/app/version/preview`,
},
// 应用分类
Appcategory: {
list: `${BASE_URL}/base/app/category/list`,
info: `${BASE_URL}/base/app/category/info`,
save: `${BASE_URL}/base/app/category/save`,
delete: `${BASE_URL}/base/app/category/delete`,
},
// 系统设置
system: {
// 系统日志
......
......@@ -51,6 +51,14 @@ export async function delWindow(data) {
export async function getSubHalllist(data) {
return request(window.subList, METHOD.POST, data);
}
// 批量导入窗口模板下载
export async function getWindowTemplate(data, config) {
return request(window.template, METHOD.POST, data, config);
}
// 批量导入窗口
export async function importWindowData(data) {
return request(window.importData, METHOD.POST, data);
}
/**
* 窗口业务
......
......@@ -6,6 +6,7 @@ import {
version,
device,
blackapp,
Appcategory,
} from "@/services/basicsetApi";
import { request, METHOD } from "@/utils/request";
......@@ -164,3 +165,22 @@ export async function saveBlackApp(data) {
export async function deleteBlackapp(data) {
return request(blackapp.delete, METHOD.GET, data);
}
/**
* 应用分类
*/
// 获取分类列表
export async function getCategoryList(data) {
return request(Appcategory.list, METHOD.POST, data);
}
// 保存分类列表
export async function saveCategory(data) {
return request(Appcategory.save, METHOD.POST, data);
}
// 删除分类列表
export async function deleteCategory(data) {
return request(Appcategory.delete, METHOD.GET, data);
}
......@@ -2,6 +2,7 @@ export default {
namespaced: true,
state: {
siteId: "", // 站点id
siteName: "", // 站点名称
imageResolution: [], // 皮肤设置分辨率
SiteTree: [], // 站点树
appTemplate: [], // 应用模板属性
......@@ -32,8 +33,20 @@ export default {
appDict(state) {
return state.appDict;
},
siteId(state) {
return state.siteId;
},
},
mutations: {
SET_siteName(state, siteName) {
state.siteName = siteName;
},
SET_userInfo(state, userInfo) {
state.userInfo = userInfo;
},
SET_token(state, token) {
state.token = token;
},
SET_curProduct(state, curProduct) {
state.curProduct = curProduct;
},
......
// import Cookie from 'js-cookie'
import local from "@/utils/local";
// import local from "@/utils/local";
import { message } from "ant-design-vue";
import store from "@/store/index";
// 401拦截
// const resp401 = {
// /**
......@@ -71,7 +71,8 @@ const reqCommon = {
*/
onFulfilled(config) {
// 携带token
let token = local.getLocal("token");
// let token = local.getLocal("token");
let token = store.getters["site/token"];
if (token) {
config.headers.Authorization = token;
}
......
......@@ -162,3 +162,25 @@ PRIMARY KEY (`id`)
ALTER TABLE mortals_sys_site ADD COLUMN `onlineTake` tinyint(2) DEFAULT '1' COMMENT '在线取号(0.否,1.是)' AFTER workday7;
ALTER TABLE mortals_sys_site ADD COLUMN `appointment` tinyint(2) DEFAULT '1' COMMENT '在线取号(0.否,1.是)' AFTER onlineTake;
ALTER TABLE mortals_sys_site ADD COLUMN `gowMap` tinyint(2) DEFAULT '1' COMMENT '在线取号(0.否,1.是)' AFTER appointment;
-- ----------------------------
2023-6-15
-- ----------------------------
-- ----------------------------
-- 自助终端应用分类表
-- ----------------------------
DROP TABLE IF EXISTS `mortals_sys_app_category`;
CREATE TABLE mortals_sys_app_category(
`id` bigint(20) AUTO_INCREMENT COMMENT '主键ID,主键,自增长',
`siteId` bigint(20) COMMENT '站点Id',
`siteName` varchar(256) COMMENT '站点名称',
`categoryCode` varchar(256) COMMENT '分类编码',
`categoryName` varchar(256) COMMENT '分类名称',
`sort` int(4) DEFAULT '0' COMMENT '排序字段',
`createTime` datetime COMMENT '创建时间',
`createUserId` bigint(20) COMMENT '创建用户',
`updateUserId` bigint(20) COMMENT '更新用户',
`updateTime` datetime COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='自助终端应用分类';
......@@ -10671,6 +10671,223 @@ data|object|数据对象
```
## 自助终端应用分类
### 查询自助终端应用分类列表
**请求URL:** /app/category/list
**请求方式:** POST
**内容类型:** application/json;charset=utf-8
**简要描述:** 查询自助终端应用分类
**请求参数:**
参数名称|类型|必填|描述
:---|:---|:---|:------
page|Integer|否|当前页
size|Integer|否|每页条数,值为-1,查询所有记录
**请求样例:**
```
{
"page":1,
"size":10
}
```
**响应参数:**
参数名称|参数类型|描述
:---|:---|:------
code|Integer|结果码(-1.失败,1.成功)
msg|String|消息
data|object|数据对象
&emsp;per_page|Integer|每页条数
&emsp;total|Integer|总条数
&emsp;last_page|Integer|总页数
&emsp;current_page|Integer|当前页
&emsp;data|array|结果集列表|数组
&emsp;&emsp;id|Long|主键ID,主键,自增长
&emsp;&emsp;siteId|Long|站点Id
&emsp;&emsp;siteName|String|站点名称
&emsp;&emsp;categoryCode|String|分类编码
&emsp;&emsp;categoryName|String|分类名称
&emsp;&emsp;sort|Integer|排序字段
&emsp;&emsp;createTime|Date|创建时间
&emsp;&emsp;createUserId|Long|创建用户
&emsp;&emsp;updateUserId|Long|更新用户
&emsp;&emsp;updateTime|Date|更新时间
dict|object|字典对象
**响应消息样例:**
```
{
"code":1,
"data":{
}
}
```
### 查看自助终端应用分类
**请求URL:** /app/category/info
**请求方式:** GET
**内容类型:** application/json;charset=utf-8
**简要描述:** 查看自助终端应用分类,返回实例详细信息
**请求参数:**
参数名称|类型|必填|描述
:---|:---|:---|:------
id|Long|是|ID
**请求样例:**
```
http://localhost/app/category/info?id=549
```
**响应参数:**
参数名称 |参数类型|描述
:---|:---|:-------
code|Integer|结果码(-1.失败,1.成功)
msg|String|消息
data|object|数据对象
&emsp;id|Long|主键ID,主键,自增长
&emsp;siteId|Long|站点Id
&emsp;siteName|String|站点名称
&emsp;categoryCode|String|分类编码
&emsp;categoryName|String|分类名称
&emsp;sort|Integer|排序字段
&emsp;createTime|Date|创建时间
&emsp;createUserId|Long|创建用户
&emsp;updateUserId|Long|更新用户
&emsp;updateTime|Date|更新时间
dict|object|字典对象
**响应消息样例:**
```
{
"code": 1,
"data": {
"id":7446,
"siteId":6287,
"siteName":"hdyoc5",
"categoryCode":"lghzhw",
"categoryName":"9grukd",
"sort":8579,
"createTime":"2023-06-15",
"createUserId":5522,
"updateUserId":6707,
"updateTime":"2023-06-15"
}
}
```
### 保存更新自助终端应用分类
**请求URL:** /app/category/save
**请求方式:** POST
**内容类型:** application/json;charset=utf-8
**简要描述:** 保存或更新自助终端应用分类:id为空时为新增保存,否则为更新提交
**请求参数:**
参数名称|类型|必填|描述
:---|:---|:---|:-------
siteId|Long|否|站点Id
siteName|String|否|站点名称
categoryCode|String|否|分类编码
categoryName|String|否|分类名称
sort|Integer|否|排序字段
**请求样例:**
```
{
"siteId":8230,
"siteName":"zbhc82",
"categoryCode":"d7b0ft",
"categoryName":"82or58",
"sort":9021,
}
```
**响应参数:**
参数名称 |参数类型|描述
:---|:---|:------
code|Integer|结果码(-1.失败,1.成功)
msg|String|消息
data|object|数据对象
&emsp;id|Long|保存后主键id
&emsp;entity|object|保存更新实体
&emsp;&emsp;id|Long|主键ID,主键,自增长
&emsp;&emsp;siteId|Long|站点Id
&emsp;&emsp;siteName|String|站点名称
&emsp;&emsp;categoryCode|String|分类编码
&emsp;&emsp;categoryName|String|分类名称
&emsp;&emsp;sort|Integer|排序字段
&emsp;&emsp;createTime|Date|创建时间
&emsp;&emsp;createUserId|Long|创建用户
&emsp;&emsp;updateUserId|Long|更新用户
&emsp;&emsp;updateTime|Date|更新时间
**响应消息样例:**
```
{
"msg":"新增模块成功",
"code":1,
"data":{}
}
}
```
### 删除自助终端应用分类
**请求URL:** /app/category/delete
**请求方式:** GET
**内容类型:** application/json;charset=utf-8
**简要描述:** 删除自助终端应用分类
**请求参数:**
参数名称|类型|必填|描述
:---|:---|:---|:------
id|String|是|数组
**请求样例:**
```
http://localhost:8080/app/category/delete?id=1&id=2'
```
**响应参数:**
参数名称 |参数类型|备注|其它
---|---|---|---
code|Integer|结果码(-1.失败,1.成功)|-
msg|String|消息|-
**响应消息样例:**
```
{
"code":1,
"msg":"成功"
}
```
### 自助终端基础应用部署
**请求URL:** app/appCommonDistribute
......
......@@ -296,7 +296,60 @@ public class UserServiceImpl extends AbstractCRUDServiceImpl<UserDao, UserEntity
@Override
public void updateUserList(List<UserPdu> list) {
//更新本地用户信息,并且更新用户站点树
//更新本地用户信息,并且更新用户站点树 //todo 将站点分组后 分组同步更新
List<String> loginNames = list.parallelStream().map(user -> user.getLoginName()).collect(Collectors.toList());
UserQuery userQuery = new UserQuery();
userQuery.setLoginNameList(loginNames);
List<UserEntity> existUsers = this.find(userQuery);
Map<String, UserEntity> existUserMap = existUsers.parallelStream().collect(Collectors.toMap(x -> x.getLoginName(), y -> y, (o, n) -> n));
//分组查找存在的与不存在的用户
Map<Boolean, List<UserPdu>> collect = list.parallelStream().collect(Collectors.partitioningBy(x -> existUserMap.containsKey(x.getLoginName())));
List<UserPdu> userPdusUpdate = collect.get(true);//更新
List<UserEntity> userEntityUpdate = new ArrayList<>();
List<UserPdu> userPdusSave = collect.get(false);//新增
List<UserEntity> userEntitySave = new ArrayList<>();
for (UserPdu user : userPdusSave) {
//新增
UserEntity entity = new UserEntity();
entity.initAttrValue();
BeanUtils.copyProperties(user, entity, BeanUtil.getNullPropertyNames(user));
this.save(entity);
if (!ObjectUtils.isEmpty(entity.getSiteIds())) {
userEntitySave.add(entity);
}
}
for (UserPdu user : userPdusUpdate) {
//更新
UserEntity userEntity = new UserEntity();
BeanUtils.copyProperties(user, userEntity, new String[]{"loginPwd", "loginName", "userType", "status", "lastLoginTime", "lastLoginAddress"});
userEntity.setId(existUserMap.get(user.getLoginName()).getId());
this.updateWidthDao(userEntity);
if (!ObjectUtils.isEmpty(userEntity.getSiteIds())) {
userEntitySave.add(userEntity);
}
}
//分组刷新节点 新增
Map<String, List<UserEntity>> saveSitesCollect = userEntitySave.stream().collect(Collectors.groupingBy(x -> x.getSiteIds()));
// Map<String, List<UserEntity>> updateSitesCollect = userEntityUpdate.stream().collect(Collectors.groupingBy(x -> x.getSiteIds()));
saveSitesCollect.entrySet().stream().forEach(item -> {
String siteIds = item.getKey();
List<UserEntity> userEntities = item.getValue();
if (!ObjectUtils.isEmpty(userEntities)) {
Context context = new Context();
context.setUser(userEntities.get(0));
ThreadPool.getInstance().execute(new SyncTreeSiteThread(context, userEntities));
}
});
/*
//如果用户未有所属站点 则不更新
for (UserPdu user : list) {
UserEntity tempUser = this.selectOne(new UserQuery().loginName(user.getLoginName()));
if (ObjectUtils.isEmpty(tempUser)) {
......@@ -305,20 +358,24 @@ public class UserServiceImpl extends AbstractCRUDServiceImpl<UserDao, UserEntity
entity.initAttrValue();
BeanUtils.copyProperties(user, entity, BeanUtil.getNullPropertyNames(user));
this.save(entity);
if (!ObjectUtils.isEmpty(entity.getSiteIds())) {
Context context = new Context();
context.setUser(entity);
ThreadPool.getInstance().execute(new SyncTreeSiteThread(context));
}
} else {
//更新
UserEntity userEntity = new UserEntity();
BeanUtils.copyProperties(user, userEntity, new String[]{"loginPwd","loginName", "userType", "status", "lastLoginTime", "lastLoginAddress"});
BeanUtils.copyProperties(user, userEntity, new String[]{"loginPwd", "loginName", "userType", "status", "lastLoginTime", "lastLoginAddress"});
userEntity.setId(tempUser.getId());
this.updateWidthDao(userEntity);
if (!ObjectUtils.isEmpty(userEntity.getSiteIds())) {
Context context = new Context();
context.setUser(userEntity);
ThreadPool.getInstance().execute(new SyncTreeSiteThread( context));
ThreadPool.getInstance().execute(new SyncTreeSiteThread(context));
}
}
}*/
}
......
......@@ -2,10 +2,13 @@ package com.mortals.xhx.common.utils;
import com.alibaba.fastjson.JSON;
import com.mortals.framework.model.Context;
import com.mortals.xhx.base.system.user.model.UserEntity;
import com.mortals.xhx.module.site.model.SiteTreeSelect;
import com.mortals.xhx.module.site.service.SiteService;
import com.mortals.xhx.utils.SpringUtils;
import lombok.AllArgsConstructor;
import lombok.NonNull;
import lombok.RequiredArgsConstructor;
import lombok.extern.apachecommons.CommonsLog;
import lombok.extern.slf4j.Slf4j;
import org.springframework.util.ObjectUtils;
......@@ -18,16 +21,30 @@ import java.util.List;
* @description:
**/
@AllArgsConstructor
@RequiredArgsConstructor
@Slf4j
public class SyncTreeSiteThread implements Runnable {
@NonNull
private Context context;
private List<UserEntity> userEntities;
@Override
public void run() {
SiteService siteService = SpringUtils.getBean(SiteService.class);
List<SiteTreeSelect> siteTreeSelects = siteService.siteTree(context);
if(ObjectUtils.isEmpty(userEntities)){
siteService.setSiteTree(siteTreeSelects, context);
}else{
for (UserEntity userEntity : userEntities) {
Context contextTemp = new Context();
contextTemp.setUser(userEntity);
siteService.setSiteTree(siteTreeSelects, contextTemp);
}
}
// log.info("刷新用户站点树=》userID:{} siteIds:{} siteTree:{}",context.getUser().getId(),context.getUser().getSiteIds(), JSON.toJSONString(siteService.getSiteTree(context)));
}
......
......@@ -26,6 +26,9 @@ import com.mortals.framework.springcloud.service.IApplicationStartedService;
import org.springframework.util.ObjectUtils;
import java.util.List;
import static com.mortals.xhx.common.key.Constant.USER_SITE_TREE;
@Component
@Slf4j
public class DemoStartedService implements IApplicationStartedService {
......@@ -35,10 +38,15 @@ public class DemoStartedService implements IApplicationStartedService {
private IUserFeign userFeign;
@Autowired
private UserService userService;
@Autowired
private ICacheService cacheService;
@Override
public void start() {
logger.info("开始服务..[初始化用户站点树]");
//删除redis 中的 站点树
cacheService.del(USER_SITE_TREE);
UserEntity userEntity = new UserEntity();
userEntity.initAttrValue();
userEntity.setId(0L);
......@@ -56,33 +64,6 @@ public class DemoStartedService implements IApplicationStartedService {
ThreadPool.getInstance().execute(syncTreeSiteThread);
/* userService.find(new UserQuery()).forEach(user->{
Context context = new Context();
context.setUser(user);
ThreadPool.getInstance().execute(new SyncTreeSiteThread(context));
});*/
/* if(ObjectUtils.isEmpty(userFeign)){
logger.info("userFeign未加载,加载本地用户");
userService.find(new UserQuery()).forEach(user->{
Context context = new Context();
context.setUser(user);
ThreadPool.getInstance().execute(new SyncTreeSiteThread(context));
});
return;
}*/
/* userFeign.list(new UserPdu()).getData().getData().stream().forEach(userPdu->{
Context context = new Context();
UserEntity entity = new UserEntity();
entity.initAttrValue();
BeanUtils.copyProperties(userPdu, entity, BeanUtil.getNullPropertyNames(userPdu));
context.setUser(entity);
ThreadPool.getInstance().execute(new SyncTreeSiteThread(context));
});*/
}
@Override
......
package com.mortals.xhx.module.app.dao;
import com.mortals.framework.dao.ICRUDDao;
import com.mortals.xhx.module.app.model.AppCategoryEntity;
import java.util.List;
/**
* 自助终端应用分类Dao
* 自助终端应用分类 DAO接口
*
* @author zxfei
* @date 2023-06-15
*/
public interface AppCategoryDao extends ICRUDDao<AppCategoryEntity,Long>{
}
......@@ -114,7 +114,6 @@ public class AppServiceImpl extends AbstractCRUDServiceImpl<AppDao, AppEntity, L
} else {
item.setAppIconUrl(item.getAppIconPath());
}
};
super.findAfter(params, pageInfo, context, list);
}
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
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