删除对应的文件,修改登陆问题

This commit is contained in:
chenze 2025-05-06 12:43:55 +08:00
parent 718f25d09d
commit 632edcbd2f
28 changed files with 237 additions and 1815 deletions

4
.env
View File

@ -1,4 +1,4 @@
NODE_ENV=production NODE_ENV=production
VUE_APP_PREVIEW=false VUE_APP_PREVIEW=false
VUE_APP_API_BASE_URL=https://www.chuangzhikj.com/saas-ics VUE_APP_API_BASE_URL=https://www.aiparkmeet.com/sass-ics/
VUE_APP_MODEL_BASE_URL=https://www.chuangzhikj.com/saas-ics VUE_APP_MODEL_BASE_URL=https://www.aiparkmeet.com/sass-ics/

View File

@ -1,4 +1,4 @@
NODE_ENV=production NODE_ENV=production
VUE_APP_PREVIEW=true VUE_APP_PREVIEW=false
VUE_APP_API_BASE_URL=https://www.chuangzhikj.com/saas-ics VUE_APP_API_BASE_URL=https://www.aiparkmeet.com/sass-ics/
VUE_APP_MODEL_BASE_URL=https://www.chuangzhikj.com/saas-ics VUE_APP_MODEL_BASE_URL=https://www.aiparkmeet.com/sass-ics/

6
public/index.html vendored
View File

