6/22完善引入,
This commit is contained in:
2
.gitignore
vendored
2
.gitignore
vendored
@@ -29,8 +29,6 @@ tests/e2e/reports
|
||||
selenium-debug.log
|
||||
|
||||
# Editor directories and files
|
||||
.idea
|
||||
.vscode
|
||||
*.suo
|
||||
*.ntvs*
|
||||
*.njsproj
|
||||
|
||||
@@ -80,7 +80,7 @@ export function getCodeImg(): AxiosPromise<VerifyCodeResult> {
|
||||
/**
|
||||
* 第三方登录
|
||||
*/
|
||||
export function callback(data: LoginData): AxiosPromise<any> {
|
||||
export function callback(data: LoginData) {
|
||||
const LoginData = {
|
||||
...data,
|
||||
clientId: clientId,
|
||||
|
||||
@@ -65,6 +65,7 @@ export const delBanner = (id: string | number | Array<string | number>) => {
|
||||
/**
|
||||
* 改变Banner图管理 状态
|
||||
* @param id
|
||||
* @param status
|
||||
*/
|
||||
export const switchBanner = (id: string, status: string) => {
|
||||
return request({
|
||||
|
||||
@@ -47,11 +47,6 @@ export interface BannerForm extends BaseEntity {
|
||||
*/
|
||||
byOrder?: number;
|
||||
link: string;
|
||||
|
||||
/**
|
||||
* 小区id
|
||||
*/
|
||||
villageId?: string;
|
||||
}
|
||||
|
||||
export interface BannerQuery extends PageQuery {
|
||||
|
||||
@@ -81,7 +81,7 @@ export interface ComplaintForm extends BaseEntity {
|
||||
/**
|
||||
* 问题照片url
|
||||
*/
|
||||
problemIamgeUrl?: string;
|
||||
problemImageUrl?: string;
|
||||
|
||||
/**
|
||||
* 投诉状态 0待处理 1处理中 2已处理
|
||||
@@ -128,7 +128,7 @@ export interface ComplaintQuery extends PageQuery {
|
||||
/**
|
||||
* 问题照片url
|
||||
*/
|
||||
problemIamgeUrl?: string;
|
||||
problemImageUrl?: string;
|
||||
|
||||
/**
|
||||
* 投诉状态 0待处理 1处理中 2已处理
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import request from '@/utils/request';
|
||||
import { AxiosPromise } from 'axios';
|
||||
import { HandleLogVO, HandleLogForm, HandleLogQuery } from '@/api/system/HandleLog/type';
|
||||
import { UploadFiles, UploadUserFile } from 'element-plus';
|
||||
|
||||
/**
|
||||
* 查询办事记录列表
|
||||
|
||||
@@ -64,6 +64,7 @@ export const delPoint = (id: string | number | Array<string | number>) => {
|
||||
/**
|
||||
* 修改巡检点状态
|
||||
* @param id
|
||||
* @param status
|
||||
*/
|
||||
export const changePointStatus = (id: string, status: string) => {
|
||||
return request({
|
||||
|
||||
@@ -19,6 +19,7 @@ export const listRecord = (query?: RecordQuery): AxiosPromise<RecordVO[]> => {
|
||||
/**
|
||||
* 查询巡检记录主详细
|
||||
* @param id
|
||||
* @param date
|
||||
*/
|
||||
export const getRecord = (id: string, date?: string): AxiosPromise<RecordVO> => {
|
||||
return request({
|
||||
|
||||
@@ -25,8 +25,8 @@ export const getNotificationList = (query): AxiosPromise<NotificationVo[]> => {
|
||||
|
||||
/**
|
||||
* 消息通知 已读
|
||||
* @param query
|
||||
* @returns {*}
|
||||
* @param ids
|
||||
*/
|
||||
|
||||
export const ReadNotificationByID = (ids: string[]) => {
|
||||
|
||||
@@ -53,7 +53,10 @@ export const updateQuestionnaire = (data: QuestionnaireForm) => {
|
||||
|
||||
/**
|
||||
* 删除问卷调查
|
||||
* @param id
|
||||
* @param ids
|
||||
* @param vailid
|
||||
* @param ids
|
||||
* @param vailid
|
||||
*/
|
||||
export const delQuestionnaire = (ids: string | string[], vailid: boolean = true) => {
|
||||
return request({
|
||||
|
||||
@@ -97,8 +97,8 @@ export type BillUserlist = {
|
||||
};
|
||||
/**
|
||||
* 查询业主列表
|
||||
* @param data
|
||||
* @returns {*}
|
||||
* @param query
|
||||
* @param query
|
||||
*/
|
||||
export const queryResidentList_holder = (query: { pageNum: number; pageSize: number }): AxiosPromise<BillUserlist[]> => {
|
||||
return request({
|
||||
@@ -110,8 +110,8 @@ export const queryResidentList_holder = (query: { pageNum: number; pageSize: num
|
||||
|
||||
/**
|
||||
* 查询车位业主列表
|
||||
* @param data
|
||||
* @returns {*}
|
||||
* @param query
|
||||
* @param query
|
||||
*/
|
||||
export const queryResidentList_Cars = (query: { pageNum: number; pageSize: number }): AxiosPromise<BillUserlist[]> => {
|
||||
return request({
|
||||
|
||||
@@ -10,8 +10,8 @@ export type cashlist = {
|
||||
|
||||
/**
|
||||
* 查询住户列表
|
||||
* @param post
|
||||
* @returns {*}
|
||||
* @param data
|
||||
*/
|
||||
export const cashQuery = (data: { residentName?: string; queryType: number }): AxiosPromise<cashlist[]> => {
|
||||
return request({
|
||||
|
||||
@@ -12,7 +12,7 @@ export const listChargeItem = (query?: ChargeItemQuery | {}): AxiosPromise<Charg
|
||||
return request({
|
||||
url: '/chargeItem/list',
|
||||
method: 'get',
|
||||
params: query,
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
@@ -64,7 +64,7 @@ export const delChargeItem = (id: string | number | Array<string | number>) => {
|
||||
|
||||
/**
|
||||
* 启停 收费项目
|
||||
* @param id
|
||||
* @param data
|
||||
*/
|
||||
export const changChargeItem = (data: { id: string; status: string }) => {
|
||||
return request({
|
||||
|
||||
@@ -12,7 +12,7 @@ export interface ChargeItemVO {
|
||||
* 收费类型
|
||||
*/
|
||||
typeId: string;
|
||||
itemName:string;
|
||||
itemName: string;
|
||||
|
||||
/**
|
||||
* 计费方式 0单次收费 1周期收费 2仪表收费
|
||||
|
||||
@@ -64,7 +64,7 @@ export const delElectricityDevice = (id: string | number | Array<string | number
|
||||
|
||||
/**
|
||||
* 生成条形码
|
||||
* @param id
|
||||
* @param data
|
||||
*/
|
||||
export const ElectricityDeviceMakerQrcode = (data: { deviceCode: string; id: string }[]) => {
|
||||
return request({
|
||||
@@ -76,7 +76,7 @@ export const ElectricityDeviceMakerQrcode = (data: { deviceCode: string; id: str
|
||||
|
||||
/**
|
||||
* 获取设备指定时间段的用电量
|
||||
* @param id
|
||||
* @param data
|
||||
*/
|
||||
export const getElectricityDeviceTimeRangeUsedWater = (data: { deviceCode: string; 'startTime': string; 'endTime': string }) => {
|
||||
return request({
|
||||
|
||||
@@ -64,7 +64,7 @@ export const delWaterDevice = (id: string | number | Array<string | number>) =>
|
||||
|
||||
/**
|
||||
* 获取设备指定时间段的用水量
|
||||
* @param id
|
||||
* @param data
|
||||
*/
|
||||
export const getWaterDeviceTimeRangeUsedWater = (data: { deviceCode: string; 'startTime': string; 'endTime': string }) => {
|
||||
return request({
|
||||
@@ -76,7 +76,7 @@ export const getWaterDeviceTimeRangeUsedWater = (data: { deviceCode: string; 'st
|
||||
|
||||
/**
|
||||
* 生成条形码
|
||||
* @param id
|
||||
* @param data
|
||||
*/
|
||||
export const WaterDeviceMakerQrcode = (data: { deviceCode: string; id: string }[]) => {
|
||||
return request({
|
||||
@@ -87,7 +87,7 @@ export const WaterDeviceMakerQrcode = (data: { deviceCode: string; id: string }[
|
||||
};
|
||||
/**
|
||||
* 更新固件
|
||||
* @param id
|
||||
* @param data
|
||||
*/
|
||||
export const WaterDeviceUpdateBin = (data: { deviceCodes: string[]; urlA: string; urlB: string }) => {
|
||||
return request({
|
||||
|
||||
@@ -17,8 +17,8 @@ export const listStock = (query?: any): AxiosPromise<any[]> => {
|
||||
|
||||
/**
|
||||
* 查询 库存查询 详情
|
||||
* @param query
|
||||
* @returns {*}
|
||||
* @param id
|
||||
*/
|
||||
|
||||
export const listStockMain = (id?: string): AxiosPromise<any[]> => {
|
||||
|
||||
@@ -88,10 +88,6 @@ export interface WarehouseQuery extends PageQuery {
|
||||
*/
|
||||
warehouseName?: string;
|
||||
|
||||
/**
|
||||
* 仓库归属id*(关联com_village)
|
||||
*/
|
||||
villageId?: string;
|
||||
|
||||
/**
|
||||
* 联系人*
|
||||
|
||||
@@ -64,20 +64,27 @@ export const delCar = (id: string | number | Array<string | number>) => {
|
||||
|
||||
/**
|
||||
* 删除车辆图片
|
||||
* @param id
|
||||
* @param format
|
||||
*/
|
||||
export const uploadCar = (formdata: FormData) => {
|
||||
export const uploadCar = (format: FormData) => {
|
||||
return request({
|
||||
url: '/car/uploadImage',
|
||||
method: 'POST',
|
||||
data: formdata
|
||||
data: format
|
||||
});
|
||||
};
|
||||
|
||||
export interface AppUserList {
|
||||
'user_id': string;
|
||||
'user_name': string;
|
||||
'user_phone': string;
|
||||
}
|
||||
/**
|
||||
* 获取用户端app-用户
|
||||
* */
|
||||
export const getAppUser = (data) => {
|
||||
export const getAppUser = (
|
||||
data
|
||||
): AxiosPromise<AppUserList[]> => {
|
||||
return request({
|
||||
url: '/car/getAppUserList',
|
||||
method: 'GET',
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import request from '@/utils/request';
|
||||
import { AxiosPromise } from 'axios';
|
||||
import { DeptForm, DeptQuery, DeptTreeVO, DeptVO } from './types';
|
||||
import { DeptForm, DeptQuery, DeptVO } from './types';
|
||||
|
||||
// 查询部门列表
|
||||
export const listDept = (query?: DeptQuery) => {
|
||||
|
||||
@@ -167,7 +167,7 @@ export interface Storeroom {
|
||||
unitNoId: string;
|
||||
unitNo: number;
|
||||
|
||||
unitNoName:string;
|
||||
unitNoName: string;
|
||||
}
|
||||
|
||||
export interface Parking {
|
||||
|
||||
@@ -15,7 +15,7 @@ export const listHouseUseType = (query?: HouseUseTypeQuery): AxiosPromise<HouseU
|
||||
params: query
|
||||
});
|
||||
};
|
||||
export const listHouseUseType_add_house = (query?: HouseUseTypeQuery): AxiosPromise<HouseUseTypeVO[]> => {
|
||||
export const listHouseUseType_add_house = (query?: HouseUseTypeQuery | {}): AxiosPromise<HouseUseTypeVO[]> => {
|
||||
return request({
|
||||
url: '/houseUseType/getList',
|
||||
method: 'get',
|
||||
|
||||
@@ -63,7 +63,7 @@ export const delParking = (id: string | number | Array<string | number>) => {
|
||||
};
|
||||
/**
|
||||
* 改变车位审核装填
|
||||
* @param id
|
||||
* @param data
|
||||
*/
|
||||
export const getParkingReview = (data: { id: string; propertyReviewFeedback: string; propertyStatus: number }) => {
|
||||
return request({
|
||||
@@ -88,6 +88,7 @@ export const getParkingReviewInfo = (id: string) => {
|
||||
/**
|
||||
* 查询小区内车位列表
|
||||
* @param { string } villageid
|
||||
* @param houseId
|
||||
* @returns {*}
|
||||
*/
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ import { ResidentVO, ResidentForm, ResidentQuery } from '@/api/system/resident/t
|
||||
* @returns {*}
|
||||
*/
|
||||
|
||||
export const listResident = (query?: ResidentQuery): AxiosPromise<ResidentVO[]> => {
|
||||
export const listResident = (query?: ResidentQuery | {}): AxiosPromise<ResidentVO[]> => {
|
||||
return request({
|
||||
url: '/resident/list',
|
||||
method: 'get',
|
||||
@@ -64,7 +64,6 @@ export const delResident = (id: string | number | Array<string | number>) => {
|
||||
|
||||
/**
|
||||
* 添加住户管理-上传身份证
|
||||
* @param id
|
||||
*/
|
||||
export const UploadidCardApi = () => {
|
||||
return request({
|
||||
|
||||
@@ -2,7 +2,7 @@ export interface ResidentVO {
|
||||
/**
|
||||
* 主键 住户管理id
|
||||
*/
|
||||
userId: string | number;
|
||||
userId: string;
|
||||
id: string;
|
||||
/**
|
||||
* 住户编号
|
||||
@@ -28,7 +28,7 @@ export interface ResidentVO {
|
||||
/**
|
||||
* 身份证号
|
||||
*/
|
||||
idCard: string | number;
|
||||
idCard: string;
|
||||
|
||||
/**
|
||||
* 手机号码
|
||||
@@ -43,7 +43,7 @@ export interface ResidentVO {
|
||||
/**
|
||||
* 楼栋id
|
||||
*/
|
||||
buildingId: string | number;
|
||||
buildingId: string;
|
||||
|
||||
/**
|
||||
* 房屋表id
|
||||
@@ -78,7 +78,7 @@ export interface ResidentForm extends BaseEntity {
|
||||
/**
|
||||
* 主键 住户管理id
|
||||
*/
|
||||
userId?: string | number;
|
||||
userId?: string;
|
||||
|
||||
/**
|
||||
* 住户编号
|
||||
@@ -106,7 +106,7 @@ export interface ResidentForm extends BaseEntity {
|
||||
/**
|
||||
* 身份证号
|
||||
*/
|
||||
idCard?: string | number;
|
||||
idCard?: string;
|
||||
|
||||
/**
|
||||
* 手机号码
|
||||
@@ -121,7 +121,7 @@ export interface ResidentForm extends BaseEntity {
|
||||
/**
|
||||
* 楼栋id
|
||||
*/
|
||||
buildingId?: string | number;
|
||||
buildingId?: string;
|
||||
|
||||
/**
|
||||
* 房屋表id
|
||||
|
||||
@@ -63,8 +63,8 @@ export const delStoreroom = (id: string | number | Array<string | number>) => {
|
||||
};
|
||||
/**
|
||||
* 查询小区内储藏室管理列表
|
||||
* @param query
|
||||
* @returns {*}
|
||||
* @param data
|
||||
*/
|
||||
|
||||
export const GetVillagelistStoreroom = (
|
||||
|
||||
@@ -212,7 +212,7 @@ export const deptTreeSelect = (): AxiosPromise<DeptTreeVO[]> => {
|
||||
/**
|
||||
* 查询用户 根据不同的角色key
|
||||
*/
|
||||
export const getUserByRoleKey = (roleKey: string = 'repair'): AxiosPromise<any> => {
|
||||
export const getUserByRoleKey = (roleKey: string = 'repair') => {
|
||||
return request({
|
||||
url: '/system/user/list/byRoleKey?roleKey=' + roleKey,
|
||||
method: 'get'
|
||||
|
||||
@@ -68,7 +68,7 @@ export const genCode = (tableId: string | number) => {
|
||||
method: 'get'
|
||||
});
|
||||
};
|
||||
|
||||
253029745
|
||||
// 同步数据库
|
||||
export const synchDb = (tableId: string | number) => {
|
||||
return request({
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
import request from '@/utils/request';
|
||||
import { AxiosPromise } from 'axios';
|
||||
|
||||
/**
|
||||
* 查询小区概况
|
||||
* @param query
|
||||
* @returns {*}
|
||||
* @param villageId
|
||||
*/
|
||||
export const workSpaceTotalListApi = (
|
||||
villageId: string
|
||||
@@ -26,8 +25,8 @@ export const workSpaceTotalListApi = (
|
||||
};
|
||||
/**
|
||||
* 查询近一周报修趋势
|
||||
* @param query
|
||||
* @returns {*}
|
||||
* @param villageId
|
||||
*/
|
||||
export const workSpaceRepairTrendListApi = (
|
||||
villageId: string
|
||||
@@ -47,8 +46,8 @@ export const workSpaceRepairTrendListApi = (
|
||||
};
|
||||
/**
|
||||
* 查询近一周收入趋势
|
||||
* @param query
|
||||
* @returns {*}
|
||||
* @param villageId
|
||||
*/
|
||||
export const workSpaceIncomeTrendListApi = (
|
||||
villageId: string
|
||||
@@ -68,8 +67,8 @@ export const workSpaceIncomeTrendListApi = (
|
||||
};
|
||||
/**
|
||||
* 查询近一周支出趋势
|
||||
* @param query
|
||||
* @returns {*}
|
||||
* @param villageId
|
||||
*/
|
||||
export const workSpaceOutcomeTrendListApi = (
|
||||
villageId: string
|
||||
@@ -90,8 +89,8 @@ export const workSpaceOutcomeTrendListApi = (
|
||||
|
||||
/**
|
||||
* 查询当日天气
|
||||
* @param query
|
||||
* @returns {*}
|
||||
* @param city
|
||||
*/
|
||||
export const workSpaceWeatherApi = (city: string): Promise<reponseType> => {
|
||||
const url = 'https://uapis.cn/api/v1/misc/weather?city=' + city + '&lang=zh';
|
||||
@@ -307,20 +306,20 @@ type LifeIndices = {
|
||||
|
||||
/**
|
||||
* 查询 快捷入口
|
||||
* @param query
|
||||
* @returns {*}
|
||||
*/
|
||||
export const getQuicklyshortcut = () => {
|
||||
export const getQuicklyshortcut = (query?: {}) => {
|
||||
return request({
|
||||
url: '/workSpace/shortcut/list',
|
||||
method: 'GET'
|
||||
method: 'GET',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 添加 快捷入口
|
||||
* @param query
|
||||
* @returns {*}
|
||||
* @param data
|
||||
*/
|
||||
export const addQuicklyshortcut = (data) => {
|
||||
return request({
|
||||
@@ -332,8 +331,8 @@ export const addQuicklyshortcut = (data) => {
|
||||
|
||||
/**
|
||||
* 删除 快捷入口
|
||||
* @param query
|
||||
* @returns {*}
|
||||
* @param id
|
||||
*/
|
||||
export const delQuicklyshortcut = (id) => {
|
||||
return request({
|
||||
|
||||
@@ -33,7 +33,6 @@ export interface SpelVO {
|
||||
* 备注
|
||||
*/
|
||||
remark?: string;
|
||||
|
||||
}
|
||||
|
||||
export interface SpelForm extends BaseEntity {
|
||||
@@ -71,11 +70,9 @@ export interface SpelForm extends BaseEntity {
|
||||
* 备注
|
||||
*/
|
||||
remark?: string;
|
||||
|
||||
}
|
||||
|
||||
export interface SpelQuery extends PageQuery {
|
||||
|
||||
/**
|
||||
* 组件名称
|
||||
*/
|
||||
@@ -101,11 +98,8 @@ export interface SpelQuery extends PageQuery {
|
||||
*/
|
||||
status?: string;
|
||||
|
||||
/**
|
||||
* 日期范围参数
|
||||
*/
|
||||
params?: any;
|
||||
/**
|
||||
* 日期范围参数
|
||||
*/
|
||||
params?: any;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -181,8 +181,8 @@ export const currentTaskAllUser = (taskId: string | number) => {
|
||||
|
||||
/**
|
||||
* 获取下一节点写
|
||||
* @param data参数
|
||||
* @returns
|
||||
* @param data
|
||||
* @param data
|
||||
*/
|
||||
export const getNextNodeList = (data: any): any => {
|
||||
return request({
|
||||
@@ -194,8 +194,8 @@ export const getNextNodeList = (data: any): any => {
|
||||
|
||||
/**
|
||||
* 催办任务
|
||||
* @param data参数
|
||||
* @returns
|
||||
* @param data
|
||||
* @param data
|
||||
*/
|
||||
export const urgeTask = (data: any): any => {
|
||||
return request({
|
||||
|
||||
@@ -39,8 +39,10 @@
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import DictTag from '@/components/DictTag/index.vue';
|
||||
import pagination from '@/components/Pagination/index.vue';
|
||||
import { getBuildinglistAPI, getHouselistAPI } from '@/api/system/house';
|
||||
import { BillUserlist, queryResidentList_Cars, queryResidentList_holder } from '@/api/system/SdbBill';
|
||||
import { BillUserlist, queryResidentList_Cars } from '@/api/system/SdbBill';
|
||||
import { ref, nextTick, getCurrentInstance, ComponentInternalInstance, toRefs } from 'vue';
|
||||
|
||||
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
||||
|
||||
@@ -19,10 +19,10 @@
|
||||
:total="total"
|
||||
v-model:page="queryParams.pageNum"
|
||||
v-model:limit="queryParams.pageSize"
|
||||
@pagination="getlist"
|
||||
@pagination="getList"
|
||||
/>
|
||||
<div>
|
||||
<el-button @click="conback">退出</el-button>
|
||||
<el-button @click="conBack">退出</el-button>
|
||||
<el-button type="primary" @click="confirm"> 确定 </el-button>
|
||||
</div>
|
||||
</div>
|
||||
@@ -31,33 +31,30 @@
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { BillUserlist } from '@/api/system/SdbBill';
|
||||
import { ref, nextTick, getCurrentInstance, ComponentInternalInstance, toRefs } from 'vue';
|
||||
import { getAppUser } from '@/api/system/cars';
|
||||
import pagination from '@/components/Pagination/index.vue';
|
||||
import { ref, nextTick, toRefs } from 'vue';
|
||||
import { AppUserList, getAppUser } from '@/api/system/cars';
|
||||
|
||||
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
||||
const props = defineProps({
|
||||
returnvalue: {
|
||||
type: String,
|
||||
default: '*'
|
||||
},
|
||||
titleName: {
|
||||
type: String,
|
||||
default: '选择业主'
|
||||
},
|
||||
/** 是否多选 false 单选 */
|
||||
isMultiple: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
type ReturnValueType = keyof AppUserList | '*';
|
||||
|
||||
const props = withDefaults(
|
||||
defineProps<{
|
||||
returnable: ReturnValueType;
|
||||
titleName?: string;
|
||||
isMultiple?: boolean;
|
||||
}>(),
|
||||
{
|
||||
returnable: '*',
|
||||
titleName: '选择业主',
|
||||
isMultiple: false
|
||||
}
|
||||
});
|
||||
|
||||
const { titleName, returnvalue } = toRefs(props);
|
||||
);
|
||||
const { titleName, returnable } = toRefs(props);
|
||||
|
||||
const userid = ref([]);
|
||||
// ✅ 手动设置默认值(替代 withDefaults)
|
||||
const emit = defineEmits<{
|
||||
change: [value: string | number | (string | number)[] | BillUserlist | BillUserlist[]]; // 支持返回数组
|
||||
change: [value: AppUserList[keyof AppUserList] | AppUserList | AppUserList[]]; // 支持返回数组
|
||||
}>();
|
||||
|
||||
const dialog = ref({
|
||||
@@ -71,12 +68,12 @@ const queryParams = ref({
|
||||
});
|
||||
|
||||
const multipleTableRef = ref();
|
||||
const tableData = ref<BillUserlist[]>([]);
|
||||
const tableData = ref<AppUserList[]>([]);
|
||||
const total = ref(0);
|
||||
const loading = ref(false);
|
||||
const isFetching = ref(false);
|
||||
// 存储选中项
|
||||
const multipleSelection = ref<BillUserlist[]>([]);
|
||||
const multipleSelection = ref<AppUserList[]>([]);
|
||||
|
||||
const isMultiple = computed(() => props.isMultiple ?? false);
|
||||
|
||||
@@ -88,7 +85,7 @@ const handleUserSelection = () => {
|
||||
return;
|
||||
}
|
||||
const rowsToSelect = tableData.value.filter((row) => {
|
||||
return multipleSelection.value.some((selected) => selected.parkingId === row.parkingId);
|
||||
return multipleSelection.value.some((selected) => selected.user_id === row.user_id);
|
||||
});
|
||||
multipleTableRef.value.clearSelection();
|
||||
if (rowsToSelect.length > 0) {
|
||||
@@ -106,7 +103,7 @@ const handleUserSelection = () => {
|
||||
// ====================== 方法 ======================
|
||||
|
||||
// 获取列表
|
||||
function getlist() {
|
||||
function getList() {
|
||||
isFetching.value = true; // 加锁
|
||||
loading.value = true;
|
||||
getAppUser(queryParams.value)
|
||||
@@ -127,14 +124,14 @@ function getlist() {
|
||||
// ==============================================
|
||||
// ✅ 新增:处理 selection-change(多选专用)
|
||||
// ==============================================
|
||||
function handleSelectionChange(selection: BillUserlist[]) {
|
||||
function handleSelectionChange(selection: AppUserList[]) {
|
||||
if (isFetching.value) return;
|
||||
if (isMultiple.value) {
|
||||
const currentSelectedIds = new Set(selection.map((item) => item.parkingId));
|
||||
const currentSelectedIds = new Set(selection.map((item) => item.user_id));
|
||||
const otherPageSelections = multipleSelection.value.filter((item) => {
|
||||
const isCurrentPageItem = tableData.value.some((row) => row.parkingId === item.parkingId);
|
||||
const isCurrentPageItem = tableData.value.some((row) => row.user_id === item.user_id);
|
||||
if (isCurrentPageItem) {
|
||||
return currentSelectedIds.has(item.parkingId);
|
||||
return currentSelectedIds.has(item.user_id);
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
@@ -143,9 +140,9 @@ function handleSelectionChange(selection: BillUserlist[]) {
|
||||
const finalSelection = [...otherPageSelections, ...selection];
|
||||
// 4. 去重(以防万一)
|
||||
const uniqueMap = new Map();
|
||||
finalSelection.forEach((item) => uniqueMap.set(item.parkingId, item));
|
||||
finalSelection.forEach((item) => uniqueMap.set(item.user_id, item));
|
||||
multipleSelection.value = Array.from(uniqueMap.values());
|
||||
console.log(multipleSelection.value.map((item) => item.parkingId));
|
||||
console.log(multipleSelection.value.map((item) => item.user_id));
|
||||
} else {
|
||||
// --- 单选逻辑 ---
|
||||
if (selection.length > 0) {
|
||||
@@ -169,40 +166,40 @@ function resetQuery() {
|
||||
pageNum: 1,
|
||||
pageSize: 10
|
||||
};
|
||||
getlist();
|
||||
getList();
|
||||
}
|
||||
|
||||
// 退出
|
||||
function conback() {
|
||||
function conBack() {
|
||||
dialog.value.dialogVisible = false;
|
||||
resetQuery();
|
||||
}
|
||||
|
||||
// ==============================================
|
||||
// ✅ 核心修改:根据 returnvalue 返回对应的值
|
||||
// ✅ 核心修改:根据 returnable 返回对应的值
|
||||
// ==============================================
|
||||
function confirm() {
|
||||
dialog.value.dialogVisible = false;
|
||||
if (isMultiple.value) {
|
||||
// 多选
|
||||
if (returnvalue.value === '*') {
|
||||
if (returnable.value === '*') {
|
||||
// ✅ 返回整个对象数组
|
||||
emit('change', multipleSelection.value);
|
||||
} else {
|
||||
// 返回指定字段数组
|
||||
emit(
|
||||
'change',
|
||||
multipleSelection.value.map((item) => item[returnvalue.value as keyof BillUserlist])
|
||||
multipleSelection.value.map((item) => item[returnable.value])
|
||||
);
|
||||
}
|
||||
} else {
|
||||
// 单选
|
||||
if (returnvalue.value === '*') {
|
||||
if (returnable.value === '*') {
|
||||
// ✅ 返回整个对象
|
||||
emit('change', multipleSelection.value[0]);
|
||||
emit('change', multipleSelection.value[multipleSelection.value.length - 1]);
|
||||
} else {
|
||||
// 返回指定字段
|
||||
emit('change', multipleSelection.value[0][returnvalue.value as keyof BillUserlist]);
|
||||
emit('change', multipleSelection.value[multipleSelection.value.length - 1][returnable.value]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -217,14 +214,13 @@ defineExpose({
|
||||
multipleSelection.value = arr.map(
|
||||
(id) =>
|
||||
({
|
||||
parkingId: id
|
||||
}) as BillUserlist
|
||||
user_id: id
|
||||
}) as AppUserList
|
||||
);
|
||||
console.log(multipleSelection.value);
|
||||
} else {
|
||||
multipleSelection.value = [];
|
||||
}
|
||||
getlist();
|
||||
getList();
|
||||
dialog.value.dialogVisible = true;
|
||||
}
|
||||
});
|
||||
@@ -238,7 +234,7 @@ defineExpose({
|
||||
border: 1px solid #ccc;
|
||||
border-radius: 5px;
|
||||
padding: 0 10px;
|
||||
.defaultbox {
|
||||
.defaultBox {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
|
||||
@@ -87,10 +87,11 @@
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { getBuildinglistAPI, getBuildingOnly, getHouselistAPI } from '@/api/system/house';
|
||||
import { listHouseUseType, listHouseUseType_add_house } from '@/api/system/houseUse';
|
||||
import { getBuildinglistAPI, getHouselistAPI } from '@/api/system/house';
|
||||
import { listHouseUseType_add_house } from '@/api/system/houseUse';
|
||||
import { BillHouse, listBillHouse } from '@/api/system/SdbBill';
|
||||
import { ref, watch, nextTick, getCurrentInstance, ComponentInternalInstance, toRefs } from 'vue';
|
||||
import { ref, nextTick, toRefs } from 'vue';
|
||||
import pagination from '@/components/Pagination/index.vue';
|
||||
|
||||
// const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
||||
// const { sys_user_sex } = toRefs<any>(proxy?.useDict('sys_user_sex'));
|
||||
|
||||
@@ -132,7 +132,6 @@ const queryParams = ref({
|
||||
status: '', // 👈 原来 null → 改成 ''
|
||||
type: '', // 👈 原来 null → 改成 ''
|
||||
houseId: null,
|
||||
villageId: null,
|
||||
buildingId: null,
|
||||
unitNo: null
|
||||
});
|
||||
@@ -260,7 +259,6 @@ function resetQuery() {
|
||||
type: '', // 👈 这里也改
|
||||
status: '', // 👈 这里也改
|
||||
houseId: null,
|
||||
villageId: null,
|
||||
buildingId: null,
|
||||
unitNo: null
|
||||
};
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
<script setup lang="ts">
|
||||
import { listMaterial } from '@/api/system/Tmaterial';
|
||||
import { MaterialVO } from '@/api/system/Tmaterial/type';
|
||||
import { ref, watch, nextTick, getCurrentInstance, ComponentInternalInstance, toRefs } from 'vue';
|
||||
import { ref, nextTick, getCurrentInstance, ComponentInternalInstance, toRefs } from 'vue';
|
||||
|
||||
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<slot v-if="$slots.default" />
|
||||
|
||||
<div v-else class="residentBox" @click="choiceResidentFun">
|
||||
<div class="defaultbox" v-if="multipleSelection.length === 0 && props.username === null">
|
||||
<div class="defaultBox" v-if="multipleSelection.length === 0 && props.username === null">
|
||||
<span>请选择</span>
|
||||
<el-icon><Search /></el-icon>
|
||||
</div>
|
||||
@@ -26,7 +26,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<el-button type="primary" @click="getlist">查询</el-button>
|
||||
<el-button type="primary" @click="getList">查询</el-button>
|
||||
<el-button @click="resetQuery">重置</el-button>
|
||||
</div>
|
||||
</nav>
|
||||
@@ -52,10 +52,10 @@
|
||||
:total="total"
|
||||
v-model:page="queryParams.pageNum"
|
||||
v-model:limit="queryParams.pageSize"
|
||||
@pagination="getlist"
|
||||
@pagination="getList"
|
||||
/>
|
||||
<div>
|
||||
<el-button @click="conback">退出</el-button>
|
||||
<el-button @click="conBack">退出</el-button>
|
||||
<el-button type="primary" @click="confirm"> 确定 </el-button>
|
||||
</div>
|
||||
</div>
|
||||
@@ -159,9 +159,6 @@ const handleUserSelection = () => {
|
||||
// 监听
|
||||
// 监听优化:只在 userid 变化时触发
|
||||
watch(userid, handleUserSelection, { immediate: true });
|
||||
// watch(tableData, () => {
|
||||
// if (userid.value) handleUserSelection(); // 仅在有 userid 时重新处理
|
||||
// });
|
||||
|
||||
// ====================== 方法 ======================
|
||||
// 打开选择框
|
||||
@@ -177,11 +174,11 @@ function choiceResidentFun() {
|
||||
} else if (Array.isArray(props.userid)) {
|
||||
multipleSelection.value = props.userid.map((id) => ({ userId: id })) as tableType[];
|
||||
}
|
||||
getlist();
|
||||
getList();
|
||||
}
|
||||
|
||||
// 获取列表
|
||||
function getlist() {
|
||||
function getList() {
|
||||
loading.value = true;
|
||||
getUserByRoleKey(userType.value)
|
||||
.then((res) => {
|
||||
@@ -244,11 +241,11 @@ function resetQuery() {
|
||||
nickName: null,
|
||||
phonenumber: null
|
||||
};
|
||||
getlist();
|
||||
getList();
|
||||
}
|
||||
|
||||
// 退出
|
||||
function conback() {
|
||||
function conBack() {
|
||||
dialog.value.dialogVisible = false;
|
||||
resetQuery();
|
||||
}
|
||||
@@ -288,7 +285,7 @@ onMounted(() => {
|
||||
defineExpose({
|
||||
open: () => {
|
||||
dialog.value.dialogVisible = true;
|
||||
getlist();
|
||||
getList();
|
||||
}
|
||||
});
|
||||
</script>
|
||||
@@ -301,7 +298,7 @@ defineExpose({
|
||||
border: 1px solid #ccc;
|
||||
border-radius: 5px;
|
||||
padding: 0 10px;
|
||||
.defaultbox {
|
||||
.defaultBox {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
|
||||
<script setup lang="ts">
|
||||
import { propTypes } from '@/utils/propTypes';
|
||||
import { PictureFilled } from '@element-plus/icons-vue';
|
||||
|
||||
const props = defineProps({
|
||||
src: propTypes.string.def(''),
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
</div>
|
||||
|
||||
<el-dialog v-model="dialogVisible" title="预览" width="800px" append-to-body>
|
||||
<img :src="dialogImageUrl" style="display: block; max-width: 100%; margin: 0 auto" />
|
||||
<img alt="预览" :src="dialogImageUrl" style="display: block; max-width: 100%; margin: 0 auto" />
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
@@ -46,6 +46,7 @@ import { OssVO } from '@/api/system/oss/types';
|
||||
import { propTypes } from '@/utils/propTypes';
|
||||
import { globalHeaders } from '@/utils/request';
|
||||
import { compressAccurately } from 'image-conversion';
|
||||
import { Plus } from '@element-plus/icons-vue';
|
||||
|
||||
const props = defineProps({
|
||||
modelValue: {
|
||||
|
||||
@@ -45,8 +45,7 @@ defineSlots<{
|
||||
|
||||
<style scoped lang="scss">
|
||||
.PageHeaderBox {
|
||||
padding: 15px 20px;
|
||||
padding-bottom: 0;
|
||||
padding: 15px 20px 0;
|
||||
background-color: #fff;
|
||||
border-radius: 2px;
|
||||
background-color: rgba(255, 255, 255, 1);
|
||||
|
||||
@@ -59,6 +59,7 @@
|
||||
</div>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import DictTag from '@/components/DictTag/index.vue';
|
||||
import { flowHisTaskList } from '@/api/workflow/instance';
|
||||
import { propTypes } from '@/utils/propTypes';
|
||||
import { listByIds } from '@/api/system/oss';
|
||||
|
||||
@@ -109,7 +109,7 @@ onMounted(() => {
|
||||
:deep(.el-transfer__button) {
|
||||
border-radius: 50%;
|
||||
display: block;
|
||||
margin-left: 0px;
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
:deep(.el-transfer__button:first-child) {
|
||||
|
||||
@@ -4,6 +4,7 @@ import { App } from 'vue';
|
||||
|
||||
export default (app: App) => {
|
||||
app.directive('copyText', copyText);
|
||||
/** 权限校验 */
|
||||
app.directive('hasPermi', hasPermi);
|
||||
app.directive('hasRoles', hasRoles);
|
||||
};
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
<div class="avatar-container">
|
||||
<el-dropdown class="right-menu-item hover-effect" trigger="click" @command="handleCommand">
|
||||
<div class="avatar-wrapper">
|
||||
<img :src="userStore.avatar" class="user-avatar" />
|
||||
<img alt="头像" :src="userStore.avatar" class="user-avatar" />
|
||||
<el-icon><caret-bottom /></el-icon>
|
||||
</div>
|
||||
<template #dropdown>
|
||||
@@ -60,6 +60,7 @@ import { useNoticeStore } from '@/store/modules/notice';
|
||||
import notice from './notice/index.vue';
|
||||
import router from '@/router';
|
||||
import { ElMessageBoxOptions } from 'element-plus/es/components/message-box/src/message-box.type';
|
||||
import { CaretBottom } from '@element-plus/icons-vue';
|
||||
|
||||
const props = defineProps({
|
||||
Showhamburger: {
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<div class="sidebar-logo-container" :class="{ collapse: collapse }">
|
||||
<transition :enter-active-class="proxy?.animate.logoAnimate.enter" mode="out-in">
|
||||
<router-link v-if="collapse" key="collapse" class="sidebar-logo-link" to="/">
|
||||
<img v-if="logo" :src="logo" class="sidebar-logo" />
|
||||
<img alt="" v-if="logo" :src="logo" class="sidebar-logo" />
|
||||
<h1 v-else class="sidebar-title">
|
||||
{{ title }}
|
||||
</h1>
|
||||
@@ -114,7 +114,7 @@ const getLogoTextColor = computed(() => {
|
||||
|
||||
&.collapse {
|
||||
.sidebar-logo {
|
||||
margin-right: 0px;
|
||||
margin-right: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -93,7 +93,7 @@ defineExpose({
|
||||
overflow: hidden;
|
||||
width: 100%;
|
||||
:deep(.el-scrollbar__bar) {
|
||||
bottom: 0px;
|
||||
bottom: 0;
|
||||
}
|
||||
:deep(.el-scrollbar__wrap) {
|
||||
height: 49px;
|
||||
|
||||
@@ -37,6 +37,7 @@ import { useSettingsStore } from '@/store/modules/settings';
|
||||
import { usePermissionStore } from '@/store/modules/permission';
|
||||
import { useTagsViewStore } from '@/store/modules/tagsView';
|
||||
import { RouteRecordRaw, RouteLocationNormalized } from 'vue-router';
|
||||
import { Back, CircleClose, Close, RefreshRight, Right } from '@element-plus/icons-vue';
|
||||
|
||||
const visible = ref(false);
|
||||
const top = ref(0);
|
||||
|
||||
@@ -11,8 +11,8 @@
|
||||
</el-menu>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import SidebarItem from '../Sidebar/SidebarItem';
|
||||
<script lang="ts" setup>
|
||||
import SidebarItem from '../Sidebar/SidebarItem.vue';
|
||||
import { useAppStore } from '@/store/modules/app';
|
||||
import { useSettingsStore } from '@/store/modules/settings';
|
||||
import { usePermissionStore } from '@/store/modules/permission';
|
||||
@@ -45,7 +45,7 @@ function setVisibleNumber() {
|
||||
if (width >= 1000) {
|
||||
width -= 500;
|
||||
}
|
||||
visibleNumber.value = parseInt(width / 3 / 85);
|
||||
visibleNumber.value = parseInt(String(width / 3 / 85));
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
@@ -95,7 +95,7 @@ onMounted(() => {
|
||||
.topbar-menu .el-sub-menu .el-sub-menu__icon-arrow {
|
||||
position: static;
|
||||
margin-left: 8px;
|
||||
margin-top: 0px;
|
||||
margin-top: 0;
|
||||
display: block !important;
|
||||
}
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
import { ref, computed, watchEffect, onMounted, onUnmounted } from 'vue';
|
||||
import { useWindowSize } from '@vueuse/core';
|
||||
import SideBar from './components/Sidebar/index.vue';
|
||||
import { AppMain, Navbar, Settings, TagsView } from './components';
|
||||
import { AppMain, Navbar, Settings } from './components';
|
||||
import { useAppStore } from '@/store/modules/app';
|
||||
import { useSettingsStore } from '@/store/modules/settings';
|
||||
import { NavTypeEnum } from '@/enums/NavTypeEnum';
|
||||
|
||||
@@ -23,7 +23,7 @@ export default {
|
||||
const blob = new Blob([res.data], { type: 'application/octet-stream' });
|
||||
FileSaver.saveAs(blob, decodeURIComponent(res.headers['download-filename'] as string));
|
||||
} else {
|
||||
this.printErrMsg(res.data);
|
||||
await this.printErrMsg(res.data);
|
||||
}
|
||||
downloadLoadingInstance.close();
|
||||
} catch (r) {
|
||||
@@ -47,7 +47,7 @@ export default {
|
||||
const blob = new Blob([res.data], { type: 'application/zip' });
|
||||
FileSaver.saveAs(blob, name);
|
||||
} else {
|
||||
this.printErrMsg(res.data);
|
||||
await this.printErrMsg(res.data);
|
||||
}
|
||||
downloadLoadingInstance.close();
|
||||
} catch (r) {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { defineStore } from 'pinia';
|
||||
import router, { constantRoutes, dynamicRoutes } from '@/router';
|
||||
import { constantRoutes, dynamicRoutes } from '@/router';
|
||||
import store from '@/store';
|
||||
import { getRouters } from '@/api/menu';
|
||||
import auth from '@/plugins/auth';
|
||||
|
||||
@@ -5,7 +5,6 @@ import { LoginData } from '@/api/types';
|
||||
import defAva from '@/assets/images/profile.jpg';
|
||||
import { defineStore } from 'pinia';
|
||||
import { ref } from 'vue';
|
||||
import { useHouseStore } from './house';
|
||||
import { UserInfo } from '@/api/system/user/types';
|
||||
import { useDictStore } from './dict';
|
||||
|
||||
|
||||
2
src/types/global.d.ts
vendored
2
src/types/global.d.ts
vendored
@@ -1,4 +1,4 @@
|
||||
import type { PropType as VuePropType, ComponentInternalInstance as ComponentInstance } from 'vue';
|
||||
import type { ComponentInternalInstance as ComponentInstance } from 'vue';
|
||||
import { LanguageEnum } from '@/enums/LanguageEnum';
|
||||
import { NavTypeEnum } from '@/enums/NavTypeEnum';
|
||||
|
||||
|
||||
@@ -19,8 +19,8 @@ export function isPlateNumber(val: string): boolean {
|
||||
}
|
||||
/**
|
||||
* 验证金钱
|
||||
* @param {number} val
|
||||
* @return {boolean} true 符合 false 不符合
|
||||
* @param value
|
||||
*/
|
||||
export function isMoney(value: number): boolean {
|
||||
const reg = /^(0|[1-9]\d*)(\.\d{1,2})?$/;
|
||||
|
||||
@@ -73,6 +73,7 @@ type ValidTreeKey = {
|
||||
* 根据 houseId 查找完整路径(楼栋 > 单元 > 楼层 > 房屋)
|
||||
* @param treeData 转换后的树形数据
|
||||
* @param houseId 目标房屋ID
|
||||
* @param response
|
||||
* @returns string[] 路径数组,如 ['1号楼', '1单元', '3层', '301']
|
||||
*/
|
||||
export function getHousePathById(treeData: Tree[], houseId: string | number, response: ValidTreeKey = 'value'): (string | number)[] {
|
||||
|
||||
@@ -90,8 +90,8 @@ export const getQueryObject = (url: string) => {
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {string} input value
|
||||
* @returns {number} output value
|
||||
* @param str
|
||||
* @param str
|
||||
*/
|
||||
export const byteLength = (str: string) => {
|
||||
// returns the byte length of an utf8 string
|
||||
@@ -245,7 +245,7 @@ export const debounce = (func: any, wait: number, immediate: boolean) => {
|
||||
// 如果设定为immediate===true,因为开始边界已经调用过了此处无需调用
|
||||
if (!immediate) {
|
||||
result = func.apply(context, args);
|
||||
if (!timeout) context = args = null;
|
||||
context = args = null;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -115,8 +115,9 @@ import { pcaTextArr } from 'element-china-area-data';
|
||||
import type { DataItem } from 'element-china-area-data';
|
||||
import { useUserStore } from '@/store/modules/user';
|
||||
import { CascaderValue } from 'element-plus';
|
||||
import { addVillageAPI, editVillageAPI, getVillageByIdAPI, uploadVillageImageAPI } from '@/api/system/community/index';
|
||||
import { addVillageAPI, editVillageAPI, getVillageByIdAPI, uploadVillageImageAPI } from '@/api/system/community';
|
||||
import { communitylist_rows_type } from '@/api/system/community/type';
|
||||
import { Delete, Plus } from '@element-plus/icons-vue';
|
||||
|
||||
const route = useRoute();
|
||||
const router = useRouter();
|
||||
|
||||
@@ -35,11 +35,11 @@
|
||||
</div>
|
||||
<div class="actions flex">
|
||||
<div @click="handleclick(item)">管理</div>
|
||||
<div @click="handleEdit(item)" v-hasPermi="['system:village:edit']">编辑</div>
|
||||
<div @click="handleDelete(item)" v-hasPermi="['system:village:remove']">删除</div>
|
||||
<div @click="handleEdit(item)" v-has-permi="['system:village:edit']">编辑</div>
|
||||
<div @click="handleDelete(item)" v-has-permi="['system:village:remove']">删除</div>
|
||||
</div>
|
||||
</div>
|
||||
<div v-hasPermi="['system:village:add']" @click="handleAdd" class="coummunity_card addActions flex flex-items-center justify-center">
|
||||
<div v-has-permi="['system:village:add']" @click="handleAdd" class="coummunity_card addActions flex flex-items-center justify-center">
|
||||
<div class="addCoummunity">
|
||||
<el-icon>
|
||||
<AddLocation></AddLocation>
|
||||
@@ -57,7 +57,7 @@ import defaultVilageinfoImage from '@/assets/images/villageimage.png';
|
||||
import Navbar from '@/layout/components/Navbar.vue';
|
||||
import { deleteVillageByIdAPI, switchVillageAPI, getCommunitylistAPI } from '@/api/system/community/index';
|
||||
import type { communitylist_rows_type } from '@/api/system/community/type';
|
||||
import { Picture } from '@element-plus/icons-vue';
|
||||
import { AddLocation, Picture } from '@element-plus/icons-vue';
|
||||
import { useHouseStore } from '@/store/modules/house';
|
||||
|
||||
const houseStore = useHouseStore();
|
||||
@@ -225,7 +225,7 @@ function handleclick(item: communitylist_rows_type) {
|
||||
min-height: 358px;
|
||||
border: 2px solid #ffffff;
|
||||
background: linear-gradient(180deg, rgba(255, 255, 255, 0.2) 0%, #ffffff 70%);
|
||||
box-shadow: 0px 4px 8px 0px rgba(0, 104, 255, 0.06);
|
||||
box-shadow: 0 4px 8px 0 rgba(0, 104, 255, 0.06);
|
||||
border-radius: 16px 16px 16px 16px;
|
||||
margin-right: 20px;
|
||||
margin-bottom: 15px;
|
||||
|
||||
@@ -23,18 +23,18 @@
|
||||
<template #header>
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-col :span="1.5">
|
||||
<el-button v-hasPermi="['demo:demo:add']" type="primary" plain icon="Plus" @click="handleAdd">新增</el-button>
|
||||
<el-button v-has-permi="['demo:demo:add']" type="primary" plain icon="Plus" @click="handleAdd">新增</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button v-hasPermi="['demo:demo:edit']" type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()">编辑</el-button>
|
||||
<el-button v-has-permi="['demo:demo:edit']" type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()">编辑</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button v-hasPermi="['demo:demo:remove']" type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()"
|
||||
<el-button v-has-permi="['demo:demo:remove']" type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()"
|
||||
>删除</el-button
|
||||
>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button v-hasPermi="['demo:demo:export']" type="warning" plain icon="Download" @click="handleExport">导出</el-button>
|
||||
<el-button v-has-permi="['demo:demo:export']" type="warning" plain icon="Download" @click="handleExport">导出</el-button>
|
||||
</el-col>
|
||||
<right-toolbar v-model:show-search="showSearch" @query-table="getList"></right-toolbar>
|
||||
</el-row>
|
||||
@@ -51,10 +51,10 @@
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||
<template #default="scope">
|
||||
<el-tooltip content="修改" placement="top">
|
||||
<el-button v-hasPermi="['demo:demo:edit']" link type="primary" icon="Edit" @click="handleUpdate(scope.row)"></el-button>
|
||||
<el-button v-has-permi="['demo:demo:edit']" link type="primary" icon="Edit" @click="handleUpdate(scope.row)"></el-button>
|
||||
</el-tooltip>
|
||||
<el-tooltip content="删除" placement="top">
|
||||
<el-button v-hasPermi="['demo:demo:remove']" link type="primary" icon="Delete" @click="handleDelete(scope.row)"></el-button>
|
||||
<el-button v-has-permi="['demo:demo:remove']" link type="primary" icon="Delete" @click="handleDelete(scope.row)"></el-button>
|
||||
</el-tooltip>
|
||||
</template>
|
||||
</el-table-column>
|
||||
@@ -92,6 +92,8 @@
|
||||
</template>
|
||||
|
||||
<script setup name="Demo" lang="ts">
|
||||
import RightToolbar from '@/components/RightToolbar/index.vue';
|
||||
import pagination from '@/components/Pagination/index.vue';
|
||||
import { listDemo, getDemo, delDemo, addDemo, updateDemo } from '@/api/demo/demo';
|
||||
import { DemoVO, DemoQuery, DemoForm } from '@/api/demo/demo/types';
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
<template #header>
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-col :span="1.5">
|
||||
<el-button v-hasPermi="['demo:tree:add']" type="primary" plain icon="Plus" @click="handleAdd()">新增</el-button>
|
||||
<el-button v-has-permi="['demo:tree:add']" type="primary" plain icon="Plus" @click="handleAdd()">新增</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="info" plain icon="Sort" @click="handleToggleExpandAll">展开/折叠</el-button>
|
||||
@@ -44,13 +44,13 @@
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||
<template #default="scope">
|
||||
<el-tooltip content="修改" placement="top">
|
||||
<el-button v-hasPermi="['demo:tree:edit']" link type="primary" icon="Edit" @click="handleUpdate(scope.row)" />
|
||||
<el-button v-has-permi="['demo:tree:edit']" link type="primary" icon="Edit" @click="handleUpdate(scope.row)" />
|
||||
</el-tooltip>
|
||||
<el-tooltip content="新增" placement="top">
|
||||
<el-button v-hasPermi="['demo:tree:add']" link type="primary" icon="Plus" @click="handleAdd(scope.row)" />
|
||||
<el-button v-has-permi="['demo:tree:add']" link type="primary" icon="Plus" @click="handleAdd(scope.row)" />
|
||||
</el-tooltip>
|
||||
<el-tooltip content="删除" placement="top">
|
||||
<el-button v-hasPermi="['demo:tree:remove']" link type="primary" icon="Delete" @click="handleDelete(scope.row)" />
|
||||
<el-button v-has-permi="['demo:tree:remove']" link type="primary" icon="Delete" @click="handleDelete(scope.row)" />
|
||||
</el-tooltip>
|
||||
</template>
|
||||
</el-table-column>
|
||||
@@ -90,6 +90,7 @@
|
||||
</template>
|
||||
|
||||
<script setup name="Tree" lang="ts">
|
||||
import RightToolbar from '@/components/RightToolbar/index.vue';
|
||||
import { listTree, getTree, delTree, addTree, updateTree } from '@/api/demo/tree';
|
||||
import { TreeVO, TreeQuery, TreeForm } from '@/api/demo/tree/types';
|
||||
|
||||
|
||||
@@ -235,7 +235,7 @@ onMounted(() => {
|
||||
.input-icon {
|
||||
height: 40px;
|
||||
width: 23px;
|
||||
margin-left: 0px;
|
||||
margin-left: 0;
|
||||
margin-right: 16px;
|
||||
color: #1a75ff;
|
||||
}
|
||||
|
||||
1
src/views/monitor/cache/index.vue
vendored
1
src/views/monitor/cache/index.vue
vendored
@@ -127,6 +127,7 @@
|
||||
import { getCache } from '@/api/monitor/cache';
|
||||
import * as echarts from 'echarts';
|
||||
import { CacheVO } from '@/api/monitor/cache/types';
|
||||
import { Monitor, Odometer, PieChart } from '@element-plus/icons-vue';
|
||||
|
||||
const cache = ref<Partial<CacheVO>>({});
|
||||
const commandstats = ref();
|
||||
|
||||
@@ -41,20 +41,20 @@
|
||||
<template #header>
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-col :span="1.5">
|
||||
<el-button v-hasPermi="['monitor:logininfor:remove']" type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()">
|
||||
<el-button v-has-permi="['monitor:logininfor:remove']" type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()">
|
||||
删除
|
||||
</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button v-hasPermi="['monitor:logininfor:remove']" type="danger" plain icon="Delete" @click="handleClean">清空</el-button>
|
||||
<el-button v-has-permi="['monitor:logininfor:remove']" type="danger" plain icon="Delete" @click="handleClean">清空</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button v-hasPermi="['monitor:logininfor:unlock']" type="primary" plain icon="Unlock" :disabled="single" @click="handleUnlock">
|
||||
<el-button v-has-permi="['monitor:logininfor:unlock']" type="primary" plain icon="Unlock" :disabled="single" @click="handleUnlock">
|
||||
解锁
|
||||
</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button v-hasPermi="['monitor:logininfor:export']" type="warning" plain icon="Download" @click="handleExport">导出</el-button>
|
||||
<el-button v-has-permi="['monitor:logininfor:export']" type="warning" plain icon="Download" @click="handleExport">导出</el-button>
|
||||
</el-col>
|
||||
<right-toolbar v-model:show-search="showSearch" @query-table="getList"></right-toolbar>
|
||||
</el-row>
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||
<template #default="scope">
|
||||
<el-tooltip content="强退" placement="top">
|
||||
<el-button v-hasPermi="['monitor:online:forceLogout']" link type="primary" icon="Delete" @click="handleForceLogout(scope.row)">
|
||||
<el-button v-has-permi="['monitor:online:forceLogout']" link type="primary" icon="Delete" @click="handleForceLogout(scope.row)">
|
||||
</el-button>
|
||||
</el-tooltip>
|
||||
</template>
|
||||
@@ -64,7 +64,6 @@
|
||||
<script setup name="Online" lang="ts">
|
||||
import { forceLogout, list as initData } from '@/api/monitor/online';
|
||||
import { OnlineQuery, OnlineVO } from '@/api/monitor/online/types';
|
||||
import api from '@/api/system/user';
|
||||
import { to } from 'await-to-js';
|
||||
|
||||
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
||||
|
||||
@@ -49,15 +49,15 @@
|
||||
<template #header>
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-col :span="1.5">
|
||||
<el-button v-hasPermi="['monitor:operlog:remove']" type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()">
|
||||
<el-button v-has-permi="['monitor:operlog:remove']" type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()">
|
||||
删除
|
||||
</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button v-hasPermi="['monitor:operlog:remove']" type="danger" plain icon="WarnTriangleFilled" @click="handleClean">清空</el-button>
|
||||
<el-button v-has-permi="['monitor:operlog:remove']" type="danger" plain icon="WarnTriangleFilled" @click="handleClean">清空</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button v-hasPermi="['monitor:operlog:export']" type="warning" plain icon="Download" @click="handleExport">导出</el-button>
|
||||
<el-button v-has-permi="['monitor:operlog:export']" type="warning" plain icon="Download" @click="handleExport">导出</el-button>
|
||||
</el-col>
|
||||
<right-toolbar v-model:show-search="showSearch" @query-table="getList"></right-toolbar>
|
||||
</el-row>
|
||||
@@ -116,7 +116,7 @@
|
||||
<el-table-column label="操作" fixed="right" align="center" class-name="small-padding fixed-width">
|
||||
<template #default="scope">
|
||||
<el-tooltip content="详细" placement="top">
|
||||
<el-button v-hasPermi="['monitor:operlog:query']" link type="primary" icon="View" @click="handleView(scope.row)"> </el-button>
|
||||
<el-button v-has-permi="['monitor:operlog:query']" link type="primary" icon="View" @click="handleView(scope.row)"> </el-button>
|
||||
</el-tooltip>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
<template #prefix><svg-icon icon-class="validCode" class="el-input__icon input-icon" /></template>
|
||||
</el-input>
|
||||
<div class="register-code">
|
||||
<img :src="codeUrl" class="register-code-img" @click="getCode" />
|
||||
<img alt="验证码" :src="codeUrl" class="register-code-img" @click="getCode" />
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item style="width: 100%">
|
||||
@@ -186,7 +186,7 @@ onMounted(() => {
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
height: 100%;
|
||||
background-image: url('../assets/images/login-background.jpg');
|
||||
background-image: url('../assets/images/login-background.png');
|
||||
background-size: cover;
|
||||
}
|
||||
|
||||
@@ -194,7 +194,7 @@ onMounted(() => {
|
||||
display: flex;
|
||||
|
||||
.title {
|
||||
margin: 0px auto 30px auto;
|
||||
margin: 0 auto 30px auto;
|
||||
text-align: center;
|
||||
color: #707070;
|
||||
}
|
||||
|
||||
@@ -28,9 +28,9 @@
|
||||
v-model="activityTime"
|
||||
format="YYYY-MM-DD HH:mm:ss"
|
||||
value-format="YYYY-MM-DD HH:mm:ss"
|
||||
@update:model-value="
|
||||
(data) => {
|
||||
if (data && data.length > 0) {
|
||||
@change="
|
||||
(data: string[] | null) => {
|
||||
if (data) {
|
||||
form.startTime = data[0];
|
||||
form.endTime = data[1];
|
||||
} else {
|
||||
@@ -116,7 +116,7 @@
|
||||
:on-error="handleError"
|
||||
:limit="1"
|
||||
>
|
||||
<img v-if="form.coverImage" :src="form.coverImage" class="avatar" />
|
||||
<img alt="活动封面" v-if="form.coverImage" :src="form.coverImage" class="avatar" />
|
||||
<el-icon v-else class="avatar-uploader-icon"><Plus /></el-icon>
|
||||
</el-upload>
|
||||
</el-form-item>
|
||||
@@ -210,11 +210,13 @@
|
||||
</div>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import editor from '@/components/Editor/index.vue';
|
||||
import { ref } from 'vue';
|
||||
import PageHeader from '@/components/Pageheader/index.vue';
|
||||
import { addActivity, getActivity, updateActivity } from '@/api/system/Activity';
|
||||
import { genFileId, UploadFiles, UploadInstance, UploadProps, UploadRawFile } from 'element-plus';
|
||||
import { genFileId, UploadInstance, UploadProps, UploadRawFile } from 'element-plus';
|
||||
import AMapLoader from '@amap/amap-jsapi-loader';
|
||||
import { Plus } from '@element-plus/icons-vue';
|
||||
|
||||
const uploadUrl = import.meta.env.VITE_APP_BASE_API + '/activity/uploadImage';
|
||||
|
||||
@@ -290,7 +292,7 @@ const activityTime = ref([]);
|
||||
// 上传文件
|
||||
const upload = ref<UploadInstance>();
|
||||
// 上传成功
|
||||
const handleAvatarSuccess: UploadProps['onSuccess'] = (response, uploadFile) => {
|
||||
const handleAvatarSuccess: UploadProps['onSuccess'] = (response) => {
|
||||
if (response.data && response.data.url) {
|
||||
form.value.coverImage = response.data.url;
|
||||
}
|
||||
@@ -305,14 +307,14 @@ const handleExceed: UploadProps['onExceed'] = (files) => {
|
||||
upload.value?.submit();
|
||||
};
|
||||
// 上传失败
|
||||
const handleError: UploadProps['onError'] = (error: Error, uploadFile: UploadFile, uploadFiles: UploadFiles) => {
|
||||
const handleError: UploadProps['onError'] = (error: Error) => {
|
||||
console.log(error);
|
||||
};
|
||||
|
||||
// ! 投诉 ====================================================================================================
|
||||
|
||||
// ! 签到 =======================================
|
||||
const isSignin = ref(false);
|
||||
// const isSignin = ref(false);
|
||||
let AMapLi = null;
|
||||
let map: any = null;
|
||||
let circle: any = null;
|
||||
@@ -514,17 +516,17 @@ function handleBack() {
|
||||
/**
|
||||
* 销毁地图及所有工具实例(防内存泄漏、重复初始化)
|
||||
*/
|
||||
function destroyMapInstance() {
|
||||
if (map) {
|
||||
map.destroy();
|
||||
map = null;
|
||||
}
|
||||
mouseTool = null;
|
||||
geocoder = null;
|
||||
circle = null;
|
||||
AMapLi = null;
|
||||
mapReady.value = false;
|
||||
}
|
||||
// function destroyMapInstance() {
|
||||
// if (map) {
|
||||
// map.destroy();
|
||||
// map = null;
|
||||
// }
|
||||
// mouseTool = null;
|
||||
// geocoder = null;
|
||||
// circle = null;
|
||||
// AMapLi = null;
|
||||
// mapReady.value = false;
|
||||
// }
|
||||
onUnmounted(() => {
|
||||
// destroyMapInstance();
|
||||
});
|
||||
|
||||
@@ -20,19 +20,6 @@
|
||||
<el-card class="flex-1" shadow="never">
|
||||
<template #header>
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<!-- <el-col :span="1.5">
|
||||
<el-button type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['activity:activity:add']">新增</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()" v-hasPermi="['repair:edit:activity']"
|
||||
>修改</el-button
|
||||
>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()" v-hasPermi="['activity:activity:remove']"
|
||||
>删除</el-button
|
||||
>
|
||||
</el-col> -->
|
||||
<right-toolbar
|
||||
:disable-delete="multiple"
|
||||
:disable-edit="single"
|
||||
@@ -60,8 +47,8 @@
|
||||
<el-table-column label="操作" align="center" width="300px" fixed="right">
|
||||
<template #default="scope">
|
||||
<el-button v-if="scope.row.status === '0'" link type="primary" @click="handleSend(scope.row)">发布</el-button>
|
||||
<el-button link type="primary" @click="handleUpdate(scope.row)" v-hasPermi="['activity:activity:edit']">编辑</el-button>
|
||||
<el-button link type="primary" @click="handleDelete(scope.row)" v-hasPermi="['activity:activity:remove']">删除</el-button>
|
||||
<el-button link type="primary" @click="handleUpdate(scope.row)" v-has-permi="['activity:activity:edit']">编辑</el-button>
|
||||
<el-button link type="primary" @click="handleDelete(scope.row)" v-has-permi="['activity:activity:remove']">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@@ -89,7 +76,7 @@
|
||||
</template>
|
||||
|
||||
<script setup name="Activity" lang="ts">
|
||||
import { listActivity, delActivity, updateActivity } from '@/api/system/Activity/index';
|
||||
import { listActivity, delActivity, updateActivity } from '@/api/system/Activity';
|
||||
import { ActivityVO, ActivityQuery, ActivityForm } from '@/api/system/Activity/type';
|
||||
import { checkPermi } from '@/utils/permission';
|
||||
|
||||
@@ -201,7 +188,7 @@ const handleAdd = () => {
|
||||
};
|
||||
|
||||
/** 修改按钮操作 */
|
||||
const handleUpdate = async (row?: ActivityVO) => {
|
||||
const handleUpdate = (row?: ActivityVO) => {
|
||||
const _id = row?.id || ids.value[0];
|
||||
router.push({
|
||||
path: '/repair/editActivity',
|
||||
@@ -233,17 +220,6 @@ const handleDelete = async (row?: ActivityVO) => {
|
||||
await getList();
|
||||
};
|
||||
|
||||
/** 导出按钮操作 */
|
||||
const handleExport = () => {
|
||||
proxy?.download(
|
||||
'activity/activity/export',
|
||||
{
|
||||
...queryParams.value
|
||||
},
|
||||
`activity_${new Date().getTime()}.xlsx`
|
||||
);
|
||||
};
|
||||
|
||||
onMounted(() => {
|
||||
getList();
|
||||
});
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
v-on:error="handleAvatarError"
|
||||
:before-upload="beforeAvatarUpload"
|
||||
>
|
||||
<img v-if="form.url" :src="form.url" class="avatar" />
|
||||
<img v-if="form.url" :src="form.url" class="avatar" alt="" />
|
||||
<el-icon v-else class="avatar-uploader-icon"><Plus /></el-icon>
|
||||
<template #tip>
|
||||
<div class="el-upload__tip">支持jpg, png等格式文件上传,文件大小不超过10MB.</div>
|
||||
@@ -49,9 +49,9 @@ import PageHeader from '@/components/Pageheader/index.vue';
|
||||
import { addBanner, getBanner, updateBanner } from '@/api/system/Banner';
|
||||
import { useUserStore } from '@/store/modules/user';
|
||||
import { UploadProps, UploadRawFile } from 'element-plus';
|
||||
import { Plus } from '@element-plus/icons-vue';
|
||||
|
||||
const uploadUrl = import.meta.env.VITE_APP_BASE_API + '/car/uploadImage';
|
||||
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
||||
|
||||
const router = useRouter();
|
||||
const route = useRoute();
|
||||
|
||||
@@ -20,25 +20,12 @@
|
||||
<el-card class="flex-1" shadow="never">
|
||||
<template #header>
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<!-- <el-col :span="1.5">
|
||||
<el-button type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['banner:banner:add']">新增</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()" v-hasPermi="['banner:banner:edit']"
|
||||
>修改</el-button
|
||||
>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()" v-hasPermi="['banner:banner:remove']"
|
||||
>删除</el-button
|
||||
>
|
||||
</el-col> -->
|
||||
<right-toolbar
|
||||
:disable-delete="multiple"
|
||||
:disable-edit="single"
|
||||
:show-add="checkPermi(['banner:banner:add'])"
|
||||
:show-edit="checkPermi(['banner:banner:edit'])"
|
||||
:show-delete="checkPermi(['banner:banner:remove'])"
|
||||
:show-edit="false"
|
||||
:show-delete="false"
|
||||
@update:add="handleAdd"
|
||||
@update:edit="handleUpdate()"
|
||||
@update:delete="handleDelete()"
|
||||
@@ -77,46 +64,25 @@
|
||||
<el-table-column label="添加时间" align="center" prop="createTime" />
|
||||
<el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width">
|
||||
<template #default="scope">
|
||||
<el-button link type="primary" @click="handleUpdate(scope.row)" v-hasPermi="['banner:banner:edit']">修改</el-button>
|
||||
<el-button link type="primary" @click="handleDelete(scope.row)" v-hasPermi="['banner:banner:remove']">删除</el-button>
|
||||
<el-button link type="primary" @click="handleUpdate(scope.row)" v-has-permi="['banner:banner:edit']">修改</el-button>
|
||||
<el-button link type="primary" @click="handleDelete(scope.row)" v-has-permi="['banner:banner:remove']">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" />
|
||||
</el-card>
|
||||
<!-- 添加或修改Banner图管理对话框 -->
|
||||
<el-dialog :title="dialog.title" v-model="dialog.visible" width="500px" append-to-body>
|
||||
<el-form ref="bannerFormRef" :model="form" label-width="80px">
|
||||
<el-form-item label="名称" prop="name">
|
||||
<el-input v-model="form.name" placeholder="请输入名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="排序" prop="byOrder">
|
||||
<el-input v-model="form.byOrder" placeholder="请输入排序" />
|
||||
</el-form-item>
|
||||
<el-form-item label="小区id" prop="villageId">
|
||||
<el-input v-model="form.villageId" placeholder="请输入小区id" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<div class="dialog-footer">
|
||||
<el-button :loading="buttonLoading" type="primary" @click="submitForm">确 定</el-button>
|
||||
<el-button @click="cancel">取 消</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup name="Banner" lang="ts">
|
||||
import { listBanner, getBanner, delBanner, addBanner, updateBanner, switchBanner } from '@/api/system/Banner';
|
||||
import { listBanner, delBanner, switchBanner } from '@/api/system/Banner';
|
||||
import { BannerVO, BannerQuery, BannerForm } from '@/api/system/Banner/type';
|
||||
import { checkPermi } from '@/utils/permission';
|
||||
|
||||
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
||||
|
||||
const bannerList = ref<BannerVO[]>([]);
|
||||
const buttonLoading = ref(false);
|
||||
const loading = ref(true);
|
||||
const showSearch = ref(true);
|
||||
const ids = ref<Array<string | number>>([]);
|
||||
@@ -125,20 +91,13 @@ const multiple = ref(true);
|
||||
const total = ref(0);
|
||||
|
||||
const queryFormRef = ref<ElFormInstance>();
|
||||
const bannerFormRef = ref<ElFormInstance>();
|
||||
|
||||
const dialog = reactive<DialogOption>({
|
||||
visible: false,
|
||||
title: ''
|
||||
});
|
||||
|
||||
const initFormData: BannerForm = {
|
||||
id: undefined,
|
||||
name: undefined,
|
||||
status: undefined,
|
||||
byOrder: undefined,
|
||||
link: undefined,
|
||||
villageId: undefined
|
||||
link: undefined
|
||||
};
|
||||
const data = reactive<PageData<BannerForm, BannerQuery>>({
|
||||
form: { ...initFormData },
|
||||
@@ -148,12 +107,11 @@ const data = reactive<PageData<BannerForm, BannerQuery>>({
|
||||
name: undefined,
|
||||
status: undefined,
|
||||
byOrder: undefined,
|
||||
link: undefined,
|
||||
villageId: undefined
|
||||
link: undefined
|
||||
}
|
||||
});
|
||||
|
||||
const { queryParams, form } = toRefs(data);
|
||||
const { queryParams } = toRefs(data);
|
||||
|
||||
/** 查询Banner图管理列表 */
|
||||
const getList = async () => {
|
||||
@@ -168,18 +126,6 @@ const getList = async () => {
|
||||
});
|
||||
};
|
||||
|
||||
/** 取消按钮 */
|
||||
const cancel = () => {
|
||||
reset();
|
||||
dialog.visible = false;
|
||||
};
|
||||
|
||||
/** 表单重置 */
|
||||
const reset = () => {
|
||||
form.value = { ...initFormData };
|
||||
bannerFormRef.value?.resetFields();
|
||||
};
|
||||
|
||||
/** 搜索按钮操作 */
|
||||
const handleQuery = () => {
|
||||
queryParams.value.pageNum = 1;
|
||||
@@ -208,7 +154,7 @@ const handleAdd = () => {
|
||||
};
|
||||
|
||||
/** 修改按钮操作 */
|
||||
const handleUpdate = async (row?: BannerVO) => {
|
||||
const handleUpdate = (row?: BannerVO) => {
|
||||
const _id = row?.id || ids.value[0];
|
||||
router.push({
|
||||
path: '/system/editBanner',
|
||||
@@ -218,23 +164,6 @@ const handleUpdate = async (row?: BannerVO) => {
|
||||
});
|
||||
};
|
||||
|
||||
/** 提交按钮 */
|
||||
const submitForm = () => {
|
||||
bannerFormRef.value?.validate(async (valid: boolean) => {
|
||||
if (valid) {
|
||||
buttonLoading.value = true;
|
||||
if (form.value.id) {
|
||||
await updateBanner(form.value).finally(() => (buttonLoading.value = false));
|
||||
} else {
|
||||
await addBanner(form.value).finally(() => (buttonLoading.value = false));
|
||||
}
|
||||
proxy?.$modal.msgSuccess('操作成功');
|
||||
dialog.visible = false;
|
||||
await getList();
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
/** 删除按钮操作 */
|
||||
const handleDelete = async (row?: BannerVO) => {
|
||||
const _ids = row?.id || ids.value;
|
||||
@@ -244,16 +173,6 @@ const handleDelete = async (row?: BannerVO) => {
|
||||
await getList();
|
||||
};
|
||||
|
||||
/** 导出按钮操作 */
|
||||
const handleExport = () => {
|
||||
proxy?.download(
|
||||
'banner/banner/export',
|
||||
{
|
||||
...queryParams.value
|
||||
},
|
||||
`banner_${new Date().getTime()}.xlsx`
|
||||
);
|
||||
};
|
||||
function handleSwitch(id: string, status: string) {
|
||||
switchBanner(id, status).then(() => {
|
||||
ElMessage.success('操作成功');
|
||||
|
||||
@@ -11,50 +11,50 @@
|
||||
</div>
|
||||
</template>
|
||||
<div>
|
||||
<div class="CarinfoBox">
|
||||
<div class="carinfo_item">
|
||||
<div class="carInfoBox">
|
||||
<div class="carInfo_item">
|
||||
<div class="label">投诉类型</div>
|
||||
<div class="main">{{ form.type }}</div>
|
||||
</div>
|
||||
|
||||
<div class="carinfo_item">
|
||||
<div class="carInfo_item">
|
||||
<div class="label">投诉人姓名</div>
|
||||
<div class="main">{{ form.complaintName }}</div>
|
||||
</div>
|
||||
|
||||
<div class="carinfo_item">
|
||||
<div class="carInfo_item">
|
||||
<div class="label">手机号码</div>
|
||||
<div class="main">{{ form.phone }}</div>
|
||||
</div>
|
||||
|
||||
<div class="carinfo_item">
|
||||
<div class="carInfo_item">
|
||||
<div class="label">投诉时间</div>
|
||||
<div class="main">{{ form.createTime }}</div>
|
||||
</div>
|
||||
|
||||
<div class="carinfo_item">
|
||||
<div class="carInfo_item">
|
||||
<div class="label">处理状态</div>
|
||||
<div class="main">
|
||||
<DictTag :options="com_complaint_status" :value="form.status"></DictTag>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="CarinfoBox signle">
|
||||
<div class="carinfo_item">
|
||||
<div class="carInfoBox signLe">
|
||||
<div class="carInfo_item">
|
||||
<div class="label">问题描述</div>
|
||||
<div class="main">{{ form.problemDes }}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="CarinfoBox signle">
|
||||
<div class="carinfo_item">
|
||||
<div class="carInfoBox signLe">
|
||||
<div class="carInfo_item">
|
||||
<div class="label">问题照片</div>
|
||||
<div class="main">
|
||||
<el-image
|
||||
v-for="(item, index) in problemIamgeUrllist"
|
||||
v-for="(item, index) in problemImageUrlList"
|
||||
:key="index"
|
||||
:src="item"
|
||||
:preview-teleported="true"
|
||||
:preview-src-list="problemIamgeUrllist"
|
||||
:preview-src-list="problemImageUrlList"
|
||||
style="width: 120px; height: 120px; margin-right: 10px"
|
||||
></el-image>
|
||||
</div>
|
||||
@@ -71,7 +71,7 @@
|
||||
<span>处理情况</span>
|
||||
</div>
|
||||
</template>
|
||||
<div class="formbox">
|
||||
<div class="formBox">
|
||||
<el-form ref="formRef" :rules="rules" class="m-auto" :inline="false" label-width="100px" :model="form">
|
||||
<el-form-item label="处理状态" prop="status">
|
||||
<el-radio-group v-model="form.status">
|
||||
@@ -103,11 +103,13 @@
|
||||
</div>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import DictTag from '@/components/DictTag/index.vue';
|
||||
import { ref } from 'vue';
|
||||
import repairUser from '@/components/Holder/repairUser.vue';
|
||||
import PageHeader from '@/components/Pageheader/index.vue';
|
||||
import { getComplaint, updateComplaint } from '@/api/system/Complaint';
|
||||
import { listComplaintType } from '@/api/system/ComplainType';
|
||||
import { ResidentVO } from '@/api/system/resident/type';
|
||||
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
||||
const { com_complaint_status } = toRefs<any>(proxy?.useDict('com_complaint_status'));
|
||||
|
||||
@@ -121,7 +123,7 @@ const form = ref({
|
||||
'problemDes': '',
|
||||
'complaintName': '',
|
||||
'phone': '',
|
||||
'problemIamgeUrl': '',
|
||||
'problemImageUrl': '',
|
||||
'status': '1', // 投诉状态 0待处理 1已处理
|
||||
'handleId': '',
|
||||
'handleName': '',
|
||||
@@ -133,7 +135,7 @@ const rules = {
|
||||
handleContent: [{ required: true, message: '投诉处理内容不能为空', trigger: 'blur' }]
|
||||
};
|
||||
const userid = ref();
|
||||
const problemIamgeUrllist = ref([]);
|
||||
const problemImageUrlList = ref([]);
|
||||
// ! 投诉 ====================================================================================================
|
||||
async function init() {
|
||||
const res2 = await listComplaintType();
|
||||
@@ -142,7 +144,7 @@ async function init() {
|
||||
...form.value,
|
||||
...res.data
|
||||
};
|
||||
problemIamgeUrllist.value = res.data.problemImageUrl ? res.data.problemImageUrl.split(',') : [];
|
||||
problemImageUrlList.value = res.data.problemImageUrl ? res.data.problemImageUrl.split(',') : [];
|
||||
form.value.status = '1';
|
||||
const find = res2.rows.find((item) => item.id === form.value.typeId);
|
||||
if (find) {
|
||||
@@ -156,8 +158,7 @@ if (route.query.id) {
|
||||
init();
|
||||
}
|
||||
|
||||
function handleChange(pop) {
|
||||
console.log(pop);
|
||||
function handleChange(pop: ResidentVO) {
|
||||
form.value.handleId = pop.userId;
|
||||
form.value.handleName = pop.nickName;
|
||||
}
|
||||
@@ -195,14 +196,14 @@ function handleBack() {
|
||||
flex: 1;
|
||||
font-size: 14px;
|
||||
|
||||
.CarinfoBox {
|
||||
.carInfoBox {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
grid-template-rows: repeat(2, 1fr);
|
||||
gap: 20px;
|
||||
margin-bottom: 20px;
|
||||
|
||||
.carinfo_item {
|
||||
.carInfo_item {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
.label {
|
||||
@@ -211,13 +212,13 @@ function handleBack() {
|
||||
}
|
||||
}
|
||||
|
||||
&.signle {
|
||||
&.signLe {
|
||||
grid-template-columns: repeat(1, 1fr);
|
||||
grid-template-rows: repeat(1, 1fr);
|
||||
}
|
||||
}
|
||||
|
||||
.formbox {
|
||||
.formBox {
|
||||
width: 500px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<el-form ref="queryFormRef" label-width="120px" :model="queryParams" :inline="true">
|
||||
<el-form-item label="投诉类型" prop="typeId">
|
||||
<el-select v-model="queryParams.typeId" placeholder="请选择投诉类型" style="width: 240px">
|
||||
<el-option :disabled="item.status === '1'" v-for="item in complaintyTyplist" :key="item.id" :label="item.name" :value="item.id" />
|
||||
<el-option :disabled="item.status === '1'" v-for="item in complainTypeList" :key="item.id" :label="item.name" :value="item.id" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="投诉人姓名" prop="complaintName">
|
||||
@@ -36,7 +36,7 @@
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width">
|
||||
<template #default="scope">
|
||||
<el-button link type="primary" @click="handleUpdate(scope.row)" v-hasPermi="['complaint:complaint:query']">查看详情</el-button>
|
||||
<el-button link type="primary" @click="handleUpdate(scope.row)" v-has-permi="['complaint:complaint:query']">查看详情</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@@ -45,9 +45,8 @@
|
||||
</el-card>
|
||||
</div>
|
||||
</template>
|
||||
<!-- complaint -->
|
||||
<script setup name="Complaint" lang="ts">
|
||||
import { listComplaint, getComplaint, delComplaint, addComplaint, updateComplaint } from '@/api/system/Complaint/index';
|
||||
import { listComplaint } from '@/api/system/Complaint';
|
||||
import { ComplaintVO, ComplaintQuery, ComplaintForm } from '@/api/system/Complaint/type';
|
||||
import { listComplaintType } from '@/api/system/ComplainType';
|
||||
|
||||
@@ -55,7 +54,6 @@ const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
||||
const { com_complaint_status } = toRefs<any>(proxy?.useDict('com_complaint_status'));
|
||||
|
||||
const complaintList = ref<ComplaintVO[]>([]);
|
||||
const buttonLoading = ref(false);
|
||||
const loading = ref(true);
|
||||
const showSearch = ref(true);
|
||||
const ids = ref<Array<string | number>>([]);
|
||||
@@ -64,12 +62,6 @@ const multiple = ref(true);
|
||||
const total = ref(0);
|
||||
|
||||
const queryFormRef = ref<ElFormInstance>();
|
||||
const complaintFormRef = ref<ElFormInstance>();
|
||||
|
||||
const dialog = reactive<DialogOption>({
|
||||
visible: false,
|
||||
title: ''
|
||||
});
|
||||
|
||||
const initFormData: ComplaintForm = {
|
||||
id: undefined,
|
||||
@@ -77,7 +69,7 @@ const initFormData: ComplaintForm = {
|
||||
problemDes: undefined,
|
||||
complaintName: undefined,
|
||||
phone: undefined,
|
||||
problemIamgeUrl: undefined,
|
||||
problemImageUrl: undefined,
|
||||
status: undefined,
|
||||
handleId: undefined,
|
||||
handleName: undefined,
|
||||
@@ -92,26 +84,25 @@ const data = reactive<PageData<ComplaintForm, ComplaintQuery>>({
|
||||
problemDes: undefined,
|
||||
complaintName: undefined,
|
||||
phone: undefined,
|
||||
problemIamgeUrl: undefined,
|
||||
problemImageUrl: undefined,
|
||||
status: undefined,
|
||||
handleId: undefined,
|
||||
handleName: undefined,
|
||||
handleContent: undefined,
|
||||
params: {}
|
||||
handleContent: undefined
|
||||
},
|
||||
rules: {
|
||||
id: [{ required: true, message: '投诉管理表id不能为空', trigger: 'blur' }]
|
||||
}
|
||||
});
|
||||
|
||||
const { queryParams, form, rules } = toRefs(data);
|
||||
const { queryParams } = toRefs(data);
|
||||
|
||||
const complaintyTyplist = ref([]);
|
||||
const complainTypeList = ref([]);
|
||||
/** 查询投诉管理列表 */
|
||||
const getList = async () => {
|
||||
loading.value = true;
|
||||
const res2 = await listComplaintType();
|
||||
complaintyTyplist.value = res2.rows;
|
||||
complainTypeList.value = res2.rows;
|
||||
listComplaint(queryParams.value)
|
||||
.then((res) => {
|
||||
complaintList.value = res.rows;
|
||||
@@ -143,7 +134,7 @@ const handleSelectionChange = (selection: ComplaintVO[]) => {
|
||||
|
||||
const router = useRouter();
|
||||
/** 详情按钮操作 */
|
||||
const handleUpdate = async (row?: ComplaintVO) => {
|
||||
const handleUpdate = (row?: ComplaintVO) => {
|
||||
router.push({
|
||||
path: '/repair/complainMain',
|
||||
query: {
|
||||
@@ -152,43 +143,6 @@ const handleUpdate = async (row?: ComplaintVO) => {
|
||||
});
|
||||
};
|
||||
|
||||
/** 提交按钮 */
|
||||
const submitForm = () => {
|
||||
complaintFormRef.value?.validate(async (valid: boolean) => {
|
||||
if (valid) {
|
||||
buttonLoading.value = true;
|
||||
if (form.value.id) {
|
||||
await updateComplaint(form.value).finally(() => (buttonLoading.value = false));
|
||||
} else {
|
||||
await addComplaint(form.value).finally(() => (buttonLoading.value = false));
|
||||
}
|
||||
proxy?.$modal.msgSuccess('操作成功');
|
||||
dialog.visible = false;
|
||||
await getList();
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
/** 删除按钮操作 */
|
||||
const handleDelete = async (row?: ComplaintVO) => {
|
||||
const _ids = row?.id || ids.value;
|
||||
await proxy?.$modal.confirm('该信息删除后无法恢复,确定要删除吗?').finally(() => (loading.value = false));
|
||||
await delComplaint(_ids);
|
||||
proxy?.$modal.msgSuccess('删除成功');
|
||||
await getList();
|
||||
};
|
||||
|
||||
/** 导出按钮操作 */
|
||||
const handleExport = () => {
|
||||
proxy?.download(
|
||||
'complaint/complaint/export',
|
||||
{
|
||||
...queryParams.value
|
||||
},
|
||||
`complaint_${new Date().getTime()}.xlsx`
|
||||
);
|
||||
};
|
||||
|
||||
onMounted(() => {
|
||||
getList();
|
||||
});
|
||||
|
||||
@@ -20,31 +20,12 @@
|
||||
<el-card shadow="never" class="flex-1">
|
||||
<template #header>
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<!-- <el-col :span="1.5">
|
||||
<el-button type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['complaintType:complaintType:add']">新增</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()" v-hasPermi="['complaintType:complaintType:edit']"
|
||||
>修改</el-button
|
||||
>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="danger"
|
||||
plain
|
||||
icon="Delete"
|
||||
:disabled="multiple"
|
||||
@click="handleDelete()"
|
||||
v-hasPermi="['complaintType:complaintType:remove']"
|
||||
>删除</el-button
|
||||
>
|
||||
</el-col> -->
|
||||
<right-toolbar
|
||||
:disable-delete="multiple"
|
||||
:disable-edit="single"
|
||||
:show-add="checkPermi(['complaintType:complaintType:add'])"
|
||||
:show-edit="checkPermi(['complaintType:complaintType:edit'])"
|
||||
:show-delete="checkPermi(['complaintType:complaintType:remove'])"
|
||||
:show-edit="false"
|
||||
:show-delete="false"
|
||||
@update:add="handleAdd"
|
||||
@update:edit="handleUpdate()"
|
||||
@update:delete="handleDelete()"
|
||||
@@ -73,8 +54,8 @@
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width">
|
||||
<template #default="scope">
|
||||
<el-button link type="primary" @click="handleUpdate(scope.row)" v-hasPermi="['complaintType:complaintType:edit']">编辑</el-button>
|
||||
<el-button link type="primary" @click="handleDelete(scope.row)" v-hasPermi="['complaintType:complaintType:remove']">删除</el-button>
|
||||
<el-button link type="primary" @click="handleUpdate(scope.row)" v-has-permi="['complaintType:complaintType:edit']">编辑</el-button>
|
||||
<el-button link type="primary" @click="handleDelete(scope.row)" v-has-permi="['complaintType:complaintType:remove']">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@@ -85,7 +66,7 @@
|
||||
</template>
|
||||
|
||||
<script setup name="ComplaintType" lang="ts">
|
||||
import { listComplaintType, getComplaintType, delComplaintType, addComplaintType, updateComplaintType } from '@/api/system/ComplainType/index';
|
||||
import { listComplaintType, delComplaintType } from '@/api/system/ComplainType/index';
|
||||
import { ComplaintTypeVO, ComplaintTypeQuery, ComplaintTypeForm } from '@/api/system/ComplainType/type';
|
||||
import { checkPermi } from '@/utils/permission';
|
||||
|
||||
|
||||
@@ -57,7 +57,6 @@ import { ref } from 'vue';
|
||||
import PageHeader from '@/components/Pageheader/index.vue';
|
||||
import { addDecoration, getDecoration, updateDecoration } from '@/api/system/Decoration';
|
||||
import { useHouseStore } from '@/store/modules/house';
|
||||
import { CascaderValue } from 'element-plus';
|
||||
import { getHousePathById } from '@/utils/house';
|
||||
|
||||
const houseStore = useHouseStore();
|
||||
|
||||
@@ -25,20 +25,6 @@
|
||||
<el-card class="flex-1" shadow="never">
|
||||
<template #header>
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<!-- <el-col :span="1.5">
|
||||
<el-button type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['repair:add:decoration']">新增</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()" v-hasPermi="['repair:edit:decoration']"
|
||||
>修改</el-button
|
||||
>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()" v-hasPermi="['decoration:decoration:remove']"
|
||||
>删除</el-button
|
||||
>
|
||||
</el-col> -->
|
||||
|
||||
<right-toolbar
|
||||
:disable-delete="multiple"
|
||||
:disable-edit="single"
|
||||
@@ -74,14 +60,14 @@
|
||||
type="primary"
|
||||
v-if="scope.row.inspectionResult !== '1'"
|
||||
@click="handleInspection(scope.row, 0, '验收')"
|
||||
v-hasPermi="['repair:edit:decoration']"
|
||||
v-has-permi="['repair:edit:decoration']"
|
||||
>验收</el-button
|
||||
>
|
||||
<el-button link type="primary" v-else @click="handleInspection(scope.row, 1, '详情')" v-hasPermi="['decoration:decoration:query']"
|
||||
<el-button link type="primary" v-else @click="handleInspection(scope.row, 1, '详情')" v-has-permi="['decoration:decoration:query']"
|
||||
>详情</el-button
|
||||
>
|
||||
<el-button link type="primary" @click="handleUpdate(scope.row)" v-hasPermi="['decoration:decoration:edit']">编辑</el-button>
|
||||
<el-button link type="primary" @click="handleDelete(scope.row)" v-hasPermi="['decoration:decoration:remove']">删除</el-button>
|
||||
<el-button link type="primary" @click="handleUpdate(scope.row)" v-has-permi="['decoration:decoration:edit']">编辑</el-button>
|
||||
<el-button link type="primary" @click="handleDelete(scope.row)" v-has-permi="['decoration:decoration:remove']">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
@@ -90,6 +90,7 @@
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import editor from '@/components/Editor/index.vue';
|
||||
import { ref } from 'vue';
|
||||
import PageHeader from '@/components/Pageheader/index.vue';
|
||||
import { addHandleLog, getHandleLog, updateHandleLog, uploadAttachments } from '@/api/system/HandleLog';
|
||||
|
||||
@@ -55,8 +55,8 @@
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="200" align="center" fixed="right" class-name="small-padding fixed-width">
|
||||
<template #default="scope">
|
||||
<el-button link type="primary" @click="handleUpdate(scope.row)" v-hasPermi="['handleLog:handleLog:edit']">编辑</el-button>
|
||||
<el-button link type="primary" @click="handleDelete(scope.row)" v-hasPermi="['handleLog:handleLog:remove']">删除</el-button>
|
||||
<el-button link type="primary" @click="handleUpdate(scope.row)" v-has-permi="['handleLog:handleLog:edit']">编辑</el-button>
|
||||
<el-button link type="primary" @click="handleDelete(scope.row)" v-has-permi="['handleLog:handleLog:remove']">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@@ -83,7 +83,7 @@
|
||||
</template>
|
||||
|
||||
<script setup name="HandleLog" lang="ts">
|
||||
import { listHandleLog, getHandleLog, delHandleLog, addHandleLog, updateHandleLog } from '@/api/system/HandleLog/index';
|
||||
import { listHandleLog, delHandleLog } from '@/api/system/HandleLog/index';
|
||||
import { HandleLogVO, HandleLogQuery, HandleLogForm } from '@/api/system/HandleLog/type';
|
||||
import { checkPermi } from '@/utils/permission';
|
||||
|
||||
|
||||
@@ -20,37 +20,12 @@
|
||||
<el-card class="flex-1" shadow="never">
|
||||
<template #header>
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<!-- <el-col :span="1.5">
|
||||
<el-button type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['houseFacilities:houseFacilities:add']">新增</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="success"
|
||||
plain
|
||||
icon="Edit"
|
||||
:disabled="single"
|
||||
@click="handleUpdate()"
|
||||
v-hasPermi="['houseFacilities:houseFacilities:edit']"
|
||||
>修改</el-button
|
||||
>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="danger"
|
||||
plain
|
||||
icon="Delete"
|
||||
:disabled="multiple"
|
||||
@click="handleDelete()"
|
||||
v-hasPermi="['houseFacilities:houseFacilities:remove']"
|
||||
>删除</el-button
|
||||
>
|
||||
</el-col> -->
|
||||
<right-toolbar
|
||||
:disable-delete="multiple"
|
||||
:disable-edit="single"
|
||||
:show-add="checkPermi(['houseFacilities:houseFacilities:add'])"
|
||||
:show-edit="checkPermi(['houseFacilities:houseFacilities:edit'])"
|
||||
:show-delete="checkPermi(['houseFacilities:houseFacilities:remove'])"
|
||||
:show-edit="false"
|
||||
:show-delete="false"
|
||||
@update:add="handleAdd"
|
||||
@update:edit="handleUpdate()"
|
||||
@update:delete="handleDelete()"
|
||||
@@ -68,8 +43,8 @@
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width">
|
||||
<template #default="scope">
|
||||
<el-button link type="primary" @click="handleUpdate(scope.row)" v-hasPermi="['houseFacilities:houseFacilities:edit']">编辑</el-button>
|
||||
<el-button link type="primary" @click="handleDelete(scope.row)" v-hasPermi="['houseFacilities:houseFacilities:remove']">删除</el-button>
|
||||
<el-button link type="primary" @click="handleUpdate(scope.row)" v-has-permi="['houseFacilities:houseFacilities:edit']">编辑</el-button>
|
||||
<el-button link type="primary" @click="handleDelete(scope.row)" v-has-permi="['houseFacilities:houseFacilities:remove']">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@@ -80,13 +55,7 @@
|
||||
</template>
|
||||
|
||||
<script setup name="HouseFacilities" lang="ts">
|
||||
import {
|
||||
listHouseFacilities,
|
||||
getHouseFacilities,
|
||||
delHouseFacilities,
|
||||
addHouseFacilities,
|
||||
updateHouseFacilities
|
||||
} from '@/api/system/HouseFacilities/index';
|
||||
import { listHouseFacilities, delHouseFacilities } from '@/api/system/HouseFacilities';
|
||||
import { HouseFacilitiesVO, HouseFacilitiesQuery, HouseFacilitiesForm } from '@/api/system/HouseFacilities/type';
|
||||
import { checkPermi } from '@/utils/permission';
|
||||
|
||||
|
||||
@@ -90,6 +90,7 @@
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref } from 'vue';
|
||||
import LicensePlateInput from '@/components/LicensePlateInput/index.vue';
|
||||
import PageHeader from '@/components/Pageheader/index.vue';
|
||||
import { addMonthCard, getMonthCard, updateMonthCard } from '@/api/system/MonthCard';
|
||||
import { LicensePlateValidator, validator } from '@/utils/Reg';
|
||||
|
||||
@@ -26,15 +26,15 @@
|
||||
<template #header>
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<!-- <el-col :span="1.5">
|
||||
<el-button type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['carArea:add:monthcard']">新增</el-button>
|
||||
<el-button type="primary" plain icon="Plus" @click="handleAdd" v-has-permi="['carArea:add:monthcard']">新增</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()" v-hasPermi="['carArea:edit:monthcard']"
|
||||
<el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()" v-has-permi="['carArea:edit:monthcard']"
|
||||
>修改</el-button
|
||||
>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()" v-hasPermi="['monthCard:monthCard:remove']"
|
||||
<el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()" v-has-permi="['monthCard:monthCard:remove']"
|
||||
>删除</el-button
|
||||
>
|
||||
</el-col> -->
|
||||
@@ -79,8 +79,8 @@
|
||||
<el-table-column label="备注" show-overflow-tooltip align="center" prop="remark"></el-table-column>
|
||||
<el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width">
|
||||
<template #default="scope">
|
||||
<el-button link type="primary" @click="handleUpdate(scope.row)" v-hasPermi="['monthCard:monthCard:edit']">修改</el-button>
|
||||
<el-button link type="primary" @click="handleDelete(scope.row)" v-hasPermi="['monthCard:monthCard:remove']">删除</el-button>
|
||||
<el-button link type="primary" @click="handleUpdate(scope.row)" v-has-permi="['monthCard:monthCard:edit']">修改</el-button>
|
||||
<el-button link type="primary" @click="handleDelete(scope.row)" v-has-permi="['monthCard:monthCard:remove']">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@@ -138,7 +138,7 @@
|
||||
</template>
|
||||
|
||||
<script setup name="MonthCard" lang="ts">
|
||||
import { listMonthCard, getMonthCard, delMonthCard, addMonthCard, updateMonthCard } from '@/api/system/MonthCard/index';
|
||||
import { listMonthCard, delMonthCard, addMonthCard, updateMonthCard } from '@/api/system/MonthCard/index';
|
||||
import { MonthCardVO, MonthCardQuery, MonthCardForm } from '@/api/system/MonthCard/type';
|
||||
import { checkPermi } from '@/utils/permission';
|
||||
import { diffDays } from '@/utils/time';
|
||||
|
||||
@@ -65,9 +65,10 @@
|
||||
</div>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import editor from '@/components/Editor/index.vue';
|
||||
import { ref } from 'vue';
|
||||
import PageHeader from '@/components/Pageheader/index.vue';
|
||||
import { addNotice, getNotice } from '@/api/system/NoticePc/index';
|
||||
import { addNotice, getNotice } from '@/api/system/NoticePc';
|
||||
import { updateNotice } from '@/api/system/NoticePc';
|
||||
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
||||
const { com_noticepc_level } = toRefs<any>(proxy?.useDict('com_noticepc_level'));
|
||||
|
||||
@@ -21,15 +21,15 @@
|
||||
<template #header>
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<!-- <el-col :span="1.5">
|
||||
<el-button type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['repair:add:noticepc']">新增</el-button>
|
||||
<el-button type="primary" plain icon="Plus" @click="handleAdd" v-has-permi="['repair:add:noticepc']">新增</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()" v-hasPermi="['repair:edit:noticepc']"
|
||||
<el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()" v-has-permi="['repair:edit:noticepc']"
|
||||
>修改</el-button
|
||||
>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()" v-hasPermi="['notice:notice:remove']"
|
||||
<el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()" v-has-permi="['notice:notice:remove']"
|
||||
>删除</el-button
|
||||
>
|
||||
</el-col> -->
|
||||
@@ -70,8 +70,8 @@
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center" width="220" fixed="right" class-name="small-padding fixed-width">
|
||||
<template #default="scope">
|
||||
<el-button link type="primary" @click="handleUpdate(scope.row)" v-hasPermi="['notice:notice:edit']">编辑</el-button>
|
||||
<el-button link type="primary" @click="handleDelete(scope.row)" v-hasPermi="['notice:notice:remove']">删除</el-button>
|
||||
<el-button link type="primary" @click="handleUpdate(scope.row)" v-has-permi="['notice:notice:edit']">编辑</el-button>
|
||||
<el-button link type="primary" @click="handleDelete(scope.row)" v-has-permi="['notice:notice:remove']">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@@ -82,7 +82,7 @@
|
||||
</template>
|
||||
|
||||
<script setup name="Notice" lang="ts">
|
||||
import { listNotice, getNotice, delNotice, addNotice, updateNotice } from '@/api/system/NoticePc/index';
|
||||
import { listNotice, delNotice } from '@/api/system/NoticePc/index';
|
||||
import { NoticeVO, NoticeQuery, NoticeForm } from '@/api/system/NoticePc/type';
|
||||
import { checkPermi } from '@/utils/permission';
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<Pageheader></Pageheader>
|
||||
<div class="NotificationBody">
|
||||
<ul class="lefttabs">
|
||||
<div style="height: 50px"></div>
|
||||
<li style="height: 50px"></li>
|
||||
<li
|
||||
:class="{
|
||||
active: activeTabs === 1
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<div class="p-2 h-full flex flex-col">
|
||||
<pageheader title="停车缴费管理"></pageheader>
|
||||
<pageHeader title="停车缴费管理"></pageHeader>
|
||||
<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">
|
||||
@@ -23,19 +23,6 @@
|
||||
<el-card class="flex-1" shadow="never">
|
||||
<template #header>
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<!-- <el-col :span="1.5">
|
||||
<el-button type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['carArea:add:parkingcost']">新增</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()" v-hasPermi="['carArea:edit:parkingcost']"
|
||||
>修改</el-button
|
||||
>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()" v-hasPermi="['parkingCost:parkingCost:remove']"
|
||||
>删除</el-button
|
||||
>
|
||||
</el-col> -->
|
||||
<right-toolbar
|
||||
:disable-delete="multiple"
|
||||
:disable-edit="single"
|
||||
@@ -83,21 +70,22 @@
|
||||
<el-table-column label="备注" align="center" prop="remark" />
|
||||
<el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width">
|
||||
<template #default="scope">
|
||||
<el-button link type="primary" @click="handleUpdate(scope.row)" v-hasPermi="['parkingCost:parkingCost:edit']">修改</el-button>
|
||||
<el-button link type="primary" @click="handleDelete(scope.row)" v-hasPermi="['parkingCost:parkingCost:remove']">删除</el-button>
|
||||
<el-button link type="primary" @click="handleUpdate(scope.row)" v-has-permi="['parkingCost:parkingCost:edit']">修改</el-button>
|
||||
<el-button link type="primary" @click="handleDelete(scope.row)" v-has-permi="['parkingCost:parkingCost:remove']">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" />
|
||||
<Pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" />
|
||||
</el-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup name="ParkingCost" lang="ts">
|
||||
import { listArea } from '@/api/system/carArea';
|
||||
import { listParking } from '@/api/system/parking';
|
||||
import { listParkingCost, getParkingCost, delParkingCost, addParkingCost, updateParkingCost } from '@/api/system/ParkingCost';
|
||||
import Pagination from '@/components/Pagination/index.vue';
|
||||
import pageHeader from '@/components/Pageheader/index.vue';
|
||||
import RightToolbar from '@/components/RightToolbar/index.vue';
|
||||
import { listParkingCost, delParkingCost } from '@/api/system/ParkingCost';
|
||||
import { ParkingCostVO, ParkingCostQuery, ParkingCostForm } from '@/api/system/ParkingCost/type';
|
||||
import { checkPermi } from '@/utils/permission';
|
||||
import { formatTimeDiff } from '@/utils/time';
|
||||
|
||||
@@ -115,8 +115,7 @@ init();
|
||||
.container_box {
|
||||
background-color: white;
|
||||
font-size: 16px;
|
||||
padding: 20px;
|
||||
padding-bottom: 60px;
|
||||
padding: 20px 20px 60px;
|
||||
}
|
||||
.contentBox {
|
||||
width: 1200px;
|
||||
|
||||
@@ -64,8 +64,7 @@ import Holder from '@/components/Holder/index.vue';
|
||||
import QuestionnaireEdit from './components/QuestionnaireEdit.vue';
|
||||
|
||||
import PageHeader from '@/components/Pageheader/index.vue';
|
||||
import { Delete, DocumentAdd } from '@element-plus/icons-vue';
|
||||
import { QuestionComponentnaireForm, QuestionnaireForm, QuestionnaireVO } from '@/api/system/Questionnaire/type';
|
||||
import { QuestionComponentnaireForm } from '@/api/system/Questionnaire/type';
|
||||
import { addQuestionnaire, getQuestionnaire, updateQuestionnaire } from '@/api/system/Questionnaire';
|
||||
|
||||
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
||||
@@ -74,7 +73,6 @@ const { com_questionnaire_scope } = toRefs<any>(proxy?.useDict('com_questionnair
|
||||
const router = useRouter();
|
||||
const route = useRoute();
|
||||
|
||||
import { useHouseStore } from '@/store/modules/house';
|
||||
import { listResident } from '@/api/system/resident';
|
||||
|
||||
const form = ref({
|
||||
|
||||
@@ -103,7 +103,7 @@
|
||||
|
||||
<script setup lang="ts" name="QuestionnaireEdit">
|
||||
import draggable from 'vuedraggable';
|
||||
import { Plus, Delete, Rank, Tickets, Document, Edit } from '@element-plus/icons-vue';
|
||||
import { Delete, Rank, Tickets, Document, Edit } from '@element-plus/icons-vue';
|
||||
import { ComponentItem, QuestionComponentItem, QuestionComponentnaireForm } from '@/api/system/Questionnaire/type';
|
||||
import { ElMessage } from 'element-plus'; // 👈 补充引入
|
||||
// ==================== Props & Emit ====================
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<div class="flex flex-col h-full p-2">
|
||||
<Pageheader></Pageheader>
|
||||
<pageHeader></pageHeader>
|
||||
<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">
|
||||
@@ -19,29 +19,9 @@
|
||||
</el-card>
|
||||
</div>
|
||||
</transition>
|
||||
<!-- TODO 删除问题 -->
|
||||
<el-card class="flex-1" shadow="never">
|
||||
<template #header>
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<!-- <el-col :span="1.5">
|
||||
<el-button type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['repair:add:questionnaire']">新增</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()" v-hasPermi="['repair:edit:questionnaire']"
|
||||
>修改</el-button
|
||||
>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="danger"
|
||||
plain
|
||||
icon="Delete"
|
||||
:disabled="multiple"
|
||||
@click="handleDelete()"
|
||||
v-hasPermi="['questionnaire:questionnaire:remove']"
|
||||
>删除</el-button
|
||||
>
|
||||
</el-col> -->
|
||||
<right-toolbar
|
||||
:disable-delete="multiple"
|
||||
:disable-edit="single"
|
||||
@@ -72,20 +52,24 @@
|
||||
<el-table-column label="备注" align="center" prop="remark" />
|
||||
<el-table-column label="操作" align="center" fixed="right" width="200">
|
||||
<template #default="scope">
|
||||
<el-button link type="primary" @click="handleView(scope.row)" v-hasPermi="['questionnaire:questionnaire:query']">查看</el-button>
|
||||
<el-button link type="primary" @click="handleUpdate(scope.row)" v-hasPermi="['questionnaire:questionnaire:edit']">编辑</el-button>
|
||||
<el-button link type="primary" @click="handleDelete(scope.row)" v-hasPermi="['questionnaire:questionnaire:remove']">删除</el-button>
|
||||
<el-button link type="primary" @click="handleView(scope.row)" v-has-permi="['questionnaire:questionnaire:query']">查看</el-button>
|
||||
<el-button link type="primary" @click="handleUpdate(scope.row)" v-has-permi="['questionnaire:questionnaire:edit']">编辑</el-button>
|
||||
<el-button link type="primary" @click="handleDelete(scope.row)" v-has-permi="['questionnaire:questionnaire:remove']">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" />
|
||||
<Pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" />
|
||||
</el-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup name="Questionnaire" lang="ts">
|
||||
import { listQuestionnaire, getQuestionnaire, delQuestionnaire, addQuestionnaire, updateQuestionnaire } from '@/api/system/Questionnaire/index';
|
||||
import Pagination from '@/components/Pagination/index.vue';
|
||||
import pageHeader from '@/components/Pageheader/index.vue';
|
||||
import RightToolbar from '@/components/RightToolbar/index.vue';
|
||||
import DictTag from '@/components/DictTag/index.vue';
|
||||
import { listQuestionnaire, delQuestionnaire, addQuestionnaire, updateQuestionnaire } from '@/api/system/Questionnaire';
|
||||
import { QuestionnaireVO, QuestionnaireQuery, QuestionnaireForm } from '@/api/system/Questionnaire/type';
|
||||
import { checkPermi } from '@/utils/permission';
|
||||
|
||||
|
||||
@@ -106,13 +106,14 @@
|
||||
<script setup lang="ts">
|
||||
import { ref } from 'vue';
|
||||
import PageHeader from '@/components/Pageheader/index.vue';
|
||||
import { convertBuildingToTree, hasFormData } from '@/utils/house';
|
||||
import { hasFormData } from '@/utils/house';
|
||||
import Holder from '@/components/Holder/index.vue';
|
||||
import { UploadProps, UploadUserFile } from 'element-plus';
|
||||
import { addRepair, getRepair, updateRepair, uploadRepairImages } from '@/api/system/Repair';
|
||||
import { gettreelistRepairProject } from '@/api/system/RepairProject';
|
||||
import { useHouseStore } from '@/store/modules/house';
|
||||
import { validator } from '@/utils/Reg';
|
||||
import { Plus } from '@element-plus/icons-vue';
|
||||
|
||||
const houseStore = useHouseStore();
|
||||
const { treedata } = storeToRefs(houseStore);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<div class="h-full flex flex-col p-2">
|
||||
<Pageheader title="报修管理"></Pageheader>
|
||||
<pageHeader title="报修管理"></pageHeader>
|
||||
<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">
|
||||
@@ -32,19 +32,6 @@
|
||||
<el-card class="flex-1" shadow="never">
|
||||
<template #header>
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<!-- <el-col :span="1.5">
|
||||
<el-button type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['repair:add:repair']">新增</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()" v-hasPermi="['repair:edit:repair']"
|
||||
>修改</el-button
|
||||
>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()" v-hasPermi="['repair:repair:remove']"
|
||||
>删除</el-button
|
||||
>
|
||||
</el-col> -->
|
||||
<right-toolbar
|
||||
:disable-delete="multiple"
|
||||
:disable-edit="single"
|
||||
@@ -78,11 +65,11 @@
|
||||
|
||||
<el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width">
|
||||
<template #default="scope">
|
||||
<el-button link type="primary" @click="handleShare(scope.row)" v-hasPermi="['repair:repair:query']">{{
|
||||
<el-button link type="primary" @click="handleShare(scope.row)" v-has-permi="['repair:repair:query']">{{
|
||||
scope.row.problemStatus === '0' ? '分配' : '详情'
|
||||
}}</el-button>
|
||||
<el-button link type="primary" @click="handleUpdate(scope.row)" v-hasPermi="['repair:repair:edit']">编辑</el-button>
|
||||
<el-button link type="primary" @click="handleDelete(scope.row)" v-hasPermi="['repair:repair:remove']">删除</el-button>
|
||||
<el-button link type="primary" @click="handleUpdate(scope.row)" v-has-permi="['repair:repair:edit']">编辑</el-button>
|
||||
<el-button link type="primary" @click="handleDelete(scope.row)" v-has-permi="['repair:repair:remove']">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@@ -93,7 +80,11 @@
|
||||
</template>
|
||||
|
||||
<script setup name="Repair" lang="ts">
|
||||
import { listRepair, delRepair } from '@/api/system/Repair/index';
|
||||
import Pagination from '@/components/Pagination/index.vue';
|
||||
import pageHeader from '@/components/Pageheader/index.vue';
|
||||
import RightToolbar from '@/components/RightToolbar/index.vue';
|
||||
import DictTag from '@/components/DictTag/index.vue';
|
||||
import { listRepair, delRepair } from '@/api/system/Repair';
|
||||
import { RepairVO, RepairQuery, RepairForm } from '@/api/system/Repair/type';
|
||||
import { checkPermi } from '@/utils/permission';
|
||||
|
||||
|
||||
@@ -153,7 +153,7 @@ import repairUser from '@/components/Holder/repairUser.vue';
|
||||
import PageHeader from '@/components/Pageheader/index.vue';
|
||||
import { getRepair, updateRepair } from '@/api/system/Repair';
|
||||
import { RepairVO } from '@/api/system/Repair/type';
|
||||
import { getRepairProcess, listRepairProcess, updateRepairProcess } from '@/api/system/repairProcess';
|
||||
import { listRepairProcess, updateRepairProcess } from '@/api/system/repairProcess';
|
||||
import { splitImages } from '@/utils';
|
||||
|
||||
const route = useRoute();
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
<el-card class="flex-1" shadow="never">
|
||||
<template #header>
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<!-- <el-button style="width: 100px" type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['repairProject:repairProject:add']"
|
||||
<!-- <el-button style="width: 100px" type="primary" plain icon="Plus" @click="handleAdd" v-has-permi="['repairProject:repairProject:add']"
|
||||
>新增维修类</el-button
|
||||
>
|
||||
<el-button
|
||||
@@ -29,7 +29,7 @@
|
||||
icon="Delete"
|
||||
:disabled="multiple"
|
||||
@click="handleDelete()"
|
||||
v-hasPermi="['repairProject:repairProject:remove']"
|
||||
v-has-permi="['repairProject:repairProject:remove']"
|
||||
>删除</el-button
|
||||
> -->
|
||||
<right-toolbar
|
||||
@@ -37,7 +37,7 @@
|
||||
:disable-edit="single"
|
||||
:show-add="checkPermi(['repairProject:repairProject:add'])"
|
||||
:show-edit="false"
|
||||
:show-delete="checkPermi(['repairProject:repairProject:remove'])"
|
||||
:show-delete="false"
|
||||
@update:add="handleAdd"
|
||||
@update:edit="handleUpdate()"
|
||||
@update:delete="handleDelete()"
|
||||
@@ -97,8 +97,8 @@
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="350" align="center" fixed="right" class-name="small-padding fixed-width">
|
||||
<template #default="scope">
|
||||
<el-button link type="primary" @click="handleUpdate(scope.row)" v-hasPermi="['repairProject:repairProject:edit']">编辑</el-button>
|
||||
<el-button link type="primary" @click="handleDelete(scope.row)" v-hasPermi="['repairProject:repairProject:remove']">删除</el-button>
|
||||
<el-button link type="primary" @click="handleUpdate(scope.row)" v-has-permi="['repairProject:repairProject:edit']">编辑</el-button>
|
||||
<el-button link type="primary" @click="handleDelete(scope.row)" v-has-permi="['repairProject:repairProject:remove']">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@@ -146,14 +146,7 @@
|
||||
</template>
|
||||
|
||||
<script setup name="RepairProject" lang="ts">
|
||||
import {
|
||||
listRepairProject,
|
||||
getRepairProject,
|
||||
delRepairProject,
|
||||
addRepairProject,
|
||||
updateRepairProject,
|
||||
gettreelistRepairProject
|
||||
} from '@/api/system/RepairProject/index';
|
||||
import { listRepairProject, delRepairProject, addRepairProject, updateRepairProject } from '@/api/system/RepairProject';
|
||||
import { RepairProjectVO, RepairProjectQuery, RepairProjectForm } from '@/api/system/RepairProject/type';
|
||||
import { checkPermi } from '@/utils/permission';
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<div class="flex flex-col h-full p-2">
|
||||
<pageheader></pageheader>
|
||||
<pageHeader></pageHeader>
|
||||
<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">
|
||||
@@ -81,8 +81,8 @@
|
||||
<el-table-column label="备注" show-overflow-tooltip align="center" prop="remark" />
|
||||
<el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width">
|
||||
<template #default="scope">
|
||||
<el-button link type="primary" @click="handleUpdate(scope.row)" v-hasPermi="['chargeItem:chargeItem:edit']">编辑</el-button>
|
||||
<el-button link type="primary" @click="handleDelete(scope.row)" v-hasPermi="['chargeItem:chargeItem:remove']">删除</el-button>
|
||||
<el-button link type="primary" @click="handleUpdate(scope.row)" v-has-permi="['chargeItem:chargeItem:edit']">编辑</el-button>
|
||||
<el-button link type="primary" @click="handleDelete(scope.row)" v-has-permi="['chargeItem:chargeItem:remove']">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@@ -93,7 +93,10 @@
|
||||
</template>
|
||||
|
||||
<script setup name="ChargeItem" lang="ts">
|
||||
import { listChargeItem, getChargeItem, delChargeItem, addChargeItem, updateChargeItem, changChargeItem } from '@/api/system/SdbChargeItem';
|
||||
import pageHeader from '@/components/Pageheader/index.vue';
|
||||
import Pagination from '@/components/Pagination/index.vue';
|
||||
import DictTag from '@/components/DictTag/index.vue';
|
||||
import { listChargeItem, delChargeItem, updateChargeItem } from '@/api/system/SdbChargeItem';
|
||||
import { ChargeItemVO, ChargeItemQuery, ChargeItemForm } from '@/api/system/SdbChargeItem/type';
|
||||
import { checkPermi } from '@/utils/permission';
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<div class="p-2 h-full flex flex-col">
|
||||
<pageheader></pageheader>
|
||||
<PageHeader></PageHeader>
|
||||
<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">
|
||||
@@ -20,25 +20,12 @@
|
||||
<el-card class="flex-1" shadow="never">
|
||||
<template #header>
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<!-- <el-col :span="1.5">
|
||||
<el-button type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['chargeType:chargeType:add']">新增</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()" v-hasPermi="['chargeType:chargeType:edit']"
|
||||
>修改</el-button
|
||||
>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()" v-hasPermi="['chargeType:chargeType:remove']"
|
||||
>删除</el-button
|
||||
>
|
||||
</el-col> -->
|
||||
<right-toolbar
|
||||
:disable-delete="multiple"
|
||||
:disable-edit="single"
|
||||
:show-add="checkPermi(['chargeType:chargeType:add'])"
|
||||
:show-edit="checkPermi(['chargeType:chargeType:edit'])"
|
||||
:show-delete="checkPermi(['chargeType:chargeType:remove'])"
|
||||
:show-edit="false"
|
||||
:show-delete="false"
|
||||
@update:add="handleAdd"
|
||||
@update:edit="handleUpdate()"
|
||||
@update:delete="handleDelete()"
|
||||
@@ -61,8 +48,8 @@
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width">
|
||||
<template #default="scope">
|
||||
<el-button link type="primary" @click="handleUpdate(scope.row)" v-hasPermi="['chargeType:chargeType:edit']">修改</el-button>
|
||||
<el-button link type="primary" @click="handleDelete(scope.row)" v-hasPermi="['chargeType:chargeType:remove']">删除</el-button>
|
||||
<el-button link type="primary" @click="handleUpdate(scope.row)" v-has-permi="['chargeType:chargeType:edit']">修改</el-button>
|
||||
<el-button link type="primary" @click="handleDelete(scope.row)" v-has-permi="['chargeType:chargeType:remove']">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@@ -87,8 +74,10 @@
|
||||
</template>
|
||||
|
||||
<script setup name="ChargeType" lang="ts">
|
||||
import PageHeader from '@/components/Pageheader/index.vue';
|
||||
import pagination from '@/components/Pagination/index.vue';
|
||||
import { listChargeType, getChargeType, delChargeType, addChargeType, updateChargeType } from '@/api/system/ChargeType';
|
||||
import { ChargeTypeVO, ChargeTypeQuery, ChargeTypeForm, ChargeType2Query } from '@/api/system/ChargeType/type';
|
||||
import { ChargeTypeVO, ChargeTypeForm, ChargeType2Query } from '@/api/system/ChargeType/type';
|
||||
import { checkPermi } from '@/utils/permission';
|
||||
|
||||
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
<template #header>
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-col :span="1.5">
|
||||
<el-button type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['electricityRecord:electricityRecord:add']">新增</el-button>
|
||||
<el-button type="primary" plain icon="Plus" @click="handleAdd" v-has-permi="['electricityRecord:electricityRecord:add']">新增</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
@@ -47,7 +47,7 @@
|
||||
icon="Edit"
|
||||
:disabled="single"
|
||||
@click="handleUpdate()"
|
||||
v-hasPermi="['electricityRecord:electricityRecord:edit']"
|
||||
v-has-permi="['electricityRecord:electricityRecord:edit']"
|
||||
>修改</el-button
|
||||
>
|
||||
</el-col>
|
||||
@@ -58,12 +58,12 @@
|
||||
icon="Delete"
|
||||
:disabled="multiple"
|
||||
@click="handleDelete()"
|
||||
v-hasPermi="['electricityRecord:electricityRecord:remove']"
|
||||
v-has-permi="['electricityRecord:electricityRecord:remove']"
|
||||
>删除</el-button
|
||||
>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="warning" plain icon="Download" @click="handleExport" v-hasPermi="['electricityRecord:electricityRecord:export']"
|
||||
<el-button type="warning" plain icon="Download" @click="handleExport" v-has-permi="['electricityRecord:electricityRecord:export']"
|
||||
>导出</el-button
|
||||
>
|
||||
</el-col>
|
||||
@@ -94,7 +94,7 @@
|
||||
type="primary"
|
||||
icon="Edit"
|
||||
@click="handleUpdate(scope.row)"
|
||||
v-hasPermi="['electricityRecord:electricityRecord:edit']"
|
||||
v-has-permi="['electricityRecord:electricityRecord:edit']"
|
||||
></el-button>
|
||||
</el-tooltip>
|
||||
<el-tooltip content="删除" placement="top">
|
||||
@@ -103,7 +103,7 @@
|
||||
type="primary"
|
||||
icon="Delete"
|
||||
@click="handleDelete(scope.row)"
|
||||
v-hasPermi="['electricityRecord:electricityRecord:remove']"
|
||||
v-has-permi="['electricityRecord:electricityRecord:remove']"
|
||||
></el-button>
|
||||
</el-tooltip>
|
||||
</template>
|
||||
@@ -149,13 +149,14 @@
|
||||
</template>
|
||||
|
||||
<script setup name="ElectricityRecord" lang="ts">
|
||||
import pagination from '@/components/Pagination/index.vue';
|
||||
import {
|
||||
listElectricityRecord,
|
||||
getElectricityRecord,
|
||||
delElectricityRecord,
|
||||
addElectricityRecord,
|
||||
updateElectricityRecord
|
||||
} from '@/api/system/SdbElectricityMeterReading/index';
|
||||
} from '@/api/system/SdbElectricityMeterReading';
|
||||
import { ElectricityRecordVO, ElectricityRecordQuery, ElectricityRecordForm } from '@/api/system/SdbElectricityMeterReading/type';
|
||||
|
||||
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<div class="h-full flex flex-col p-2">
|
||||
<pageheader></pageheader>
|
||||
<PageHeader></PageHeader>
|
||||
<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">
|
||||
@@ -20,20 +20,6 @@
|
||||
<el-card class="flex-1" shadow="never">
|
||||
<template #header>
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<!-- <el-col :span="1.5">
|
||||
<el-button type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['payRecordList:payRecordList:add']">新增</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="danger"
|
||||
plain
|
||||
icon="Delete"
|
||||
:disabled="multiple"
|
||||
@click="handleDelete()"
|
||||
v-hasPermi="['payRecordList:payRecordList:remove']"
|
||||
>删除</el-button
|
||||
>
|
||||
</el-col> -->
|
||||
<right-toolbar
|
||||
:disable-delete="multiple"
|
||||
:show-edit="false"
|
||||
@@ -79,8 +65,8 @@
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width">
|
||||
<template #default="scope">
|
||||
<el-button link type="primary" @click="handleMain(scope.row)" v-hasPermi="['sdb:main:payrecord']">明细</el-button>
|
||||
<el-button link type="primary" @click="handleDelete(scope.row)" v-hasPermi="['payRecord:payRecord:remove']">删除</el-button>
|
||||
<el-button link type="primary" @click="handleMain(scope.row)" v-has-permi="['sdb:main:payrecord']">明细</el-button>
|
||||
<el-button link type="primary" @click="handleDelete(scope.row)" v-has-permi="['payRecord:payRecord:remove']">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@@ -166,8 +152,11 @@
|
||||
</template>
|
||||
|
||||
<script setup name="PayRecord" lang="ts">
|
||||
import { listPayRecord, getPayRecord, delPayRecord, addPayRecord, updatePayRecord } from '@/api/system/SdbPayRecord';
|
||||
import { PayRecordVO, PayRecordQuery, PayRecordForm } from '@/api/system/SdbPayRecord/type';
|
||||
import PageHeader from '@/components/Pageheader/index.vue';
|
||||
import pagination from '@/components/Pagination/index.vue';
|
||||
import DictTag from '@/components/DictTag/index.vue';
|
||||
import { listPayRecord, delPayRecord } from '@/api/system/SdbPayRecord';
|
||||
import { PayRecordVO, PayRecordQuery } from '@/api/system/SdbPayRecord/type';
|
||||
import { PayRecordListForm } from '@/api/system/SdbPayRecordMain/type';
|
||||
import { checkPermi } from '@/utils/permission';
|
||||
|
||||
|
||||
@@ -142,7 +142,7 @@
|
||||
</template>
|
||||
|
||||
<script setup name="PayRecordList" lang="ts">
|
||||
import { listPayRecordList, getPayRecordList, delPayRecordList, addPayRecordList, updatePayRecordList } from '@/api/system/SdbPayRecordMain/index';
|
||||
import { listPayRecordList, getPayRecordList, addPayRecordList, updatePayRecordList } from '@/api/system/SdbPayRecordMain/index';
|
||||
import { PayRecordListVO, PayRecordListQuery, PayRecordListForm } from '@/api/system/SdbPayRecordMain/type';
|
||||
|
||||
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
||||
|
||||
@@ -131,7 +131,7 @@ import CarUser from '@/components/Holder/CarUser.vue';
|
||||
|
||||
import PageHeader from '@/components/Pageheader/index.vue';
|
||||
import { listChargeItem } from '@/api/system/SdbChargeItem';
|
||||
import { getBill, updateBill, addBill, BillHouse, listBillHouse, queryResidentList_holder } from '@/api/system/SdbBill';
|
||||
import { getBill, updateBill, addBill } from '@/api/system/SdbBill';
|
||||
import type { DatePickerType } from 'element-plus';
|
||||
import { formatDate2 } from '@/utils';
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<div class="p-2 h-full flex flex-col">
|
||||
<pageheader></pageheader>
|
||||
<PageHeader></PageHeader>
|
||||
<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">
|
||||
@@ -33,10 +33,10 @@
|
||||
<el-table-column label="收费范围" align="center" prop="chargeScope" width="100">
|
||||
<template #default="scope">
|
||||
<template v-if="ShowHouselist.includes(scope.row.chargeTypeId)">
|
||||
<dict-tag :options="com_bill_charge_scope_house" :value="scope.row.chargeScope"></dict-tag>
|
||||
<DictTag :options="com_bill_charge_scope_house" :value="scope.row.chargeScope"></DictTag>
|
||||
</template>
|
||||
<template v-else>
|
||||
<dict-tag :options="com_questionnaire_scope" :value="scope.row.chargeScope"></dict-tag>
|
||||
<DictTag :options="com_questionnaire_scope" :value="scope.row.chargeScope"></DictTag>
|
||||
</template>
|
||||
</template>
|
||||
</el-table-column>
|
||||
@@ -51,15 +51,15 @@
|
||||
<template #default="scope">
|
||||
<div class="flex justify-center" v-if="scope.row.unit">
|
||||
<span>{{ scope.row.fixedPrice }}</span> /
|
||||
<dict-tag :options="com_charge_item_unit" :value="scope.row.unit"></dict-tag>
|
||||
<DictTag :options="com_charge_item_unit" :value="scope.row.unit"></DictTag>
|
||||
</div>
|
||||
<span v-else>---</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="120" align="center" fixed="right" class-name="small-padding fixed-width">
|
||||
<template #default="scope">
|
||||
<el-button link type="primary" @click="handleUpdate(scope.row)" v-hasPermi="['bill:bill:edit']">编辑</el-button>
|
||||
<el-button link type="primary" @click="handleMain(scope.row)" v-hasPermi="['bill:bill:query']">详情</el-button>
|
||||
<el-button link type="primary" @click="handleUpdate(scope.row)" v-has-permi="['bill:bill:edit']">编辑</el-button>
|
||||
<el-button link type="primary" @click="handleMain(scope.row)" v-has-permi="['bill:bill:query']">详情</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@@ -69,7 +69,10 @@
|
||||
</template>
|
||||
|
||||
<script setup name="Bill" lang="ts">
|
||||
import { listBill, getBill, delBill, addBill, updateBill } from '@/api/system/SdbBill/index';
|
||||
import PageHeader from '@/components/Pageheader/index.vue';
|
||||
import pagination from '@/components/Pagination/index.vue';
|
||||
import DictTag from '@/components/DictTag/index.vue';
|
||||
import { listBill } from '@/api/system/SdbBill';
|
||||
import { BillVO, BillQuery, BillForm } from '@/api/system/SdbBill/type';
|
||||
import { listChargeItem } from '@/api/system/SdbChargeItem';
|
||||
import { checkPermi } from '@/utils/permission';
|
||||
@@ -164,7 +167,7 @@ const handleAdd = () => {
|
||||
};
|
||||
|
||||
/** 修改按钮操作 */
|
||||
const handleUpdate = async (row?: BillVO) => {
|
||||
const handleUpdate = (row?: BillVO) => {
|
||||
router.push({
|
||||
path: '/sdb/editSdbbill',
|
||||
query: {
|
||||
@@ -182,7 +185,6 @@ function handleMain(row) {
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
onMounted(() => {
|
||||
getList();
|
||||
});
|
||||
|
||||
@@ -59,13 +59,11 @@
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref } from 'vue';
|
||||
import Holder from '@/components/Holder/index.vue';
|
||||
import PageHeader from '@/components/Pageheader/index.vue';
|
||||
import { listChargeItem } from '@/api/system/SdbChargeItem';
|
||||
import { getBill, updateBill, addBill, listBillHouse } from '@/api/system/SdbBill';
|
||||
import { getBill, listBillHouse } from '@/api/system/SdbBill';
|
||||
import type { DatePickerType } from 'element-plus';
|
||||
import { formatDate, formatDate2 } from '@/utils';
|
||||
import { Delete } from '@element-plus/icons-vue';
|
||||
|
||||
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
||||
const { com_questionnaire_scope } = toRefs<any>(proxy?.useDict('com_questionnaire_scope'));
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user