Merge remote-tracking branch 'origin/master' into master

This commit is contained in:
chendaze 2024-04-08 13:50:24 +08:00
commit 1d6f9dc191
5 changed files with 221 additions and 142 deletions

BIN
src/assets/logo-white.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View File

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

View File

@ -1,29 +1,28 @@
<template>
<div id="userLayout" :class="['user-layout-wrapper', isMobile && 'mobile']">
<div class="container">
<div class="top">
<div class="header">
<a href="/">
<!-- <img src="~@/assets/logo.png" class="logo" alt="logo">-->
<img src="~@/assets/logo.png" class="logo" alt="logo">
<span class="title">园区管理系统</span>
</a>
<div id='userLayout' :class="['user-layout-wrapper', isMobile && 'mobile']">
<div class='container'>
<div class='top'>
<div class='header'>
<div class='logoView'>
<img src='~@/assets/logo.png' class='logo' alt='logo'>
<span class='title'>园区管理系统</span>
</div>
<div class="desc">
</div>
<div class='desc'>
</div>
</div>
<router-view />
<div class="footer">
<div class="links">
<a href="_self">帮助</a>
<a href="_self">隐私</a>
<a href="_self">条款</a>
<div class='footer'>
<div class='links'>
<a href='_self'>帮助</a>
<a href='_self'>隐私</a>
<a href='_self'>条款</a>
</div>
<div class="copyright">
<a target="_blank" href="https://beian.miit.gov.cn">浙ICP备2021888888号</a>
<div class='copyright'>
<a target='_blank' href='https://beian.miit.gov.cn'>浙ICP备2021888888号</a>
</div>
</div>
</div>
@ -36,17 +35,17 @@ import { deviceMixin } from '@/store/device-mixin'
export default {
name: 'UserLayout',
mixins: [deviceMixin],
mounted () {
mounted() {
document.body.classList.add('userLayout')
},
beforeDestroy () {
beforeDestroy() {
document.body.classList.remove('userLayout')
}
}
</script>
<style lang="less" scoped>
#userLayout.user-layout-wrapper {
<style lang='less' scoped>
#userLayout.user-layout-wrapper {
height: 100%;
&.mobile {
@ -77,21 +76,14 @@ export default {
height: 44px;
line-height: 44px;
.badge {
position: absolute;
display: inline-block;
line-height: 1;
vertical-align: middle;
margin-left: -12px;
margin-top: -10px;
opacity: 0.8;
}
.logoView {
display: flex;
justify-content: center;
align-items: center;
.logo {
height: 44px;
vertical-align: top;
height: 34px;
margin-right: 16px;
border-style: none;
}
.title {
@ -99,10 +91,10 @@ export default {
color: rgba(0, 0, 0, .85);
font-family: Avenir, 'Helvetica Neue', Arial, Helvetica, sans-serif;
font-weight: 600;
position: relative;
top: 2px;
}
}
}
.desc {
font-size: 14px;
color: rgba(0, 0, 0, 0.45);
@ -128,19 +120,22 @@ export default {
.links {
margin-bottom: 8px;
font-size: 14px;
a {
color: rgba(0, 0, 0, 0.45);
transition: all 0.3s;
&:not(:last-child) {
margin-right: 40px;
}
}
}
.copyright {
color: rgba(0, 0, 0, 0.45);
font-size: 14px;
}
}
}
}
}
</style>

View File

@ -1,61 +1,84 @@
<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.name"/>
<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-select v-model='queryParam.tenantId' @change='selectTenant'>
<a-select-option v-for='item in tenantList' :key='item.id'>{{ item.name }}</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :md="5" :sm="15">
<a-form-item label="联系人">
<a-input placeholder="请输入联系人" v-model="queryParam.contacts"/>
<a-col :md='5' :sm='15'>
<a-form-item label='所属园区'>
<a-select v-model='queryParam.parkId' @change='selectPark'>
<a-select-option v-for='item in parkList' :key='item.id'>{{ item.name }}</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :md="5" :sm="15">
<a-form-item label="联系电话">
<a-input placeholder="请输入联系电话" v-model="queryParam.phone"/>
<a-col :md='5' :sm='15'>
<a-form-item label='所属楼宇'>
<a-select v-model='queryParam.buildingId' @change='selectBuilding'>
<a-select-option v-for='item in buildingList' :key='item.id'>{{ item.buildingName }}</a-select-option>
</a-select>
</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>
<a-col :md='5' :sm='15'>
<a-form-item label='企业名称'>
<a-input placeholder='请输入企业名称' v-model='queryParam.name' />
</a-form-item>
</a-col>
<a-col :md='5' :sm='15'>
<a-form-item label='联系人'>
<a-input placeholder='请输入联系人' v-model='queryParam.contacts' />
</a-form-item>
</a-col>
<a-col :md='5' :sm='15'>
<a-form-item label='联系电话'>
<a-input placeholder='请输入联系电话' v-model='queryParam.phone' />
</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="handleAdd()">新建</a-button>
<a-dropdown v-if="removeEnable&&selectedRowKeys.length > 0">
<a-button type="danger" icon="delete" @click="delByIds(selectedRowKeys)">删除</a-button>
<div class='table-operator'>
<a-button v-if='addEnable' type='primary' icon='plus' @click='handleAdd()'>新建</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"
showPagination="true"
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
:columns="columns"
:data="loadData"
:scroll="{ x: true }"
size='default'
ref='table'
rowKey='id'
showPagination='true'
:rowSelection='{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}'
:columns='columns'
:data='loadData'
:scroll='{ x: true }'
>
<span slot="type" slot-scope="text">
<span slot='type' slot-scope='text'>
{{ text | typeFilter }}
</span>
<span slot="customerStatus" slot-scope="text">
<span slot='customerStatus' slot-scope='text'>
{{ text | customerStatusFilter }}
</span>
<span slot="action" slot-scope="text, record">
<a v-if="editEnabel" @click="handleEdit(record.id)">编辑</a>
<a-divider type="vertical" />
<a v-if="removeEnable" @click="delByIds([record.id])">删除</a>
<span slot='action' slot-scope='text, record'>
<a v-if='editEnabel' @click='handleEdit(record.id)'>编辑</a>
<a-divider type='vertical' />
<a v-if='removeEnable' @click='delByIds([record.id])'>删除</a>
</span>
</s-table>
<customer-modal ref="modal" @ok="handleOk"/>
<customer-modal ref='modal' @ok='handleOk' />
</a-card>
</template>
@ -63,13 +86,17 @@
import { STable } from '@/components'
import { getCustomerList, delCustomer } from '@/api/admin/customer'
import { checkPermission } from '@/utils/permissions'
import { getTenantList } from '@/api/tenant'
import { getParkList } from '@/api/admin/park'
import { getBuildingList } from '@/api/admin/building'
import { getBuildingDetailList } from '@/api/admin/buildingDetail'
export default {
name: 'TableList',
components: {
STable
},
data () {
data() {
return {
labelCol: {
xs: { span: 24 },
@ -84,17 +111,31 @@ export default {
// /
advanced: false,
//
queryParam: {},
queryParam: {
tenantId: null,
parkId: null,
buildingId: null,
name: null,
contacts: null,
phone: null
},
//
columns: [
{
title: '所属地区',
dataIndex: 'tenantName'
},
{
title: '所属园区',
dataIndex: 'park.name',
fixed: 'left'
dataIndex: 'park.name'
},
{
title: '所属楼宇',
dataIndex: 'buildingName'
},
{
title: '企业名称',
dataIndex: 'name'
dataIndex: 'name',
},
{
title: '企业类型',
@ -167,18 +208,21 @@ export default {
selectedRows: [],
addEnable: checkPermission('admin:customer:add'),
editEnabel: checkPermission('admin:customer:edit'),
removeEnable: checkPermission('admin:customer:remove')
removeEnable: checkPermission('admin:customer:remove'),
tenantList: [], //
parkList: [], //
buildingList: [] //
}
},
filters: {
typeFilter (type) {
typeFilter(type) {
const typeMap = {
'COMPANY': '公司',
'PERSON': '个人'
}
return typeMap[type]
},
customerStatusFilter (customerStatus) {
customerStatusFilter(customerStatus) {
const customerStatusMap = {
'POTENTIAL': '潜在企业',
'PURPOSE': '意向企业',
@ -188,24 +232,64 @@ export default {
return customerStatusMap[customerStatus]
}
},
created () {
created() {
//
this.getTenantData()
},
methods: {
onSelectChange (selectedRowKeys, selectedRows) {
//
getTenantData() {
getTenantList().then(res => {
this.tenantList = res.rows
})
},
// ->
selectTenant(id) {
console.log('selectTenant', id)
//
this.queryParam.parkId = null //
this.queryParam.buildingId = null //
//
getParkList({
tenantId: id
}).then(res => {
this.parkList = res.rows
})
},
// ->
selectPark(id) {
console.log('selectPark', id)
//
this.queryParam.buildingId = null //
//
getBuildingList({
parkId: id
}).then(res => {
this.buildingList = res.rows
})
},
// ->
selectBuilding(id) {
console.log('selectBuilding', id)
console.log('this.queryParam', this.queryParam)
},
onSelectChange(selectedRowKeys, selectedRows) {
this.selectedRowKeys = selectedRowKeys
this.selectedRows = selectedRows
},
handleAdd () {
handleAdd() {
this.handleEdit()
},
handleEdit (customerId) {
handleEdit(customerId) {
this.$router.push({ name: 'customerEdit', query: { customerId: customerId } })
},
handleOk () {
handleOk() {
this.$refs.table.refresh(true)
console.log('handleSaveOk')
},
delByIds (ids) {
delByIds(ids) {
delCustomer({ ids: ids.join(',') }).then(res => {
if (res.code === 0) {
this.$message.success('删除成功')
@ -221,7 +305,7 @@ export default {
</script>
<style scoped>
.ant-table td {
.ant-table td {
white-space: nowrap;
}
}
</style>

View File

@ -35,7 +35,7 @@
</a-input-password>
</a-form-item>
</a-tab-pane>
<a-tab-pane key="tab2" tab="手机号登录">
<a-tab-pane key="tab2" tab="手机号登录" v-if='false'>
<a-form-item>
<a-input
size="large"