@ -4,8 +4,8 @@
<meta charset="utf-8"> <meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0"> <meta name="viewport" content="width=device-width,initial-scale=1.0">
<link rel="icon" href="<%= BASE_URL %>logo.png"> <link rel="icon" href="<%= BASE_URL %>bg-logo.png">
<title>管理系统</title> <title>人工智能产业园管理系统</title>
<style>.first-loading-wrp{display:flex;justify-content:center;align-items:center;flex-direction:column;min-height:420px;height:100%}.first-loading-wrp>h1{font-size:128px}.first-loading-wrp .loading-wrp{padding:98px;display:flex;justify-content:center;align-items:center}.dot{animation:antRotate 1.2s infinite linear;transform:rotate(45deg);position:relative;display:inline-block;font-size:32px;width:32px;height:32px;box-sizing:border-box}.dot i{width:14px;height:14px;position:absolute;display:block;background-color:#1890ff;border-radius:100%;transform:scale(.75);transform-origin:50% 50%;opacity:.3;animation:antSpinMove 1s infinite linear alternate}.dot i:nth-child(1){top:0;left:0}.dot i:nth-child(2){top:0;right:0;-webkit-animation-delay:.4s;animation-delay:.4s}.dot i:nth-child(3){right:0;bottom:0;-webkit-animation-delay:.8s;animation-delay:.8s}.dot i:nth-child(4){bottom:0;left:0;-webkit-animation-delay:1.2s;animation-delay:1.2s}@keyframes antRotate{to{-webkit-transform:rotate(405deg);transform:rotate(405deg)}}@-webkit-keyframes antRotate{to{-webkit-transform:rotate(405deg);transform:rotate(405deg)}}@keyframes antSpinMove{to{opacity:1}}@-webkit-keyframes antSpinMove{to{opacity:1}}</style> <style>.first-loading-wrp{display:flex;justify-content:center;align-items:center;flex-direction:column;min-height:420px;height:100%}.first-loading-wrp>h1{font-size:128px}.first-loading-wrp .loading-wrp{padding:98px;display:flex;justify-content:center;align-items:center}.dot{animation:antRotate 1.2s infinite linear;transform:rotate(45deg);position:relative;display:inline-block;font-size:32px;width:32px;height:32px;box-sizing:border-box}.dot i{width:14px;height:14px;position:absolute;display:block;background-color:#1890ff;border-radius:100%;transform:scale(.75);transform-origin:50% 50%;opacity:.3;animation:antSpinMove 1s infinite linear alternate}.dot i:nth-child(1){top:0;left:0}.dot i:nth-child(2){top:0;right:0;-webkit-animation-delay:.4s;animation-delay:.4s}.dot i:nth-child(3){right:0;bottom:0;-webkit-animation-delay:.8s;animation-delay:.8s}.dot i:nth-child(4){bottom:0;left:0;-webkit-animation-delay:1.2s;animation-delay:1.2s}@keyframes antRotate{to{-webkit-transform:rotate(405deg);transform:rotate(405deg)}}@-webkit-keyframes antRotate{to{-webkit-transform:rotate(405deg);transform:rotate(405deg)}}@keyframes antSpinMove{to{opacity:1}}@-webkit-keyframes antSpinMove{to{opacity:1}}</style>
<!-- require cdn assets css --> <!-- require cdn assets css -->
<% for (var i in htmlWebpackPlugin.options.cdn && htmlWebpackPlugin.options.cdn.css) { %> <% for (var i in htmlWebpackPlugin.options.cdn && htmlWebpackPlugin.options.cdn.css) { %>
@ -18,7 +18,7 @@
</noscript> </noscript>
<div id="app"> <div id="app">
<div class="first-loading-wrp"> <div class="first-loading-wrp">
<h1>Pro</h1> <h3>人工智能产业园管理系统</h3>
<div class="loading-wrp"> <div class="loading-wrp">
<span class="dot dot-spin"><i></i><i></i><i></i><i></i></span> <span class="dot dot-spin"><i></i><i></i><i></i><i></i></span>
</div> </div>

View File

@ -1,34 +0,0 @@
import { axios } from '@/utils/request'
const api = {
wisdomDevice: '/wisdom/wisdomDevice'
}
export function getWisdomDeviceList (parameter) {
return axios({
url: api.wisdomDevice + '/list',
method: 'get',
params: parameter
})
}
export function saveWisdomDevice (parameter) {
return axios({
url: api.wisdomDevice + (parameter.id > 0 ? '/update' : '/save'),
method: 'post',
data: parameter,
headers: {
'Content-Type': 'application/json;charset=UTF-8'
}
})
}
export function delWisdomDevice (parameter) {
return axios({
url: api.wisdomDevice + '/remove',
method: 'post',
params: parameter
})
}
export const wisdomDeviceExport = api.wisdomDevice + '/export'

View File

@ -1,34 +0,0 @@
import { axios } from '@/utils/request'
const api = {
wisdomPanel: '/wisdomPanel'
}
export function getWisdomPanelList (parameter) {
return axios({
url: api.wisdomPanel + '/list',
method: 'get',
params: parameter
})
}
export function saveWisdomPanel (parameter) {
return axios({
url: api.wisdomPanel + (parameter.id > 0 ? '/update' : '/save'),
method: 'post',
data: parameter,
headers: {
'Content-Type': 'application/json;charset=UTF-8'
}
})
}
export function delWisdomPanel (parameter) {
return axios({
url: api.wisdomPanel + '/remove',
method: 'post',
params: parameter
})
}
export const wisdomPanelExport = api.wisdomPanel + '/export'

View File

@ -1,34 +0,0 @@
import { axios } from '@/utils/request'
const api = {
wisdomPanelEquipment: '/admin/wisdomPanelEquipment'
}
export function getWisdomPanelEquipmentList (parameter) {
return axios({
url: api.wisdomPanelEquipment + '/list',
method: 'get',
params: parameter
})
}
export function saveWisdomPanelEquipment (parameter) {
return axios({
url: api.wisdomPanelEquipment + (parameter.id > 0 ? '/update' : '/save'),
method: 'post',
data: parameter,
headers: {
'Content-Type': 'application/json;charset=UTF-8'
}
})
}
export function delWisdomPanelEquipment (parameter) {
return axios({
url: api.wisdomPanelEquipment + '/remove',
method: 'post',
params: parameter
})
}
export const wisdomPanelEquipmentExport = api.wisdomPanelEquipment + '/export'

View File

@ -1,42 +0,0 @@
import { axios } from '@/utils/request'
const api = {
wisdomRoom: '/admin/wisdomRoom'
}
export function getWisdomRoomList (parameter) {
return axios({
url: api.wisdomRoom + '/list',
method: 'get',
params: parameter
})
}
export function selectStaff (parameter) {
return axios({
url: api.wisdomRoom + '/selectStaff',
method: 'get',
params: parameter
})
}
export function saveWisdomRoom (parameter) {
return axios({
url: api.wisdomRoom + (parameter.id > 0 ? '/update' : '/save'),
method: 'post',
data: parameter,
headers: {
'Content-Type': 'application/json;charset=UTF-8'
}
})
}
export function delWisdomRoom (parameter) {
return axios({
url: api.wisdomRoom + '/remove',
method: 'post',
params: parameter
})
}
export const wisdomRoomExport = api.wisdomRoom + '/export'

View File

@ -1,34 +0,0 @@
import { axios } from '@/utils/request'
const api = {
wisdomStaff: '/admin/wisdomStaff'
}
export function getWisdomStaffList (parameter) {
return axios({
url: api.wisdomStaff + '/list',
method: 'get',
params: parameter
})
}
export function saveWisdomStaff (parameter) {
return axios({
url: api.wisdomStaff + (parameter.id > 0 ? '/update' : '/save'),
method: 'post',
data: parameter,
headers: {
'Content-Type': 'application/json;charset=UTF-8'
}
})
}
export function delWisdomStaff (parameter) {
return axios({
url: api.wisdomStaff + '/remove',
method: 'post',
params: parameter
})
}
export const wisdomStaffExport = api.wisdomStaff + '/export'

BIN
src/assets/bg-logo.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View File

@ -23,7 +23,7 @@ export default {
menu: { menu: {
locale: true locale: true
}, },
title: '区管理系统', title: '人工智能产业园',
pwa: false, pwa: false,
iconfontUrl: '', iconfontUrl: '',
production: process.env.NODE_ENV === 'production' && process.env.VUE_APP_PREVIEW !== 'true' production: process.env.NODE_ENV === 'production' && process.env.VUE_APP_PREVIEW !== 'true'

View File

@ -12,7 +12,7 @@
<!-- 1.0.0+ 版本 pro-layout 提供 API我们推荐使用这种方式进行 LOGO title 自定义 --> <!-- 1.0.0+ 版本 pro-layout 提供 API我们推荐使用这种方式进行 LOGO title 自定义 -->
<template v-slot:menuHeaderRender> <template v-slot:menuHeaderRender>
<div> <div>
<img src="~@/assets/logo-white.png" style='width: 32px ; height: auto'> <img src="~@/assets/bg-logo.jpg" style='width: 32px ; height: auto'>
<h1>{{ title }}</h1> <h1>{{ title }}</h1>
</div> </div>
</template> </template>

View File

@ -4,8 +4,8 @@
<div class='top'> <div class='top'>
<div class='header'> <div class='header'>
<div class='logoView'> <div class='logoView'>
<img src='~@/assets/logo.png' class='logo' alt='logo'> <img src='~@/assets/bg-logo.jpg' class='logo' alt='logo'>
<span class='title'>管理系统</span> <span class='title'>人工智能产业园管理系统</span>
</div> </div>
</div> </div>
<div class='desc'> <div class='desc'>
@ -22,7 +22,7 @@
<a href='_self'>条款</a> <a href='_self'>条款</a>
</div> </div>
<div class='copyright'> <div class='copyright'>
<a target='_blank' href='https://beian.miit.gov.cn'>浙ICP备2021888888号</a> <a target='_blank' href='https://beian.miit.gov.cn'>苏ICP备19076302号-3</a>
</div> </div>
</div> </div>
</div> </div>

View File

@ -10,11 +10,13 @@ const baseURL = process.env.VUE_APP_API_BASE_URL
// 创建 axios 实例 // 创建 axios 实例
const request = axios.create({ const request = axios.create({
baseURL: baseURL, // api base_url baseURL: baseURL, // api base_url
timeout: 15000 // 请求超时时间 timeout: 15000, // 请求超时时间
withCredentials: true // 允许跨域携带cookie
}) })
export const pureAxios = axios.create({ export const pureAxios = axios.create({
baseURL: baseURL, // api base_url baseURL: baseURL, // api base_url
timeout: 10000 // 请求超时时间 timeout: 10000, // 请求超时时间
withCredentials: true // 允许跨域携带cookie
}) })
const err = (error) => { const err = (error) => {

View File

@ -1015,9 +1015,9 @@ export default {
if (!isJpgOrPng) { if (!isJpgOrPng) {
this.$message.error('You can only upload JPG file!') this.$message.error('You can only upload JPG file!')
} }
const isLt2M = file.size / 1024 / 1024 < 2 const isLt2M = file.size / 1024 / 1024 < 10
if (!isLt2M) { if (!isLt2M) {
this.$message.error('图片必须小于 2MB!') this.$message.error('图片必须小于 10MB!')
} }
return isJpgOrPng && isLt2M return isJpgOrPng && isLt2M
}, },

View File

@ -1,150 +0,0 @@
<template>
<a-card :bordered="false">
<div class="table-page-search-wrapper">
<a-form layout="inline">
<a-row :gutter="48">
<a-col :md="5" :sm="15">
<a-form-item label="设备名称">
<a-input placeholder="请输入设备名称" v-model="queryParam.equipmentName" />
</a-form-item>
</a-col>
<a-col :md="8" :sm="24">
<span class="table-page-search-submitButtons">
<a-button type="primary" @click="$refs.table.refresh(true)">查询</a-button>
<a-button style="margin-left: 8px" @click="() => queryParam = {}">重置</a-button>
</span>
</a-col>
</a-row>
</a-form>
</div>
<div class="table-operator">
<a-button v-if="addEnable" type="primary" icon="plus" @click="$refs.modal.add()">新建</a-button>
<a-dropdown v-if="removeEnable&&selectedRowKeys.length > 0">
<a-button type="danger" icon="delete" @click="delByIds(selectedRowKeys)">删除</a-button>
</a-dropdown>
</div>
<s-table
size="default"
ref="table"
rowKey="id"
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
:columns="columns"
:data="loadData"
>
<span slot="action" slot-scope="text, record">
<a v-if="editEnabel" @click="handleEdit(record)">编辑</a>
<a-divider type="vertical" />
<a v-if="removeEnable" @click="delByIds([record.id])">删除</a>
</span>
</s-table>
<wisdomDevice-modal ref="modal" @ok="handleOk" />
</a-card>
</template>
<script>
import { STable } from '@/components'
import { getWisdomDeviceList, delWisdomDevice } from '@/api/admin/wisdomDevice'
import WisdomDeviceModal from './modules/WisdomDeviceModal.vue'
import { checkPermission } from '@/utils/permissions'
export default {
name: 'TableList',
components: {
STable,
WisdomDeviceModal
},
data () {
return {
labelCol: {
xs: { span: 24 },
sm: { span: 5 }
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 16 }
},
form: this.$form.createForm(this),
mdl: {},
// /
advanced: false,
//
queryParam: {},
//
columns: [
{
title: '设备名称',
dataIndex: 'equipmentName'
},
{
title: '设备编号',
dataIndex: 'equipmentNum'
},
{
title: '会议室名称',
dataIndex: 'contentName'
},
{
title: '操作',
width: '200px',
dataIndex: 'action',
scopedSlots: { customRender: 'action' }
}
],
// Promise
loadData: parameter => {
return getWisdomDeviceList(Object.assign(parameter, this.queryParam))
},
selectedRowKeys: [],
selectedRows: [],
addEnable: checkPermission('wisdom:wisdomDevice:add'),
editEnabel: checkPermission('wisdom:wisdomDevice:edit'),
removeEnable: checkPermission('wisdom:wisdomDevice:remove')
}
},
filters: {},
created () {
},
methods: {
onSelectChange (selectedRowKeys, selectedRows) {
this.selectedRowKeys = selectedRowKeys
this.selectedRows = selectedRows
},
handleAdd () {
this.$refs.modal.add()
},
handleEdit (record) {
this.$refs.modal.edit(record)
},
handleOk () {
this.$refs.table.refresh(true)
console.log('handleSaveOk')
},
delByIds (ids) {
delWisdomDevice({ ids: ids.join(',') }).then(res => {
if (res.code === 0) {
this.$message.success('删除成功')
this.handleOk()
} else {
this.$message.error(res.msg)
}
this.selectedRowKeys = []
})
}
},
watch: {
/*
'selectedRows': function (selectedRows) {
this.needTotalList = this.needTotalList.map(item => {
return {
...item,
total: selectedRows.reduce( (sum, val) => {
return sum + val[item.dataIndex]
}, 0)
}
})
}
*/
}
}
</script>

View File

@ -1,155 +0,0 @@
<template>
<a-card :bordered="false">
<div class="table-page-search-wrapper">
<a-form layout="inline">
<a-row :gutter="48">
<a-col :md="5" :sm="15">
<a-form-item label="面板id">
<a-input placeholder="请输入面板id" v-model="queryParam.panelId" />
</a-form-item>
</a-col>
<a-col :md="5" :sm="15">
<a-form-item label="设备id">
<a-input placeholder="请输入设备id" v-model="queryParam.equipmentId" />
</a-form-item>
</a-col>
<a-col :md="8" :sm="24">
<span class="table-page-search-submitButtons">
<a-button type="primary" @click="$refs.table.refresh(true)">查询</a-button>
<a-button style="margin-left: 8px" @click="() => queryParam = {}">重置</a-button>
</span>
</a-col>
</a-row>
</a-form>
</div>
<div class="table-operator">
<a-button v-if="addEnable" type="primary" icon="plus" @click="$refs.modal.add()">新建</a-button>
<a-dropdown v-if="removeEnable&&selectedRowKeys.length > 0">
<a-button type="danger" icon="delete" @click="delByIds(selectedRowKeys)">删除</a-button>
</a-dropdown>
</div>
<s-table
size="default"
ref="table"
rowKey="id"
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
:columns="columns"
:data="loadData"
>
<span slot="action" slot-scope="text, record">
<a v-if="editEnabel" @click="handleEdit(record)">编辑</a>
<a-divider type="vertical" />
<a v-if="removeEnable" @click="delByIds([record.id])">删除</a>
</span>
</s-table>
<wisdomPanelEquipment-modal ref="modal" @ok="handleOk" />
</a-card>
</template>
<script>
import { STable } from '@/components'
import { delWisdomPanelEquipment, getWisdomPanelEquipmentList } from '@/api/admin/wisdomPanelEquipment'
import WisdomPanelEquipmentModal from './modules/WisdomPanelEquipmentModal.vue'
import { checkPermission } from '@/utils/permissions'
export default {
name: 'TableList',
components: {
STable,
WisdomPanelEquipmentModal
},
data () {
return {
labelCol: {
xs: { span: 24 },
sm: { span: 5 }
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 16 }
},
form: this.$form.createForm(this),
mdl: {},
// /
advanced: false,
//
queryParam: {},
//
columns: [
{
title: '面板id',
dataIndex: 'panelId'
},
{
title: '设备id',
dataIndex: 'equipmentId'
},
{
title: '类型openclose',
dataIndex: 'type'
},
{
title: '操作',
width: '200px',
dataIndex: 'action',
scopedSlots: { customRender: 'action' }
}
],
// Promise
loadData: parameter => {
return getWisdomPanelEquipmentList(Object.assign(parameter, this.queryParam))
},
selectedRowKeys: [],
selectedRows: [],
addEnable: checkPermission('admin:wisdomPanelEquipment:add'),
editEnabel: checkPermission('admin:wisdomPanelEquipment:edit'),
removeEnable: checkPermission('admin:wisdomPanelEquipment:remove')
}
},
filters: {},
created () {
},
methods: {
onSelectChange (selectedRowKeys, selectedRows) {
this.selectedRowKeys = selectedRowKeys
this.selectedRows = selectedRows
},
handleAdd () {
this.$refs.modal.add()
},
handleEdit (record) {
this.$refs.modal.edit(record)
},
handleOk () {
this.$refs.table.refresh(true)
console.log('handleSaveOk')
},
delByIds (ids) {
delWisdomPanelEquipment({ ids: ids.join(',') }).then(res => {
if (res.code === 0) {
this.$message.success('删除成功')
this.handleOk()
} else {
this.$message.error(res.msg)
}
this.selectedRowKeys = []
})
}
},
watch: {
/*
'selectedRows': function (selectedRows) {
this.needTotalList = this.needTotalList.map(item => {
return {
...item,
total: selectedRows.reduce( (sum, val) => {
return sum + val[item.dataIndex]
}, 0)
}
})
}
*/
}
}
</script>

View File

@ -1,150 +0,0 @@
<template>
<a-card :bordered="false">
<div class="table-page-search-wrapper">
<a-form layout="inline">
<a-row :gutter="48">
<a-col :md="5" :sm="15">
<a-form-item label="面板名称">
<a-input placeholder="请输入面板名称" v-model="queryParam.panelName" />
</a-form-item>
</a-col>
<a-col :md="8" :sm="24">
<span class="table-page-search-submitButtons">
<a-button type="primary" @click="$refs.table.refresh(true)">查询</a-button>
<a-button style="margin-left: 8px" @click="() => queryParam = {}">重置</a-button>
</span>
</a-col>
</a-row>
</a-form>
</div>
<div class="table-operator">
<a-button v-if="addEnable" type="primary" icon="plus" @click="$refs.modal.add()">新建</a-button>
<a-dropdown v-if="removeEnable&&selectedRowKeys.length > 0">
<a-button type="danger" icon="delete" @click="delByIds(selectedRowKeys)">删除</a-button>
</a-dropdown>
</div>
<s-table
size="default"
ref="table"
rowKey="id"
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
:columns="columns"
:data="loadData"
>
<span slot="action" slot-scope="text, record">
<a v-if="editEnabel" @click="handleEdit(record)">编辑</a>
<a-divider type="vertical" />
<a v-if="removeEnable" @click="delByIds([record.id])">删除</a>
</span>
</s-table>
<wisdomPanel-modal ref="modal" @ok="handleOk" />
</a-card>
</template>
<script>
import { STable } from '@/components'
import { delWisdomPanel, getWisdomPanelList } from '@/api/admin/wisdomPanel'
import WisdomPanelModal from './modules/WisdomPanelModal.vue'
import { checkPermission } from '@/utils/permissions'
export default {
name: 'TableList',
components: {
STable,
WisdomPanelModal
},
data () {
return {
labelCol: {
xs: { span: 24 },
sm: { span: 5 }
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 16 }
},
form: this.$form.createForm(this),
mdl: {},
// /
advanced: false,
//
queryParam: {},
//
columns: [
{
title: '面板名称',
dataIndex: 'panelName'
},
{
title: '按钮id',
dataIndex: 'buttonId'
},
{
title: '房间id',
dataIndex: 'meetingName'
},
{
title: '操作',
width: '200px',
dataIndex: 'action',
scopedSlots: { customRender: 'action' }
}
],
// Promise
loadData: parameter => {
return getWisdomPanelList(Object.assign(parameter, this.queryParam))
},
selectedRowKeys: [],
selectedRows: [],
addEnable: checkPermission('admin:panel:add'),
editEnabel: checkPermission('admin:panel:edit'),
removeEnable: checkPermission('admin:panel:remove')
}
},
filters: {},
created () {
},
methods: {
onSelectChange (selectedRowKeys, selectedRows) {
this.selectedRowKeys = selectedRowKeys
this.selectedRows = selectedRows
},
handleAdd () {
this.$refs.modal.add()
},
handleEdit (record) {
this.$refs.modal.edit(record)
},
handleOk () {
this.$refs.table.refresh(true)
console.log('handleSaveOk')
},
delByIds (ids) {
delWisdomPanel({ ids: ids.join(',') }).then(res => {
if (res.code === 0) {
this.$message.success('删除成功')
this.handleOk()
} else {
this.$message.error(res.msg)
}
this.selectedRowKeys = []
})
}
},
watch: {
/*
'selectedRows': function (selectedRows) {
this.needTotalList = this.needTotalList.map(item => {
return {
...item,
total: selectedRows.reduce( (sum, val) => {
return sum + val[item.dataIndex]
}, 0)
}
})
}
*/
}
}
</script>

View File

@ -1,147 +0,0 @@
<template>
<a-card :bordered="false">
<div class="table-page-search-wrapper">
<a-form layout="inline">
<a-row :gutter="48">
<a-col :md="5" :sm="15">
<a-form-item label="名称">
<a-input placeholder="请输入名称" v-model="queryParam.meetingName"/>
</a-form-item>
</a-col>
<a-col :md="8" :sm="24">
<span class="table-page-search-submitButtons">
<a-button type="primary" @click="$refs.table.refresh(true)">查询</a-button>
<a-button style="margin-left: 8px" @click="() => queryParam = {}">重置</a-button>
</span>
</a-col>
</a-row>
</a-form>
</div>
<div class="table-operator">
<a-button v-if="addEnable" type="primary" icon="plus" @click="$refs.modal.add()">新建</a-button>
<a-dropdown v-if="removeEnable&&selectedRowKeys.length > 0">
<a-button type="danger" icon="delete" @click="delByIds(selectedRowKeys)">删除</a-button>
</a-dropdown>
</div>
<s-table
size="default"
ref="table"
rowKey="id"
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
:columns="columns"
:data="loadData"
>
<span slot="action" slot-scope="text, record">
<a v-if="editEnabel" @click="handleEdit(record)">编辑</a>
<a-divider type="vertical" />
<a v-if="removeEnable" @click="delByIds([record.id])">删除</a>
</span>
</s-table>
<wisdomRoom-modal ref="modal" @ok="handleOk"/>
</a-card>
</template>
<script>
import {STable} from '@/components'
import {delWisdomRoom,getWisdomRoomList} from '@/api/admin/wisdomRoom'
import WisdomRoomModal from './modules/WisdomRoomModal.vue'
import {checkPermission} from '@/utils/permissions'
export default {
name: 'TableList',
components: {
STable,
WisdomRoomModal
},
data () {
return {
labelCol: {
xs: { span: 24 },
sm: { span: 5 }
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 16 }
},
form: this.$form.createForm(this),
mdl: {},
// /
advanced: false,
//
queryParam: {},
//
columns: [
{
title: '名称',
dataIndex: 'meetingName'
},
{
title: '备注',
dataIndex: 'remake'
},
{
title: '操作',
width: '200px',
dataIndex: 'action',
scopedSlots: { customRender: 'action' }
}
],
// Promise
loadData: parameter => {
return getWisdomRoomList(Object.assign(parameter, this.queryParam))
},
selectedRowKeys: [],
selectedRows: [],
addEnable: checkPermission('wisdom:wisdomRoom:add'),
editEnabel: checkPermission('wisdom:wisdomRoom:edit'),
removeEnable: checkPermission('wisdom:wisdomRoom:remove')
}
},
filters: {
},
created () {
},
methods: {
onSelectChange (selectedRowKeys, selectedRows) {
this.selectedRowKeys = selectedRowKeys
this.selectedRows = selectedRows
},
handleAdd () {
this.$refs.modal.add()
},
handleEdit (record) {
this.$refs.modal.edit(record)
},
handleOk () {
this.$refs.table.refresh(true)
console.log('handleSaveOk')
},
delByIds (ids) {
delWisdomRoom({ ids: ids.join(',') }).then(res => {
if (res.code === 0) {
this.$message.success('删除成功')
this.handleOk()
} else {
this.$message.error(res.msg)
}
this.selectedRowKeys = []
})
}
},
watch: {
/*
'selectedRows': function (selectedRows) {
this.needTotalList = this.needTotalList.map(item => {
return {
...item,
total: selectedRows.reduce( (sum, val) => {
return sum + val[item.dataIndex]
}, 0)
}
})
}
*/
}
}
</script>

View File

@ -1,164 +0,0 @@
<template>
<a-card :bordered="false">
<div class="table-page-search-wrapper">
<a-form layout="inline">
<a-row :gutter="48">
<a-col :md="5" :sm="15">
<a-form-item label="房间id">
<a-input placeholder="请输入房间id" v-model="queryParam.wisdomRoomId" />
</a-form-item>
</a-col>
<a-col :md="5" :sm="15">
<a-form-item label="用户id">
<a-input placeholder="请输入用户id" v-model="queryParam.staffId" />
</a-form-item>
</a-col>
<a-col :md="5" :sm="15">
<a-form-item label="园区ID">
<a-input placeholder="请输入园区ID" v-model="queryParam.parkId" />
</a-form-item>
</a-col>
<a-col :md="8" :sm="24">
<span class="table-page-search-submitButtons">
<a-button type="primary" @click="$refs.table.refresh(true)">查询</a-button>
<a-button style="margin-left: 8px" @click="() => queryParam = {}">重置</a-button>
</span>
</a-col>
</a-row>
</a-form>
</div>
<div class="table-operator">
<a-button type="primary" icon="plus" @click="$refs.modal.add()">新建</a-button>
<a-dropdown v-if="removeEnable&&selectedRowKeys.length > 0">
<a-button type="danger" icon="delete" @click="delByIds(selectedRowKeys)">删除</a-button>
</a-dropdown>
</div>
<s-table
size="default"
ref="table"
rowKey="id"
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
:columns="columns"
:data="loadData"
>
<span slot="action" slot-scope="text, record">
<a v-if="editEnabel" @click="handleEdit(record)">编辑</a>
<a-divider type="vertical" />
<a v-if="removeEnable" @click="delByIds([record.id])">删除</a>
</span>
</s-table>
<wisdomStaff-modal ref="modal" @ok="handleOk" />
</a-card>
</template>
<script>
import { STable } from '@/components'
import { delWisdomStaff, getWisdomStaffList } from '@/api/admin/wisdomStaff'
import WisdomStaffModal from './modules/WisdomStaffModal.vue'
import { checkPermission } from '@/utils/permissions'
export default {
name: 'TableList',
components: {
STable,
WisdomStaffModal
},
data () {
return {
labelCol: {
xs: { span: 24 },
sm: { span: 5 }
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 16 }
},
form: this.$form.createForm(this),
mdl: {},
// /
advanced: false,
//
queryParam: {},
//
columns: [
{
title: '房间id',
dataIndex: 'wisdomRoomId'
},
{
title: '用户id',
dataIndex: 'staffId'
},
{
title: '园区ID',
dataIndex: 'parkId'
},
{
title: '操作',
width: '200px',
dataIndex: 'action',
scopedSlots: { customRender: 'action' }
}
],
// Promise
loadData: parameter => {
return getWisdomStaffList(Object.assign(parameter, this.queryParam))
},
selectedRowKeys: [],
selectedRows: [],
addEnable: checkPermission('admin:wisdomStaff:add'),
editEnabel: checkPermission('admin:wisdomStaff:edit'),
removeEnable: checkPermission('admin:wisdomStaff:remove')
}
},
filters: {},
created () {
this.getPer()
},
methods: {
getPer () {
console.log(this.addEnable)
},
onSelectChange (selectedRowKeys, selectedRows) {
this.selectedRowKeys = selectedRowKeys
this.selectedRows = selectedRows
},
handleAdd () {
this.$refs.modal.add()
},
handleEdit (record) {
this.$refs.modal.edit(record)
},
handleOk () {
this.$refs.table.refresh(true)
console.log('handleSaveOk')
},
delByIds (ids) {
delWisdomStaff({ ids: ids.join(',') }).then(res => {
if (res.code === 0) {
this.$message.success('删除成功')
this.handleOk()
} else {
this.$message.error(res.msg)
}
this.selectedRowKeys = []
})
}
},
watch: {
/*
'selectedRows': function (selectedRows) {
this.needTotalList = this.needTotalList.map(item => {
return {
...item,
total: selectedRows.reduce( (sum, val) => {
return sum + val[item.dataIndex]
}, 0)
}
})
}
*/
}
}
</script>

