20260325稳定版
This commit is contained in:
@@ -0,0 +1,106 @@
|
|||||||
|
import request from '@/utils/request';
|
||||||
|
import type { ApiResult, PageResult } from '@/api';
|
||||||
|
import type { LawLegalMediate, LawLegalMediateParam } from './model';
|
||||||
|
import { MODULES_API_URL } from '@/config/setting';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询调解申请
|
||||||
|
*/
|
||||||
|
export async function pageLawLegalMediate(params: LawLegalMediateParam) {
|
||||||
|
const res = await request.get<ApiResult<PageResult<LawLegalMediate>>>(
|
||||||
|
MODULES_API_URL + '/law/law-legal-mediate/page',
|
||||||
|
{
|
||||||
|
params
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.data.code === 0) {
|
||||||
|
return res.data.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.data.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询调解申请列表
|
||||||
|
*/
|
||||||
|
export async function listLawLegalMediate(params?: LawLegalMediateParam) {
|
||||||
|
const res = await request.get<ApiResult<LawLegalMediate[]>>(
|
||||||
|
MODULES_API_URL + '/law/law-legal-mediate',
|
||||||
|
{
|
||||||
|
params
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.data.code === 0 && res.data.data) {
|
||||||
|
return res.data.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.data.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 添加调解申请
|
||||||
|
*/
|
||||||
|
export async function addLawLegalMediate(data: LawLegalMediate) {
|
||||||
|
const res = await request.post<ApiResult<unknown>>(
|
||||||
|
MODULES_API_URL + '/law/law-legal-mediate',
|
||||||
|
data
|
||||||
|
);
|
||||||
|
if (res.data.code === 0) {
|
||||||
|
return res.data.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.data.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改调解申请
|
||||||
|
*/
|
||||||
|
export async function updateLawLegalMediate(data: LawLegalMediate) {
|
||||||
|
const res = await request.put<ApiResult<unknown>>(
|
||||||
|
MODULES_API_URL + '/law/law-legal-mediate',
|
||||||
|
data
|
||||||
|
);
|
||||||
|
if (res.data.code === 0) {
|
||||||
|
return res.data.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.data.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除调解申请
|
||||||
|
*/
|
||||||
|
export async function removeLawLegalMediate(id?: number) {
|
||||||
|
const res = await request.delete<ApiResult<unknown>>(
|
||||||
|
MODULES_API_URL + '/law/law-legal-mediate/' + id
|
||||||
|
);
|
||||||
|
if (res.data.code === 0) {
|
||||||
|
return res.data.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.data.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量删除调解申请
|
||||||
|
*/
|
||||||
|
export async function removeBatchLawLegalMediate(data: (number | undefined)[]) {
|
||||||
|
const res = await request.delete<ApiResult<unknown>>(
|
||||||
|
MODULES_API_URL + '/law/law-legal-mediate/batch',
|
||||||
|
{
|
||||||
|
data
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.data.code === 0) {
|
||||||
|
return res.data.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.data.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据id查询调解申请
|
||||||
|
*/
|
||||||
|
export async function getLawLegalMediate(id: number) {
|
||||||
|
const res = await request.get<ApiResult<LawLegalMediate>>(
|
||||||
|
MODULES_API_URL + '/law/law-legal-mediate/' + id
|
||||||
|
);
|
||||||
|
if (res.data.code === 0 && res.data.data) {
|
||||||
|
return res.data.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.data.message));
|
||||||
|
}
|
||||||
@@ -0,0 +1,75 @@
|
|||||||
|
import type { PageParam } from '@/api';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 调解申请
|
||||||
|
*/
|
||||||
|
export interface LawLegalMediate {
|
||||||
|
//
|
||||||
|
id?: number;
|
||||||
|
//
|
||||||
|
userId?: number;
|
||||||
|
//
|
||||||
|
name?: string;
|
||||||
|
//
|
||||||
|
gender?: number;
|
||||||
|
//
|
||||||
|
age?: number;
|
||||||
|
//
|
||||||
|
phone?: string;
|
||||||
|
//
|
||||||
|
birthday?: string;
|
||||||
|
//
|
||||||
|
idCard?: string;
|
||||||
|
// 住所地址
|
||||||
|
liveAddress?: string;
|
||||||
|
// 户籍地址
|
||||||
|
householdAddress?: string;
|
||||||
|
// 说明
|
||||||
|
content?: string;
|
||||||
|
// 申请事项
|
||||||
|
requestContent?: string;
|
||||||
|
// 是否删除, 0否, 1是
|
||||||
|
deleted?: number;
|
||||||
|
// 租户id
|
||||||
|
tenantId?: number;
|
||||||
|
// 创建时间
|
||||||
|
createTime?: string;
|
||||||
|
// 修改时间
|
||||||
|
updateTime?: string;
|
||||||
|
//
|
||||||
|
nation?: string;
|
||||||
|
// 工作单位
|
||||||
|
companyName?: string;
|
||||||
|
//
|
||||||
|
email?: string;
|
||||||
|
// 代理人姓名
|
||||||
|
proxyName?: string;
|
||||||
|
// 代理人联系电话
|
||||||
|
proxyPhone?: string;
|
||||||
|
// 关系
|
||||||
|
proxyRelation?: string;
|
||||||
|
// 代理人身份证
|
||||||
|
proxyIdCard?: string;
|
||||||
|
// 被申请人
|
||||||
|
respondent?: string;
|
||||||
|
// 被申请人身份证
|
||||||
|
respondentIdCard?: string;
|
||||||
|
// 被申请人性别
|
||||||
|
respondentGender?: number;
|
||||||
|
// 被申请人年龄
|
||||||
|
respondentAge?: number;
|
||||||
|
// 被申请人民族
|
||||||
|
respondentNation?: string;
|
||||||
|
// 被申请人职位
|
||||||
|
respondentPosition?: string;
|
||||||
|
// 被申请人地址
|
||||||
|
respondentAddress?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 调解申请搜索条件
|
||||||
|
*/
|
||||||
|
export interface LawLegalMediateParam extends PageParam {
|
||||||
|
id?: number;
|
||||||
|
keywords?: string;
|
||||||
|
}
|
||||||
@@ -0,0 +1,116 @@
|
|||||||
|
import request from '@/utils/request';
|
||||||
|
import type { ApiResult, PageResult } from '@/api';
|
||||||
|
import type { LawLegalReview, LawLegalReviewParam } from './model';
|
||||||
|
import { MODULES_API_URL } from '@/config/setting';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询行政复议申请
|
||||||
|
*/
|
||||||
|
export async function pageLawLegalReview(params: LawLegalReviewParam) {
|
||||||
|
const res = await request.get<ApiResult<PageResult<LawLegalReview>>>(
|
||||||
|
MODULES_API_URL + '/law/law-legal-review/page',
|
||||||
|
{
|
||||||
|
params
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.data.code === 0) {
|
||||||
|
return res.data.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.data.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询行政复议申请列表
|
||||||
|
*/
|
||||||
|
export async function listLawLegalReview(params?: LawLegalReviewParam) {
|
||||||
|
const res = await request.get<ApiResult<LawLegalReview[]>>(
|
||||||
|
MODULES_API_URL + '/law/law-legal-review',
|
||||||
|
{
|
||||||
|
params
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.data.code === 0 && res.data.data) {
|
||||||
|
return res.data.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.data.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 添加行政复议申请
|
||||||
|
*/
|
||||||
|
export async function addLawLegalReview(data: LawLegalReview) {
|
||||||
|
const res = await request.post<ApiResult<unknown>>(
|
||||||
|
MODULES_API_URL + '/law/law-legal-review',
|
||||||
|
data
|
||||||
|
);
|
||||||
|
if (res.data.code === 0) {
|
||||||
|
return res.data.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.data.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改行政复议申请
|
||||||
|
*/
|
||||||
|
export async function updateLawLegalReview(data: LawLegalReview) {
|
||||||
|
const res = await request.put<ApiResult<unknown>>(
|
||||||
|
MODULES_API_URL + '/law/law-legal-review',
|
||||||
|
data
|
||||||
|
);
|
||||||
|
if (res.data.code === 0) {
|
||||||
|
return res.data.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.data.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除行政复议申请
|
||||||
|
*/
|
||||||
|
export async function removeLawLegalReview(id?: number) {
|
||||||
|
const res = await request.delete<ApiResult<unknown>>(
|
||||||
|
MODULES_API_URL + '/law/law-legal-review/' + id
|
||||||
|
);
|
||||||
|
if (res.data.code === 0) {
|
||||||
|
return res.data.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.data.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量删除行政复议申请
|
||||||
|
*/
|
||||||
|
export async function removeBatchLawLegalReview(data: (number | undefined)[]) {
|
||||||
|
const res = await request.delete<ApiResult<unknown>>(
|
||||||
|
MODULES_API_URL + '/law/law-legal-review/batch',
|
||||||
|
{
|
||||||
|
data
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.data.code === 0) {
|
||||||
|
return res.data.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.data.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据id查询行政复议申请
|
||||||
|
*/
|
||||||
|
export async function getLawLegalReview(id: number) {
|
||||||
|
const res = await request.get<ApiResult<LawLegalReview>>(
|
||||||
|
MODULES_API_URL + '/law/law-legal-review/' + id
|
||||||
|
);
|
||||||
|
if (res.data.code === 0 && res.data.data) {
|
||||||
|
return res.data.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.data.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function lawLegalReviewExport(data: LawLegalReviewParam) {
|
||||||
|
const res = await request.post<ApiResult<LawLegalReview>>(
|
||||||
|
MODULES_API_URL + '/law/law-legal-review/export', data
|
||||||
|
);
|
||||||
|
if (res.data.code === 0 && res.data.data) {
|
||||||
|
return res.data.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.data.message));
|
||||||
|
}
|
||||||
@@ -0,0 +1,81 @@
|
|||||||
|
import type { PageParam } from '@/api';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 行政复议申请
|
||||||
|
*/
|
||||||
|
export interface LawLegalReview {
|
||||||
|
//
|
||||||
|
id?: number;
|
||||||
|
//
|
||||||
|
userId?: number;
|
||||||
|
//
|
||||||
|
name?: string;
|
||||||
|
//
|
||||||
|
gender?: number;
|
||||||
|
//
|
||||||
|
phone?: string;
|
||||||
|
//
|
||||||
|
birthday?: string;
|
||||||
|
//
|
||||||
|
idCard?: string;
|
||||||
|
// 住所地址
|
||||||
|
liveAddress?: string;
|
||||||
|
// 户籍地址
|
||||||
|
householdAddress?: string;
|
||||||
|
// 说明
|
||||||
|
content?: string;
|
||||||
|
// 是否删除, 0否, 1是
|
||||||
|
deleted?: number;
|
||||||
|
// 租户id
|
||||||
|
tenantId?: number;
|
||||||
|
// 创建时间
|
||||||
|
createTime?: string;
|
||||||
|
// 修改时间
|
||||||
|
updateTime?: string;
|
||||||
|
//
|
||||||
|
nation?: string;
|
||||||
|
// 工作单位
|
||||||
|
companyName?: string;
|
||||||
|
//
|
||||||
|
email?: string;
|
||||||
|
// 代理人姓名
|
||||||
|
proxyName?: string;
|
||||||
|
// 代理人联系电话
|
||||||
|
proxyPhone?: string;
|
||||||
|
// 关系
|
||||||
|
proxyRelation?: string;
|
||||||
|
// 代理人身份证
|
||||||
|
proxyIdCard?: string;
|
||||||
|
// 法人/负责人
|
||||||
|
legalPerson?: string;
|
||||||
|
// 职位
|
||||||
|
position?: string;
|
||||||
|
// 被申请人
|
||||||
|
respondent?: string;
|
||||||
|
// 被申请人法人/负责人
|
||||||
|
respondentLegalPerson?: string;
|
||||||
|
// 被申请人职位
|
||||||
|
respondentPosition?: string;
|
||||||
|
// 被申请人地址
|
||||||
|
respondentAddress?: string;
|
||||||
|
// 行政复议请求
|
||||||
|
requestContent?: string;
|
||||||
|
// 行政复议理由
|
||||||
|
requestReason?: string;
|
||||||
|
// 政府部门
|
||||||
|
govName?: string;
|
||||||
|
// 材料
|
||||||
|
files?: string;
|
||||||
|
// 申请人身份证明材料
|
||||||
|
personFile?: string;
|
||||||
|
// 代理材料
|
||||||
|
proxyFile?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 行政复议申请搜索条件
|
||||||
|
*/
|
||||||
|
export interface LawLegalReviewParam extends PageParam {
|
||||||
|
id?: number;
|
||||||
|
keywords?: string;
|
||||||
|
}
|
||||||
@@ -1,31 +1,32 @@
|
|||||||
import type { PageParam } from '@/api';
|
import type { PageParam } from "@/api";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 公证配置
|
* 公证配置
|
||||||
*/
|
*/
|
||||||
export interface LawNotaryConfig {
|
export interface LawNotaryConfig {
|
||||||
//
|
//
|
||||||
id?: number;
|
id?: number;
|
||||||
//
|
//
|
||||||
title?: string;
|
title?: string;
|
||||||
// 配置
|
type?: string;
|
||||||
configList?: string;
|
// 配置
|
||||||
//
|
configList?: string;
|
||||||
userId?: number;
|
//
|
||||||
// 是否删除, 0否, 1是
|
userId?: number;
|
||||||
deleted?: number;
|
// 是否删除, 0否, 1是
|
||||||
// 租户id
|
deleted?: number;
|
||||||
tenantId?: number;
|
// 租户id
|
||||||
// 创建时间
|
tenantId?: number;
|
||||||
createTime?: string;
|
// 创建时间
|
||||||
// 修改时间
|
createTime?: string;
|
||||||
updateTime?: string;
|
// 修改时间
|
||||||
|
updateTime?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 公证配置搜索条件
|
* 公证配置搜索条件
|
||||||
*/
|
*/
|
||||||
export interface LawNotaryConfigParam extends PageParam {
|
export interface LawNotaryConfigParam extends PageParam {
|
||||||
id?: number;
|
id?: number;
|
||||||
keywords?: string;
|
keywords?: string;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,106 @@
|
|||||||
|
import request from '@/utils/request';
|
||||||
|
import type { ApiResult, PageResult } from '@/api';
|
||||||
|
import type { LawPoorRequest, LawPoorRequestParam } from './model';
|
||||||
|
import { MODULES_API_URL } from '@/config/setting';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询
|
||||||
|
*/
|
||||||
|
export async function pageLawPoorRequest(params: LawPoorRequestParam) {
|
||||||
|
const res = await request.get<ApiResult<PageResult<LawPoorRequest>>>(
|
||||||
|
MODULES_API_URL + '/law/law-poor-request/page',
|
||||||
|
{
|
||||||
|
params
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.data.code === 0) {
|
||||||
|
return res.data.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.data.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询列表
|
||||||
|
*/
|
||||||
|
export async function listLawPoorRequest(params?: LawPoorRequestParam) {
|
||||||
|
const res = await request.get<ApiResult<LawPoorRequest[]>>(
|
||||||
|
MODULES_API_URL + '/law/law-poor-request',
|
||||||
|
{
|
||||||
|
params
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.data.code === 0 && res.data.data) {
|
||||||
|
return res.data.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.data.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 添加
|
||||||
|
*/
|
||||||
|
export async function addLawPoorRequest(data: LawPoorRequest) {
|
||||||
|
const res = await request.post<ApiResult<unknown>>(
|
||||||
|
MODULES_API_URL + '/law/law-poor-request',
|
||||||
|
data
|
||||||
|
);
|
||||||
|
if (res.data.code === 0) {
|
||||||
|
return res.data.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.data.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改
|
||||||
|
*/
|
||||||
|
export async function updateLawPoorRequest(data: LawPoorRequest) {
|
||||||
|
const res = await request.put<ApiResult<unknown>>(
|
||||||
|
MODULES_API_URL + '/law/law-poor-request',
|
||||||
|
data
|
||||||
|
);
|
||||||
|
if (res.data.code === 0) {
|
||||||
|
return res.data.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.data.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除
|
||||||
|
*/
|
||||||
|
export async function removeLawPoorRequest(id?: number) {
|
||||||
|
const res = await request.delete<ApiResult<unknown>>(
|
||||||
|
MODULES_API_URL + '/law/law-poor-request/' + id
|
||||||
|
);
|
||||||
|
if (res.data.code === 0) {
|
||||||
|
return res.data.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.data.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量删除
|
||||||
|
*/
|
||||||
|
export async function removeBatchLawPoorRequest(data: (number | undefined)[]) {
|
||||||
|
const res = await request.delete<ApiResult<unknown>>(
|
||||||
|
MODULES_API_URL + '/law/law-poor-request/batch',
|
||||||
|
{
|
||||||
|
data
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.data.code === 0) {
|
||||||
|
return res.data.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.data.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据id查询
|
||||||
|
*/
|
||||||
|
export async function getLawPoorRequest(id: number) {
|
||||||
|
const res = await request.get<ApiResult<LawPoorRequest>>(
|
||||||
|
MODULES_API_URL + '/law/law-poor-request/' + id
|
||||||
|
);
|
||||||
|
if (res.data.code === 0 && res.data.data) {
|
||||||
|
return res.data.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.data.message));
|
||||||
|
}
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
import type { PageParam } from '@/api';
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
export interface LawPoorRequest {
|
||||||
|
//
|
||||||
|
id?: number;
|
||||||
|
// 人员列表
|
||||||
|
peopleList?: string;
|
||||||
|
// 总收入
|
||||||
|
totalIncome?: string;
|
||||||
|
// 人均月收入
|
||||||
|
avgIncome?: string;
|
||||||
|
// 房产几套
|
||||||
|
houseNum?: number;
|
||||||
|
// 房产面积
|
||||||
|
houseArea?: string;
|
||||||
|
// 房产位置
|
||||||
|
houseAddress?: string;
|
||||||
|
// 汽车品牌型号
|
||||||
|
car?: string;
|
||||||
|
// 现金等资产
|
||||||
|
cash?: string;
|
||||||
|
// 其他资产说明
|
||||||
|
otherProperty?: string;
|
||||||
|
// 重大支出
|
||||||
|
outcome?: string;
|
||||||
|
//
|
||||||
|
name?: string;
|
||||||
|
//
|
||||||
|
phone?: string;
|
||||||
|
// 是否删除, 0否, 1是
|
||||||
|
deleted?: number;
|
||||||
|
// 租户id
|
||||||
|
tenantId?: number;
|
||||||
|
// 创建时间
|
||||||
|
createTime?: string;
|
||||||
|
// 修改时间
|
||||||
|
updateTime?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 搜索条件
|
||||||
|
*/
|
||||||
|
export interface LawPoorRequestParam extends PageParam {
|
||||||
|
id?: number;
|
||||||
|
keywords?: string;
|
||||||
|
}
|
||||||
@@ -29,7 +29,6 @@
|
|||||||
<a-form-item label="文章标题" name="title">
|
<a-form-item label="文章标题" name="title">
|
||||||
<a-input
|
<a-input
|
||||||
allow-clear
|
allow-clear
|
||||||
:maxlength="20"
|
|
||||||
placeholder="请输入文章标题"
|
placeholder="请输入文章标题"
|
||||||
v-model:value="form.title"
|
v-model:value="form.title"
|
||||||
/>
|
/>
|
||||||
@@ -57,9 +56,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<a-form-item label="文章来源" name="source">
|
<a-form-item label="文章来源" name="source">
|
||||||
<source-select
|
<a-input v-model:value="form.source" />
|
||||||
v-model:value="form.source"
|
|
||||||
/>
|
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<a-form-item label="展现方式" name="showType">
|
<a-form-item label="展现方式" name="showType">
|
||||||
<a-radio-group v-model:value="form.showType">
|
<a-radio-group v-model:value="form.showType">
|
||||||
|
|||||||
@@ -31,8 +31,8 @@
|
|||||||
</template>
|
</template>
|
||||||
<template v-if="column.key === 'action'">
|
<template v-if="column.key === 'action'">
|
||||||
<a-space>
|
<a-space>
|
||||||
<!-- <a @click="openEdit(record)">修改</a>-->
|
<a @click="openDetail(record)">经济困难详情</a>
|
||||||
<!-- <a-divider type="vertical" />-->
|
<a-divider type="vertical" />
|
||||||
<a-popconfirm
|
<a-popconfirm
|
||||||
title="确定要删除此记录吗?"
|
title="确定要删除此记录吗?"
|
||||||
@confirm="remove(record)"
|
@confirm="remove(record)"
|
||||||
@@ -47,6 +47,8 @@
|
|||||||
|
|
||||||
<!-- 编辑弹窗 -->
|
<!-- 编辑弹窗 -->
|
||||||
<LawLegalAidEdit v-model:visible="showEdit" :data="current" @done="reload" />
|
<LawLegalAidEdit v-model:visible="showEdit" :data="current" @done="reload" />
|
||||||
|
<!-- 详情弹窗 -->
|
||||||
|
<LawPoorRequestDetail v-model:visible="showDetail" :data="currentDetail" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@@ -65,6 +67,8 @@ import Search from "./components/search.vue";
|
|||||||
import LawLegalAidEdit from "./components/lawLegalAidEdit.vue";
|
import LawLegalAidEdit from "./components/lawLegalAidEdit.vue";
|
||||||
import { pageLawLegalAid, removeLawLegalAid, removeBatchLawLegalAid, lawLegalAidExport } from "@/api/law/lawLegalAid";
|
import { pageLawLegalAid, removeLawLegalAid, removeBatchLawLegalAid, lawLegalAidExport } from "@/api/law/lawLegalAid";
|
||||||
import type { LawLegalAid, LawLegalAidParam } from "@/api/law/lawLegalAid/model";
|
import type { LawLegalAid, LawLegalAidParam } from "@/api/law/lawLegalAid/model";
|
||||||
|
import LawPoorRequestDetail from "@/views/law/lawPoorRequest/components/lawPoorRequestDetail.vue";
|
||||||
|
import type { LawPoorRequest } from "@/api/law/lawPoorRequest/model";
|
||||||
|
|
||||||
// 表格实例
|
// 表格实例
|
||||||
const tableRef = ref<InstanceType<typeof EleProTable> | null>(null);
|
const tableRef = ref<InstanceType<typeof EleProTable> | null>(null);
|
||||||
@@ -255,12 +259,23 @@ const customRow = (record: LawLegalAid) => {
|
|||||||
};
|
};
|
||||||
query();
|
query();
|
||||||
|
|
||||||
|
const showDetail = ref(false);
|
||||||
|
const currentDetail = ref();
|
||||||
|
const openDetail = (row: LawLegalAid) => {
|
||||||
|
if (row.poorRequest) {
|
||||||
|
currentDetail.value = row.poorRequest;
|
||||||
|
showDetail.value = true;
|
||||||
|
}else {
|
||||||
|
message.error("该申请暂无经济困难申请详情");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
const exportWord = async () => {
|
const exportWord = async () => {
|
||||||
const hide = message.loading('导出中..', 0);
|
const hide = message.loading("导出中..", 0);
|
||||||
const { data } = await lawLegalAidExport()
|
const { data } = await lawLegalAidExport();
|
||||||
window.open(data)
|
window.open(data);
|
||||||
hide()
|
hide();
|
||||||
}
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
|
|||||||
@@ -49,6 +49,7 @@
|
|||||||
<!-- 编辑弹窗 -->
|
<!-- 编辑弹窗 -->
|
||||||
<LawLegalCalTypeEdit v-model:visible="showEdit" :data="current" @done="reload" />
|
<LawLegalCalTypeEdit v-model:visible="showEdit" :data="current" @done="reload" />
|
||||||
<ele-modal
|
<ele-modal
|
||||||
|
v-if="showList"
|
||||||
width="80%"
|
width="80%"
|
||||||
v-model:visible="showList"
|
v-model:visible="showList"
|
||||||
:maskClosable="false"
|
:maskClosable="false"
|
||||||
|
|||||||
@@ -50,6 +50,7 @@
|
|||||||
<LawLegalDocTypeEdit v-model:visible="showEdit" :data="current" @done="reload" />
|
<LawLegalDocTypeEdit v-model:visible="showEdit" :data="current" @done="reload" />
|
||||||
<ele-modal
|
<ele-modal
|
||||||
width="80%"
|
width="80%"
|
||||||
|
v-if="showList"
|
||||||
v-model:visible="showList"
|
v-model:visible="showList"
|
||||||
:maskClosable="false"
|
:maskClosable="false"
|
||||||
title="编辑法律文书配置选项"
|
title="编辑法律文书配置选项"
|
||||||
|
|||||||
@@ -0,0 +1,77 @@
|
|||||||
|
<!-- 编辑弹窗 -->
|
||||||
|
<template>
|
||||||
|
<ele-modal
|
||||||
|
width="80%"
|
||||||
|
:visible="visible"
|
||||||
|
:maskClosable="false"
|
||||||
|
:maxable="maxable"
|
||||||
|
title="人民调解详情"
|
||||||
|
:body-style="{ paddingBottom: '28px' }"
|
||||||
|
@update:visible="updateVisible"
|
||||||
|
>
|
||||||
|
<a-descriptions :column="1" bordered>
|
||||||
|
<a-descriptions-item label="姓名">{{ data.name }}</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="性别">{{ data.gender === 0 ? "男" : "女" }}</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="手机号">{{ data.phone }}</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="出生日期">{{ data.birthday }}</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="身份证号">{{ data.idCard }}</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="住所地址">{{ data.liveAddress }}</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="户籍地址">{{ data.householdAddress }}</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="被申请人">{{ data.respondent }}</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="被申请人身份证">{{ data.respondentIdCard }}</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="被申请人性别">{{ data.respondentGender === 0 ? "男" : "女"}}</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="被申请人年龄">{{ data.respondentAge }}</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="被申请人民族">{{ data.respondentNation }}</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="被申请人职位">{{ data.respondentPosition }}</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="被申请人公司/住址">{{ data.respondentAddress }}</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="纠纷简要情况">{{ data.content }}</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="当事人申请事项">{{ data.requestContent }}</a-descriptions-item>
|
||||||
|
|
||||||
|
</a-descriptions>
|
||||||
|
</ele-modal>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup>
|
||||||
|
import { ref, watch } from "vue";
|
||||||
|
import { LawLegalMediate } from "@/api/law/lawLegalMediate/model";
|
||||||
|
|
||||||
|
const props = defineProps<{
|
||||||
|
// 弹窗是否打开
|
||||||
|
visible: boolean;
|
||||||
|
// 修改回显的数据
|
||||||
|
data?: LawLegalMediate | null;
|
||||||
|
}>();
|
||||||
|
|
||||||
|
const emit = defineEmits<{
|
||||||
|
(e: "done"): void;
|
||||||
|
(e: "update:visible", visible: boolean): void;
|
||||||
|
}>();
|
||||||
|
// 是否显示最大化切换按钮
|
||||||
|
const maxable = ref(true);
|
||||||
|
// 表格选中数据
|
||||||
|
|
||||||
|
|
||||||
|
/* 更新visible */
|
||||||
|
const updateVisible = (value: boolean) => {
|
||||||
|
emit("update:visible", value);
|
||||||
|
};
|
||||||
|
|
||||||
|
const fileColumns = [
|
||||||
|
{
|
||||||
|
title: "材料名称",
|
||||||
|
dataIndex: "title"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "文件类型列表",
|
||||||
|
key: "fileList"
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
watch(
|
||||||
|
() => props.visible,
|
||||||
|
(visible) => {
|
||||||
|
|
||||||
|
},
|
||||||
|
{ immediate: true }
|
||||||
|
);
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
<!-- 搜索表单 -->
|
||||||
|
<template>
|
||||||
|
<a-space :size="10" style="flex-wrap: wrap">
|
||||||
|
<!-- <a-button type="primary" class="ele-btn-icon" @click="add">-->
|
||||||
|
<!-- <template #icon>-->
|
||||||
|
<!-- <PlusOutlined />-->
|
||||||
|
<!-- </template>-->
|
||||||
|
<!-- <span>添加</span>-->
|
||||||
|
<!-- </a-button>-->
|
||||||
|
</a-space>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup>
|
||||||
|
import { PlusOutlined } from '@ant-design/icons-vue';
|
||||||
|
import type { GradeParam } from '@/api/user/grade/model';
|
||||||
|
import { watch } from 'vue';
|
||||||
|
|
||||||
|
const props = withDefaults(
|
||||||
|
defineProps<{
|
||||||
|
// 选中的角色
|
||||||
|
selection?: [];
|
||||||
|
}>(),
|
||||||
|
{}
|
||||||
|
);
|
||||||
|
|
||||||
|
const emit = defineEmits<{
|
||||||
|
(e: 'search', where?: GradeParam): void;
|
||||||
|
(e: 'add'): void;
|
||||||
|
(e: 'remove'): void;
|
||||||
|
(e: 'batchMove'): void;
|
||||||
|
}>();
|
||||||
|
|
||||||
|
// 新增
|
||||||
|
const add = () => {
|
||||||
|
emit('add');
|
||||||
|
};
|
||||||
|
|
||||||
|
watch(
|
||||||
|
() => props.selection,
|
||||||
|
() => {}
|
||||||
|
);
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,248 @@
|
|||||||
|
<template>
|
||||||
|
<div class="page">
|
||||||
|
<div class="ele-body">
|
||||||
|
<a-card :bordered="false" :body-style="{ padding: '16px' }">
|
||||||
|
<ele-pro-table
|
||||||
|
ref="tableRef"
|
||||||
|
row-key="id"
|
||||||
|
:columns="columns"
|
||||||
|
:datasource="datasource"
|
||||||
|
:customRow="customRow"
|
||||||
|
tool-class="ele-toolbar-form"
|
||||||
|
class="sys-org-table"
|
||||||
|
>
|
||||||
|
<template #toolbar>
|
||||||
|
<search
|
||||||
|
@search="reload"
|
||||||
|
:selection="selection"
|
||||||
|
@add="openEdit"
|
||||||
|
@remove="removeBatch"
|
||||||
|
@batchMove="openMove"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
<template #bodyCell="{ column, record }">
|
||||||
|
<template v-if="column.key === 'image'">
|
||||||
|
<a-image :src="record.image" :width="50" />
|
||||||
|
</template>
|
||||||
|
<template v-if="column.key === 'status'">
|
||||||
|
<a-tag v-if="record.status === 1" color="green">显示</a-tag>
|
||||||
|
<a-tag v-if="record.status === 0" color="red">隐藏</a-tag>
|
||||||
|
</template>
|
||||||
|
<template v-if="column.key === 'action'">
|
||||||
|
<a-space>
|
||||||
|
<a @click="openEdit(record)">详情</a>
|
||||||
|
<!-- <a-divider type="vertical" />-->
|
||||||
|
<!-- <a-popconfirm-->
|
||||||
|
<!-- title="确定要删除此记录吗?"-->
|
||||||
|
<!-- @confirm="remove(record)"-->
|
||||||
|
<!-- >-->
|
||||||
|
<!-- <a class="ele-text-danger">删除</a>-->
|
||||||
|
<!-- </a-popconfirm>-->
|
||||||
|
</a-space>
|
||||||
|
</template>
|
||||||
|
</template>
|
||||||
|
</ele-pro-table>
|
||||||
|
</a-card>
|
||||||
|
|
||||||
|
<!-- 编辑弹窗 -->
|
||||||
|
<LawLegalMediateEdit v-model:visible="showEdit" :data="current" @done="reload" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup>
|
||||||
|
import { createVNode, ref } from "vue";
|
||||||
|
import { message, Modal } from "ant-design-vue";
|
||||||
|
import { ExclamationCircleOutlined } from "@ant-design/icons-vue";
|
||||||
|
import type { EleProTable } from "ele-admin-pro";
|
||||||
|
import { toDateString } from "ele-admin-pro";
|
||||||
|
import type {
|
||||||
|
DatasourceFunction,
|
||||||
|
ColumnItem
|
||||||
|
} from "ele-admin-pro/es/ele-pro-table/types";
|
||||||
|
import Search from "./components/search.vue";
|
||||||
|
import LawLegalMediateEdit from "./components/lawLegalMediateEdit.vue";
|
||||||
|
import { pageLawLegalMediate, removeLawLegalMediate, removeBatchLawLegalMediate } from "@/api/law/lawLegalMediate";
|
||||||
|
import type { LawLegalMediate, LawLegalMediateParam } from "@/api/law/lawLegalMediate/model";
|
||||||
|
|
||||||
|
// 表格实例
|
||||||
|
const tableRef = ref<InstanceType<typeof EleProTable> | null>(null);
|
||||||
|
|
||||||
|
// 表格选中数据
|
||||||
|
const selection = ref<LawLegalMediate[]>([]);
|
||||||
|
// 当前编辑数据
|
||||||
|
const current = ref<LawLegalMediate | null>(null);
|
||||||
|
// 是否显示编辑弹窗
|
||||||
|
const showEdit = ref(false);
|
||||||
|
// 是否显示批量移动弹窗
|
||||||
|
const showMove = ref(false);
|
||||||
|
// 加载状态
|
||||||
|
const loading = ref(true);
|
||||||
|
|
||||||
|
// 表格数据源
|
||||||
|
const datasource: DatasourceFunction = ({
|
||||||
|
page,
|
||||||
|
limit,
|
||||||
|
where,
|
||||||
|
orders,
|
||||||
|
filters
|
||||||
|
}) => {
|
||||||
|
if (filters) {
|
||||||
|
where.status = filters.status;
|
||||||
|
}
|
||||||
|
return pageLawLegalMediate({
|
||||||
|
...where,
|
||||||
|
...orders,
|
||||||
|
page,
|
||||||
|
limit
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
// 表格列配置
|
||||||
|
const columns = ref<ColumnItem[]>([
|
||||||
|
{
|
||||||
|
title: "姓名",
|
||||||
|
dataIndex: "name",
|
||||||
|
key: "name",
|
||||||
|
align: "center"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "性别",
|
||||||
|
dataIndex: "gender",
|
||||||
|
key: "gender",
|
||||||
|
align: "center",
|
||||||
|
customRender: ({ text }) => ["男", "女"][text]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "年龄",
|
||||||
|
dataIndex: "age",
|
||||||
|
key: "age",
|
||||||
|
align: "center"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "联系方式",
|
||||||
|
dataIndex: "phone",
|
||||||
|
key: "phone",
|
||||||
|
align: "center"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "身份证",
|
||||||
|
dataIndex: "idCard",
|
||||||
|
key: "idCard",
|
||||||
|
align: "center"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "住所地址",
|
||||||
|
dataIndex: "liveAddress",
|
||||||
|
key: "liveAddress",
|
||||||
|
align: "center"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "民族",
|
||||||
|
dataIndex: "nation",
|
||||||
|
key: "nation",
|
||||||
|
align: "center"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "被申请人",
|
||||||
|
dataIndex: "respondent",
|
||||||
|
key: "respondent",
|
||||||
|
align: "center"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "操作",
|
||||||
|
key: "action",
|
||||||
|
width: 180,
|
||||||
|
fixed: "right",
|
||||||
|
align: "center",
|
||||||
|
hideInSetting: true
|
||||||
|
}
|
||||||
|
]);
|
||||||
|
|
||||||
|
/* 搜索 */
|
||||||
|
const reload = (where?: LawLegalMediateParam) => {
|
||||||
|
selection.value = [];
|
||||||
|
tableRef?.value?.reload({ where: where });
|
||||||
|
};
|
||||||
|
|
||||||
|
/* 打开编辑弹窗 */
|
||||||
|
const openEdit = (row?: LawLegalMediate) => {
|
||||||
|
current.value = row ?? null;
|
||||||
|
showEdit.value = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* 打开批量移动弹窗 */
|
||||||
|
const openMove = () => {
|
||||||
|
showMove.value = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* 删除单个 */
|
||||||
|
const remove = (row: LawLegalMediate) => {
|
||||||
|
const hide = message.loading("请求中..", 0);
|
||||||
|
removeLawLegalMediate(row.id)
|
||||||
|
.then((msg) => {
|
||||||
|
hide();
|
||||||
|
message.success(msg);
|
||||||
|
reload();
|
||||||
|
})
|
||||||
|
.catch((e) => {
|
||||||
|
hide();
|
||||||
|
message.error(e.message);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
/* 批量删除 */
|
||||||
|
const removeBatch = () => {
|
||||||
|
if (!selection.value.length) {
|
||||||
|
message.error("请至少选择一条数据");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Modal.confirm({
|
||||||
|
title: "提示",
|
||||||
|
content: "确定要删除选中的记录吗?",
|
||||||
|
icon: createVNode(ExclamationCircleOutlined),
|
||||||
|
maskClosable: true,
|
||||||
|
onOk: () => {
|
||||||
|
const hide = message.loading("请求中..", 0);
|
||||||
|
removeBatchLawLegalMediate(selection.value.map((d) => d.id))
|
||||||
|
.then((msg) => {
|
||||||
|
hide();
|
||||||
|
message.success(msg);
|
||||||
|
reload();
|
||||||
|
})
|
||||||
|
.catch((e) => {
|
||||||
|
hide();
|
||||||
|
message.error(e.message);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
/* 查询 */
|
||||||
|
const query = () => {
|
||||||
|
loading.value = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* 自定义行属性 */
|
||||||
|
const customRow = (record: LawLegalMediate) => {
|
||||||
|
return {
|
||||||
|
// 行点击事件
|
||||||
|
onClick: () => {
|
||||||
|
// console.log(record);
|
||||||
|
},
|
||||||
|
// 行双击事件
|
||||||
|
onDblclick: () => {
|
||||||
|
openEdit(record);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
};
|
||||||
|
query();
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
export default {
|
||||||
|
name: "LawLegalMediate"
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="less" scoped></style>
|
||||||
@@ -0,0 +1,91 @@
|
|||||||
|
<!-- 编辑弹窗 -->
|
||||||
|
<template>
|
||||||
|
<ele-modal
|
||||||
|
width="80%"
|
||||||
|
:visible="visible"
|
||||||
|
:maskClosable="false"
|
||||||
|
:maxable="maxable"
|
||||||
|
title="行政复议详情"
|
||||||
|
:body-style="{ paddingBottom: '28px' }"
|
||||||
|
@update:visible="updateVisible"
|
||||||
|
>
|
||||||
|
<a-descriptions :column="1" bordered>
|
||||||
|
<a-descriptions-item label="姓名">{{ data.name }}</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="性别">{{ data.gender === 0 ? "男" : "女" }}</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="手机号">{{ data.phone }}</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="出生日期">{{ data.birthday }}</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="身份证号">{{ data.idCard }}</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="住所地址">{{ data.liveAddress }}</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="户籍地址">{{ data.householdAddress }}</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="法人/负责人">{{ data.legalPerson }}</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="职位">{{ data.position }}</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="被申请人">{{ data.respondent }}</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="法定代表人或者主要负责人">{{ data.respondentLegalPerson }}</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="职务">{{ data.respondentPosition }}</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="所在地">{{ data.respondentAddress }}</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="行政复议请求">{{ data.requestContent }}</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="行政复议理由">{{ data.requestReason }}</a-descriptions-item>
|
||||||
|
|
||||||
|
<a-descriptions-item label="材料">
|
||||||
|
<a-table :columns="fileColumns" :dataSource="JSON.parse(data.files)" :pagination="false">
|
||||||
|
<template #bodyCell="{ column, record }">
|
||||||
|
<template v-if="column.key === 'fileList'">
|
||||||
|
<a-image-preview-group>
|
||||||
|
<a-space>
|
||||||
|
<div v-for="(item, index) in record.fileList" :key="index">
|
||||||
|
<a-image :src="item" style="width: 100px; height: 100px" object-fit="cover" />
|
||||||
|
</div>
|
||||||
|
</a-space>
|
||||||
|
</a-image-preview-group>
|
||||||
|
</template>
|
||||||
|
</template>
|
||||||
|
</a-table>
|
||||||
|
</a-descriptions-item>
|
||||||
|
</a-descriptions>
|
||||||
|
</ele-modal>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup>
|
||||||
|
import { ref, watch } from "vue";
|
||||||
|
import { LawLegalReview } from "@/api/law/lawLegalReview/model";
|
||||||
|
|
||||||
|
const props = defineProps<{
|
||||||
|
// 弹窗是否打开
|
||||||
|
visible: boolean;
|
||||||
|
// 修改回显的数据
|
||||||
|
data?: LawLegalReview | null;
|
||||||
|
}>();
|
||||||
|
|
||||||
|
const emit = defineEmits<{
|
||||||
|
(e: "done"): void;
|
||||||
|
(e: "update:visible", visible: boolean): void;
|
||||||
|
}>();
|
||||||
|
// 是否显示最大化切换按钮
|
||||||
|
const maxable = ref(true);
|
||||||
|
// 表格选中数据
|
||||||
|
|
||||||
|
|
||||||
|
/* 更新visible */
|
||||||
|
const updateVisible = (value: boolean) => {
|
||||||
|
emit("update:visible", value);
|
||||||
|
};
|
||||||
|
|
||||||
|
const fileColumns = [
|
||||||
|
{
|
||||||
|
title: "材料名称",
|
||||||
|
dataIndex: "title"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "文件类型列表",
|
||||||
|
key: "fileList"
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
watch(
|
||||||
|
() => props.visible,
|
||||||
|
(visible) => {
|
||||||
|
|
||||||
|
},
|
||||||
|
{ immediate: true }
|
||||||
|
);
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,47 @@
|
|||||||
|
<!-- 搜索表单 -->
|
||||||
|
<template>
|
||||||
|
<a-space :size="10" style="flex-wrap: wrap">
|
||||||
|
<a-button type="primary" class="ele-btn-icon" @click="exportData">
|
||||||
|
<span>导出</span>
|
||||||
|
</a-button>
|
||||||
|
</a-space>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup>
|
||||||
|
import { watch } from 'vue';
|
||||||
|
import { LawLegalReview } from "@/api/law/lawLegalReview/model";
|
||||||
|
import { lawLegalReviewExport } from "@/api/law/lawLegalReview";
|
||||||
|
import { message } from "ant-design-vue";
|
||||||
|
|
||||||
|
const props = withDefaults(
|
||||||
|
defineProps<{
|
||||||
|
// 选中的角色
|
||||||
|
selection?: [];
|
||||||
|
}>(),
|
||||||
|
{}
|
||||||
|
);
|
||||||
|
|
||||||
|
const emit = defineEmits<{
|
||||||
|
(e: 'search', where?: LawLegalReview): void;
|
||||||
|
(e: 'add'): void;
|
||||||
|
(e: 'remove'): void;
|
||||||
|
(e: 'batchMove'): void;
|
||||||
|
}>();
|
||||||
|
|
||||||
|
// 新增
|
||||||
|
const exportData = async() => {
|
||||||
|
const hide = message.loading("请求中..", 0);
|
||||||
|
const params = {}
|
||||||
|
if (props.selection && props.selection.length > 0) {
|
||||||
|
params.idList = props.selection
|
||||||
|
}
|
||||||
|
const res = await lawLegalReviewExport(params)
|
||||||
|
window.open(res)
|
||||||
|
hide()
|
||||||
|
};
|
||||||
|
|
||||||
|
watch(
|
||||||
|
() => props.selection,
|
||||||
|
() => {}
|
||||||
|
);
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,254 @@
|
|||||||
|
<template>
|
||||||
|
<div class="page">
|
||||||
|
<div class="ele-body">
|
||||||
|
<a-card :bordered="false" :body-style="{ padding: '16px' }">
|
||||||
|
<ele-pro-table
|
||||||
|
ref="tableRef"
|
||||||
|
row-key="id"
|
||||||
|
:columns="columns"
|
||||||
|
:datasource="datasource"
|
||||||
|
:customRow="customRow"
|
||||||
|
tool-class="ele-toolbar-form"
|
||||||
|
class="sys-org-table"
|
||||||
|
v-model:selection="selection"
|
||||||
|
>
|
||||||
|
<template #toolbar>
|
||||||
|
<search
|
||||||
|
@search="reload"
|
||||||
|
:selection="selection"
|
||||||
|
@add="openEdit"
|
||||||
|
@remove="removeBatch"
|
||||||
|
@batchMove="openMove"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
<template #bodyCell="{ column, record }">
|
||||||
|
<template v-if="column.key === 'action'">
|
||||||
|
<a-space>
|
||||||
|
<a @click="openEdit(record)">详情</a>
|
||||||
|
<!-- <a-divider type="vertical" />-->
|
||||||
|
<!-- <a-popconfirm-->
|
||||||
|
<!-- title="确定要删除此记录吗?"-->
|
||||||
|
<!-- @confirm="remove(record)"-->
|
||||||
|
<!-- >-->
|
||||||
|
<!-- <a class="ele-text-danger">删除</a>-->
|
||||||
|
<!-- </a-popconfirm>-->
|
||||||
|
</a-space>
|
||||||
|
</template>
|
||||||
|
</template>
|
||||||
|
</ele-pro-table>
|
||||||
|
</a-card>
|
||||||
|
|
||||||
|
<!-- 编辑弹窗 -->
|
||||||
|
<LawLegalReviewEdit v-model:visible="showEdit" :data="current" @done="reload" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup>
|
||||||
|
import { createVNode, ref } from "vue";
|
||||||
|
import { message, Modal } from "ant-design-vue";
|
||||||
|
import { ExclamationCircleOutlined } from "@ant-design/icons-vue";
|
||||||
|
import type { EleProTable } from "ele-admin-pro";
|
||||||
|
import type {
|
||||||
|
DatasourceFunction,
|
||||||
|
ColumnItem
|
||||||
|
} from "ele-admin-pro/es/ele-pro-table/types";
|
||||||
|
import Search from "./components/search.vue";
|
||||||
|
import LawLegalReviewEdit from "./components/lawLegalReviewEdit.vue";
|
||||||
|
import { pageLawLegalReview, removeLawLegalReview, removeBatchLawLegalReview } from "@/api/law/lawLegalReview";
|
||||||
|
import type { LawLegalReview, LawLegalReviewParam } from "@/api/law/lawLegalReview/model";
|
||||||
|
|
||||||
|
// 表格实例
|
||||||
|
const tableRef = ref<InstanceType<typeof EleProTable> | null>(null);
|
||||||
|
|
||||||
|
// 表格选中数据
|
||||||
|
const selection = ref<LawLegalReview[]>([]);
|
||||||
|
// 当前编辑数据
|
||||||
|
const current = ref<LawLegalReview | null>(null);
|
||||||
|
// 是否显示编辑弹窗
|
||||||
|
const showEdit = ref(false);
|
||||||
|
// 是否显示批量移动弹窗
|
||||||
|
const showMove = ref(false);
|
||||||
|
// 加载状态
|
||||||
|
const loading = ref(true);
|
||||||
|
|
||||||
|
// 表格数据源
|
||||||
|
const datasource: DatasourceFunction = ({
|
||||||
|
page,
|
||||||
|
limit,
|
||||||
|
where,
|
||||||
|
orders,
|
||||||
|
filters
|
||||||
|
}) => {
|
||||||
|
if (filters) {
|
||||||
|
where.status = filters.status;
|
||||||
|
}
|
||||||
|
return pageLawLegalReview({
|
||||||
|
...where,
|
||||||
|
...orders,
|
||||||
|
page,
|
||||||
|
limit
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
// 表格列配置
|
||||||
|
const columns = ref<ColumnItem[]>([
|
||||||
|
|
||||||
|
{
|
||||||
|
title: "姓名",
|
||||||
|
dataIndex: "name",
|
||||||
|
key: "name",
|
||||||
|
align: "center"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "性别",
|
||||||
|
dataIndex: "gender",
|
||||||
|
key: "gender",
|
||||||
|
align: "center",
|
||||||
|
customRender: ({ text }) => ["男", "女"][text]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "手机号",
|
||||||
|
dataIndex: "phone",
|
||||||
|
key: "phone",
|
||||||
|
align: "center"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "出生日期",
|
||||||
|
dataIndex: "birthday",
|
||||||
|
key: "birthday",
|
||||||
|
align: "center"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "身份证",
|
||||||
|
dataIndex: "idCard",
|
||||||
|
key: "idCard",
|
||||||
|
align: "center"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "住所地址",
|
||||||
|
dataIndex: "liveAddress",
|
||||||
|
key: "liveAddress",
|
||||||
|
align: "center"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "户籍地址",
|
||||||
|
dataIndex: "householdAddress",
|
||||||
|
key: "householdAddress",
|
||||||
|
align: "center"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "法人/负责人",
|
||||||
|
dataIndex: "legalPerson",
|
||||||
|
key: "legalPerson",
|
||||||
|
align: "center"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "职位",
|
||||||
|
dataIndex: "position",
|
||||||
|
key: "position",
|
||||||
|
align: "center"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "被申请人",
|
||||||
|
dataIndex: "respondent",
|
||||||
|
key: "respondent",
|
||||||
|
align: "center"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "操作",
|
||||||
|
key: "action",
|
||||||
|
width: 180,
|
||||||
|
fixed: "right",
|
||||||
|
align: "center",
|
||||||
|
hideInSetting: true
|
||||||
|
}
|
||||||
|
]);
|
||||||
|
|
||||||
|
/* 搜索 */
|
||||||
|
const reload = (where?: LawLegalReviewParam) => {
|
||||||
|
selection.value = [];
|
||||||
|
tableRef?.value?.reload({ where: where });
|
||||||
|
};
|
||||||
|
|
||||||
|
/* 打开编辑弹窗 */
|
||||||
|
const openEdit = (row?: LawLegalReview) => {
|
||||||
|
current.value = row ?? null;
|
||||||
|
showEdit.value = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* 打开批量移动弹窗 */
|
||||||
|
const openMove = () => {
|
||||||
|
showMove.value = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* 删除单个 */
|
||||||
|
const remove = (row: LawLegalReview) => {
|
||||||
|
const hide = message.loading("请求中..", 0);
|
||||||
|
removeLawLegalReview(row.id)
|
||||||
|
.then((msg) => {
|
||||||
|
hide();
|
||||||
|
message.success(msg);
|
||||||
|
reload();
|
||||||
|
})
|
||||||
|
.catch((e) => {
|
||||||
|
hide();
|
||||||
|
message.error(e.message);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
/* 批量删除 */
|
||||||
|
const removeBatch = () => {
|
||||||
|
if (!selection.value.length) {
|
||||||
|
message.error("请至少选择一条数据");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Modal.confirm({
|
||||||
|
title: "提示",
|
||||||
|
content: "确定要删除选中的记录吗?",
|
||||||
|
icon: createVNode(ExclamationCircleOutlined),
|
||||||
|
maskClosable: true,
|
||||||
|
onOk: () => {
|
||||||
|
const hide = message.loading("请求中..", 0);
|
||||||
|
removeBatchLawLegalReview(selection.value.map((d) => d.id))
|
||||||
|
.then((msg) => {
|
||||||
|
hide();
|
||||||
|
message.success(msg);
|
||||||
|
reload();
|
||||||
|
})
|
||||||
|
.catch((e) => {
|
||||||
|
hide();
|
||||||
|
message.error(e.message);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
/* 查询 */
|
||||||
|
const query = () => {
|
||||||
|
loading.value = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* 自定义行属性 */
|
||||||
|
const customRow = (record: LawLegalReview) => {
|
||||||
|
return {
|
||||||
|
// 行点击事件
|
||||||
|
onClick: () => {
|
||||||
|
// console.log(record);
|
||||||
|
},
|
||||||
|
// 行双击事件
|
||||||
|
onDblclick: () => {
|
||||||
|
openEdit(record);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
};
|
||||||
|
query();
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
export default {
|
||||||
|
name: "LawLegalReview"
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="less" scoped></style>
|
||||||
@@ -19,6 +19,13 @@
|
|||||||
styleResponsive ? { md: 19, sm: 19, xs: 24 } : { flex: '1' }
|
styleResponsive ? { md: 19, sm: 19, xs: 24 } : { flex: '1' }
|
||||||
"
|
"
|
||||||
>
|
>
|
||||||
|
<a-form-item label="分类" name="type">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入分类"
|
||||||
|
v-model:value="form.type"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
<a-form-item label="名称" name="title">
|
<a-form-item label="名称" name="title">
|
||||||
<a-input
|
<a-input
|
||||||
allow-clear
|
allow-clear
|
||||||
@@ -49,7 +56,7 @@
|
|||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { ref, reactive, watch } from "vue";
|
import { ref, reactive, watch } from "vue";
|
||||||
import { Form, message } from "ant-design-vue";
|
import { Form, message } from "ant-design-vue";
|
||||||
import { assignObject, uuid } from "ele-admin-pro";
|
import { assignObject } from "ele-admin-pro";
|
||||||
import { addLawNotaryConfig, updateLawNotaryConfig } from "@/api/law/lawNotaryConfig";
|
import { addLawNotaryConfig, updateLawNotaryConfig } from "@/api/law/lawNotaryConfig";
|
||||||
import { LawNotaryConfig } from "@/api/law/lawNotaryConfig/model";
|
import { LawNotaryConfig } from "@/api/law/lawNotaryConfig/model";
|
||||||
import { useThemeStore } from "@/store/modules/theme";
|
import { useThemeStore } from "@/store/modules/theme";
|
||||||
@@ -86,6 +93,7 @@ const formRef = ref<FormInstance | null>(null);
|
|||||||
const form = reactive<LawNotaryConfig>({
|
const form = reactive<LawNotaryConfig>({
|
||||||
id: undefined,
|
id: undefined,
|
||||||
title: undefined,
|
title: undefined,
|
||||||
|
type: undefined,
|
||||||
configList: undefined,
|
configList: undefined,
|
||||||
userId: undefined,
|
userId: undefined,
|
||||||
deleted: undefined,
|
deleted: undefined,
|
||||||
@@ -100,7 +108,14 @@ const updateVisible = (value: boolean) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// 表单验证规则
|
// 表单验证规则
|
||||||
const rules = reactive({});
|
const rules = reactive({
|
||||||
|
title: [
|
||||||
|
{ required: true, message: "请输入名称", trigger: "blur" }
|
||||||
|
],
|
||||||
|
type: [
|
||||||
|
{ required: true, message: "请输入分类", trigger: "blur" }
|
||||||
|
]
|
||||||
|
});
|
||||||
|
|
||||||
const configList = ref<any[]>([]);
|
const configList = ref<any[]>([]);
|
||||||
const addConfig = () => {
|
const addConfig = () => {
|
||||||
|
|||||||
@@ -107,6 +107,12 @@
|
|||||||
align: 'center',
|
align: 'center',
|
||||||
width: 90,
|
width: 90,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
title: '类型',
|
||||||
|
dataIndex: 'type',
|
||||||
|
key: 'type',
|
||||||
|
align: 'center',
|
||||||
|
},
|
||||||
{
|
{
|
||||||
title: '名称',
|
title: '名称',
|
||||||
dataIndex: 'title',
|
dataIndex: 'title',
|
||||||
|
|||||||
@@ -49,7 +49,24 @@
|
|||||||
/>
|
/>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<a-form-item label="地图选点">
|
<a-form-item label="地图选点">
|
||||||
<p>已选坐标: {{ form.lng }},{{ form.lat }}</p>
|
<div style="margin-bottom: 1rem">
|
||||||
|
<a-space>
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入经度(0~180)"
|
||||||
|
v-model:value="form.lng"
|
||||||
|
>
|
||||||
|
<template #addonBefore>经度</template>
|
||||||
|
</a-input>
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入纬度(0~90)"
|
||||||
|
v-model:value="form.lat"
|
||||||
|
>
|
||||||
|
<template #addonBefore>纬度</template>
|
||||||
|
</a-input>
|
||||||
|
</a-space>
|
||||||
|
</div>
|
||||||
<!-- <a-button @click="showMap = true">点击选点</a-button>-->
|
<!-- <a-button @click="showMap = true">点击选点</a-button>-->
|
||||||
<!-- <ele-map-picker-->
|
<!-- <ele-map-picker-->
|
||||||
<!-- :need-city="true"-->
|
<!-- :need-city="true"-->
|
||||||
@@ -61,7 +78,8 @@
|
|||||||
<!-- markerSrc="https://oss.wsdns.cn/20250420/48e2b37e6b3f4fad80718b244c2c12fe.png"-->
|
<!-- markerSrc="https://oss.wsdns.cn/20250420/48e2b37e6b3f4fad80718b244c2c12fe.png"-->
|
||||||
<!-- />-->
|
<!-- />-->
|
||||||
<!-- <span v-show="form.lng">{{ form.lng }},{{ form.lat }}</span>-->
|
<!-- <span v-show="form.lng">{{ form.lng }},{{ form.lat }}</span>-->
|
||||||
<tdt-map v-if="visible" :center="mapState.center" :zoom="mapState.zoom" style="width: 100%; height: 700px"
|
<tdt-map v-if="visible" :center="mapState.center" :zoom="mapState.zoom"
|
||||||
|
style="width: 100%; height: 700px"
|
||||||
:controls="['Zoom']"
|
:controls="['Zoom']"
|
||||||
@click.native="clickMap">
|
@click.native="clickMap">
|
||||||
<tdt-marker :position="[form.lng, form.lat]" :draggable="false" />
|
<tdt-marker :position="[form.lng, form.lat]" :draggable="false" />
|
||||||
@@ -149,12 +167,22 @@ const getAreaList = async () => {
|
|||||||
const changeArea = (value, options) => {
|
const changeArea = (value, options) => {
|
||||||
if (options) {
|
if (options) {
|
||||||
form.provinceId = options[0].id;
|
form.provinceId = options[0].id;
|
||||||
if (options.length > 1) form.cityId = options[1].id;
|
form.province = options[0].name;
|
||||||
if (options.length > 2) form.areaId = options[2].id;
|
if (options.length > 1) {
|
||||||
|
form.cityId = options[1].id;
|
||||||
|
form.city = options[1].name;
|
||||||
|
}
|
||||||
|
if (options.length > 2) {
|
||||||
|
form.areaId = options[2].id;
|
||||||
|
form.region = options[2].name;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
form.provinceId = undefined;
|
form.provinceId = undefined;
|
||||||
|
form.province = undefined;
|
||||||
form.cityId = undefined;
|
form.cityId = undefined;
|
||||||
|
form.city = undefined;
|
||||||
form.areaId = undefined;
|
form.areaId = undefined;
|
||||||
|
form.region = undefined;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -45,19 +45,24 @@
|
|||||||
v-model:value="form.phone"
|
v-model:value="form.phone"
|
||||||
/>
|
/>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<a-form-item label="职称" name="position">
|
<a-form-item label="执业证号" name="position">
|
||||||
<a-input
|
<a-input
|
||||||
allow-clear
|
allow-clear
|
||||||
placeholder="请输入职称"
|
placeholder="请输入执业证号"
|
||||||
v-model:value="form.position"
|
v-model:value="form.position"
|
||||||
/>
|
/>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<a-form-item label="职业类别" name="type">
|
<a-form-item label="执业范围" name="positionType">
|
||||||
<DictSelect
|
<a-input
|
||||||
dict-code="POSITION_TYPE"
|
allow-clear
|
||||||
|
placeholder="请输入执业范围"
|
||||||
v-model:value="form.positionType"
|
v-model:value="form.positionType"
|
||||||
placeholder="请选择职业类别"
|
|
||||||
/>
|
/>
|
||||||
|
<!-- <DictSelect-->
|
||||||
|
<!-- dict-code="POSITION_TYPE"-->
|
||||||
|
<!-- v-model:value="form.positionType"-->
|
||||||
|
<!-- placeholder="请选择职业类别"-->
|
||||||
|
<!-- />-->
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-form>
|
</a-form>
|
||||||
</ele-modal>
|
</ele-modal>
|
||||||
@@ -134,7 +139,7 @@ const rules = reactive({
|
|||||||
type: [
|
type: [
|
||||||
{
|
{
|
||||||
required: true,
|
required: true,
|
||||||
message: "请选择类型",
|
message: "请输入执业范围",
|
||||||
type: "string",
|
type: "string",
|
||||||
trigger: "blur"
|
trigger: "blur"
|
||||||
}
|
}
|
||||||
@@ -158,7 +163,7 @@ const rules = reactive({
|
|||||||
position: [
|
position: [
|
||||||
{
|
{
|
||||||
required: true,
|
required: true,
|
||||||
message: "请输入职称",
|
message: "请输入执业证号",
|
||||||
type: "string",
|
type: "string",
|
||||||
trigger: "blur"
|
trigger: "blur"
|
||||||
}
|
}
|
||||||
@@ -166,19 +171,11 @@ const rules = reactive({
|
|||||||
positionType: [
|
positionType: [
|
||||||
{
|
{
|
||||||
required: true,
|
required: true,
|
||||||
message: "请输入职位类别",
|
message: "请输入执业范围",
|
||||||
type: "string",
|
type: "string",
|
||||||
trigger: "blur"
|
trigger: "blur"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
type: [
|
|
||||||
{
|
|
||||||
required: true,
|
|
||||||
message: "请选择职业类别",
|
|
||||||
type: "string",
|
|
||||||
trigger: "blur"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
});
|
});
|
||||||
|
|
||||||
const { resetFields } = useForm(form, rules);
|
const { resetFields } = useForm(form, rules);
|
||||||
|
|||||||
@@ -126,7 +126,7 @@ const columns = ref<ColumnItem[]>([
|
|||||||
align: "center"
|
align: "center"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "职称",
|
title: "执业证号",
|
||||||
dataIndex: "position",
|
dataIndex: "position",
|
||||||
key: "position",
|
key: "position",
|
||||||
align: "center"
|
align: "center"
|
||||||
|
|||||||
@@ -0,0 +1,158 @@
|
|||||||
|
<!-- 详情弹窗 -->
|
||||||
|
<template>
|
||||||
|
<ele-modal
|
||||||
|
title="详情"
|
||||||
|
:width="1000"
|
||||||
|
:footer="null"
|
||||||
|
:visible="visible"
|
||||||
|
@update:visible="updateVisible"
|
||||||
|
>
|
||||||
|
<a-descriptions bordered :column="{ xs: 1, sm: 1, md: 2 }">
|
||||||
|
<a-descriptions-item label="姓名">
|
||||||
|
{{ data.name || '-' }}
|
||||||
|
</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="联系电话">
|
||||||
|
{{ data.phone || '-' }}
|
||||||
|
</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="人员列表" :span="2">
|
||||||
|
<a-table
|
||||||
|
:columns="peopleColumns"
|
||||||
|
:data-source="peopleData"
|
||||||
|
:pagination="false"
|
||||||
|
size="small"
|
||||||
|
bordered
|
||||||
|
>
|
||||||
|
<template #bodyCell="{ column, record }">
|
||||||
|
<template v-if="column.key === 'total'">
|
||||||
|
<strong>{{ record.total }}</strong>
|
||||||
|
</template>
|
||||||
|
</template>
|
||||||
|
</a-table>
|
||||||
|
</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="总收入">
|
||||||
|
{{ (data.totalIncome !== null && data.totalIncome !== undefined) ? data.totalIncome : '-' }}
|
||||||
|
</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="人均月收入">
|
||||||
|
{{ (data.avgIncome !== null && data.avgIncome !== undefined) ? data.avgIncome : '-' }}
|
||||||
|
</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="房产套数">
|
||||||
|
{{ data.houseNum || '-' }}
|
||||||
|
</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="房产面积">
|
||||||
|
{{ data.houseArea || '-' }}
|
||||||
|
</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="房产位置" :span="2">
|
||||||
|
{{ data.houseAddress || '-' }}
|
||||||
|
</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="汽车品牌型号" :span="2">
|
||||||
|
{{ data.car || '-' }}
|
||||||
|
</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="现金等资产" :span="2">
|
||||||
|
{{ data.cash || '-' }}
|
||||||
|
</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="其他资产说明" :span="2">
|
||||||
|
{{ data.otherProperty || '-' }}
|
||||||
|
</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="重大支出" :span="2">
|
||||||
|
{{ data.outcome || '-' }}
|
||||||
|
</a-descriptions-item>
|
||||||
|
</a-descriptions>
|
||||||
|
</ele-modal>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup>
|
||||||
|
import { computed } from 'vue';
|
||||||
|
import { toDateString } from 'ele-admin-pro/es';
|
||||||
|
import type { LawPoorRequest } from '@/api/law/lawPoorRequest/model';
|
||||||
|
|
||||||
|
const emit = defineEmits<{
|
||||||
|
(e: 'update:visible', visible: boolean): void;
|
||||||
|
}>();
|
||||||
|
|
||||||
|
const props = defineProps<{
|
||||||
|
// 弹窗是否打开
|
||||||
|
visible?: boolean;
|
||||||
|
// 详情数据
|
||||||
|
data: LawPoorRequest;
|
||||||
|
}>();
|
||||||
|
|
||||||
|
// 人员列表表格列配置
|
||||||
|
const peopleColumns = [
|
||||||
|
{
|
||||||
|
title: '姓名',
|
||||||
|
dataIndex: 'name',
|
||||||
|
key: 'name',
|
||||||
|
align: 'center',
|
||||||
|
width: 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '与申请人关系',
|
||||||
|
dataIndex: 'relation',
|
||||||
|
key: 'relation',
|
||||||
|
align: 'center',
|
||||||
|
width: 120
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '职业及所在单位',
|
||||||
|
dataIndex: 'occupation',
|
||||||
|
key: 'occupation',
|
||||||
|
align: 'center',
|
||||||
|
width: 150
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '工资性收入',
|
||||||
|
dataIndex: 'salaryIncome',
|
||||||
|
key: 'salaryIncome',
|
||||||
|
align: 'center',
|
||||||
|
width: 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '生产经营性收入',
|
||||||
|
dataIndex: 'businessIncome',
|
||||||
|
key: 'businessIncome',
|
||||||
|
align: 'center',
|
||||||
|
width: 120
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '其他收入',
|
||||||
|
dataIndex: 'otherIncome',
|
||||||
|
key: 'otherIncome',
|
||||||
|
align: 'center',
|
||||||
|
width: 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '合计',
|
||||||
|
dataIndex: 'total',
|
||||||
|
key: 'total',
|
||||||
|
align: 'center',
|
||||||
|
width: 100
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
// 解析人员列表数据
|
||||||
|
const peopleData = computed(() => {
|
||||||
|
if (!props.data.peopleList) {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
// 如果是 JSON 字符串,解析它
|
||||||
|
const parsed = typeof props.data.peopleList === 'string'
|
||||||
|
? JSON.parse(props.data.peopleList)
|
||||||
|
: props.data.peopleList;
|
||||||
|
|
||||||
|
// 确保返回数组
|
||||||
|
return Array.isArray(parsed) ? parsed : [];
|
||||||
|
} catch (e) {
|
||||||
|
// 如果解析失败,返回空数组
|
||||||
|
console.error('解析人员列表失败:', e);
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
/* 更新visible */
|
||||||
|
const updateVisible = (value: boolean) => {
|
||||||
|
emit('update:visible', value);
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
@@ -0,0 +1,238 @@
|
|||||||
|
<!-- 编辑弹窗 -->
|
||||||
|
<template>
|
||||||
|
<ele-modal
|
||||||
|
:width="800"
|
||||||
|
:visible="visible"
|
||||||
|
:maskClosable="false"
|
||||||
|
:maxable="maxable"
|
||||||
|
:title="isUpdate ? '编辑' : '添加'"
|
||||||
|
:body-style="{ paddingBottom: '28px' }"
|
||||||
|
@update:visible="updateVisible"
|
||||||
|
@ok="save"
|
||||||
|
>
|
||||||
|
<a-form
|
||||||
|
ref="formRef"
|
||||||
|
:model="form"
|
||||||
|
:rules="rules"
|
||||||
|
:label-col="styleResponsive ? { md: 4, sm: 5, xs: 24 } : { flex: '90px' }"
|
||||||
|
:wrapper-col="
|
||||||
|
styleResponsive ? { md: 19, sm: 19, xs: 24 } : { flex: '1' }
|
||||||
|
"
|
||||||
|
>
|
||||||
|
<a-form-item label="人员列表" name="peopleList">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入人员列表"
|
||||||
|
v-model:value="form.peopleList"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="总收入" name="totalIncome">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入总收入"
|
||||||
|
v-model:value="form.totalIncome"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="人均月收入" name="avgIncome">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入人均月收入"
|
||||||
|
v-model:value="form.avgIncome"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="房产几套" name="houseNum">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入房产几套"
|
||||||
|
v-model:value="form.houseNum"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="房产面积" name="houseArea">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入房产面积"
|
||||||
|
v-model:value="form.houseArea"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="房产位置" name="houseAddress">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入房产位置"
|
||||||
|
v-model:value="form.houseAddress"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="汽车品牌型号" name="car">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入汽车品牌型号"
|
||||||
|
v-model:value="form.car"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="现金等资产" name="cash">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入现金等资产"
|
||||||
|
v-model:value="form.cash"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="其他资产说明" name="otherProperty">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入其他资产说明"
|
||||||
|
v-model:value="form.otherProperty"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="重大支出" name="outcome">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入重大支出"
|
||||||
|
v-model:value="form.outcome"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="" name="name">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入"
|
||||||
|
v-model:value="form.name"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="" name="phone">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入"
|
||||||
|
v-model:value="form.phone"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="是否删除, 0否, 1是" name="deleted">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入是否删除, 0否, 1是"
|
||||||
|
v-model:value="form.deleted"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="修改时间" name="updateTime">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入修改时间"
|
||||||
|
v-model:value="form.updateTime"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
</a-form>
|
||||||
|
</ele-modal>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup>
|
||||||
|
import { ref, reactive, watch } from 'vue';
|
||||||
|
import { Form, message } from 'ant-design-vue';
|
||||||
|
import { assignObject, uuid } from 'ele-admin-pro';
|
||||||
|
import { addLawPoorRequest, updateLawPoorRequest } from '@/api/law/lawPoorRequest';
|
||||||
|
import { LawPoorRequest } from '@/api/law/lawPoorRequest/model';
|
||||||
|
import { useThemeStore } from '@/store/modules/theme';
|
||||||
|
import { storeToRefs } from 'pinia';
|
||||||
|
import { FormInstance } from 'ant-design-vue/es/form';
|
||||||
|
import { FileRecord } from '@/api/system/file/model';
|
||||||
|
|
||||||
|
// 是否是修改
|
||||||
|
const isUpdate = ref(false);
|
||||||
|
const useForm = Form.useForm;
|
||||||
|
// 是否开启响应式布局
|
||||||
|
const themeStore = useThemeStore();
|
||||||
|
const { styleResponsive } = storeToRefs(themeStore);
|
||||||
|
|
||||||
|
const props = defineProps<{
|
||||||
|
// 弹窗是否打开
|
||||||
|
visible: boolean;
|
||||||
|
// 修改回显的数据
|
||||||
|
data?: LawPoorRequest | null;
|
||||||
|
}>();
|
||||||
|
|
||||||
|
const emit = defineEmits<{
|
||||||
|
(e: 'done'): void;
|
||||||
|
(e: 'update:visible', visible: boolean): void;
|
||||||
|
}>();
|
||||||
|
|
||||||
|
// 提交状态
|
||||||
|
const loading = ref(false);
|
||||||
|
// 是否显示最大化切换按钮
|
||||||
|
const maxable = ref(true);
|
||||||
|
// 表格选中数据
|
||||||
|
const formRef = ref<FormInstance | null>(null);
|
||||||
|
|
||||||
|
// 用户信息
|
||||||
|
const form = reactive<LawPoorRequest>({
|
||||||
|
id: undefined,
|
||||||
|
peopleList: undefined,
|
||||||
|
totalIncome: undefined,
|
||||||
|
avgIncome: undefined,
|
||||||
|
houseNum: undefined,
|
||||||
|
houseArea: undefined,
|
||||||
|
houseAddress: undefined,
|
||||||
|
car: undefined,
|
||||||
|
cash: undefined,
|
||||||
|
otherProperty: undefined,
|
||||||
|
outcome: undefined,
|
||||||
|
name: undefined,
|
||||||
|
phone: undefined,
|
||||||
|
deleted: undefined,
|
||||||
|
tenantId: undefined,
|
||||||
|
createTime: undefined,
|
||||||
|
updateTime: undefined,
|
||||||
|
});
|
||||||
|
|
||||||
|
/* 更新visible */
|
||||||
|
const updateVisible = (value: boolean) => {
|
||||||
|
emit('update:visible', value);
|
||||||
|
};
|
||||||
|
|
||||||
|
// 表单验证规则
|
||||||
|
const rules = reactive({
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
const { resetFields } = useForm(form, rules);
|
||||||
|
|
||||||
|
/* 保存编辑 */
|
||||||
|
const save = () => {
|
||||||
|
if (!formRef.value) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
formRef.value
|
||||||
|
.validate()
|
||||||
|
.then(() => {
|
||||||
|
loading.value = true;
|
||||||
|
const formData = {
|
||||||
|
...form
|
||||||
|
};
|
||||||
|
const saveOrUpdate = isUpdate.value ? updateLawPoorRequest : addLawPoorRequest;
|
||||||
|
saveOrUpdate(formData)
|
||||||
|
.then((msg) => {
|
||||||
|
loading.value = false;
|
||||||
|
message.success(msg);
|
||||||
|
updateVisible(false);
|
||||||
|
emit('done');
|
||||||
|
})
|
||||||
|
.catch((e) => {
|
||||||
|
loading.value = false;
|
||||||
|
message.error(e.message);
|
||||||
|
});
|
||||||
|
})
|
||||||
|
.catch(() => {});
|
||||||
|
};
|
||||||
|
|
||||||
|
watch(
|
||||||
|
() => props.visible,
|
||||||
|
(visible) => {
|
||||||
|
if (visible) {
|
||||||
|
if (props.data) {
|
||||||
|
assignObject(form, props.data);
|
||||||
|
isUpdate.value = true;
|
||||||
|
} else {
|
||||||
|
isUpdate.value = false;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
resetFields();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{ immediate: true }
|
||||||
|
);
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
<!-- 搜索表单 -->
|
||||||
|
<template>
|
||||||
|
<a-space :size="10" style="flex-wrap: wrap">
|
||||||
|
<a-button type="primary" class="ele-btn-icon" @click="add">
|
||||||
|
<template #icon>
|
||||||
|
<PlusOutlined />
|
||||||
|
</template>
|
||||||
|
<span>添加</span>
|
||||||
|
</a-button>
|
||||||
|
</a-space>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup>
|
||||||
|
import { PlusOutlined } from '@ant-design/icons-vue';
|
||||||
|
import type { GradeParam } from '@/api/user/grade/model';
|
||||||
|
import { watch } from 'vue';
|
||||||
|
|
||||||
|
const props = withDefaults(
|
||||||
|
defineProps<{
|
||||||
|
// 选中的角色
|
||||||
|
selection?: [];
|
||||||
|
}>(),
|
||||||
|
{}
|
||||||
|
);
|
||||||
|
|
||||||
|
const emit = defineEmits<{
|
||||||
|
(e: 'search', where?: GradeParam): void;
|
||||||
|
(e: 'add'): void;
|
||||||
|
(e: 'remove'): void;
|
||||||
|
(e: 'batchMove'): void;
|
||||||
|
}>();
|
||||||
|
|
||||||
|
// 新增
|
||||||
|
const add = () => {
|
||||||
|
emit('add');
|
||||||
|
};
|
||||||
|
|
||||||
|
watch(
|
||||||
|
() => props.selection,
|
||||||
|
() => {}
|
||||||
|
);
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,315 @@
|
|||||||
|
<template>
|
||||||
|
<div class="page">
|
||||||
|
<div class="ele-body">
|
||||||
|
<a-card :bordered="false" :body-style="{ padding: '16px' }">
|
||||||
|
<ele-pro-table
|
||||||
|
ref="tableRef"
|
||||||
|
row-key="id"
|
||||||
|
:columns="columns"
|
||||||
|
:datasource="datasource"
|
||||||
|
:customRow="customRow"
|
||||||
|
tool-class="ele-toolbar-form"
|
||||||
|
class="sys-org-table"
|
||||||
|
>
|
||||||
|
<template #toolbar>
|
||||||
|
<search
|
||||||
|
@search="reload"
|
||||||
|
:selection="selection"
|
||||||
|
@add="openEdit"
|
||||||
|
@remove="removeBatch"
|
||||||
|
@batchMove="openMove"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
<template #bodyCell="{ column, record }">
|
||||||
|
<template v-if="column.key === 'image'">
|
||||||
|
<a-image :src="record.image" :width="50" />
|
||||||
|
</template>
|
||||||
|
<template v-if="column.key === 'status'">
|
||||||
|
<a-tag v-if="record.status === 1" color="green">显示</a-tag>
|
||||||
|
<a-tag v-if="record.status === 0" color="red">隐藏</a-tag>
|
||||||
|
</template>
|
||||||
|
<template v-if="column.key === 'action'">
|
||||||
|
<a-space>
|
||||||
|
<a @click="openDetail(record)">详情</a>
|
||||||
|
<a-divider type="vertical" />
|
||||||
|
<a @click="openEdit(record)">修改</a>
|
||||||
|
<a-divider type="vertical" />
|
||||||
|
<a-popconfirm
|
||||||
|
title="确定要删除此记录吗?"
|
||||||
|
@confirm="remove(record)"
|
||||||
|
>
|
||||||
|
<a class="ele-text-danger">删除</a>
|
||||||
|
</a-popconfirm>
|
||||||
|
</a-space>
|
||||||
|
</template>
|
||||||
|
</template>
|
||||||
|
</ele-pro-table>
|
||||||
|
</a-card>
|
||||||
|
|
||||||
|
<!-- 编辑弹窗 -->
|
||||||
|
<LawPoorRequestEdit v-model:visible="showEdit" :data="current" @done="reload" />
|
||||||
|
|
||||||
|
<!-- 详情弹窗 -->
|
||||||
|
<LawPoorRequestDetail v-model:visible="showDetail" :data="currentDetail" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup>
|
||||||
|
import { createVNode, ref } from 'vue';
|
||||||
|
import { message, Modal } from 'ant-design-vue';
|
||||||
|
import { ExclamationCircleOutlined } from '@ant-design/icons-vue';
|
||||||
|
import type { EleProTable } from 'ele-admin-pro';
|
||||||
|
import { toDateString } from 'ele-admin-pro';
|
||||||
|
import type {
|
||||||
|
DatasourceFunction,
|
||||||
|
ColumnItem
|
||||||
|
} from 'ele-admin-pro/es/ele-pro-table/types';
|
||||||
|
import Search from './components/search.vue';
|
||||||
|
import LawPoorRequestEdit from './components/lawPoorRequestEdit.vue';
|
||||||
|
import LawPoorRequestDetail from './components/lawPoorRequestDetail.vue';
|
||||||
|
import { pageLawPoorRequest, removeLawPoorRequest, removeBatchLawPoorRequest } from '@/api/law/lawPoorRequest';
|
||||||
|
import type { LawPoorRequest, LawPoorRequestParam } from '@/api/law/lawPoorRequest/model';
|
||||||
|
|
||||||
|
// 表格实例
|
||||||
|
const tableRef = ref<InstanceType<typeof EleProTable> | null>(null);
|
||||||
|
|
||||||
|
// 表格选中数据
|
||||||
|
const selection = ref<LawPoorRequest[]>([]);
|
||||||
|
// 当前编辑数据
|
||||||
|
const current = ref<LawPoorRequest | null>(null);
|
||||||
|
// 当前详情数据
|
||||||
|
const currentDetail = ref<LawPoorRequest>({});
|
||||||
|
// 是否显示编辑弹窗
|
||||||
|
const showEdit = ref(false);
|
||||||
|
// 是否显示详情弹窗
|
||||||
|
const showDetail = ref(false);
|
||||||
|
// 是否显示批量移动弹窗
|
||||||
|
const showMove = ref(false);
|
||||||
|
// 加载状态
|
||||||
|
const loading = ref(true);
|
||||||
|
|
||||||
|
// 表格数据源
|
||||||
|
const datasource: DatasourceFunction = ({
|
||||||
|
page,
|
||||||
|
limit,
|
||||||
|
where,
|
||||||
|
orders,
|
||||||
|
filters
|
||||||
|
}) => {
|
||||||
|
if (filters) {
|
||||||
|
where.status = filters.status;
|
||||||
|
}
|
||||||
|
return pageLawPoorRequest({
|
||||||
|
...where,
|
||||||
|
...orders,
|
||||||
|
page,
|
||||||
|
limit
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
// 表格列配置
|
||||||
|
const columns = ref<ColumnItem[]>([
|
||||||
|
{
|
||||||
|
title: '',
|
||||||
|
dataIndex: 'id',
|
||||||
|
key: 'id',
|
||||||
|
align: 'center',
|
||||||
|
width: 90,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '人员列表',
|
||||||
|
dataIndex: 'peopleList',
|
||||||
|
key: 'peopleList',
|
||||||
|
align: 'center',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '总收入',
|
||||||
|
dataIndex: 'totalIncome',
|
||||||
|
key: 'totalIncome',
|
||||||
|
align: 'center',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '人均月收入',
|
||||||
|
dataIndex: 'avgIncome',
|
||||||
|
key: 'avgIncome',
|
||||||
|
align: 'center',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '房产几套',
|
||||||
|
dataIndex: 'houseNum',
|
||||||
|
key: 'houseNum',
|
||||||
|
align: 'center',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '房产面积',
|
||||||
|
dataIndex: 'houseArea',
|
||||||
|
key: 'houseArea',
|
||||||
|
align: 'center',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '房产位置',
|
||||||
|
dataIndex: 'houseAddress',
|
||||||
|
key: 'houseAddress',
|
||||||
|
align: 'center',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '汽车品牌型号',
|
||||||
|
dataIndex: 'car',
|
||||||
|
key: 'car',
|
||||||
|
align: 'center',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '现金等资产',
|
||||||
|
dataIndex: 'cash',
|
||||||
|
key: 'cash',
|
||||||
|
align: 'center',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '其他资产说明',
|
||||||
|
dataIndex: 'otherProperty',
|
||||||
|
key: 'otherProperty',
|
||||||
|
align: 'center',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '重大支出',
|
||||||
|
dataIndex: 'outcome',
|
||||||
|
key: 'outcome',
|
||||||
|
align: 'center',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '',
|
||||||
|
dataIndex: 'name',
|
||||||
|
key: 'name',
|
||||||
|
align: 'center',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '',
|
||||||
|
dataIndex: 'phone',
|
||||||
|
key: 'phone',
|
||||||
|
align: 'center',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '是否删除, 0否, 1是',
|
||||||
|
dataIndex: 'deleted',
|
||||||
|
key: 'deleted',
|
||||||
|
align: 'center',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '创建时间',
|
||||||
|
dataIndex: 'createTime',
|
||||||
|
key: 'createTime',
|
||||||
|
align: 'center',
|
||||||
|
sorter: true,
|
||||||
|
ellipsis: true,
|
||||||
|
customRender: ({ text }) => toDateString(text, 'yyyy-MM-dd')
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '修改时间',
|
||||||
|
dataIndex: 'updateTime',
|
||||||
|
key: 'updateTime',
|
||||||
|
align: 'center',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '操作',
|
||||||
|
key: 'action',
|
||||||
|
width: 180,
|
||||||
|
fixed: 'right',
|
||||||
|
align: 'center',
|
||||||
|
hideInSetting: true
|
||||||
|
}
|
||||||
|
]);
|
||||||
|
|
||||||
|
/* 搜索 */
|
||||||
|
const reload = (where?: LawPoorRequestParam) => {
|
||||||
|
selection.value = [];
|
||||||
|
tableRef?.value?.reload({ where: where });
|
||||||
|
};
|
||||||
|
|
||||||
|
/* 打开编辑弹窗 */
|
||||||
|
const openEdit = (row?: LawPoorRequest) => {
|
||||||
|
current.value = row ?? null;
|
||||||
|
showEdit.value = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* 打开详情弹窗 */
|
||||||
|
const openDetail = (row: LawPoorRequest) => {
|
||||||
|
currentDetail.value = row;
|
||||||
|
showDetail.value = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* 打开批量移动弹窗 */
|
||||||
|
const openMove = () => {
|
||||||
|
showMove.value = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* 删除单个 */
|
||||||
|
const remove = (row: LawPoorRequest) => {
|
||||||
|
const hide = message.loading('请求中..', 0);
|
||||||
|
removeLawPoorRequest(row.id)
|
||||||
|
.then((msg) => {
|
||||||
|
hide();
|
||||||
|
message.success(msg);
|
||||||
|
reload();
|
||||||
|
})
|
||||||
|
.catch((e) => {
|
||||||
|
hide();
|
||||||
|
message.error(e.message);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
/* 批量删除 */
|
||||||
|
const removeBatch = () => {
|
||||||
|
if (!selection.value.length) {
|
||||||
|
message.error('请至少选择一条数据');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Modal.confirm({
|
||||||
|
title: '提示',
|
||||||
|
content: '确定要删除选中的记录吗?',
|
||||||
|
icon: createVNode(ExclamationCircleOutlined),
|
||||||
|
maskClosable: true,
|
||||||
|
onOk: () => {
|
||||||
|
const hide = message.loading('请求中..', 0);
|
||||||
|
removeBatchLawPoorRequest(selection.value.map((d) => d.id))
|
||||||
|
.then((msg) => {
|
||||||
|
hide();
|
||||||
|
message.success(msg);
|
||||||
|
reload();
|
||||||
|
})
|
||||||
|
.catch((e) => {
|
||||||
|
hide();
|
||||||
|
message.error(e.message);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
/* 查询 */
|
||||||
|
const query = () => {
|
||||||
|
loading.value = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* 自定义行属性 */
|
||||||
|
const customRow = (record: LawPoorRequest) => {
|
||||||
|
return {
|
||||||
|
// 行点击事件
|
||||||
|
onClick: () => {
|
||||||
|
// console.log(record);
|
||||||
|
},
|
||||||
|
// 行双击事件
|
||||||
|
onDblclick: () => {
|
||||||
|
openEdit(record);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
};
|
||||||
|
query();
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
export default {
|
||||||
|
name: 'LawPoorRequest'
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="less" scoped></style>
|
||||||
Reference in New Issue
Block a user