6/22完善引入,

This commit is contained in:
Zy
2026-06-22 08:14:35 +08:00
parent ea8129216b
commit 826bf3c782
208 changed files with 1122 additions and 1685 deletions

2
.gitignore vendored
View File

@@ -29,8 +29,6 @@ tests/e2e/reports
selenium-debug.log
# Editor directories and files
.idea
.vscode
*.suo
*.ntvs*
*.njsproj

View File

@@ -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,

View File

@@ -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({

View File

@@ -47,11 +47,6 @@ export interface BannerForm extends BaseEntity {
*/
byOrder?: number;
link: string;
/**
* 小区id
*/
villageId?: string;
}
export interface BannerQuery extends PageQuery {

View File

@@ -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已处理

View File

@@ -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';
/**
* 查询办事记录列表

View File

@@ -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({

View File

@@ -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({

View File

@@ -25,8 +25,8 @@ export const getNotificationList = (query): AxiosPromise<NotificationVo[]> => {
/**
* 消息通知 已读
* @param query
* @returns {*}
* @param ids
*/
export const ReadNotificationByID = (ids: string[]) => {

View File

@@ -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({

View File

@@ -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({

View File

@@ -10,8 +10,8 @@ export type cashlist = {
/**
* 查询住户列表
* @param post
* @returns {*}
* @param data
*/
export const cashQuery = (data: { residentName?: string; queryType: number }): AxiosPromise<cashlist[]> => {
return request({

View File

@@ -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({

View File

@@ -12,7 +12,7 @@ export interface ChargeItemVO {
* 收费类型
*/
typeId: string;
itemName:string;
itemName: string;
/**
* 计费方式 0单次收费 1周期收费 2仪表收费

View File

@@ -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({

View File

@@ -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({

View File

@@ -17,8 +17,8 @@ export const listStock = (query?: any): AxiosPromise<any[]> => {
/**
* 查询 库存查询 详情
* @param query
* @returns {*}
* @param id
*/
export const listStockMain = (id?: string): AxiosPromise<any[]> => {

View File

@@ -88,10 +88,6 @@ export interface WarehouseQuery extends PageQuery {
*/
warehouseName?: string;
/**
* 仓库归属id*关联com_village
*/
villageId?: string;
/**
* 联系人*

View File

@@ -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',

View File

@@ -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) => {

View File

@@ -167,7 +167,7 @@ export interface Storeroom {
unitNoId: string;
unitNo: number;
unitNoName:string;
unitNoName: string;
}
export interface Parking {

View File

@@ -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',

View File

@@ -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 {*}
*/

View File

@@ -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({

View File

@@ -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

View File

@@ -63,8 +63,8 @@ export const delStoreroom = (id: string | number | Array<string | number>) => {
};
/**
* 查询小区内储藏室管理列表
* @param query
* @returns {*}
* @param data
*/
export const GetVillagelistStoreroom = (

View File

@@ -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'

View File

@@ -68,7 +68,7 @@ export const genCode = (tableId: string | number) => {
method: 'get'
});
};
253029745
// 同步数据库
export const synchDb = (tableId: string | number) => {
return request({

View File

@@ -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({

View File

@@ -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;
}

View File

@@ -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({

View File

@@ -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;

View File

@@ -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;

View File

@@ -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'));

View File

@@ -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
};

View File

@@ -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;

View File

@@ -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;

View File

@@ -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(''),

View File

@@ -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: {

View File

@@ -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);

View File

@@ -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';

View File

@@ -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) {

View File

@@ -4,6 +4,7 @@ import { App } from 'vue';
export default (app: App) => {
app.directive('copyText', copyText);
/** 权限校验 */
app.directive('hasPermi', hasPermi);
app.directive('hasRoles', hasRoles);
};

View File

@@ -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: {

View File

@@ -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;
}
}
}

View File

@@ -93,7 +93,7 @@ defineExpose({
overflow: hidden;
width: 100%;
:deep(.el-scrollbar__bar) {
bottom: 0px;
bottom: 0;
}
:deep(.el-scrollbar__wrap) {
height: 49px;

View File

@@ -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);

View File

@@ -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;
}

View File

@@ -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';

View File

@@ -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) {

View File

@@ -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';

View File

@@ -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';

View File

@@ -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';

View File

@@ -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})?$/;

View File

@@ -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)[] {

View File

@@ -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;
}
}
};

View File

@@ -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();

View File

@@ -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;

View File

@@ -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';

View File

@@ -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';

View File

@@ -235,7 +235,7 @@ onMounted(() => {
.input-icon {
height: 40px;
width: 23px;
margin-left: 0px;
margin-left: 0;
margin-right: 16px;
color: #1a75ff;
}

View File

@@ -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();

View File

@@ -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>

View File

@@ -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;

View File

@@ -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>

View File

@@ -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;
}

View File

@@ -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();
});

View File

@@ -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();
});

View File

@@ -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();

View File

@@ -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('操作成功');

View File

@@ -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;
}

View File

@@ -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();
});

View File

@@ -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';

View File

@@ -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();

View File

@@ -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>

View File

@@ -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';

View File

@@ -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';

View File

@@ -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';

View File

@@ -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';

View File

@@ -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';

View File

@@ -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'));

View File

@@ -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';

View File

@@ -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

View File

@@ -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';

View File

@@ -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;

View File

@@ -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({

View File

@@ -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 ====================

View File

@@ -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';

View File

@@ -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);

View File

@@ -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';

View File

@@ -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();

View File

@@ -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';

View File

@@ -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';

View File

@@ -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;

View File

@@ -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;

View File

@@ -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';

View File

@@ -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;

View File

@@ -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';

View File

@@ -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();
});

View File

@@ -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