View File

@ -28,7 +28,6 @@
</a-form-item> </a-form-item>
<a-form-item :labelCol='labelCol' :wrapperCol='wrapperCol' label='照片'> <a-form-item :labelCol='labelCol' :wrapperCol='wrapperCol' label='照片'>
<a-upload <a-upload
v-decorator="['photo' ,{rules: [{required: true, message: '请上传照片'}]}]"
list-type='picture-card' list-type='picture-card'
class='avatar-uploader' class='avatar-uploader'
:show-upload-list='false' :show-upload-list='false'
@ -63,7 +62,7 @@
</a-upload> </a-upload>
</a-form-item> </a-form-item>
<a-form-item :labelCol='labelCol' :wrapperCol='wrapperCol' label='昵称'> <a-form-item :labelCol='labelCol' :wrapperCol='wrapperCol' label='昵称'>
<a-input placeholder='昵称' v-decorator="['username']" /> <a-input placeholder='昵称' v-decorator="['username', {rules: [{required: true, message: '请输入昵称'}]}]" />
</a-form-item> </a-form-item>
<a-form-item :labelCol='labelCol' :wrapperCol='wrapperCol' label='身份证号'> <a-form-item :labelCol='labelCol' :wrapperCol='wrapperCol' label='身份证号'>
<a-input placeholder='身份证号' v-decorator="['cardNo']" /> <a-input placeholder='身份证号' v-decorator="['cardNo']" />

