Compare commits
2 Commits
bdc7608786
...
c8f2245fd3
Author | SHA1 | Date | |
---|---|---|---|
![]() |
c8f2245fd3 | ||
![]() |
6ef17079b9 |
@ -17,6 +17,15 @@ export function getOmsOrder(id) {
|
||||
method: 'get'
|
||||
});
|
||||
}
|
||||
|
||||
// 订单退款
|
||||
export function refundOrder(data) {
|
||||
return request({
|
||||
url: '/oms/order/refund',
|
||||
method: 'get',
|
||||
params: data
|
||||
});
|
||||
}
|
||||
// 查询订单手机号密文
|
||||
export function getDecryptPhone(id) {
|
||||
return request({
|
||||
|
@ -9,6 +9,23 @@ export function listPmsProduct(query, pageReq) {
|
||||
params: pageReq
|
||||
});
|
||||
}
|
||||
// 查询商品分类数据
|
||||
export function getproductCategoryNameLike() {
|
||||
return request({
|
||||
url: '/pms/productCategory/list',
|
||||
method: 'post',
|
||||
data: {}
|
||||
});
|
||||
}
|
||||
// 查询商品分类数据
|
||||
export function getbrand() {
|
||||
return request({
|
||||
url: '/pms/brand/page',
|
||||
method: 'post',
|
||||
data: {}
|
||||
});
|
||||
}
|
||||
|
||||
//审核
|
||||
export function productaudit(query, pageReq) {
|
||||
return request({
|
||||
|
66
src/api/system/article/index.ts
Normal file
66
src/api/system/article/index.ts
Normal file
@ -0,0 +1,66 @@
|
||||
import { PostForm, PostQuery, PostVO } from './types';
|
||||
|
||||
import { AxiosPromise } from 'axios';
|
||||
import request from '@/utils/request';
|
||||
|
||||
// 查询文章列表
|
||||
export function listPost(query: PostQuery): AxiosPromise<PostVO[]> {
|
||||
return request({
|
||||
url: '/content/article/page',
|
||||
method: 'post',
|
||||
data: query
|
||||
});
|
||||
}
|
||||
// 查询文章列表tree
|
||||
export function listCategory(query: any): AxiosPromise<PostVO[]> {
|
||||
return request({
|
||||
url: '/content/article/category/tree',
|
||||
method: 'post',
|
||||
data: query
|
||||
});
|
||||
}
|
||||
// 查询文章详细
|
||||
export function getPost(postId: string | number): AxiosPromise<PostVO> {
|
||||
return request({
|
||||
url: '/content/article/' + postId,
|
||||
method: 'get'
|
||||
});
|
||||
}
|
||||
|
||||
// 获取文章选择框列表
|
||||
export function optionselect(deptId?: number | string, postIds?: (number | string)[]): AxiosPromise<PostVO[]> {
|
||||
return request({
|
||||
url: '/system/post/optionselect',
|
||||
method: 'get',
|
||||
params: {
|
||||
postIds: postIds,
|
||||
deptId: deptId
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// 新增文章
|
||||
export function addPost(data: PostForm) {
|
||||
return request({
|
||||
url: '/content/article/add',
|
||||
method: 'post',
|
||||
data: data
|
||||
});
|
||||
}
|
||||
|
||||
// 修改文章
|
||||
export function updatePost(data: PostForm) {
|
||||
return request({
|
||||
url: '/content/article/update',
|
||||
method: 'post',
|
||||
data: data
|
||||
});
|
||||
}
|
||||
|
||||
// 删除文章
|
||||
export function delPost(postId: string | number | (string | number)[]) {
|
||||
return request({
|
||||
url: '/content/article/' + postId,
|
||||
method: 'delete'
|
||||
});
|
||||
}
|
28
src/api/system/article/types.ts
Normal file
28
src/api/system/article/types.ts
Normal file
@ -0,0 +1,28 @@
|
||||
export interface PostVO extends BaseEntity {
|
||||
postId: number | string;
|
||||
deptId: number | string;
|
||||
postCode: string;
|
||||
postName: string;
|
||||
postCategory: string;
|
||||
deptName: string;
|
||||
postSort: number;
|
||||
status: string;
|
||||
remark: string;
|
||||
}
|
||||
|
||||
export interface PostForm {
|
||||
id: number | string | undefined;
|
||||
title: number | string | undefined;
|
||||
type: number | string | undefined;
|
||||
sort: number | string | undefined;
|
||||
content: string | undefined;
|
||||
status: number | string | undefined;
|
||||
categoryId: number | string | undefined;
|
||||
}
|
||||
|
||||
export interface PostQuery {
|
||||
title: string;
|
||||
current: number;
|
||||
size: number;
|
||||
categoryId: number | string;
|
||||
}
|
59
src/api/system/category/index.ts
Normal file
59
src/api/system/category/index.ts
Normal file
@ -0,0 +1,59 @@
|
||||
import { PostForm, PostQuery, PostVO } from './types';
|
||||
|
||||
import { AxiosPromise } from 'axios';
|
||||
import request from '@/utils/request';
|
||||
|
||||
// 查询文章分类列表
|
||||
export function listPost(query: PostQuery | any): AxiosPromise {
|
||||
return request({
|
||||
url: '/content/article/category/tree',
|
||||
method: 'post',
|
||||
data: query
|
||||
});
|
||||
}
|
||||
|
||||
// 查询文章详细
|
||||
export function getPost(postId: string | number): AxiosPromise<PostVO> {
|
||||
return request({
|
||||
url: '/content/article/category/' + postId,
|
||||
method: 'get'
|
||||
});
|
||||
}
|
||||
|
||||
// 获取岗位选择框列表
|
||||
export function optionselect(deptId?: number | string, postIds?: (number | string)[]): AxiosPromise<PostVO[]> {
|
||||
return request({
|
||||
url: '/system/post/optionselect',
|
||||
method: 'get',
|
||||
params: {
|
||||
postIds: postIds,
|
||||
deptId: deptId
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// 新增分类
|
||||
export function addPost(data: PostForm) {
|
||||
return request({
|
||||
url: '/content/article/category/add',
|
||||
method: 'post',
|
||||
data: data
|
||||
});
|
||||
}
|
||||
|
||||
// 修改岗位
|
||||
export function updatePost(data: PostForm) {
|
||||
return request({
|
||||
url: '/content/article/update',
|
||||
method: 'post',
|
||||
data: data
|
||||
});
|
||||
}
|
||||
|
||||
// 删除
|
||||
export function delPost(postId: string | number | (string | number)[]) {
|
||||
return request({
|
||||
url: '/content/article/category/' + postId,
|
||||
method: 'delete'
|
||||
});
|
||||
}
|
36
src/api/system/category/types.ts
Normal file
36
src/api/system/category/types.ts
Normal file
@ -0,0 +1,36 @@
|
||||
export interface PostVO extends BaseEntity {
|
||||
postId: number | string;
|
||||
deptId: number | string;
|
||||
postCode: string;
|
||||
postName: string;
|
||||
postCategory: string;
|
||||
deptName: string;
|
||||
postSort: number;
|
||||
status: string;
|
||||
remark: string;
|
||||
}
|
||||
|
||||
export interface PostForm {
|
||||
id: number | string | undefined;
|
||||
|
||||
name: number | string | undefined;
|
||||
|
||||
level: number | string | undefined;
|
||||
|
||||
parentId: number | string | undefined;
|
||||
|
||||
sort: number | string | undefined;
|
||||
oneName: number | string | undefined;
|
||||
type: number | string | undefined;
|
||||
}
|
||||
|
||||
export interface PostQuery {
|
||||
id: number | string;
|
||||
name: string;
|
||||
current: number;
|
||||
size: number;
|
||||
parentId: number | string;
|
||||
sort: number | string;
|
||||
level: number | string;
|
||||
type: number | string;
|
||||
}
|
@ -28,7 +28,7 @@ export function getTenant(id: string | number): AxiosPromise<TenantVO> {
|
||||
}
|
||||
|
||||
// 新增租户
|
||||
export function addTenant(data: TenantForm) {
|
||||
export function addTenant(data: any) {
|
||||
return request({
|
||||
url: '/system/tenant/add',
|
||||
method: 'post',
|
||||
@ -41,7 +41,7 @@ export function addTenant(data: TenantForm) {
|
||||
}
|
||||
|
||||
// 修改租户
|
||||
export function updateTenant(data: TenantForm) {
|
||||
export function updateTenant(data: any) {
|
||||
return request({
|
||||
url: '/system/tenant/update',
|
||||
method: 'post',
|
||||
|
@ -9,6 +9,15 @@ export function listUmsMember(query, pageReq) {
|
||||
params: pageReq
|
||||
});
|
||||
}
|
||||
// 查询会员账号钱账单
|
||||
export function listCurrent(query, pageReq) {
|
||||
return request({
|
||||
url: '/ums/account/bill',
|
||||
method: 'post',
|
||||
data: query,
|
||||
params: pageReq
|
||||
});
|
||||
}
|
||||
|
||||
// 查询会员信息详细
|
||||
export function getUmsMember(id) {
|
||||
|
@ -1,114 +1,111 @@
|
||||
<template>
|
||||
<el-form size='small'>
|
||||
<el-form-item>
|
||||
<el-radio v-model='radioValue' :label="1">
|
||||
月,允许的通配符[, - * /]
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
<el-form size="small">
|
||||
<el-form-item>
|
||||
<el-radio v-model="radioValue" :label="1"> 月,允许的通配符[, - * /] </el-radio>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-radio v-model='radioValue' :label="2">
|
||||
周期从
|
||||
<el-input-number v-model='cycle01' :min="1" :max="11" /> -
|
||||
<el-input-number v-model='cycle02' :min="cycle01 ? cycle01 + 1 : 2" :max="12" /> 月
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-radio v-model="radioValue" :label="2">
|
||||
周期从
|
||||
<el-input-number v-model="cycle01" :min="1" :max="11" /> - <el-input-number v-model="cycle02" :min="cycle01 ? cycle01 + 1 : 2" :max="12" /> 月
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-radio v-model='radioValue' :label="3">
|
||||
从
|
||||
<el-input-number v-model='average01' :min="1" :max="11" /> 月开始,每
|
||||
<el-input-number v-model='average02' :min="1" :max="12 - average01 || 0" /> 月月执行一次
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-radio v-model="radioValue" :label="3">
|
||||
从
|
||||
<el-input-number v-model="average01" :min="1" :max="11" /> 月开始,每
|
||||
<el-input-number v-model="average02" :min="1" :max="12 - average01 || 0" /> 月月执行一次
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-radio v-model='radioValue' :label="4">
|
||||
指定
|
||||
<el-select clearable v-model="checkboxList" placeholder="可多选" multiple style="width:100%">
|
||||
<el-option v-for="item in 12" :key="item" :value="item">{{item}}</el-option>
|
||||
</el-select>
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-form-item>
|
||||
<el-radio v-model="radioValue" :label="4">
|
||||
指定
|
||||
<el-select clearable v-model="checkboxList" placeholder="可多选" multiple style="width: 100%">
|
||||
<el-option v-for="item in 12" :key="item" :value="item">{{ item }}</el-option>
|
||||
</el-select>
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
radioValue: 1,
|
||||
cycle01: 1,
|
||||
cycle02: 2,
|
||||
average01: 1,
|
||||
average02: 1,
|
||||
checkboxList: [],
|
||||
checkNum: this.check
|
||||
}
|
||||
},
|
||||
name: 'crontab-month',
|
||||
props: ['check', 'cron'],
|
||||
methods: {
|
||||
// 单选按钮值变化时
|
||||
radioChange() {
|
||||
switch (this.radioValue) {
|
||||
case 1:
|
||||
this.$emit('update', 'month', '*');
|
||||
break;
|
||||
case 2:
|
||||
this.$emit('update', 'month', this.cycleTotal);
|
||||
break;
|
||||
case 3:
|
||||
this.$emit('update', 'month', this.averageTotal);
|
||||
break;
|
||||
case 4:
|
||||
this.$emit('update', 'month', this.checkboxString);
|
||||
break;
|
||||
}
|
||||
},
|
||||
// 周期两个值变化时
|
||||
cycleChange() {
|
||||
if (this.radioValue == '2') {
|
||||
this.$emit('update', 'month', this.cycleTotal);
|
||||
}
|
||||
},
|
||||
// 平均两个值变化时
|
||||
averageChange() {
|
||||
if (this.radioValue == '3') {
|
||||
this.$emit('update', 'month', this.averageTotal);
|
||||
}
|
||||
},
|
||||
// checkbox值变化时
|
||||
checkboxChange() {
|
||||
if (this.radioValue == '4') {
|
||||
this.$emit('update', 'month', this.checkboxString);
|
||||
}
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
'radioValue': 'radioChange',
|
||||
'cycleTotal': 'cycleChange',
|
||||
'averageTotal': 'averageChange',
|
||||
'checkboxString': 'checkboxChange'
|
||||
},
|
||||
computed: {
|
||||
// 计算两个周期值
|
||||
cycleTotal: function () {
|
||||
const cycle01 = this.checkNum(this.cycle01, 1, 11)
|
||||
const cycle02 = this.checkNum(this.cycle02, cycle01 ? cycle01 + 1 : 2, 12)
|
||||
return cycle01 + '-' + cycle02;
|
||||
},
|
||||
// 计算平均用到的值
|
||||
averageTotal: function () {
|
||||
const average01 = this.checkNum(this.average01, 1, 11)
|
||||
const average02 = this.checkNum(this.average02, 1, 12 - average01 || 0)
|
||||
return average01 + '/' + average02;
|
||||
},
|
||||
// 计算勾选的checkbox值合集
|
||||
checkboxString: function () {
|
||||
let str = this.checkboxList.join();
|
||||
return str == '' ? '*' : str;
|
||||
}
|
||||
}
|
||||
}
|
||||
data() {
|
||||
return {
|
||||
radioValue: 1,
|
||||
cycle01: 1,
|
||||
cycle02: 2,
|
||||
average01: 1,
|
||||
average02: 1,
|
||||
checkboxList: [],
|
||||
checkNum: this.check
|
||||
};
|
||||
},
|
||||
name: 'crontab-month',
|
||||
props: ['check', 'cron'],
|
||||
methods: {
|
||||
// 单选按钮值变化时
|
||||
radioChange() {
|
||||
switch (this.radioValue) {
|
||||
case 1:
|
||||
this.$emit('update', 'month', '*');
|
||||
break;
|
||||
case 2:
|
||||
this.$emit('update', 'month', this.cycleTotal);
|
||||
break;
|
||||
case 3:
|
||||
this.$emit('update', 'month', this.averageTotal);
|
||||
break;
|
||||
case 4:
|
||||
this.$emit('update', 'month', this.checkboxString);
|
||||
break;
|
||||
}
|
||||
},
|
||||
// 周期两个值变化时
|
||||
cycleChange() {
|
||||
if (this.radioValue == '2') {
|
||||
this.$emit('update', 'month', this.cycleTotal);
|
||||
}
|
||||
},
|
||||
// 平均两个值变化时
|
||||
averageChange() {
|
||||
if (this.radioValue == '3') {
|
||||
this.$emit('update', 'month', this.averageTotal);
|
||||
}
|
||||
},
|
||||
// checkbox值变化时
|
||||
checkboxChange() {
|
||||
if (this.radioValue == '4') {
|
||||
this.$emit('update', 'month', this.checkboxString);
|
||||
}
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
'radioValue': 'radioChange',
|
||||
'cycleTotal': 'cycleChange',
|
||||
'averageTotal': 'averageChange',
|
||||
'checkboxString': 'checkboxChange'
|
||||
},
|
||||
computed: {
|
||||
// 计算两个周期值
|
||||
cycleTotal: function () {
|
||||
const cycle01 = this.checkNum(this.cycle01, 1, 11);
|
||||
const cycle02 = this.checkNum(this.cycle02, cycle01 ? cycle01 + 1 : 2, 12);
|
||||
return cycle01 + '-' + cycle02;
|
||||
},
|
||||
// 计算平均用到的值
|
||||
averageTotal: function () {
|
||||
const average01 = this.checkNum(this.average01, 1, 11);
|
||||
const average02 = this.checkNum(this.average02, 1, 12 - average01 || 0);
|
||||
return average01 + '/' + average02;
|
||||
},
|
||||
// 计算勾选的checkbox值合集
|
||||
checkboxString: function () {
|
||||
let str = this.checkboxList.join();
|
||||
return str == '' ? '*' : str;
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
@ -32,6 +32,11 @@
|
||||
{{ scope.row.type === 1 ? '商家' : scope.row.type === 2 ? '代理' : '平台' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center" width="180">
|
||||
<template #default="scope">
|
||||
<el-button type="primary" @click="handleSeach(scope.row)">查看明细</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<div class="block">
|
||||
<pagination
|
||||
@ -42,6 +47,14 @@
|
||||
@pagination="getListList"
|
||||
/>
|
||||
</div>
|
||||
<el-dialog v-model="dialogVisible" title="明细" width="1200px" append-to-body>
|
||||
<el-table :data="tableData" style="width: 100%">
|
||||
<el-table-column label="序号" align="center" type="index" width="80" />
|
||||
<el-table-column label="订单号" align="center" prop="orderNo" :show-overflow-tooltip="true" />
|
||||
<el-table-column label="订单金额" align="center" prop="orderAmount" :show-overflow-tooltip="true" />
|
||||
<el-table-column label="积分" align="center" prop="integralBalance" :show-overflow-tooltip="true" />
|
||||
</el-table>
|
||||
</el-dialog>
|
||||
</el-card>
|
||||
</div>
|
||||
</template>
|
||||
@ -74,7 +87,12 @@ const getListList = async () => {
|
||||
const handleQuery = () => {
|
||||
getListList();
|
||||
};
|
||||
const showRefuteDialog = ref(false);
|
||||
const tableData = ref([]);
|
||||
const dialogVisible = ref(false);
|
||||
// 查看明细
|
||||
const handleSeach = (row: any) => {
|
||||
console.log(row);
|
||||
};
|
||||
const resetQuery = () => {
|
||||
queryParams.value = {
|
||||
current: 1,
|
||||
|
@ -5,12 +5,12 @@
|
||||
<h3 class="title">{{ title }}</h3>
|
||||
<lang-select />
|
||||
</div>
|
||||
<el-form-item v-if="tenantEnabled" prop="tenantId">
|
||||
<!-- <el-form-item v-if="tenantEnabled" prop="tenantId">
|
||||
<el-select v-model="loginForm.tenantId" filterable :placeholder="proxy.$t('login.selectPlaceholder')" style="width: 100%">
|
||||
<el-option v-for="item in tenantList" :key="item.tenantId" :label="item.companyName" :value="item.tenantId"></el-option>
|
||||
<template #prefix><svg-icon icon-class="company" class="el-input__icon input-icon" /></template>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-form-item> -->
|
||||
<el-form-item prop="username">
|
||||
<el-input v-model="loginForm.username" type="text" size="large" auto-complete="off" :placeholder="proxy.$t('login.username')">
|
||||
<template #prefix><svg-icon icon-class="user" class="el-input__icon input-icon" /></template>
|
||||
@ -73,7 +73,7 @@
|
||||
</el-form>
|
||||
<!-- 底部 -->
|
||||
<div class="el-login-footer">
|
||||
<span>Copyright © 2018-2025 疯狂的狮子Li All Rights Reserved.</span>
|
||||
<!-- <span>Copyright © 2018-2025 疯狂的狮子Li All Rights Reserved.</span> -->
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
@ -37,14 +37,14 @@
|
||||
<el-descriptions-item label="分佣信息">{{ getPayType(orderDetail) }}</el-descriptions-item>-->
|
||||
</el-descriptions>
|
||||
</el-card>
|
||||
<el-card class="mt10">
|
||||
<!-- <el-card class="mt10">
|
||||
<el-descriptions title="收货信息" :column="2" border label-class-name="my-label" contentClassName="my-content">
|
||||
<el-descriptions-item label="收货人姓名">{{ getHiddenName(addressInfo.name) }}</el-descriptions-item>
|
||||
<el-descriptions-item label="收货人手机号">{{ addressInfo.userPhone }}</el-descriptions-item>
|
||||
<el-descriptions-item label="收货区域">{{ addressInfo.area }}</el-descriptions-item>
|
||||
<el-descriptions-item label="详细地址">{{ getHiddenDetailAddress(addressInfo.address) }}</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-card>
|
||||
</el-card> -->
|
||||
<el-card class="mt10">
|
||||
<template v-slot:header>
|
||||
<div style="font-size: 16px; font-weight: bold">商品信息</div>
|
||||
@ -68,22 +68,22 @@
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-card>
|
||||
<el-card class="mt10">
|
||||
<el-descriptions title="物流信息" :column="3" border label-class-name="my-label" contentClassName="my-content">
|
||||
<el-descriptions-item label="发货时间">{{ parseTime(orderDetail.deliveryTime, '') }}</el-descriptions-item>
|
||||
<el-descriptions-item label="快递单号">{{ orderDetail.expressNo }}</el-descriptions-item>
|
||||
<el-descriptions-item label="物流公司">{{ orderDetail.expressName }}</el-descriptions-item>
|
||||
<!-- <el-descriptions-item label="物流进度">-->
|
||||
<!-- <el-popover placement="top" width="300" trigger="hover" popper-class="popperOptions">-->
|
||||
<!-- <el-timeline-item v-for="(activity, index) in aliLogisticsInfoList" :key="index"-->
|
||||
<!-- :timestamp="activity.time">-->
|
||||
<!-- {{ activity.context }}-->
|
||||
<!-- </el-timeline-item>-->
|
||||
<!-- <span slot="reference">{{ orderDetail.logistics }}</span>-->
|
||||
<!-- </el-popover>-->
|
||||
<!-- </el-descriptions-item>-->
|
||||
</el-descriptions>
|
||||
</el-card>
|
||||
<!-- <el-card class="mt10"> -->
|
||||
<!-- <el-descriptions title="物流信息" :column="3" border label-class-name="my-label" contentClassName="my-content"> -->
|
||||
<!-- <el-descriptions-item label="发货时间">{{ parseTime(orderDetail.deliveryTime, '') }}</el-descriptions-item> -->
|
||||
<!-- <el-descriptions-item label="快递单号">{{ orderDetail.expressNo }}</el-descriptions-item> -->
|
||||
<!-- <el-descriptions-item label="物流公司">{{ orderDetail.expressName }}</el-descriptions-item> -->
|
||||
<!-- <el-descriptions-item label="物流进度">-->
|
||||
<!-- <el-popover placement="top" width="300" trigger="hover" popper-class="popperOptions">-->
|
||||
<!-- <el-timeline-item v-for="(activity, index) in aliLogisticsInfoList" :key="index"-->
|
||||
<!-- :timestamp="activity.time">-->
|
||||
<!-- {{ activity.context }}-->
|
||||
<!-- </el-timeline-item>-->
|
||||
<!-- <span slot="reference">{{ orderDetail.logistics }}</span>-->
|
||||
<!-- </el-popover>-->
|
||||
<!-- </el-descriptions-item>-->
|
||||
<!-- </el-descriptions> -->
|
||||
<!-- </el-card> -->
|
||||
</el-main>
|
||||
</div>
|
||||
</template>
|
||||
|
@ -61,7 +61,7 @@
|
||||
<el-input v-model.trim="queryParams.userPhone" placeholder="请输入会员手机号" clearable @keyup.enter="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="省市区" prop="provinces">
|
||||
<address-selector v-model="queryParams.provinces"></address-selector>
|
||||
<address-selector v-model="queryParams.provinces" :style="{ width: '100%' }" />
|
||||
</el-form-item>
|
||||
<el-form-item class="flex_one tr">
|
||||
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
|
||||
@ -77,30 +77,12 @@
|
||||
<div>{{ scope.row.memberPhoneEncrypted }}</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- <el-table-column label="买家信息" width="116">
|
||||
<template v-slot="scope">
|
||||
<div>{{ scope.row.memberUsername }}</div>
|
||||
<div>{{ scope.row.memberPhoneEncrypted }}</div>
|
||||
</template>
|
||||
</el-table-column>-->
|
||||
<el-table-column label="卖家信息" width="116">
|
||||
<template v-slot="scope">
|
||||
<div>{{ scope.row.tenantContactName }}</div>
|
||||
<div>{{ scope.row.tenantContactPhone }}</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- <el-table-column label="代理信息" width="116">
|
||||
<template v-slot="scope">
|
||||
<div>代理人姓名:{{ scope.row.deliverySn }}</div>
|
||||
<div>代理区域:{{ scope.row.deliverySn }}</div>
|
||||
<div>代理手机号:{{ scope.row.deliverySn }}</div>
|
||||
</template>
|
||||
</el-table-column>-->
|
||||
<!-- <el-table-column label="商品信息">
|
||||
<template v-slot="scope">
|
||||
<div>:{{ scope.row.productName }}</div>
|
||||
</template>
|
||||
</el-table-column>-->
|
||||
<el-table-column label="核销码" width="130">
|
||||
<template v-slot="scope">
|
||||
{{ scope.row.code }}
|
||||
@ -131,26 +113,26 @@
|
||||
<!-- <el-table-column label="分佣信息" prop="couponAmount" width="80"> </el-table-column>-->
|
||||
<el-table-column label="订单类型" prop="couponAmount" width="100">
|
||||
<template v-slot="scope">
|
||||
<el-tag type="primary">
|
||||
{{ getEmulistLabelById(scope.row.type, orderTypeMap) }}
|
||||
</el-tag>
|
||||
<!-- <el-tag type="primary"> -->
|
||||
{{ getEmulistLabelById(scope.row.type, orderTypeMap) }}
|
||||
<!-- </el-tag> -->
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="交易编号" prop="id" width="120" align="center">
|
||||
<template v-slot="scope">
|
||||
<el-link type="primary" icon="Copy" link @click="copy(scope.row.id)" :underline="false">
|
||||
{{ scope.row.id }}
|
||||
<el-icon><CopyDocument /></el-icon>
|
||||
</el-link>
|
||||
<!-- <el-link type="primary" icon="Copy" link @click="copy(scope.row.id)" :underline="false"> -->
|
||||
{{ scope.row.id }}
|
||||
<!-- <el-icon><CopyDocument /></el-icon>
|
||||
</el-link> -->
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="订单编号" prop="orderSn" width="80"> </el-table-column>
|
||||
<el-table-column label="订单状态" prop="status" width="160">
|
||||
<template v-slot="scope">
|
||||
<div>
|
||||
<el-tag style="margin-right: 10px">
|
||||
{{ getEmulistLabelById(scope.row.status, orderStatusMap) }}
|
||||
</el-tag>
|
||||
<!-- <el-tag style="margin-right: 10px"> -->
|
||||
{{ getEmulistLabelById(scope.row.status, orderStatusMap) }}
|
||||
<!-- </el-tag> -->
|
||||
</div>
|
||||
<!-- <div v-if="scope.row.deliverySn">
|
||||
物流单号:{{ scope.row.deliverySn }}
|
||||
@ -161,19 +143,24 @@
|
||||
</el-table-column>
|
||||
<el-table-column label="退款状态" prop="aftersaleStatus" width="100">
|
||||
<template v-slot="scope">
|
||||
<el-tag type="primary">
|
||||
{{ getEmulistLabelById(scope.row.aftersaleStatus, orderAftersaleMap) }}
|
||||
</el-tag>
|
||||
<!-- <el-tag type="primary"> -->
|
||||
{{ getEmulistLabelById(scope.row.aftersaleStatus, orderStatusMap) }}
|
||||
<!-- </el-tag> -->
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="提现状态" prop="withdrawStatus" width="100">
|
||||
<el-table-column label="核销状态" prop="status" width="100">
|
||||
<template v-slot="scope">
|
||||
{{ getEmulistLabelById(scope.row.status, orderWithdrawMap) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- <el-table-column label="提现状态" prop="withdrawStatus" width="100">
|
||||
<template v-slot="scope">
|
||||
<el-tag type="primary">
|
||||
{{ getEmulistLabelById(scope.row.withdrawStatus, orderWithdrawMap) }}
|
||||
</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="收件信息" prop="receiverName" width="280">
|
||||
</el-table-column> -->
|
||||
<!-- <el-table-column label="收件信息" prop="receiverName" width="280">
|
||||
<template v-slot="scope">
|
||||
<div>
|
||||
<span>{{ scope.row.decrypt ? scope.row.receiverName : getHiddenName(scope.row.receiverName) }} {{ scope.row.receiverPhone }}</span>
|
||||
@ -185,7 +172,7 @@
|
||||
<span>{{ scope.row.decrypt ? scope.row.receiverDetailAddress : getHiddenDetailAddress(scope.row.receiverDetailAddress) }}</span>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table-column> -->
|
||||
<el-table-column label="备注留言" prop="note" width="160">
|
||||
<template v-slot="scope">
|
||||
<div>
|
||||
@ -223,6 +210,7 @@
|
||||
<el-button text size="small" type="primary" @click="goDetail(scope.row)" v-hasPermi="['oms:order:query']">详情 </el-button>
|
||||
<el-button text size="small" type="primary" @click="showLog(scope.row.id)" v-hasPermi="['oms:order:log']">记录 </el-button>
|
||||
<el-button text size="small" type="primary" @click="handleDelivery(scope.row)">核销 </el-button>
|
||||
<el-button text size="small" type="primary" @click="handleRefund(scope.row)">退款</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@ -270,6 +258,20 @@
|
||||
</div>
|
||||
</template>
|
||||
</el-dialog>
|
||||
<!-- 退款弹窗 -->
|
||||
<el-dialog :title="refundObj.title" v-model="refundObj.open" width="500px" append-to-body>
|
||||
<el-form ref="noteForm" :model="refundObj.form" label-width="100px">
|
||||
<el-form-item label="退款原因" prop="reason">
|
||||
<el-input type="textarea" v-model="refundObj.form.reason" controls-position="right" :min="0" :rows="3" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template v-slot:footer>
|
||||
<div class="dialog-footer">
|
||||
<el-button type="primary" @click="handleConfirmRefund()"> 确认退款 </el-button>
|
||||
<el-button @click="refundObj.open = false">取 消</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-dialog>
|
||||
<!-- 日志 -->
|
||||
<el-dialog :title="logObj.title" v-model="logObj.open" width="500px" append-to-body>
|
||||
<el-timeline v-if="logObj.logList.length">
|
||||
@ -321,7 +323,8 @@ import {
|
||||
saveMerchantNote,
|
||||
updateOmsOrder,
|
||||
updateReceiverAddress,
|
||||
viewLog
|
||||
viewLog,
|
||||
refundOrder
|
||||
} from '@/api/oms/order';
|
||||
import AddressSelector from '@/views/components/AddressSelector/index.vue';
|
||||
import dateUtil, { dateFormat } from '@/utils/DateUtil';
|
||||
@ -408,10 +411,22 @@ export default {
|
||||
title: null,
|
||||
form: {
|
||||
id: null,
|
||||
|
||||
merchantNote: null
|
||||
},
|
||||
open: false
|
||||
},
|
||||
refundObj: {
|
||||
title: null,
|
||||
form: {
|
||||
orderId: null,
|
||||
reason: null
|
||||
},
|
||||
open: false,
|
||||
rules: {
|
||||
reason: [{ required: true, message: '退款金额不能为空', trigger: 'blur' }]
|
||||
}
|
||||
},
|
||||
logObj: {
|
||||
title: '日志',
|
||||
logList: null,
|
||||
@ -460,6 +475,19 @@ export default {
|
||||
this.getList();
|
||||
},
|
||||
methods: {
|
||||
handleRefund(row) {
|
||||
this.refundObj.title = '退款';
|
||||
this.refundObj.open = true;
|
||||
this.refundObj.form.orderId = row.id;
|
||||
},
|
||||
async handleConfirmRefund() {
|
||||
const res = await refundOrder(this.refundObj.form);
|
||||
if (res.code == 200) {
|
||||
this.$modal.msgSuccess('退款提交');
|
||||
this.getList();
|
||||
this.refundObj.open = false;
|
||||
}
|
||||
},
|
||||
/** 日期组件设置为今天 */
|
||||
setToday() {
|
||||
const temp = new Date();
|
||||
|
@ -9,11 +9,15 @@
|
||||
<el-form-item label="名称" prop="name">
|
||||
<el-input v-model="queryParams.nameLike" placeholder="请输入商品名称" clearable @keyup.enter="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="品牌" prop="brandName">
|
||||
<el-input v-model="queryParams.brandNameLike" placeholder="请输入品牌名称" clearable @keyup.enter="handleQuery" />
|
||||
<el-form-item label="品牌" prop="brandId">
|
||||
<el-select v-model="queryParams.brandId" placeholder="请选择品牌" clearable @change="handleQuery">
|
||||
<el-option v-for="item in getbrandList" :key="item.id" :label="item.name" :value="item.id" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="分类" prop="productCategoryName">
|
||||
<el-input v-model="queryParams.productCategoryNameLike" placeholder="请输入分类名称" clearable @keyup.enter="handleQuery" />
|
||||
<el-form-item label="分类" prop="categoryId">
|
||||
<el-select v-model="queryParams.categoryId" placeholder="请选择分类" clearable @change="handleQuery">
|
||||
<el-option v-for="item in getCategoryNameLike" :key="item.id" :label="item.name" :value="item.id" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="编码" prop="outProductId">
|
||||
<el-input v-model="queryParams.outProductId" placeholder="请输入商品编码" clearable @keyup.enter="handleQuery" />
|
||||
@ -35,18 +39,12 @@
|
||||
</template>
|
||||
|
||||
<el-table v-loading="loading" :data="pmsProductList" border>
|
||||
<!-- <el-table-column label="主图" prop="pic">
|
||||
<template v-slot="{ row }">
|
||||
<el-image v-if="row.pic" :src="row.pic" :preview-src-list="[row.pic]" class="small-img" />
|
||||
</template>
|
||||
</el-table-column>-->
|
||||
<el-table-column label="店铺名称" min-width="120" prop="contactUserName" align="center"> </el-table-column>
|
||||
<el-table-column label="店铺手机号" prop="contactPhone" min-width="115" align="center"> </el-table-column>
|
||||
<el-table-column label="配送方式" prop="distribution" align="center">
|
||||
<template v-slot="scope">{{ scope.row.distribution == 1 ? '到店核销' : scope.row.distribution == 2 ? '自提' : '配送' }} </template>
|
||||
</el-table-column>
|
||||
<el-table-column label="商品名称" prop="name" align="center"> </el-table-column>
|
||||
<!-- <el-table-column label="商品描述" prop="describe"> </el-table-column> -->
|
||||
<el-table-column label="商品类型" prop="type" align="center">
|
||||
<template v-slot="scope">{{ scope.row.type == 1 ? '团购' : scope.row.type == 2 ? '拼团' : '秒杀' }} </template>
|
||||
</el-table-column>
|
||||
@ -91,45 +89,8 @@
|
||||
<el-table-column label="审核状态" prop="authFlag" fixed="right" min-width="110" align="center">
|
||||
<template v-slot="scope">
|
||||
{{ scope.row.authFlag == 1 ? '待审核' : scope.row.authFlag == 2 ? '审核通过' : '审核驳回' }}
|
||||
<!-- <el-switch
|
||||
:model-value="scope.row.authFlag"
|
||||
:active-value="1"
|
||||
:inactive-value="0"
|
||||
active-text="通过"
|
||||
inactive-text="驳回"
|
||||
inline-prompt
|
||||
:before-change="
|
||||
() => {
|
||||
// return handleChangeUserStatus(scope.row);
|
||||
}
|
||||
"
|
||||
>
|
||||
</el-switch> -->
|
||||
</template></el-table-column
|
||||
>
|
||||
<!-- <el-table-column label="名称/编码" min-width="200" prop="outProductId">
|
||||
<template v-slot="{ row }">
|
||||
<div>名称:{{ row.name }}</div>
|
||||
<div v-if="row.outProductId">编码:{{ row.outProductId }}</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="品牌/分类" prop="brandName">
|
||||
<template v-slot="{ row }">
|
||||
<div v-if="row.brandName">品牌:{{ row.brandName }}</div>
|
||||
<div v-if="row.productCategoryName">分类:{{ row.productCategoryName }}</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="价格/排序" prop="price">
|
||||
<template v-slot="{ row }">
|
||||
<div v-if="row.price">价格:{{ row.price }}</div>
|
||||
<div v-if="row.sort">排序:{{ row.sort }}</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="上架状态" prop="publishStatus">
|
||||
<template v-slot="{ row }">
|
||||
<dict-tag :value="row.publishStatus" prop-name="pms_publish_status" />
|
||||
</template>
|
||||
</el-table-column>-->
|
||||
<el-table-column label="操作" class-name="small-padding fixed-width" width="150" align="center" fixed="right">
|
||||
<template v-slot="scope">
|
||||
<el-button text type="primary" icon="Edit" @click="handleUpdate(scope.row)">修改 </el-button>
|
||||
@ -138,9 +99,6 @@
|
||||
<br />
|
||||
<el-button text type="primary" icon="Delete" @click="handleDelete(scope.row)">删除</el-button>
|
||||
</template>
|
||||
<!-- <template v-slot="scope">
|
||||
<el-button text type="primary" @click="showProductEditModal(scope.row)">编辑</el-button>
|
||||
</template>-->
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
@ -221,12 +179,11 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { delPmsProduct, listPmsProduct, productpublish, productaudit } from '@/api/pms/product';
|
||||
import { delPmsProduct, listPmsProduct, productpublish, productaudit, getproductCategoryNameLike, getbrand } from '@/api/pms/product';
|
||||
import { isStarRepo } from '@/utils/is-star-plugin';
|
||||
import { useUserStore } from '@/store/modules/user';
|
||||
import AddressSelector from '@/views/components/AddressSelector/index.vue';
|
||||
import { editUserData } from '@/api/ums/member.js';
|
||||
|
||||
export default {
|
||||
name: 'PmsProduct',
|
||||
components: { AddressSelector },
|
||||
@ -273,6 +230,8 @@ export default {
|
||||
/* email: [{ type: 'email', message: '请输入正确的邮箱地址', trigger: ['blur', 'change'] }],*/
|
||||
phone: [{ required: true, pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, message: '请输入正确的手机号码', trigger: 'blur' }]
|
||||
},
|
||||
getCategoryNameLike: [],
|
||||
getbrandList: [],
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
@ -291,12 +250,15 @@ export default {
|
||||
detailHtml: null,
|
||||
detailMobileHtml: null,
|
||||
brandName: null,
|
||||
productCategoryName: null
|
||||
productCategoryName: null,
|
||||
brandId: null
|
||||
}
|
||||
};
|
||||
},
|
||||
created() {
|
||||
this.getList();
|
||||
this.getgetproductCategoryNameLike();
|
||||
this.getbrand();
|
||||
},
|
||||
computed: {
|
||||
userId: {
|
||||
@ -306,6 +268,16 @@ export default {
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 查询商品分类列表
|
||||
async getgetproductCategoryNameLike() {
|
||||
const res = await getproductCategoryNameLike();
|
||||
this.getCategoryNameLike = res.data;
|
||||
},
|
||||
// 查询商品分类列表
|
||||
async getbrand() {
|
||||
const res = await getbrand();
|
||||
this.getbrandList = res.data;
|
||||
},
|
||||
//审核
|
||||
async authInfoProduct() {
|
||||
const res = await productaudit(this.authInfo, this.authInfo);
|
||||
|
@ -67,7 +67,7 @@
|
||||
</el-form>
|
||||
<!-- 底部 -->
|
||||
<div class="el-register-footer">
|
||||
<span>Copyright © 2018-2025 疯狂的狮子Li All Rights Reserved.</span>
|
||||
<!-- <span>Copyright © 2018-2025 疯狂的狮子Li All Rights Reserved.</span> -->
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
327
src/views/system/article/index.vue
Normal file
327
src/views/system/article/index.vue
Normal file
@ -0,0 +1,327 @@
|
||||
<template>
|
||||
<div class="p-2">
|
||||
<el-row :gutter="20">
|
||||
<!-- 部门树 -->
|
||||
<el-col :lg="4" :xs="24" style="">
|
||||
<el-card shadow="hover">
|
||||
<!-- <el-input v-model="deptName" placeholder="请输入分类名称" prefix-icon="Search" clearable /> -->
|
||||
<el-tree
|
||||
ref="deptTreeRef"
|
||||
class="mt-2"
|
||||
node-key="id"
|
||||
:data="deptOptions"
|
||||
:props="{ label: 'name', children: 'children' } as any"
|
||||
:expand-on-click-node="false"
|
||||
:filter-node-method="filterNode"
|
||||
highlight-current
|
||||
default-expand-all
|
||||
@node-click="handleNodeClick"
|
||||
/>
|
||||
</el-card>
|
||||
</el-col>
|
||||
<el-col :lg="20" :xs="24">
|
||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||
<div v-show="showSearch" class="mb-[10px]">
|
||||
<el-card shadow="hover">
|
||||
<el-form ref="queryFormRef" :model="queryParams" :inline="true" label-width="80px">
|
||||
<el-form-item label="文章标题:" prop="postCode">
|
||||
<el-input v-model="queryParams.title" placeholder="请输入文章标题" clearable @keyup.enter="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
|
||||
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
</div>
|
||||
</transition>
|
||||
<el-card shadow="hover">
|
||||
<template #header>
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-col :span="1.5">
|
||||
<el-button v-hasPermi="['content:article:add']" type="primary" plain icon="Plus" @click="handleAdd">新增</el-button>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</template>
|
||||
<el-table v-loading="loading" border :data="postList">
|
||||
<el-table-column label="分类名称" align="center" prop="type" />
|
||||
<el-table-column label="文章标题" align="center" prop="title" />
|
||||
<el-table-column label="是否显示" align="center" width="100">
|
||||
<template #default="{ row }">
|
||||
<!-- <el-switch v-model="row.status" active-value="0" inactive-value="1" @change="() => handleStatusChange(row)"> </el-switch> -->
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="排序" align="center" prop="sort" />
|
||||
<el-table-column label="操作" width="180" align="center" class-name="small-padding fixed-width">
|
||||
<template #default="scope">
|
||||
<el-tooltip content="修改" placement="top">
|
||||
<el-button v-hasPermi="['content:article:edit']" link type="primary" icon="Edit" @click="handleUpdate(scope.row)"></el-button>
|
||||
</el-tooltip>
|
||||
<el-tooltip content="删除" placement="top">
|
||||
<el-button v-hasPermi="['content:article:remove']" link type="primary" icon="Delete" @click="handleDelete(scope.row)"></el-button>
|
||||
</el-tooltip>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<pagination v-show="total > 0" v-model:page="queryParams.current" v-model:limit="queryParams.size" :total="total" @pagination="getList" />
|
||||
</el-card>
|
||||
|
||||
<!-- 添加或修改岗位对话框 -->
|
||||
<el-dialog v-model="dialog.visible" :title="dialog.title" width="1000px" append-to-body>
|
||||
<el-form ref="postFormRef" :model="form" :rules="rules" label-width="80px">
|
||||
<el-form-item label="文章标题" prop="title" label-width="100px">
|
||||
<el-input style="width: 100%" v-model="form.title" placeholder="请输入文章标题" />
|
||||
</el-form-item>
|
||||
<el-form-item label="文章分类" prop="categoryId" label-width="100px">
|
||||
<el-cascader
|
||||
style="width: 100%"
|
||||
v-model="form.categoryId"
|
||||
:options="deptOptions"
|
||||
:props="{
|
||||
value: 'id',
|
||||
label: 'name',
|
||||
children: 'children',
|
||||
checkStrictly: true,
|
||||
emitPath: false
|
||||
}"
|
||||
placeholder="请选择文章分类"
|
||||
clearable
|
||||
filterable
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="文章类型" prop="type" label-width="100px">
|
||||
<el-select v-model="form.type" placeholder="请选择文章分类" style="width: 100%">
|
||||
<el-option v-for="item in enterpriseList" :key="item.value" :label="item.label" :value="item.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="文章排序" prop="sort" label-width="100px">
|
||||
<el-input v-model="form.sort" placeholder="请输入文章排序" style="width: 100%" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="文章内容" prop="content" label-width="100px">
|
||||
<Editor ref="editorRef" v-model="form.content" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="文章状态" prop="status">
|
||||
<DictRadio v-model="form.status" radioData="cont_article_status" :show-all="'all'" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<div class="dialog-footer">
|
||||
<el-button type="primary" @click="submitForm">确 定</el-button>
|
||||
<el-button @click="cancel">取 消</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup name="Post" lang="ts">
|
||||
import { listPost, addPost, delPost, getPost, updatePost, listCategory } from '@/api/system/article';
|
||||
import { PostForm, PostQuery, PostVO } from '@/api/system/article/types';
|
||||
import { DeptVO } from '@/api/system/dept/types';
|
||||
import api from '@/api/system/user';
|
||||
import Editor from '@/components/Editor/index.vue';
|
||||
import { getDictionaryByKey } from '@/utils/dict';
|
||||
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
||||
const { sys_normal_disable } = toRefs<any>(proxy?.useDict('sys_normal_disable'));
|
||||
|
||||
const postList = ref<PostVO[]>([]);
|
||||
const loading = ref(true);
|
||||
const showSearch = ref(true);
|
||||
const total = ref(0);
|
||||
const deptName = ref('');
|
||||
const deptOptions = ref<any[]>([]);
|
||||
const deptTreeRef = ref<ElTreeInstance>();
|
||||
const postFormRef = ref<ElFormInstance>();
|
||||
const queryFormRef = ref<ElFormInstance>();
|
||||
|
||||
const dialog = reactive<DialogOption>({
|
||||
visible: false,
|
||||
title: ''
|
||||
});
|
||||
|
||||
const initFormData: PostForm = {
|
||||
id: undefined,
|
||||
title: '',
|
||||
type: undefined,
|
||||
sort: undefined,
|
||||
categoryId: undefined,
|
||||
content: '',
|
||||
status: ''
|
||||
};
|
||||
|
||||
const data = reactive<PageData<PostForm, PostQuery>>({
|
||||
form: { ...initFormData },
|
||||
queryParams: {
|
||||
current: 1,
|
||||
size: 10,
|
||||
title: undefined,
|
||||
categoryId: undefined
|
||||
},
|
||||
rules: {
|
||||
title: [{ required: true, message: '文章标题不能为空', trigger: 'blur' }],
|
||||
type: [{ required: true, message: '文章类型不能为空', trigger: 'blur' }],
|
||||
categoryId: [{ required: true, message: '文章分类不能为空', trigger: 'blur' }],
|
||||
sort: [{ required: true, message: '文章排序不能为空', trigger: 'blur' }],
|
||||
content: [{ required: true, message: '文章内容不能为空', trigger: 'blur' }],
|
||||
status: [{ required: true, message: '文章状态不能为空', trigger: 'blur' }]
|
||||
}
|
||||
});
|
||||
|
||||
const { queryParams, form, rules } = toRefs<PageData<PostForm, PostQuery>>(data);
|
||||
/** 角色状态修改 */
|
||||
const handleStatusChange = async (row: any) => {
|
||||
const text = row.status === '0' ? '启用' : '停用';
|
||||
try {
|
||||
await proxy?.$modal.confirm('确认要"' + text + '""' + row.roleName + '"角色吗?');
|
||||
await changeRoleStatus(row.roleId, row.status);
|
||||
proxy?.$modal.msgSuccess(text + '成功');
|
||||
} catch {
|
||||
row.status = row.status === '0' ? '1' : '0';
|
||||
}
|
||||
};
|
||||
|
||||
/** 通过条件过滤节点 */
|
||||
const filterNode = (value: string, data: any) => {
|
||||
if (!value) return true;
|
||||
return data.label.indexOf(value) !== -1;
|
||||
};
|
||||
const enterpriseList = ref([]); // 种类
|
||||
const getByKey = async () => {
|
||||
const value1 = await getDictionaryByKey('cont_article_type');
|
||||
console.log(value1);
|
||||
value1.forEach((item: any) => {
|
||||
item.value = Number(item.value);
|
||||
});
|
||||
enterpriseList.value = value1;
|
||||
};
|
||||
/** 根据名称筛选部门树 */
|
||||
watchEffect(
|
||||
() => {
|
||||
deptTreeRef.value?.filter(deptName.value);
|
||||
},
|
||||
{
|
||||
flush: 'post' // watchEffect会在DOM挂载或者更新之前就会触发,此属性控制在DOM元素更新后运行
|
||||
}
|
||||
);
|
||||
watch(deptName, (val) => {
|
||||
deptTreeRef.value?.filter(val);
|
||||
});
|
||||
const queryTree = ref({
|
||||
current: 1,
|
||||
size: 10,
|
||||
id: '',
|
||||
name: undefined,
|
||||
parentId: undefined,
|
||||
sort: undefined,
|
||||
level: undefined,
|
||||
type: undefined
|
||||
});
|
||||
/** 查询文章分类下拉树结构 */
|
||||
const getTreeSelect = async () => {
|
||||
const res = await listCategory(queryTree.value);
|
||||
deptOptions.value = res.data;
|
||||
};
|
||||
|
||||
/** 节点单击事件 */
|
||||
const handleNodeClick = (data: DeptVO) => {
|
||||
queryParams.value.categoryId = data.id;
|
||||
handleQuery();
|
||||
};
|
||||
|
||||
/** 查询岗位列表 */
|
||||
const getList = async () => {
|
||||
loading.value = true;
|
||||
const res = await listPost(queryParams.value);
|
||||
postList.value = res.data.records;
|
||||
total.value = res.data.total;
|
||||
loading.value = false;
|
||||
};
|
||||
|
||||
/** 取消按钮 */
|
||||
const cancel = () => {
|
||||
reset();
|
||||
dialog.visible = false;
|
||||
};
|
||||
|
||||
/** 表单重置 */
|
||||
const reset = () => {
|
||||
form.value = { ...initFormData };
|
||||
postFormRef.value?.resetFields();
|
||||
};
|
||||
|
||||
/** 搜索按钮操作 */
|
||||
const handleQuery = () => {
|
||||
getList();
|
||||
};
|
||||
|
||||
/** 重置按钮操作 */
|
||||
const resetQuery = () => {
|
||||
queryFormRef.value?.resetFields();
|
||||
queryParams.value.categoryId = undefined;
|
||||
queryParams.value.title = undefined;
|
||||
queryParams.value.current = 1;
|
||||
handleQuery();
|
||||
};
|
||||
|
||||
/** 新增按钮操作 */
|
||||
const handleAdd = () => {
|
||||
reset();
|
||||
dialog.visible = true;
|
||||
dialog.title = '添加岗位';
|
||||
};
|
||||
|
||||
/** 修改按钮操作 */
|
||||
const handleUpdate = async (row?: any) => {
|
||||
reset();
|
||||
getByKey();
|
||||
const postId = row.id;
|
||||
const res = await getPost(postId);
|
||||
Object.assign(form.value, res.data);
|
||||
dialog.visible = true;
|
||||
dialog.title = '修改岗位';
|
||||
};
|
||||
|
||||
/** 提交按钮 */
|
||||
const submitForm = () => {
|
||||
postFormRef.value?.validate(async (valid: boolean) => {
|
||||
if (valid) {
|
||||
form.value.id ? await updatePost(form.value) : await addPost(form.value);
|
||||
proxy?.$modal.msgSuccess('操作成功');
|
||||
dialog.visible = false;
|
||||
await getList();
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
/** 删除按钮操作 */
|
||||
const handleDelete = async (row?: any) => {
|
||||
const postIds = row.id;
|
||||
await proxy?.$modal.confirm('是否确认删除岗位编号为"' + postIds + '"的数据项?');
|
||||
await delPost(postIds);
|
||||
await getList();
|
||||
proxy?.$modal.msgSuccess('删除成功');
|
||||
};
|
||||
|
||||
/** 导出按钮操作 */
|
||||
const handleExport = () => {
|
||||
proxy?.download(
|
||||
'system/post/export',
|
||||
{
|
||||
...queryParams.value
|
||||
},
|
||||
`post_${new Date().getTime()}.xlsx`
|
||||
);
|
||||
};
|
||||
|
||||
onMounted(() => {
|
||||
getTreeSelect(); // 初始化部门数据
|
||||
getList();
|
||||
getByKey();
|
||||
});
|
||||
</script>
|
213
src/views/system/category/index.vue
Normal file
213
src/views/system/category/index.vue
Normal file
@ -0,0 +1,213 @@
|
||||
<template>
|
||||
<div class="p-2">
|
||||
<el-row :gutter="20">
|
||||
<el-col>
|
||||
<el-card shadow="hover">
|
||||
<template #header>
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-col :span="1.5">
|
||||
<el-button v-hasPermi="['system:post:add']" type="primary" plain icon="Plus" @click="handleAdd">新增一级分类</el-button>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</template>
|
||||
<el-table v-loading="loading" border :data="postList" :tree-props="{ children: 'children', hasChildren: 'hasChildren' }" row-key="id">
|
||||
<el-table-column label="分类名称" align="left" prop="name" />
|
||||
<el-table-column label="排序" align="center" prop="sort" />
|
||||
<el-table-column label="操作" width="180" align="center" class-name="small-padding fixed-width">
|
||||
<template #default="scope">
|
||||
<el-tooltip content="添加子分类" placement="top" v-if="scope.row.parentId == 0 || scope.row.parentId == '0'">
|
||||
<el-button v-hasPermi="['system:post:add']" link type="primary" icon="Plus" @click="handleAddChild(scope.row)"></el-button>
|
||||
</el-tooltip>
|
||||
<el-tooltip content="修改" placement="top">
|
||||
<el-button v-hasPermi="['system:post:edit']" link type="primary" icon="Edit" @click="handleUpdate(scope.row)"></el-button>
|
||||
</el-tooltip>
|
||||
<el-tooltip content="删除" placement="top">
|
||||
<el-button v-hasPermi="['system:post:remove']" link type="primary" icon="Delete" @click="handleDelete(scope.row)"></el-button>
|
||||
</el-tooltip>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-card>
|
||||
|
||||
<!-- 添加或修改岗位对话框 -->
|
||||
<el-dialog v-model="dialog.visible" :title="dialog.title" width="500px" append-to-body>
|
||||
<el-form ref="postFormRef" :model="form" :rules="rules" label-width="80px">
|
||||
<el-form-item label="上级分类" prop="name">
|
||||
<span v-if="form.parentId">{{ form.oneName }}</span>
|
||||
<span v-else>顶级分类</span>
|
||||
</el-form-item>
|
||||
<el-form-item label="分类名称" prop="name">
|
||||
<el-input v-model="form.name" autocomplete="off" />
|
||||
</el-form-item>
|
||||
<el-form-item label="排序" prop="level">
|
||||
<el-input v-model="form.sort" autocomplete="off" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<div class="dialog-footer">
|
||||
<el-button type="primary" @click="submitForm">确 定</el-button>
|
||||
<el-button @click="cancel">取 消</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup name="Post" lang="ts">
|
||||
import { listPost, getPost, updatePost, addPost, delPost } from '@/api/system/category';
|
||||
import { PostVO, PostForm, PostQuery } from '@/api/system/category/types';
|
||||
import { DeptVO } from '@/api/system/dept/types';
|
||||
import api from '@/api/system/user';
|
||||
|
||||
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
||||
const { sys_normal_disable } = toRefs<any>(proxy?.useDict('sys_normal_disable'));
|
||||
|
||||
const postList = ref<PostVO[]>([]);
|
||||
const loading = ref(true);
|
||||
const showSearch = ref(true);
|
||||
const ids = ref<Array<number | string>>([]);
|
||||
const single = ref(true);
|
||||
const multiple = ref(true);
|
||||
const total = ref(0);
|
||||
const deptName = ref('');
|
||||
const deptOptions = ref<DeptVO[]>([]);
|
||||
const deptTreeRef = ref<ElTreeInstance>();
|
||||
const postFormRef = ref<ElFormInstance>();
|
||||
const queryFormRef = ref<ElFormInstance>();
|
||||
|
||||
const dialog = reactive<DialogOption>({
|
||||
visible: false,
|
||||
title: ''
|
||||
});
|
||||
|
||||
const initFormData: PostForm = {
|
||||
id: undefined,
|
||||
name: undefined,
|
||||
level: undefined,
|
||||
parentId: undefined,
|
||||
sort: undefined,
|
||||
type: undefined,
|
||||
oneName: undefined
|
||||
};
|
||||
|
||||
const data = reactive<PageData<PostForm, PostQuery>>({
|
||||
form: { ...initFormData },
|
||||
queryParams: {
|
||||
current: 1,
|
||||
size: 10,
|
||||
id: '',
|
||||
name: undefined,
|
||||
parentId: undefined,
|
||||
sort: undefined,
|
||||
level: undefined,
|
||||
type: undefined
|
||||
},
|
||||
rules: {
|
||||
postName: [{ required: true, message: '岗位名称不能为空', trigger: 'blur' }],
|
||||
postCode: [{ required: true, message: '岗位编码不能为空', trigger: 'blur' }],
|
||||
deptId: [{ required: true, message: '部门不能为空', trigger: 'blur' }],
|
||||
postSort: [{ required: true, message: '岗位顺序不能为空', trigger: 'blur' }]
|
||||
}
|
||||
});
|
||||
|
||||
const { queryParams, form, rules } = toRefs<PageData<PostForm, PostQuery>>(data);
|
||||
|
||||
const handleAddChild = (row: PostForm) => {
|
||||
reset();
|
||||
form.value.parentId = row.id;
|
||||
form.value.oneName = row.name;
|
||||
dialog.visible = true;
|
||||
dialog.title = '添加' + row.name + ' 子分类';
|
||||
};
|
||||
|
||||
/** 查询文章分类列表 */
|
||||
const getList = async () => {
|
||||
loading.value = true;
|
||||
const res = await listPost(queryParams.value);
|
||||
postList.value = res.data;
|
||||
loading.value = false;
|
||||
};
|
||||
|
||||
/** 取消按钮 */
|
||||
const cancel = () => {
|
||||
reset();
|
||||
dialog.visible = false;
|
||||
};
|
||||
|
||||
/** 表单重置 */
|
||||
const reset = () => {
|
||||
form.value = { ...initFormData };
|
||||
postFormRef.value?.resetFields();
|
||||
};
|
||||
|
||||
/** 搜索按钮操作 */
|
||||
const handleQuery = () => {
|
||||
queryParams.value.pageNum = 1;
|
||||
if (queryParams.value.deptId) {
|
||||
queryParams.value.belongDeptId = undefined;
|
||||
}
|
||||
getList();
|
||||
};
|
||||
|
||||
/** 重置按钮操作 */
|
||||
const resetQuery = () => {
|
||||
queryFormRef.value?.resetFields();
|
||||
queryParams.value.pageNum = 1;
|
||||
queryParams.value.deptId = undefined;
|
||||
deptTreeRef.value?.setCurrentKey(undefined);
|
||||
/** 清空左边部门树选中值 */
|
||||
queryParams.value.belongDeptId = undefined;
|
||||
handleQuery();
|
||||
};
|
||||
|
||||
/** 多选框选中数据 */
|
||||
const handleSelectionChange = (selection: PostVO[]) => {
|
||||
ids.value = selection.map((item) => item.postId);
|
||||
single.value = selection.length != 1;
|
||||
multiple.value = !selection.length;
|
||||
};
|
||||
|
||||
/** 新增按钮操作 */
|
||||
const handleAdd = () => {
|
||||
reset();
|
||||
dialog.visible = true;
|
||||
dialog.title = '添加分类';
|
||||
};
|
||||
|
||||
/** 修改按钮操作 */
|
||||
const handleUpdate = async (row?: any) => {
|
||||
const postId = row.id;
|
||||
const res = await getPost(postId);
|
||||
Object.assign(form.value, res.data);
|
||||
console.log(form.value);
|
||||
dialog.visible = true;
|
||||
dialog.title = '修改分类';
|
||||
};
|
||||
|
||||
/** 提交按钮 */
|
||||
const submitForm = () => {
|
||||
postFormRef.value?.validate(async (valid: boolean) => {
|
||||
if (valid) {
|
||||
form.value.id ? await updatePost(form.value) : await addPost(form.value);
|
||||
proxy?.$modal.msgSuccess('操作成功');
|
||||
dialog.visible = false;
|
||||
await getList();
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
/** 删除按钮操作 */
|
||||
const handleDelete = async (row: any) => {
|
||||
const postIds = row.id;
|
||||
await proxy?.$modal.confirm('是否确认删除岗位编号为"' + row.id + '"的数据项?');
|
||||
await delPost(postIds);
|
||||
await getList();
|
||||
proxy?.$modal.msgSuccess('删除成功');
|
||||
};
|
||||
|
||||
onMounted(() => {
|
||||
getList();
|
||||
});
|
||||
</script>
|
@ -237,37 +237,34 @@ const mul = ref<string>('');
|
||||
const isFuttl = ref<boolean>(false);
|
||||
//详情数据
|
||||
const funseach = (data: any) => {
|
||||
getTenantPackage();
|
||||
// getTenantPackage();
|
||||
templateDetailList.value = [];
|
||||
constdfrom.value = [];
|
||||
sexDialog.value.visible = true;
|
||||
secform.value.templateId = data.id;
|
||||
mul.value = data.templateType;
|
||||
sexDialog.value.title = '模板详情';
|
||||
getsections({ 'templateId': data.id }).then((res: any) => {
|
||||
if (res.code == 200) {
|
||||
if (res.data.length > 0) {
|
||||
console.log(res.data.length);
|
||||
if (data.templateType == '1') {
|
||||
// isFuttl.value = true;
|
||||
|
||||
isFuttl.value = true;
|
||||
if (data.templateType == '1') {
|
||||
res.data.forEach((item: any) => {
|
||||
templateDetailList.value.push({
|
||||
rateName: item.rateName,
|
||||
rate: item.rate,
|
||||
id: item.id
|
||||
});
|
||||
res.data.forEach((item: any) => {
|
||||
templateDetailList.value.push({
|
||||
rateName: item.rateName,
|
||||
rate: item.rate,
|
||||
id: item.id
|
||||
});
|
||||
} else {
|
||||
res.data.forEach((item: any) => {
|
||||
constdfrom.value.push({
|
||||
minAmount: item.minAmount,
|
||||
maxAmount: item.maxAmount,
|
||||
rate: item.rate,
|
||||
id: item.id
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
} else {
|
||||
isFuttl.value = false;
|
||||
res.data.forEach((item: any) => {
|
||||
constdfrom.value.push({
|
||||
minAmount: item.minAmount,
|
||||
maxAmount: item.maxAmount,
|
||||
rate: item.rate,
|
||||
id: item.id
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
@ -276,51 +273,7 @@ const secformRef = ref<ElFormInstance>();
|
||||
const constdfromRef = ref<ElFormInstance>();
|
||||
//模板比例添加
|
||||
const addsectionasync = async () => {
|
||||
//修改
|
||||
if (isFuttl.value) {
|
||||
if (mul.value == '1') {
|
||||
secformRef.value?.validate(async (valid: boolean) => {
|
||||
if (valid) {
|
||||
// const valuefn = JSON.stringify(templateDetailList.value);
|
||||
secform.value.templateList = JSON.stringify(templateDetailList.value);
|
||||
const res = await putsections(secform.value);
|
||||
if (res.code == 200) {
|
||||
isFuttl.value = false;
|
||||
ElMessage.success('修改成功');
|
||||
sexDialog.value.visible = false;
|
||||
getList();
|
||||
secform.value = {
|
||||
templateId: '',
|
||||
templateList: ''
|
||||
};
|
||||
templateDetailList.value = [];
|
||||
}
|
||||
}
|
||||
});
|
||||
} else {
|
||||
constdfromRef.value?.validate(async (valid: boolean) => {
|
||||
if (valid) {
|
||||
// const valuefn = JSON.stringify(constdfrom.value);
|
||||
secform.value.templateList = JSON.stringify(constdfrom.value);
|
||||
const res = await putsections(secform.value);
|
||||
if (res.code == 200) {
|
||||
isFuttl.value = false;
|
||||
ElMessage.success('修改成功');
|
||||
sexDialog.value.visible = false;
|
||||
getList();
|
||||
secform.value = {
|
||||
templateId: '',
|
||||
templateList: ''
|
||||
};
|
||||
constdfrom.value = [];
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
} else {
|
||||
//添加
|
||||
addsecfun();
|
||||
}
|
||||
addsecfun();
|
||||
};
|
||||
const addsecfun = () => {
|
||||
if (mul.value == '1') {
|
||||
@ -329,7 +282,6 @@ const addsecfun = () => {
|
||||
secform.value.templateList = JSON.stringify(templateDetailList.value);
|
||||
const res = await addsection(secform.value);
|
||||
if (res.code == 200) {
|
||||
isFuttl.value = false;
|
||||
ElMessage.success('新增成功');
|
||||
sexDialog.value.visible = false;
|
||||
getList();
|
||||
@ -347,7 +299,6 @@ const addsecfun = () => {
|
||||
secform.value.templateList = JSON.stringify(constdfrom.value);
|
||||
const res = await addsection(secform.value);
|
||||
if (res.code == 200) {
|
||||
isFuttl.value = false;
|
||||
ElMessage.success('新增成功');
|
||||
sexDialog.value.visible = false;
|
||||
getList();
|
||||
@ -448,7 +399,7 @@ const resetQuery = () => {
|
||||
/** 新增按钮操作 */
|
||||
const handleAdd = () => {
|
||||
reset();
|
||||
getTenantPackage();
|
||||
// getTenantPackage();
|
||||
dialog.visible = true;
|
||||
dialog.title = '新增模板';
|
||||
};
|
||||
@ -456,7 +407,7 @@ const handleAdd = () => {
|
||||
/** 修改按钮操作 */
|
||||
const handleUpdate = async (row?: TenantVO) => {
|
||||
reset();
|
||||
await getTenantPackage();
|
||||
// await getTenantPackage();
|
||||
const _id = row?.id;
|
||||
// const res = await getTenant(_id);
|
||||
Object.assign(form.value, row);
|
||||
|
@ -93,6 +93,11 @@
|
||||
<span>{{ proxy.parseTime(scope.row.expireTime, '{y}-{m}-{d}') }}</span>
|
||||
</template>
|
||||
</el-table-column> -->
|
||||
<el-table-column label="签约状态" align="center" prop="signStatus">
|
||||
<template #default="scope">
|
||||
{{ signList.filter((item) => item.value == scope.row.signStatus)[0]?.label }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="租户状态" align="center" prop="status">
|
||||
<template #default="scope">
|
||||
<el-switch v-model="scope.row.status" active-value="0" inactive-value="1" @change="handleStatusChange(scope.row)"></el-switch>
|
||||
@ -401,7 +406,7 @@
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="签约状态" prop="signStatus" align="left">
|
||||
<el-form-item label="签约状态" prop="signStatus" align="left" v-if="form.id">
|
||||
<el-select v-model="form.signStatus" placeholder="请选择签约状态" clearable>
|
||||
<el-option v-for="(item, index) in signList" :key="index" :label="item.label" :value="item.value" />
|
||||
</el-select>
|
||||
@ -838,10 +843,12 @@ const data = reactive<PageData<TenantForm, TenantQuery>>({
|
||||
rules: {
|
||||
id: [{ required: true, message: 'id不能为空', trigger: 'blur' }],
|
||||
tenantId: [{ required: true, message: '租户编号不能为空', trigger: 'blur' }],
|
||||
bankPhone: [{ required: true, message: '开户行预留手机号不能为空', trigger: 'blur' }],
|
||||
contactUserName: [{ required: true, message: '联系人不能为空', trigger: 'blur' }],
|
||||
contactPhone: [{ required: true, message: '联系电话不能为空', trigger: 'blur' }],
|
||||
contractAttachment: [{ required: true, message: '签约附件不能为空', trigger: 'blur' }],
|
||||
attachment: [{ required: true, message: '营业执照附件不能为空', trigger: 'blur' }],
|
||||
signDate: [{ required: true, message: '签约日期不能为空', trigger: 'blur' }],
|
||||
certificate: [{ required: true, message: '身份证附件不能为空', trigger: 'blur' }],
|
||||
promoteList: [{ required: true, message: '推广附件不能为空', trigger: 'blur' }],
|
||||
packageId: [{ required: true, message: '套餐编号不能为空', trigger: 'blur' }],
|
||||
|
@ -55,9 +55,9 @@
|
||||
<el-tab-pane label="修改密码" name="resetPwd">
|
||||
<resetPwd />
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="第三方应用" name="thirdParty">
|
||||
<!-- <el-tab-pane label="第三方应用" name="thirdParty">
|
||||
<thirdParty :auths="state.auths" />
|
||||
</el-tab-pane>
|
||||
</el-tab-pane> -->
|
||||
<el-tab-pane label="在线设备" name="onlineDevice">
|
||||
<onlineDevice :devices="state.devices" />
|
||||
</el-tab-pane>
|
||||
|
@ -37,20 +37,69 @@
|
||||
<el-table-column label="积分余额" prop="integral" align="center">
|
||||
<template v-slot="scope"> ¥ {{ scope.row.integral || '0.00' }} </template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="操作" align="center">
|
||||
<template v-slot="scope">
|
||||
<el-button v-hasPermi="['system:tenant:edit']" link type="primary" @click="showTenantBannedInfoModal(scope.row, true)">
|
||||
查看明细
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<pagination :total="total" v-model:page="queryParams.current" v-model:limit="queryParams.size" @pagination="getList" />
|
||||
</el-card>
|
||||
</div>
|
||||
<el-dialog v-model="isshow" title="明细" width="1200px" append-to-body>
|
||||
<el-card shadow="hover">
|
||||
<el-form :model="queryParams" ref="query" :inline="true" v-show="showSearch" label-width="100px" size="default" class="ry_form">
|
||||
<el-form-item label="时间:" prop="date">
|
||||
<el-date-picker
|
||||
v-model="query.date"
|
||||
value-format="YYYY-MM-DD HH:mm:ss"
|
||||
type="daterange"
|
||||
range-separator="-"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
:default-time="[new Date(2000, 1, 1, 0, 0, 0), new Date(2000, 1, 1, 23, 59, 59)]"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="类型:" prop="changeType">
|
||||
<el-select v-model="query.changeType" placeholder="请选择类型" clearable size="default" style="width: 240px">
|
||||
<el-option label="收入" value="1" />
|
||||
<el-option label="支出" value="2" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item class="flex_one tr">
|
||||
<el-button type="primary" icon="Search" @click="getFomg">搜索</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<el-table :data="tableData" border>
|
||||
<el-table-column label="变动类型" prop="accountType" align="center" />
|
||||
<el-table-column label="变动来源" prop="accountTypeDesc" align="center" />
|
||||
<el-table-column label="用户类型" prop="userType" align="center" />
|
||||
<el-table-column label="余额" prop="moneyBalance" align="center" />
|
||||
<el-table-column label="变动前余额" prop="beforeBalance" align="center" />
|
||||
<el-table-column label="变动后余额" prop="afterBalance" align="center" />
|
||||
<el-table-column label="变动金额" prop="changeAmount" align="center" />
|
||||
<el-table-column label="变动类型" prop="changeType" align="center" />
|
||||
<el-table-column label="创建时间" prop="createTime" align="center" />
|
||||
<el-table-column label="备注" prop="remark" align="center" />
|
||||
</el-table>
|
||||
<pagination :total="totals" v-model:page="query.current" v-model:limit="query.size" @pagination="getFomg" />
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { getUserAccountList } from '@/api/ums/member';
|
||||
import { getUserAccountList, listCurrent } from '@/api/ums/member';
|
||||
|
||||
export default {
|
||||
name: 'UmeAccount',
|
||||
data() {
|
||||
return {
|
||||
tableData: [],
|
||||
isshow: false,
|
||||
show: false,
|
||||
// 遮罩层
|
||||
loading: true,
|
||||
@ -71,6 +120,14 @@ export default {
|
||||
name: null,
|
||||
phone: null,
|
||||
type: null
|
||||
},
|
||||
totals: 0,
|
||||
query: {
|
||||
current: 1,
|
||||
size: 10,
|
||||
accountld: null,
|
||||
date: null,
|
||||
changeType: null
|
||||
}
|
||||
};
|
||||
},
|
||||
@ -79,6 +136,18 @@ export default {
|
||||
this.getList();
|
||||
},
|
||||
methods: {
|
||||
showTenantBannedInfoModal(row) {
|
||||
this.query.accountld = row.id;
|
||||
this.getFomg();
|
||||
},
|
||||
async getFomg() {
|
||||
const res = await listCurrent(this.query);
|
||||
if (res.code === 200) {
|
||||
this.tableData = res.data.records;
|
||||
this.totals = res.data.total;
|
||||
this.isshow = true;
|
||||
}
|
||||
},
|
||||
/** 查询会员信息列表 */
|
||||
getList() {
|
||||
// type:账户类型 1 用户 2 商家 3 代理 4 平台
|
||||
|
Loading…
x
Reference in New Issue
Block a user