jeecgBootUniapp/src/pages-sub/online/online.vue
2025-04-29 16:37:17 +08:00

250 lines
5.9 KiB
Vue

<route lang="json5" type="page">
{
layout: 'default',
style: {
navigationBarTitleText: 'online',
navigationStyle: 'custom',
},
}
</route>
<template>
<PageLayout navTitle="online表单开发" backRouteName="index" routeMethod="pushTab">
<view class="wrap">
<z-paging
ref="paging"
:fixed="false"
v-model="dataList"
@query="queryList"
:default-page-size="20"
>
<template #top>
<wd-search
hide-cancel
placeholder="请输入表描述"
v-model.trim="keyword"
@search="handleSearch"
@clear="handleClear"
/>
</template>
<template v-for="(item, index) in dataList" :key="item.id">
<template v-if="item.tableType != 3">
<wd-swipe-action>
<view class="list" @click="handleGo(item)">
<view
class="cIcon"
:style="{ 'background-color': getBackgroundColor(item, index) }"
>
<view class="u-iconfont u-icon-table"></view>
</view>
<view class="tableTxt ellipsis">{{ item.tableTxt }}</view>
<view class="createTime ellipsis">{{ item.createTime.substring(0, 10) }}</view>
</view>
<template #right>
<view class="action">
<view class="button" @click="handleAction('del', item)">删除</view>
<view class="button" @click="handleAction('remove', item)">移除</view>
</view>
</template>
</wd-swipe-action>
</template>
</template>
</z-paging>
</view>
</PageLayout>
</template>
<script lang="ts" setup>
import { http } from '@/utils/http'
import { useToast, useMessage, useNotify, dayjs } from 'wot-design-uni'
import { useRouter } from '@/plugin/uni-mini-router'
import { useUserStore } from '@/store/user'
import { useParamsStore } from '@/store/page-params'
import { getRandomColor } from '@/common/uitls'
defineOptions({
name: 'online',
options: {
styleIsolation: 'shared',
},
})
const toast = useToast()
const router = useRouter()
const userStore = useUserStore()
const paramsStore = useParamsStore()
const paging = ref(null)
const dataList: any = ref([])
const keyword = ref('')
const itemBgColor = []
// 接口拿到的数据处理之后的
const handleGo = (item) => {
if (item.tableType === 3) {
toast.warning('附表无列表页~')
} else {
paramsStore.setPageParams('onlineCard', { data: item })
router.push({ name: 'onlineCard' })
}
}
// 清除搜索条件
function handleClear() {
keyword.value = ''
handleSearch()
}
// 搜索
function handleSearch() {
queryList(1, 10)
}
const handleAction = (val, item) => {
if (val == 'del') {
http
.delete('/online/cgform/head/delete', { id: item })
.then((res: any) => {
if (res.success) {
toast.success('删除成功~')
paging.value.reload()
} else {
toast.warning('删除失败~')
}
})
.catch((res) => {
toast.error('删除失败~')
})
} else if ((val = 'remove')) {
http
.delete('/online/cgform/head/removeRecord', { id: item })
.then((res: any) => {
if (res.success) {
toast.success('移除成功~')
paging.value.reload()
} else {
toast.warning('移除失败~')
}
})
.catch((res) => {
toast.error('移除失败~')
})
}
}
const getParams = ({ pageNo, pageSize }) => {
const params: any = {
pageNo,
pageSize,
order: 'desc',
column: 'createTime',
}
if (keyword.value.length) {
params.tableTxt = `*${keyword.value}*`
}
return params
}
const queryList = (pageNo, pageSize) => {
const params = getParams({ pageNo, pageSize })
http
.get('/online/cgform/head/list', { ...params })
.then((res: any) => {
if (res.success && res.result?.records) {
if (pageNo === 1) {
dataList.value = []
}
paging.value.complete(res.result.records)
} else {
paging.value.complete(false)
}
})
.catch((res) => {
paging.value.complete(false)
})
}
const getType = (record) => {
const type = { 1: '单表', 2: '主表', 3: '附表' }
let tbTypeText = type[record.tableType]
// if (record.isTree === 'Y') {
// tbTypeText += '(树)'
// }
// if (record.themeTemplate === 'innerTable') {
// tbTypeText += '(内嵌)'
// } else if (record.themeTemplate === 'erp') {
// tbTypeText += '(ERP)'
// } else if (record.themeTemplate === 'tab') {
// tbTypeText += '(TAB)'
// }
return tbTypeText
}
const getBackgroundColor = (item, index) => {
return itemBgColor[index % itemBgColor.length]
}
for (let i = 0; i < 50; i++) {
itemBgColor.push(getRandomColor())
}
</script>
<style lang="scss" scoped>
//
:deep(.wd-search) {
border-bottom: 1px solid #f4f2f2;
}
.wd-swipe-action {
&:first-child {
margin-top: 10px;
}
}
.list {
display: flex;
justify-content: space-between;
align-items: center;
background-color: #fff;
border-bottom: 1px solid #eee;
padding: 16px 12px;
line-height: 20px;
margin-bottom: 10px;
.cIcon {
text-align: center;
line-height: 24px;
color: #fff;
margin-right: 8px;
width: 24px;
height: 24px;
border-radius: 50%;
.u-iconfont {
font-size: 14px;
}
}
.tableTxt {
flex: 1;
margin-right: 40px;
}
.createTime {
text-align: right;
width: 75px;
font-size: 12px;
color: #919191;
}
}
.action {
width: 100px;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
.button {
display: flex;
align-items: center;
justify-content: center;
flex: 1;
height: 100%;
color: #fff;
&:first-child {
background-color: #fa4350;
}
&:last-child {
background-color: #f0883a;
}
}
}
.wrap {
height: 100%;
}
</style>