View File

@ -1,170 +0,0 @@
<template>
<a-modal
title="操作"
style="top: 20px;"
:width="800"
v-model="visible"
:confirmLoading="confirmLoading"
@ok="handleSubmit"
>
<a-form :form="form">
<a-form-item style="display:none">
<a-input v-decorator="['id']" />
</a-form-item>
<a-form-item style="display:none">
<a-input v-decorator="['version']" />
</a-form-item>
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="设备分类">
<a-select v-decorator="['type', {rules: [{ required: true, message: '请选择分类' }]}]">
<a-select-option v-for="item in typeData" :key="item.value">{{ item.value }}</a-select-option>
</a-select>
</a-form-item>
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="设备名称">
<a-input placeholder="设备名称"
v-decorator="['equipmentName' , {rules: [{ required: true, message: '请输入设备名称' }]}]" />
</a-form-item>
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="设备编号">
<a-input placeholder="设备编号"
v-decorator="['equipmentNum' , {rules: [{ required: true, message: '请输入设备编号' }]}]" />
</a-form-item>
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="会议室">
<a-select :label-in-value="true"
v-decorator="['contentId', {rules: [{ required: true, message: '请选择会议室' }]}]"
@change="selectRoom">
<a-select-option v-for="item in roomList" :key="item.id" :value="item.id">{{ item.meetingName }}
</a-select-option>
</a-select>
</a-form-item>
</a-form>
</a-modal>
</template>
<script>
import { saveWisdomDevice } from '@/api/admin/wisdomDevice'
import { getWisdomRoomList } from '@/api/admin/wisdomRoom'
import pick from 'lodash.pick'
export default {
name: 'WisdomDeviceModal',
props: {},
components: {},
data () {
return {
visible: false,
labelCol: {
xs: { span: 24 },
sm: { span: 5 }
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 16 }
},
roomList: [],
typeData: [
{
key: '1',
value: '灯条'
},
{
key: '2',
value: '雾化玻璃'
},
{
key: '3',
value: '窗帘'
},
{
key: '4',
value: '插座'
},
{
key: '5',
value: '调光灯'
},
{
key: '6',
value: '门锁'
},
{
key: '7',
value: '开门控制器'
}
],
confirmLoading: false,
mdl: {},
roomId: '',
roomName: '',
form: this.$form.createForm(this)
}
},
beforeCreate () {
},
created () {
this.selectRoomList()
},
methods: {
selectRoomList () {
getWisdomRoomList().then(res => {
console.log(res)
this.roomList = res.rows
})
},
selectRoom (item) {
console.log(item)
this.roomId = item.key
this.roomName = item.label
},
add () {
this.form.resetFields()
this.edit({ id: 0 })
},
edit (record) {
this.mdl = Object.assign(record)
this.visible = true
this.$nextTick(() => {
this.form.setFieldsValue(pick(this.mdl, 'id', 'type', 'equipmentName', 'status', 'equipmentNum', 'pic', 'deleteFlag', 'createBy', 'createTime', 'updateBy', 'updateTime', 'ip', 'tenantId', 'parkId', 'contentId', 'contentName'))
})
},
handleSubmit (e) {
e.preventDefault()
this.form.validateFields((err, values) => {
if (!err) {
console.log('Received values of form: ', values)
this.confirmLoading = true
values.wisdomRoomId = this.roomId
console.log(this.roomName)
values.contentName = this.roomName
saveWisdomDevice(values).then(res => {
if (res.code === 0) {
this.$message.success('保存成功')
this.$emit('ok')
this.visible = false
} else {
this.$message.error(res.msg)
}
}).catch(() => {
this.$message.error('系统错误,请稍后再试')
}).finally(() => {
this.confirmLoading = false
})
}
})
}
},
watch: {
/*
'selectedRows': function (selectedRows) {
this.needTotalList = this.needTotalList.map(item => {
return {
...item,
total: selectedRows.reduce( (sum, val) => {
return sum + val[item.dataIndex]
}, 0)
}
})
}
*/
}
}
</script>

