249 lines
6.1 KiB
Vue
249 lines
6.1 KiB
Vue
<template>
|
|
<view>
|
|
<view class="bg-white p-30rpx">
|
|
<view class="flex justify-between items-center">
|
|
<view class="text-32rpx">全市数据统计</view>
|
|
<u-button size="mini" v-auth="['endpoint.town_street.base_statistics_edit']" @click="cityEditShow = true">编辑</u-button>
|
|
</view>
|
|
<view class="grid grid-cols-2 mt-20rpx" v-auth="['endpoint.town_street.base_statistics']">
|
|
<CountItem
|
|
v-for="(item, i) in showCityList"
|
|
:key="i"
|
|
:data="item"
|
|
></CountItem>
|
|
</view>
|
|
</view>
|
|
<view class="w-full h-20rpx"></view>
|
|
<u-sticky :h5NavHeight="h5NavHeightP">
|
|
<view class="bg-white">
|
|
<view class="flex items-center p-20rpx">
|
|
<u-input
|
|
v-model="filter.name"
|
|
placeholder="请输入名称"
|
|
class="w-full"
|
|
></u-input>
|
|
<u-button size="medium" @click="onFilterSubmit">查询</u-button>
|
|
</view>
|
|
</view>
|
|
</u-sticky>
|
|
|
|
<mescroll-body
|
|
@init="mescrollInit"
|
|
@up="upCallback"
|
|
:up="upOption"
|
|
:down="downOption"
|
|
>
|
|
<u-swipe-action
|
|
v-for="(item, i) in dataList"
|
|
:show="item.show"
|
|
:index="i"
|
|
:key="i"
|
|
class="my-20rpx mx-30rpx rounded-md overflow-hidden"
|
|
:options="options"
|
|
@click="handleClick"
|
|
@content-click="handleContentClick"
|
|
>
|
|
<view>
|
|
<view class="bg-white p-20rpx">
|
|
<view> 街镇名称:{{ item.name }} </view>
|
|
<view>街镇地址:{{ item.address }}</view>
|
|
<view class="my-12rpx">
|
|
<u-line></u-line>
|
|
</view>
|
|
|
|
<view class="grid grid-cols-3">
|
|
<view class="text-center">街镇面积</view>
|
|
<view class="text-center">耕地面积</view>
|
|
<view class="text-center">街镇人数</view>
|
|
</view>
|
|
<view class="grid grid-cols-3">
|
|
<view class="text-center">{{ item.areas }}</view>
|
|
<view class="text-center">{{ item.cultivated }}</view>
|
|
<view class="text-center">{{ item.workforce }}</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</u-swipe-action>
|
|
</mescroll-body>
|
|
|
|
<!-- 全市数据统计编辑 -->
|
|
<cuPopup v-model="cityEditShow" title="编辑统计">
|
|
<CountEdit
|
|
:data="cityList"
|
|
@cancel="cityEditShow = false"
|
|
@confirm="handleCityEditConfirm"
|
|
></CountEdit>
|
|
</cuPopup>
|
|
|
|
<cuPopup v-model="cityItemShow" title="编辑街镇">
|
|
<CityEdit
|
|
:data="currentData"
|
|
@cancel="cityItemShow = false"
|
|
@confirm="handleCityConfirm"
|
|
></CityEdit>
|
|
</cuPopup>
|
|
|
|
<BaseTablePopup
|
|
v-model="baseTablePopupShow"
|
|
@onEdit="handleEdit"
|
|
:colums="baseTableColums"
|
|
:data="currentData"
|
|
>
|
|
</BaseTablePopup>
|
|
</view>
|
|
</template>
|
|
<script>
|
|
import CountItem from './components/town-count-item.vue'
|
|
import cuPopup from '@/components/cu-popup/index.vue'
|
|
import CountEdit from './components/town-count-edit.vue'
|
|
import BaseTablePopup from '@/components/base-table/popup.vue'
|
|
import CityEdit from './components/town-city-edit'
|
|
const filterCityCount = [
|
|
'city_data_chart_nongye',
|
|
'city_data_chart_yuye',
|
|
'city_data_chart_xumuye',
|
|
'city_data_chart_lingye',
|
|
'city_data_chart_activity',
|
|
]
|
|
const baseTableColums = [
|
|
{
|
|
title: '街镇名称',
|
|
dataIndex: 'name',
|
|
},
|
|
{
|
|
title: '街镇地址',
|
|
dataIndex: 'address',
|
|
},
|
|
{
|
|
title: '街镇面积',
|
|
dataIndex: 'areas',
|
|
},
|
|
{
|
|
title: '耕地面积',
|
|
dataIndex: 'cultivated',
|
|
},
|
|
{
|
|
title: '街镇人数',
|
|
dataIndex: 'workforce',
|
|
},
|
|
{
|
|
title: '街镇描述',
|
|
dataIndex: 'description',
|
|
},
|
|
]
|
|
import MescrollMixin from '@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js'
|
|
export default {
|
|
mixins: [MescrollMixin],
|
|
components: {
|
|
CountItem,
|
|
cuPopup,
|
|
CountEdit,
|
|
BaseTablePopup,
|
|
CityEdit,
|
|
},
|
|
computed: {
|
|
showCityList() {
|
|
return this.cityList.filter(
|
|
(item) => !filterCityCount.includes(item.slug)
|
|
)
|
|
},
|
|
},
|
|
data() {
|
|
return {
|
|
baseTablePopupShow: false,
|
|
baseTableColums,
|
|
cityItemShow: false,
|
|
options: [
|
|
{
|
|
text: '编辑',
|
|
style: {
|
|
backgroundColor: '#007aff',
|
|
},
|
|
},
|
|
],
|
|
cityList: [],
|
|
cityEditShow: false,
|
|
dataList: [],
|
|
downOption: {
|
|
use: false,
|
|
},
|
|
upOption: {
|
|
auto: true,
|
|
page: {
|
|
size: 20,
|
|
},
|
|
},
|
|
filter: {
|
|
name: '',
|
|
type: 2,
|
|
},
|
|
currentData: null,
|
|
}
|
|
},
|
|
onLoad() {
|
|
this.getCityData()
|
|
},
|
|
methods: {
|
|
handleEdit(e) {
|
|
this.currentData = e
|
|
this.baseTablePopupShow = false
|
|
this.cityItemShow = true
|
|
},
|
|
|
|
onFilterSubmit() {
|
|
this.mescroll.resetUpScroll()
|
|
},
|
|
handleClick(index1, index) {
|
|
this.currentData = this.dataList[index1]
|
|
this.cityItemShow = true
|
|
},
|
|
|
|
handleContentClick(e) {
|
|
this.currentData = this.dataList[e]
|
|
this.baseTablePopupShow = true
|
|
},
|
|
|
|
upCallback({ num, size }) {
|
|
this.getData({
|
|
...this.filter,
|
|
page: num,
|
|
per_page: size,
|
|
})
|
|
},
|
|
|
|
async getData(params) {
|
|
try {
|
|
const { data } = await this.$http.get(`/api/agricultural-basic`, {
|
|
params,
|
|
})
|
|
if (params.page == 1) this.dataList = []
|
|
const { data: list, meta } = data
|
|
this.dataList = this.dataList.concat(list)
|
|
this.mescroll.endByPage(list.length, meta.total)
|
|
} catch (error) {
|
|
this.mescroll.endErr()
|
|
}
|
|
},
|
|
|
|
//全市统计数据
|
|
async getCityData() {
|
|
try {
|
|
const { data } = await this.$http.get('/api/citydata-statistics')
|
|
const { data: resData } = data
|
|
this.cityList = resData
|
|
} catch (error) {}
|
|
},
|
|
handleCityEditConfirm() {
|
|
this.cityEditShow = false
|
|
this.getCityData()
|
|
},
|
|
handleCityConfirm() {
|
|
this.cityItemShow = false
|
|
this.mescroll.resetUpScroll()
|
|
},
|
|
|
|
// /api/agricultural-basic?type=2&page=1&per_page=20
|
|
},
|
|
}
|
|
</script>
|