View File

@ -1,106 +0,0 @@
<template>
<a-modal
title="操作"
style="top: 20px;"
:width="800"
v-model="visible"
:confirmLoading="confirmLoading"
@ok="handleSubmit"
>
<a-form :form="form">
<a-form-item style="display:none">
<a-input v-decorator="['id']"/>
</a-form-item>
<a-form-item style="display:none">
<a-input v-decorator="['version']"/>
</a-form-item>
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="面板id">
<a-input placeholder="面板id" v-decorator="['panelId']"/>
</a-form-item>
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="设备id">
<a-input placeholder="设备id" v-decorator="['equipmentId']"/>
</a-form-item>
</a-form>
</a-modal>
</template>
<script>
import {saveWisdomPanelEquipment} from '@/api/admin/wisdomPanelEquipment'
import pick from 'lodash.pick'
export default {
name: 'WisdomPanelEquipmentModal',
props: {
},
components: {
},
data () {
return {
visible: false,
labelCol: {
xs: { span: 24 },
sm: { span: 5 }
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 16 }
},
confirmLoading: false,
mdl: {},
form: this.$form.createForm(this)
}
},
beforeCreate () {
},
created () {
},
methods: {
add () {
this.form.resetFields()
this.edit({ id: 0 })
},
edit (record) {
this.mdl = Object.assign(record)
this.visible = true
this.$nextTick(() => {
this.form.setFieldsValue(pick(this.mdl, 'id', 'panelId', 'equipmentId', 'createTime', 'type'))
})
},
handleSubmit (e) {
e.preventDefault()
this.form.validateFields((err, values) => {
if (!err) {
console.log('Received values of form: ', values)
this.confirmLoading = true
saveWisdomPanelEquipment(values).then(res => {
if (res.code === 0) {
this.$message.success('保存成功')
this.$emit('ok')
this.visible = false
} else {
this.$message.error(res.msg)
}
}).catch(() => {
this.$message.error('系统错误,请稍后再试')
}).finally(() => {
this.confirmLoading = false
})
}
})
}
},
watch: {
/*
'selectedRows': function (selectedRows) {
this.needTotalList = this.needTotalList.map(item => {
return {
...item,
total: selectedRows.reduce( (sum, val) => {
return sum + val[item.dataIndex]
}, 0)
}
})
}
*/
}
}
</script>

View File

@ -1,133 +0,0 @@
<template>
<a-modal
title="操作"
style="top: 20px;"
:width="800"
v-model="visible"
:confirmLoading="confirmLoading"
@ok="handleSubmit"
>
<a-form :form="form">
<a-form-item style="display:none">
<a-input v-decorator="['id']"/>
</a-form-item>
<a-form-item style="display:none">
<a-input v-decorator="['version']"/>
</a-form-item>
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="面板名称">
<a-input placeholder="面板名称" v-decorator="['panelName']"/>
</a-form-item>
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="按钮id">
<a-input placeholder="按钮" v-decorator="['buttonId']"/>
</a-form-item>
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="房间">
<a-select :label-in-value="true"
v-decorator="['wisdomRoom', {rules: [{ required: true, message: '请选择房间' }]}]"
@change="selectRoom">
<a-select-option v-for="item in roomList" :key="item.id" :value="item.id">{{ item.meetingName }}
</a-select-option>
</a-select>
</a-form-item>
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="控制面板id">
<a-input placeholder="控制面板id" v-decorator="['panelId']"/>
</a-form-item>
</a-form>
</a-modal>
</template>
<script>
import {saveWisdomPanel} from '@/api/admin/wisdomPanel'
import { getWisdomRoomList } from '@/api/admin/wisdomRoom'
import pick from 'lodash.pick'
export default {
name: 'WisdomPanelModal',
props: {
},
components: {
},
data () {
return {
visible: false,
labelCol: {
xs: { span: 24 },
sm: { span: 5 }
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 16 }
},
confirmLoading: false,
mdl: {},
form: this.$form.createForm(this),
roomList: []
}
},
beforeCreate () {
},
created () {
this.selectRoomList()
},
methods: {
selectRoomList () {
getWisdomRoomList().then(res => {
console.log(res)
this.roomList = res.rows
})
},
selectRoom (item) {
console.log(item)
this.roomId = item.key
this.roomName = item.label
},
add () {
this.form.resetFields()
this.edit({ id: 0 })
},
edit (record) {
this.mdl = Object.assign(record)
this.visible = true
this.$nextTick(() => {
this.form.setFieldsValue(pick(this.mdl, 'id', 'panelName', 'createTime', 'buttonId', 'wisdomRoom', 'panelId'))
})
},
handleSubmit (e) {
e.preventDefault()
this.form.validateFields((err, values) => {
if (!err) {
console.log('Received values of form: ', values)
this.confirmLoading = true
values.wisdomRoom = this.roomId
saveWisdomPanel(values).then(res => {
if (res.code === 0) {
this.$message.success('保存成功')
this.$emit('ok')
this.visible = false
} else {
this.$message.error(res.msg)
}
}).catch(() => {
this.$message.error('系统错误,请稍后再试')
}).finally(() => {
this.confirmLoading = false
})
}
})
}
},
watch: {
/*
'selectedRows': function (selectedRows) {
this.needTotalList = this.needTotalList.map(item => {
return {
...item,
total: selectedRows.reduce( (sum, val) => {
return sum + val[item.dataIndex]
}, 0)
}
})
}
*/
}
}
</script>

View File

@ -1,123 +0,0 @@
<template>
<a-modal
title="操作"
style="top: 20px;"
:width="800"
v-model="visible"
:confirmLoading="confirmLoading"
@ok="handleSubmit"
>
<a-form :form="form">
<a-form-item style="display:none">
<a-input v-decorator="['id']" />
</a-form-item>
<a-form-item style="display:none">
<a-input v-decorator="['version']" />
</a-form-item>
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="会议室名称">
<a-input placeholder="会议室名称"
v-decorator="['meetingName',{rules: [{ required: true, message: '请输入会议室名称' }]}]" />
</a-form-item>
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="管理员">
<a-select show-search mode="multiple"
v-decorator="['staffId', {rules: [{ required: true, message: '管理员' }]}]" optionFilterProp="label">
<a-select-option v-for="item in staffLists" :key="item.id" :label="item.mobile">{{ item.username
}}--{{ item.mobile }}
</a-select-option>
</a-select>
</a-form-item>
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="备注">
<a-input placeholder="备注" v-decorator="['remake']" />
</a-form-item>
</a-form>
</a-modal>
</template>
<script>
import { saveWisdomRoom, selectStaff } from '@/api/admin/wisdomRoom'
import pick from 'lodash.pick'
export default {
name: 'WisdomRoomModal',
props: {},
components: {},
data () {
return {
visible: false,
labelCol: {
xs: { span: 24 },
sm: { span: 5 }
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 16 }
},
confirmLoading: false,
mdl: {},
staffLists: [],
form: this.$form.createForm(this)
}
},
beforeCreate () {
},
created () {
},
methods: {
selectStaffList () {
selectStaff().then(res => {
this.staffLists = res.data
})
},
add () {
this.form.resetFields()
this.edit({ id: 0 })
},
edit (record) {
this.selectStaffList()
this.mdl = Object.assign(record)
this.visible = true
this.$nextTick(() => {
this.form.setFieldsValue(pick(this.mdl, 'id', 'type', 'staffId', 'staffLists', 'meetingName', 'startTime', 'endDate', 'createBy', 'createTime', 'updateBy', 'updateTime', 'version', 'deleteFlag', 'remake', 'tenantId', 'parkId'))
})
},
handleSubmit (e) {
e.preventDefault()
this.form.validateFields((err, values) => {
if (!err) {
console.log('Received values of form: ', values)
this.confirmLoading = true
saveWisdomRoom(values).then(res => {
if (res.code === 0) {
this.$message.success('保存成功')
this.$emit('ok')
this.visible = false
} else {
this.$message.error(res.msg)
}
}).catch(() => {
this.$message.error('系统错误,请稍后再试')
}).finally(() => {
this.confirmLoading = false
})
}
})
}
},
watch: {
/*
'selectedRows': function (selectedRows) {
this.needTotalList = this.needTotalList.map(item => {
return {
...item,
total: selectedRows.reduce( (sum, val) => {
return sum + val[item.dataIndex]
}, 0)
}
})
}
*/
}
}
</script>

View File

@ -1,118 +0,0 @@
<template>
<a-modal
title="操作"
style="top: 20px;"
:width="800"
v-model="visible"
:confirmLoading="confirmLoading"
@ok="handleSubmit"
>
<a-form :form="form">
<a-form-item style="display:none">
<a-input v-decorator="['id']"/>
</a-form-item>
<a-form-item style="display:none">
<a-input v-decorator="['version']"/>
</a-form-item>
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="房间id">
<a-input placeholder="房间id" v-decorator="['wisdomRoomId']"/>
</a-form-item>
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="用户id">
<a-input placeholder="用户id" v-decorator="['staffId']"/>
</a-form-item>
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="创建者">
<a-input placeholder="创建者" v-decorator="['createBy']"/>
</a-form-item>
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="更新者">
<a-input placeholder="更新者" v-decorator="['updateBy']"/>
</a-form-item>
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="租户ID">
<a-input placeholder="租户ID" v-decorator="['tenantId']"/>
</a-form-item>
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="园区ID">
<a-input placeholder="园区ID" v-decorator="['parkId']"/>
</a-form-item>
</a-form>
</a-modal>
</template>
<script>
import {saveWisdomStaff} from '@/api/admin/wisdomStaff'
import pick from 'lodash.pick'
export default {
name: 'WisdomStaffModal',
props: {
},
components: {
},
data () {
return {
visible: false,
labelCol: {
xs: { span: 24 },
sm: { span: 5 }
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 16 }
},
confirmLoading: false,
mdl: {},
form: this.$form.createForm(this)
}
},
beforeCreate () {
},
created () {
},
methods: {
add () {
this.form.resetFields()
this.edit({ id: 0 })
},
edit (record) {
this.mdl = Object.assign(record)
this.visible = true
this.$nextTick(() => {
this.form.setFieldsValue(pick(this.mdl, 'id', 'wisdomRoomId', 'staffId', 'deleteFlag', 'createBy', 'createTime', 'updateBy', 'updateTime', 'tenantId', 'parkId'))
})
},
handleSubmit (e) {
e.preventDefault()
this.form.validateFields((err, values) => {
if (!err) {
console.log('Received values of form: ', values)
this.confirmLoading = true
saveWisdomStaff(values).then(res => {
if (res.code === 0) {
this.$message.success('保存成功')
this.$emit('ok')
this.visible = false
} else {
this.$message.error(res.msg)
}
}).catch(() => {
this.$message.error('系统错误,请稍后再试')
}).finally(() => {
this.confirmLoading = false
})
}
})
}
},
watch: {
/*
'selectedRows': function (selectedRows) {
this.needTotalList = this.needTotalList.map(item => {
return {
...item,
total: selectedRows.reduce( (sum, val) => {
return sum + val[item.dataIndex]
}, 0)
}
})
}
*/
}
}
</script>

View File

@ -1,198 +1,201 @@
<template> <template>
<div v-if="true"> <div>
<a-row :gutter="24"> <a-card style="width: 100%">
<a-col :sm="24" :md="12" :xl="6" :style="{ marginBottom: '24px' }" @click="navBill(0)"> <p style="font-weight: bold;font-size:30px"> 欢迎进入人工智能产业园管理系统</p>
<chart-card :loading="loading" title="本月总应收账单(元)" :total="totalFee | NumFormat">
<template slot="footer">
<span>总已收款<span> {{ receive | NumFormat }} </span></span>
<span style="float:right;">总未收款<span> {{ unReceive | NumFormat }} </span></span>
</template>
</chart-card>
</a-col>
<a-col :sm="24" :md="12" :xl="6" :style="{ marginBottom: '24px' }" @click="navBill(0)">
<chart-card :loading="loading" title="物业管理费应收账单(元)" :total="billManagementData.totalFee | NumFormat">
<template slot="footer">
<span>已收款<span> {{ billManagementData.receive | NumFormat }} </span></span>
<span style="float:right;">未收款<span> {{ billManagementData.unReceive | NumFormat }} </span></span>
</template>
</chart-card>
</a-col>
<a-col :sm="24" :md="12" :xl="6" :style="{ marginBottom: '24px' }" @click="navBill(0)">
<chart-card :loading="loading" title="租金应收账单(元)" :total="billRentData.totalFee | NumFormat">
<template slot="footer">
<span>已收款<span> {{ billRentData.receive | NumFormat }} </span></span>
<span style="float:right;">未收款<span> {{ billRentData.unReceive | NumFormat }} </span></span>
</template>
</chart-card>
</a-col>
<a-col :sm="24" :md="12" :xl="6" :style="{ marginBottom: '24px' }" @click="navBill(0)">
<chart-card :loading="loading" title="水电费应收账单(元)" :total="billPwData.totalFee | NumFormat">
<template slot="footer">
<span>已收款<span> {{ billPwData.receive | NumFormat }} </span></span>
<span style="float:right;">未收款<span> {{ billPwData.unReceive | NumFormat }} </span></span>
</template>
</chart-card>
</a-col>
</a-row>
<a-card :loading="loading" :bordered="false" :body-style="{padding: '0'}">
<div class="salesCard">
<a-tabs default-active-key="1" size="large" :tab-bar-style="{marginBottom: '24px', paddingLeft: '16px'}">
<div class="extra-wrapper" slot="tabBarExtraContent">
<div class="extra-item">
<a-radio-group :defaultValue="value1" button-style="solid" @change="timeChange">
<a-radio-button value="1">
本月
</a-radio-button>
<a-radio-button value="0">
本年
</a-radio-button>
</a-radio-group>
</div>
</div>
<a-tab-pane loading="true" tab="应收款" key="1">
<a-row>
<a-col :xl="16" :lg="12" :md="12" :sm="24" :xs="24">
<bar :data="barData" :scale="barDatascale" />
</a-col>
<a-col :xl="8" :lg="12" :md="12" :sm="24" :xs="24">
<rank-list title="企业应收账单TOP10排行榜" :list="rankList" />
</a-col>
</a-row>
</a-tab-pane>
<a-tab-pane tab="已收款" key="2">
<a-row>
<a-col :xl="16" :lg="12" :md="12" :sm="24" :xs="24">
<bar :data="barData2" :scale="barData2scale" />
</a-col>
<a-col :xl="8" :lg="12" :md="12" :sm="24" :xs="24">
<rank-list title="企业应收帐单排行榜" :list="rankList" />
</a-col>
</a-row>
</a-tab-pane>
<a-tab-pane tab="未收款" key="3">
<a-row>
<a-col :xl="24" :lg="12" :md="12" :sm="24" :xs="24">
<bar :data="barData3" :scale="barData3scale" />
</a-col>
</a-row>
</a-tab-pane>
</a-tabs>
</div>
</a-card> </a-card>
<!-- <a-row :gutter="24">-->
<!-- <a-col :sm="24" :md="12" :xl="6" :style="{ marginBottom: '24px' }" @click="navBill(0)">-->
<!-- <chart-card :loading="loading" title="本月总应收账单(元)" :total="totalFee | NumFormat">-->
<!-- <template slot="footer">-->
<!-- <span>总已收款<span> {{ receive | NumFormat }} </span></span>-->
<!-- <span style="float:right;">总未收款<span> {{ unReceive | NumFormat }} </span></span>-->
<!-- </template>-->
<!-- </chart-card>-->
<!-- </a-col>-->
<div class="antd-pro-pages-dashboard-analysis-twoColLayout" :class="!isMobile && 'desktop'" hidden="true"> <!-- <a-col :sm="24" :md="12" :xl="6" :style="{ marginBottom: '24px' }" @click="navBill(0)">-->
<a-row :gutter="24" type="flex" :style="{ marginTop: '24px' }"> <!-- <chart-card :loading="loading" title="物业管理费应收账单(元)" :total="billManagementData.totalFee | NumFormat">-->
<a-col :xl="12" :lg="24" :md="24" :sm="24" :xs="24"> <!-- <template slot="footer">-->
<a-card :loading="loading" :bordered="false" title="线上热门搜索" :style="{ height: '100%' }"> <!-- <span>已收款<span> {{ billManagementData.receive | NumFormat }} </span></span>-->
<a-dropdown :trigger="['click']" placement="bottomLeft" slot="extra"> <!-- <span style="float:right;">未收款<span> {{ billManagementData.unReceive | NumFormat }} </span></span>-->
<a class="ant-dropdown-link" href="#"> <!-- </template>-->
<a-icon type="ellipsis" /> <!-- </chart-card>-->
</a> <!-- </a-col>-->
<a-menu slot="overlay">
<a-menu-item>
<a href="javascript:;">操作一</a>
</a-menu-item>
<a-menu-item>
<a href="javascript:;">操作二</a>
</a-menu-item>
</a-menu>
</a-dropdown>
<a-row :gutter="68">
<a-col :xs="24" :sm="12" :style="{ marginBottom: ' 24px'}">
<number-info :total="12321" :sub-total="17.1">
<span slot="subtitle">
<span>搜索用户数</span>
<a-tooltip title="指标说明" slot="action">
<a-icon type="info-circle-o" :style="{ marginLeft: '8px' }" />
</a-tooltip>
</span>
</number-info>
<!-- miniChart -->
<div>
<mini-smooth-area :style="{ height: '45px' }" :dataSource="searchUserData" :scale="searchUserScale" />
</div>
</a-col>
<a-col :xs="24" :sm="12" :style="{ marginBottom: ' 24px'}">
<number-info :total="2.7" :sub-total="26.2" status="down">
<span slot="subtitle">
<span>人均搜索次数</span>
<a-tooltip title="指标说明" slot="action">
<a-icon type="info-circle-o" :style="{ marginLeft: '8px' }" />
</a-tooltip>
</span>
</number-info>
<!-- miniChart -->
<div>
<mini-smooth-area :style="{ height: '45px' }" :dataSource="searchUserData" :scale="searchUserScale" />
</div>
</a-col>
</a-row>
<div class="ant-table-wrapper">
<a-table
row-key="index"
size="small"
:columns="searchTableColumns"
:dataSource="searchData"
:pagination="{ pageSize: 5 }"
>
<span slot="range" slot-scope="text, record">
<trend :flag="record.status === 0 ? 'up' : 'down'">
{{ text }}%
</trend>
</span>
</a-table>
</div>
</a-card>
</a-col>
<a-col :xl="12" :lg="24" :md="24" :sm="24" :xs="24">
<a-card>
<div slot="extra" style="height: inherit;">
<span class="dashboard-analysis-iconGroup">
<a-dropdown :trigger="['click']" placement="bottomLeft">
<a-icon type="ellipsis" class="ant-dropdown-link" />
<a-menu slot="overlay">
<a-menu-item>
<a href="javascript:;">操作一</a>
</a-menu-item>
<a-menu-item>
<a href="javascript:;">操作二</a>
</a-menu-item>
</a-menu>
</a-dropdown>
</span>
<div class="analysis-salesTypeRadio">
<a-radio-group defaultValue="a">
<a-radio-button value="a">全部渠道</a-radio-button>
<a-radio-button value="b">线上</a-radio-button>
<a-radio-button value="c">门店</a-radio-button>
</a-radio-group>
</div>
</div> <!-- <a-col :sm="24" :md="12" :xl="6" :style="{ marginBottom: '24px' }" @click="navBill(0)">-->
<h4>销售额</h4> <!-- <chart-card :loading="loading" title="租金应收账单(元)" :total="billRentData.totalFee | NumFormat">-->
<div> <!-- <template slot="footer">-->
<!-- style="width: calc(100% - 240px);" --> <!-- <span>已收款<span> {{ billRentData.receive | NumFormat }} </span></span>-->
<div> <!-- <span style="float:right;">未收款<span> {{ billRentData.unReceive | NumFormat }} </span></span>-->
<v-chart :force-fit="true" :height="405" :data="pieData" :scale="pieScale"> <!-- </template>-->
<v-tooltip :showTitle="false" dataKey="item*percent" /> <!-- </chart-card>-->
<v-axis /> <!-- </a-col>-->
<!-- position="right" :offsetX="-140" -->
<v-legend dataKey="item" />
<v-pie position="percent" color="item" :vStyle="pieStyle" />
<v-coord type="theta" :radius="0.75" :innerRadius="0.6" />
</v-chart>
</div>
</div> <!-- <a-col :sm="24" :md="12" :xl="6" :style="{ marginBottom: '24px' }" @click="navBill(0)">-->
</a-card> <!-- <chart-card :loading="loading" title="水电费应收账单(元)" :total="billPwData.totalFee | NumFormat">-->
</a-col> <!-- <template slot="footer">-->
</a-row> <!-- <span>已收款<span> {{ billPwData.receive | NumFormat }} </span></span>-->
</div> <!-- <span style="float:right;">未收款<span> {{ billPwData.unReceive | NumFormat }} </span></span>-->
<!-- </template>-->
<!-- </chart-card>-->
<!-- </a-col>-->
<!-- </a-row>-->
<!-- <a-card :loading="loading" :bordered="false" :body-style="{padding: '0'}">-->
<!-- <div class="salesCard">-->
<!-- <a-tabs default-active-key="1" size="large" :tab-bar-style="{marginBottom: '24px', paddingLeft: '16px'}">-->
<!-- <div class="extra-wrapper" slot="tabBarExtraContent">-->
<!-- <div class="extra-item">-->
<!-- <a-radio-group :defaultValue="value1" button-style="solid" @change="timeChange">-->
<!-- <a-radio-button value="1">-->
<!-- 本月-->
<!-- </a-radio-button>-->
<!-- <a-radio-button value="0">-->
<!-- 本年-->
<!-- </a-radio-button>-->
<!-- </a-radio-group>-->
<!-- </div>-->
<!-- </div>-->
<!-- <a-tab-pane loading="true" tab="应收款" key="1">-->
<!-- <a-row>-->
<!-- <a-col :xl="16" :lg="12" :md="12" :sm="24" :xs="24">-->
<!-- <bar :data="barData" :scale="barDatascale" />-->
<!-- </a-col>-->
<!-- <a-col :xl="8" :lg="12" :md="12" :sm="24" :xs="24">-->
<!-- <rank-list title="企业应收账单TOP10排行榜" :list="rankList" />-->
<!-- </a-col>-->
<!-- </a-row>-->
<!-- </a-tab-pane>-->
<!-- <a-tab-pane tab="已收款" key="2">-->
<!-- <a-row>-->
<!-- <a-col :xl="16" :lg="12" :md="12" :sm="24" :xs="24">-->
<!-- <bar :data="barData2" :scale="barData2scale" />-->
<!-- </a-col>-->
<!-- <a-col :xl="8" :lg="12" :md="12" :sm="24" :xs="24">-->
<!-- <rank-list title="企业应收帐单排行榜" :list="rankList" />-->
<!-- </a-col>-->
<!-- </a-row>-->
<!-- </a-tab-pane>-->
<!-- <a-tab-pane tab="未收款" key="3">-->
<!-- <a-row>-->
<!-- <a-col :xl="24" :lg="12" :md="12" :sm="24" :xs="24">-->
<!-- <bar :data="barData3" :scale="barData3scale" />-->
<!-- </a-col>-->
<!-- </a-row>-->
<!-- </a-tab-pane>-->
<!-- </a-tabs>-->
<!-- </div>-->
<!-- </a-card>-->
<!-- <div class="antd-pro-pages-dashboard-analysis-twoColLayout" :class="!isMobile && 'desktop'" hidden="true">-->
<!-- <a-row :gutter="24" type="flex" :style="{ marginTop: '24px' }">-->
<!-- <a-col :xl="12" :lg="24" :md="24" :sm="24" :xs="24">-->
<!-- <a-card :loading="loading" :bordered="false" title="线上热门搜索" :style="{ height: '100%' }">-->
<!-- <a-dropdown :trigger="['click']" placement="bottomLeft" slot="extra">-->
<!-- <a class="ant-dropdown-link" href="#">-->
<!-- <a-icon type="ellipsis" />-->
<!-- </a>-->
<!-- <a-menu slot="overlay">-->
<!-- <a-menu-item>-->
<!-- <a href="javascript:;">操作一</a>-->
<!-- </a-menu-item>-->
<!-- <a-menu-item>-->
<!-- <a href="javascript:;">操作二</a>-->
<!-- </a-menu-item>-->
<!-- </a-menu>-->
<!-- </a-dropdown>-->
<!-- <a-row :gutter="68">-->
<!-- <a-col :xs="24" :sm="12" :style="{ marginBottom: ' 24px'}">-->
<!-- <number-info :total="12321" :sub-total="17.1">-->
<!-- <span slot="subtitle">-->
<!-- <span>搜索用户数</span>-->
<!-- <a-tooltip title="指标说明" slot="action">-->
<!-- <a-icon type="info-circle-o" :style="{ marginLeft: '8px' }" />-->
<!-- </a-tooltip>-->
<!-- </span>-->
<!-- </number-info>-->
<!-- &lt;!&ndash; miniChart &ndash;&gt;-->
<!-- <div>-->
<!-- <mini-smooth-area :style="{ height: '45px' }" :dataSource="searchUserData" :scale="searchUserScale" />-->
<!-- </div>-->
<!-- </a-col>-->
<!-- <a-col :xs="24" :sm="12" :style="{ marginBottom: ' 24px'}">-->
<!-- <number-info :total="2.7" :sub-total="26.2" status="down">-->
<!-- <span slot="subtitle">-->
<!-- <span>人均搜索次数</span>-->
<!-- <a-tooltip title="指标说明" slot="action">-->
<!-- <a-icon type="info-circle-o" :style="{ marginLeft: '8px' }" />-->
<!-- </a-tooltip>-->
<!-- </span>-->
<!-- </number-info>-->
<!-- &lt;!&ndash; miniChart &ndash;&gt;-->
<!-- <div>-->
<!-- <mini-smooth-area :style="{ height: '45px' }" :dataSource="searchUserData" :scale="searchUserScale" />-->
<!-- </div>-->
<!-- </a-col>-->
<!-- </a-row>-->
<!-- <div class="ant-table-wrapper">-->
<!-- <a-table-->
<!-- row-key="index"-->
<!-- size="small"-->
<!-- :columns="searchTableColumns"-->
<!-- :dataSource="searchData"-->
<!-- :pagination="{ pageSize: 5 }"-->
<!-- >-->
<!-- <span slot="range" slot-scope="text, record">-->
<!-- <trend :flag="record.status === 0 ? 'up' : 'down'">-->
<!-- {{ text }}%-->
<!-- </trend>-->
<!-- </span>-->
<!-- </a-table>-->
<!-- </div>-->
<!-- </a-card>-->
<!-- </a-col>-->
<!-- <a-col :xl="12" :lg="24" :md="24" :sm="24" :xs="24">-->
<!-- <a-card>-->
<!-- <div slot="extra" style="height: inherit;">-->
<!-- <span class="dashboard-analysis-iconGroup">-->
<!-- <a-dropdown :trigger="['click']" placement="bottomLeft">-->
<!-- <a-icon type="ellipsis" class="ant-dropdown-link" />-->
<!-- <a-menu slot="overlay">-->
<!-- <a-menu-item>-->
<!-- <a href="javascript:;">操作一</a>-->
<!-- </a-menu-item>-->
<!-- <a-menu-item>-->
<!-- <a href="javascript:;">操作二</a>-->
<!-- </a-menu-item>-->
<!-- </a-menu>-->
<!-- </a-dropdown>-->
<!-- </span>-->
<!-- <div class="analysis-salesTypeRadio">-->
<!-- <a-radio-group defaultValue="a">-->
<!-- <a-radio-button value="a">全部渠道</a-radio-button>-->
<!-- <a-radio-button value="b">线上</a-radio-button>-->
<!-- <a-radio-button value="c">门店</a-radio-button>-->
<!-- </a-radio-group>-->
<!-- </div>-->
<!-- </div>-->
<!-- <h4>销售额</h4>-->
<!-- <div>-->
<!-- &lt;!&ndash; style="width: calc(100% - 240px);" &ndash;&gt;-->
<!-- <div>-->
<!-- <v-chart :force-fit="true" :height="405" :data="pieData" :scale="pieScale">-->
<!-- <v-tooltip :showTitle="false" dataKey="item*percent" />-->
<!-- <v-axis />-->
<!-- &lt;!&ndash; position="right" :offsetX="-140" &ndash;&gt;-->
<!-- <v-legend dataKey="item" />-->
<!-- <v-pie position="percent" color="item" :vStyle="pieStyle" />-->
<!-- <v-coord type="theta" :radius="0.75" :innerRadius="0.6" />-->
<!-- </v-chart>-->
<!-- </div>-->
<!-- </div>-->
<!-- </a-card>-->
<!-- </a-col>-->
<!-- </a-row>-->
<!-- </div>-->
</div> </div>
</template> </template>

View File

@ -74,7 +74,7 @@
<a-form-item> <a-form-item>
<a-checkbox v-decorator="['rememberMe', { valuePropName: 'checked' }]">自动登录</a-checkbox> <a-checkbox v-decorator="['rememberMe', { valuePropName: 'checked' }]">自动登录</a-checkbox>
<router-link class="register" style="float: right;" :to="{ name: 'register' }">注册账户</router-link> <!-- <router-link class="register" style="float: right;" :to="{ name: 'register' }">注册账户</router-link>-->
</a-form-item> </a-form-item>
<a-form-item style="margin-top:24px"> <a-form-item style="margin-top:24px">

View File

@ -21,16 +21,27 @@ const assetsCDN = {
// main.js里引入了对应的less以使 webpack-theme-color-replacer工作 // main.js里引入了对应的less以使 webpack-theme-color-replacer工作
// https://cdn.jsdelivr.net/npm/ant-design-vue@1.3.9/dist/antd.min.css // https://cdn.jsdelivr.net/npm/ant-design-vue@1.3.9/dist/antd.min.css
css: [], css: [],
// js: [
// '/js/vue.min.js',
// '/js/axios.min.js',
// '/js/vue-router.min.js',
// '/js/vuex.min.js',
// '/js/moment.min.js',
// '/js/zh-cn.min.js',
// '/js/g2.min.js',
// '/js/data-set.min.js',
// '/js/antd-with-locales.min.js'
// ]
js: [ js: [
'/js/vue.min.js', '/xiongan-meeting/js/vue.min.js',
'/js/axios.min.js', '/xiongan-meeting/js/axios.min.js',
'/js/vue-router.min.js', '/xiongan-meeting/js/vue-router.min.js',
'/js/vuex.min.js', '/xiongan-meeting/js/vuex.min.js',
'/js/moment.min.js', '/xiongan-meeting/js/moment.min.js',
'/js/zh-cn.min.js', '/xiongan-meeting/js/zh-cn.min.js',
'/js/g2.min.js', '/xiongan-meeting/js/g2.min.js',
'/js/data-set.min.js', '/xiongan-meeting/js/data-set.min.js',
'/js/antd-with-locales.min.js' '/xiongan-meeting/js/antd-with-locales.min.js'
] ]
} }
// webpack build externals // webpack build externals
@ -49,6 +60,7 @@ const prodExternals = {
// vue.config.js // vue.config.js
const vueConfig = { const vueConfig = {
publicPath: process.env.NODE_ENV === 'production' ? '/xiongan-meeting/' : '/',
configureWebpack: { configureWebpack: {
externals: prodExternals, externals: prodExternals,
plugins: [ plugins: [
@ -108,8 +120,8 @@ const vueConfig = {
port: 8000, port: 8000,
proxy: { proxy: {
'/api': { '/api': {
target: 'http://localhost:9227', target: 'http://localhost:9227/',
// target: 'https://www.chuangzhikj.com/saas-ics', // target: 'https://www.aiparkmeet.com/sass-ics/',
pathRewrite: { '^/api': '' }, pathRewrite: { '^/api': '' },
ws: false, ws: false,
changeOrigin: true changeOrigin: true