8/31 dev 权限,sse,账单,bug
This commit is contained in:
@@ -73,7 +73,7 @@ export interface Request {
|
|||||||
* @returns {*}
|
* @returns {*}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
export const list_statapi = (query?: { taskTimeBegin: string; taskTimeEnd: string }): AxiosPromise<any[]> => {
|
export const list_statapi = (query?: { queryDateBegin: string; queryDateEnd: string }): AxiosPromise<any[]> => {
|
||||||
return request({
|
return request({
|
||||||
url: '/inspection/data/role/stat',
|
url: '/inspection/data/role/stat',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
|
|||||||
@@ -81,6 +81,9 @@ export interface RecordQuery extends PageQuery {
|
|||||||
* 任务名称
|
* 任务名称
|
||||||
*/
|
*/
|
||||||
taskName?: string;
|
taskName?: string;
|
||||||
|
|
||||||
|
taskTimeBegin?: '';
|
||||||
|
taskTimeEnd?: '';
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface DetailsVo {
|
export interface DetailsVo {
|
||||||
|
|||||||
@@ -106,6 +106,8 @@ export interface TaskQuery extends PageQuery {
|
|||||||
* 巡检任务名称
|
* 巡检任务名称
|
||||||
*/
|
*/
|
||||||
taskName?: string;
|
taskName?: string;
|
||||||
|
taskTimeBegin?: string;
|
||||||
|
taskTimeEnd?: string;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 关联巡检计划ID
|
* 关联巡检计划ID
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import request from '@/utils/request';
|
import request from '@/utils/request';
|
||||||
import { AxiosPromise } from 'axios';
|
import { AxiosPromise } from 'axios';
|
||||||
import { RepairProjectVO, RepairProjectForm, RepairProjectQuery } from './type';
|
import { RepairProjectVO, RepairProjectForm, RepairProjectQuery, RepairProjectQueryNoPage } from './type';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询报修维修项目管理列表
|
* 查询报修维修项目管理列表
|
||||||
@@ -67,7 +67,7 @@ export const delRepairProject = (id: string | number | Array<string | number>) =
|
|||||||
* @returns {*}
|
* @returns {*}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
export const gettreelistRepairProject = (query?: RepairProjectQuery): AxiosPromise<RepairProjectVO[]> => {
|
export const gettreelistRepairProject = (query?: RepairProjectQueryNoPage): AxiosPromise<RepairProjectVO[]> => {
|
||||||
return request({
|
return request({
|
||||||
url: '/repairProject/treeList',
|
url: '/repairProject/treeList',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
|
|||||||
@@ -106,3 +106,34 @@ export interface RepairProjectQuery extends PageQuery {
|
|||||||
*/
|
*/
|
||||||
status?: string;
|
status?: string;
|
||||||
}
|
}
|
||||||
|
export interface RepairProjectQueryNoPage {
|
||||||
|
/**
|
||||||
|
* 维修项目名
|
||||||
|
*/
|
||||||
|
projectName?: string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 父级项目id
|
||||||
|
*/
|
||||||
|
parentId?: string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目类型 0公共报修 1个人报修
|
||||||
|
*/
|
||||||
|
projectType?: string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目层级 0,1
|
||||||
|
*/
|
||||||
|
projectLevel?: number;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 排序 (数越小越靠前)
|
||||||
|
*/
|
||||||
|
sortOrder?: number;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 状态 0启用 1停用
|
||||||
|
*/
|
||||||
|
status?: string;
|
||||||
|
}
|
||||||
|
|||||||
@@ -22,6 +22,11 @@ export const cashQuery = (data: { residentName?: string; queryType: number }): A
|
|||||||
};
|
};
|
||||||
|
|
||||||
export type billlistType = {
|
export type billlistType = {
|
||||||
|
/**
|
||||||
|
* 类型 0物业费 1车位管理费 2垃圾处理费 3租金 4押金
|
||||||
|
*/
|
||||||
|
detailsType: string;
|
||||||
|
unitNoId: string;
|
||||||
needPayAmount: string; // 需要支付金额
|
needPayAmount: string; // 需要支付金额
|
||||||
actualAccount: string; // 实际支付金额
|
actualAccount: string; // 实际支付金额
|
||||||
singleDiscountAmount: string; // 单笔优惠金额
|
singleDiscountAmount: string; // 单笔优惠金额
|
||||||
|
|||||||
@@ -1,32 +1,31 @@
|
|||||||
<template>
|
<template>
|
||||||
<slot name="default" />
|
<slot name="default" />
|
||||||
<el-dialog append-to-body v-model="dialog.dialogVisible" :title="dialog.dialogTitle" width="1050">
|
<el-dialog v-model="dialog.dialogVisible" :title="dialog.dialogTitle" append-to-body width="1050">
|
||||||
<el-table ref="multipleTableRef" :data="tableData" border @selection-change="handleSelectionChange">
|
<el-table ref="multipleTableRef" :data="tableData" border @selection-change="handleSelectionChange">
|
||||||
<el-table-column type="selection" width="55" align="center" />
|
<el-table-column align="center" type="selection" width="55" />
|
||||||
<el-table-column label="序号" align="center" width="55" type="index" />
|
<el-table-column align="center" label="序号" type="index" width="55" />
|
||||||
<el-table-column label="业主" align="center">
|
<el-table-column align="center" label="业主">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span>{{ scope.row.residentName ? scope.row.residentName : '---' }}</span>
|
<span>{{ scope.row.residentName ? scope.row.residentName : '---' }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="性别" align="center">
|
<el-table-column align="center" label="性别">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<dict-tag :options="sys_user_sex" :value="scope.row.gender"></dict-tag>
|
<dict-tag :options="sys_user_sex" :value="scope.row.gender"></dict-tag>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="手机号" align="center" prop="phone" />
|
<el-table-column align="center" label="手机号" prop="phone" />
|
||||||
<el-table-column label="车位" align="center" prop="parkingName" />
|
<el-table-column align="center" label="车位" prop="parkingName" />
|
||||||
</el-table>
|
</el-table>
|
||||||
|
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<div class="dialog-footer flex flex-items-center flex-justify-between">
|
<div class="dialog-footer flex flex-items-center flex-justify-between">
|
||||||
<pagination
|
<pagination
|
||||||
style="margin-top: 0"
|
|
||||||
layout="total, prev, pager, next, jumper"
|
|
||||||
v-show="total > 0"
|
v-show="total > 0"
|
||||||
:total="total"
|
|
||||||
v-model:page="queryParams.pageNum"
|
|
||||||
v-model:limit="queryParams.pageSize"
|
v-model:limit="queryParams.pageSize"
|
||||||
|
v-model:page="queryParams.pageNum"
|
||||||
|
:total="total"
|
||||||
|
style="margin-top: 0"
|
||||||
@pagination="getlist"
|
@pagination="getlist"
|
||||||
/>
|
/>
|
||||||
<div>
|
<div>
|
||||||
@@ -38,7 +37,7 @@
|
|||||||
</el-dialog>
|
</el-dialog>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script lang="ts" setup>
|
||||||
import DictTag from '@/components/DictTag/index.vue';
|
import DictTag from '@/components/DictTag/index.vue';
|
||||||
import pagination from '@/components/Pagination/index.vue';
|
import pagination from '@/components/Pagination/index.vue';
|
||||||
import { getBuildinglistAPI, getHouselistAPI } from '@/api/system/house';
|
import { getBuildinglistAPI, getHouselistAPI } from '@/api/system/house';
|
||||||
@@ -285,7 +284,7 @@ defineExpose({
|
|||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style lang="scss" scoped>
|
||||||
.residentBox {
|
.residentBox {
|
||||||
width: 385px;
|
width: 385px;
|
||||||
height: 35px;
|
height: 35px;
|
||||||
|
|||||||
@@ -1,18 +1,18 @@
|
|||||||
<template>
|
<template>
|
||||||
<slot name="default" />
|
<slot name="default" />
|
||||||
<el-dialog append-to-body v-model="dialog.dialogVisible" :title="dialog.dialogTitle" width="1050">
|
<el-dialog v-model="dialog.dialogVisible" :title="dialog.dialogTitle" append-to-body width="1050">
|
||||||
<nav class="flex flex-items-center mb-8 justify-between">
|
<nav class="flex flex-items-center mb-8 justify-between">
|
||||||
<div class="flex flex-items-center">
|
<div class="flex flex-items-center">
|
||||||
<div class="flex flex-items-center mr-20px">
|
<div class="flex flex-items-center mr-20px">
|
||||||
<div style="width: 80px; text-align: right; padding-right: 10px">业主账号</div>
|
<div style="width: 80px; text-align: right; padding-right: 10px">业主账号</div>
|
||||||
<div class="flex-1">
|
<div class="flex-1">
|
||||||
<el-input clearable @clear="handleClear" style="width: 200px" v-model="queryParams.userName" placeholder="请输入业主账号"></el-input>
|
<el-input v-model="queryParams.userName" clearable placeholder="请输入业主账号" style="width: 200px" @clear="handleClear"></el-input>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex flex-items-center mr-20px">
|
<div class="flex flex-items-center mr-20px">
|
||||||
<div style="width: 60px; text-align: right; padding-right: 10px">手机号</div>
|
<div style="width: 60px; text-align: right; padding-right: 10px">手机号</div>
|
||||||
<div class="flex-1">
|
<div class="flex-1">
|
||||||
<el-input clearable @clear="handleClear" style="width: 200px" v-model="queryParams.userPhone" placeholder="请输入手机号"></el-input>
|
<el-input v-model="queryParams.userPhone" clearable placeholder="请输入手机号" style="width: 200px" @clear="handleClear"></el-input>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -21,24 +21,23 @@
|
|||||||
<el-button @click="resetQuery">重置</el-button>
|
<el-button @click="resetQuery">重置</el-button>
|
||||||
</div>
|
</div>
|
||||||
</nav>
|
</nav>
|
||||||
<el-table v-loading="loading" ref="multipleTableRef" :data="tableData" border @selection-change="handleSelectionChange">
|
<el-table ref="multipleTableRef" v-loading="loading" :data="tableData" border @selection-change="handleSelectionChange">
|
||||||
<el-table-column type="selection" width="55" align="center" />
|
<el-table-column align="center" type="selection" width="55" />
|
||||||
<el-table-column label="业主" align="center">
|
<el-table-column align="center" label="业主">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span>{{ scope.row.user_name ? scope.row.user_name : '---' }}</span>
|
<span>{{ scope.row.user_name ? scope.row.user_name : '---' }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="手机号" align="center" prop="user_phone" />
|
<el-table-column align="center" label="手机号" prop="user_phone" />
|
||||||
</el-table>
|
</el-table>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<div class="dialog-footer flex flex-items-center flex-justify-between">
|
<div class="dialog-footer flex flex-items-center flex-justify-between">
|
||||||
<pagination
|
<pagination
|
||||||
style="margin-top: 0"
|
|
||||||
layout="total, prev, pager, next, jumper"
|
|
||||||
v-show="total > 0"
|
v-show="total > 0"
|
||||||
:total="total"
|
|
||||||
v-model:page="queryParams.pageNum"
|
|
||||||
v-model:limit="queryParams.pageSize"
|
v-model:limit="queryParams.pageSize"
|
||||||
|
v-model:page="queryParams.pageNum"
|
||||||
|
:total="total"
|
||||||
|
style="margin-top: 0"
|
||||||
@pagination="getList"
|
@pagination="getList"
|
||||||
/>
|
/>
|
||||||
<div>
|
<div>
|
||||||
@@ -50,7 +49,7 @@
|
|||||||
</el-dialog>
|
</el-dialog>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script lang="ts" setup>
|
||||||
import pagination from '@/components/Pagination/index.vue';
|
import pagination from '@/components/Pagination/index.vue';
|
||||||
import { ref, nextTick, toRefs } from 'vue';
|
import { ref, nextTick, toRefs } from 'vue';
|
||||||
import { AppUserList, getAppUser } from '@/api/system/cars';
|
import { AppUserList, getAppUser } from '@/api/system/cars';
|
||||||
@@ -253,7 +252,7 @@ defineExpose({
|
|||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style lang="scss" scoped>
|
||||||
.residentBox {
|
.residentBox {
|
||||||
width: 385px;
|
width: 385px;
|
||||||
height: 35px;
|
height: 35px;
|
||||||
|
|||||||
320
src/components/Holder/complainUser.vue
Normal file
320
src/components/Holder/complainUser.vue
Normal file
@@ -0,0 +1,320 @@
|
|||||||
|
<template>
|
||||||
|
<slot v-if="$slots.default" />
|
||||||
|
|
||||||
|
<div v-else class="residentBox" @click="choiceResidentFun">
|
||||||
|
<div v-if="multipleSelection.length === 0 && props.username === null" class="defaultBox">
|
||||||
|
<span>请选择</span>
|
||||||
|
<el-icon><Search /></el-icon>
|
||||||
|
</div>
|
||||||
|
<div v-else class="overflow-auto overflow-hidden w-full text-ellipsis text-nowrap">
|
||||||
|
<span>姓名:{{ multipleSelection[0]?.nickName ?? props.username }}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<el-dialog v-model="dialog.dialogVisible" :title="dialog.dialogTitle" append-to-body width="1050">
|
||||||
|
<nav class="flex flex-items-center mb-8">
|
||||||
|
<div class="flex flex-items-center">
|
||||||
|
<div style="width: 70px; text-align: right; padding-right: 10px">员工姓名</div>
|
||||||
|
<div class="mr-5 flex-1">
|
||||||
|
<el-input v-model="queryParams.nickName" clearable placeholder="请输入员工姓名" style="width: 170px" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="flex flex-items-center">
|
||||||
|
<div style="width: 70px; text-align: right; padding-right: 10px">手机号</div>
|
||||||
|
<div class="mr-5 flex-1">
|
||||||
|
<el-input v-model="queryParams.phonenumber" clearable placeholder="请输入手机号" style="width: 170px" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<el-button type="primary" @click="getList">查询</el-button>
|
||||||
|
<el-button @click="resetQuery">重置</el-button>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
<el-table ref="multipleTableRef" :data="tableData" border @selection-change="handleSelectionChange">
|
||||||
|
<el-table-column align="center" type="selection" width="55" />
|
||||||
|
<el-table-column align="center" label="序号" type="index" width="55" />
|
||||||
|
<el-table-column align="center" label="姓名" prop="nickName" />
|
||||||
|
<el-table-column align="center" label="性别" prop="sex" width="85">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<dict-tag :options="sys_user_sex" :value="row.sex" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column align="center" label="角色" prop="roleName" />
|
||||||
|
<el-table-column v-if="props.userType == 'repair'" align="center" label="当前任务数量" prop="taskCount" />
|
||||||
|
<el-table-column align="center" label="手机号码" prop="phonenumber" />
|
||||||
|
<el-table-column align="center" label="状态" prop="status">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<el-tag :type="row.status === '0' ? 'success' : 'danger'">{{ row.status === '0' ? '正常' : '停用' }}</el-tag>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
|
||||||
|
<template #footer>
|
||||||
|
<div class="dialog-footer flex flex-items-center flex-justify-between">
|
||||||
|
<pagination
|
||||||
|
v-show="total > 0"
|
||||||
|
v-model:limit="queryParams.pageSize"
|
||||||
|
v-model:page="queryParams.pageNum"
|
||||||
|
:total="total"
|
||||||
|
layout="total, sizes, prev, pager, next, jumper"
|
||||||
|
style="margin-top: 0"
|
||||||
|
@pagination="getList"
|
||||||
|
/>
|
||||||
|
<div>
|
||||||
|
<el-button @click="conBack">退出</el-button>
|
||||||
|
<el-button type="primary" @click="confirm"> 确定 </el-button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup>
|
||||||
|
import { ResidentVO } from '@/api/system/residentReviewProcess/resident/type';
|
||||||
|
import { getUserByRoleKey } from '@/api/system/user';
|
||||||
|
import { ref, watch, nextTick, getCurrentInstance, ComponentInternalInstance, toRefs } from 'vue';
|
||||||
|
|
||||||
|
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
||||||
|
const { sys_user_sex } = toRefs<any>(proxy?.useDict('sys_user_sex'));
|
||||||
|
|
||||||
|
interface tableType extends ResidentVO {
|
||||||
|
housePath?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
const props = defineProps({
|
||||||
|
userid: {
|
||||||
|
type: String,
|
||||||
|
default: ''
|
||||||
|
},
|
||||||
|
username: {
|
||||||
|
type: String,
|
||||||
|
default: null
|
||||||
|
},
|
||||||
|
returnvalue: {
|
||||||
|
type: String,
|
||||||
|
default: 'userId'
|
||||||
|
},
|
||||||
|
titleName: {
|
||||||
|
type: String,
|
||||||
|
default: '选择投诉处理人员'
|
||||||
|
},
|
||||||
|
userType: {
|
||||||
|
type: String,
|
||||||
|
default: 'complainUser'
|
||||||
|
},
|
||||||
|
isMultiple: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const { userid, titleName, userType, returnvalue } = toRefs(props);
|
||||||
|
|
||||||
|
// ✅ 手动设置默认值(替代 withDefaults)
|
||||||
|
const emit = defineEmits<{
|
||||||
|
change: [value: string | number | (string | number)[] | tableType | tableType[]]; // 支持返回数组
|
||||||
|
}>();
|
||||||
|
|
||||||
|
const dialog = ref({
|
||||||
|
dialogVisible: false,
|
||||||
|
dialogTitle: titleName.value
|
||||||
|
});
|
||||||
|
|
||||||
|
const queryParams = ref({
|
||||||
|
pageNum: 1,
|
||||||
|
pageSize: 10,
|
||||||
|
nickName: null,
|
||||||
|
phonenumber: null
|
||||||
|
});
|
||||||
|
|
||||||
|
const multipleTableRef = ref();
|
||||||
|
const tableData = ref<tableType[]>([]);
|
||||||
|
const total = ref(0);
|
||||||
|
const loading = ref(false);
|
||||||
|
const isFetching = ref(false); // 加锁,防止重复触发 selection-change
|
||||||
|
|
||||||
|
// 存储选中项
|
||||||
|
const multipleSelection = ref<tableType[]>([]);
|
||||||
|
|
||||||
|
const isMultiple = computed(() => props.isMultiple ?? false);
|
||||||
|
|
||||||
|
// 优化 handleUserSelection,避免重复查找
|
||||||
|
const handleUserSelection = () => {
|
||||||
|
isFetching.value = true;
|
||||||
|
console.log('获取列表');
|
||||||
|
if (tableData.value.length <= 0 || !multipleTableRef.value) {
|
||||||
|
isFetching.value = false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const rowsToSelect = tableData.value.filter((row) => {
|
||||||
|
return multipleSelection.value.some((selected) => selected.userId === row.userId);
|
||||||
|
});
|
||||||
|
multipleTableRef.value.clearSelection();
|
||||||
|
if (rowsToSelect.length > 0) {
|
||||||
|
nextTick(() => {
|
||||||
|
rowsToSelect.forEach((row) => {
|
||||||
|
multipleTableRef.value?.toggleRowSelection(row, true);
|
||||||
|
});
|
||||||
|
isFetching.value = false;
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
isFetching.value = false;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// 监听
|
||||||
|
// 监听优化:只在 userid 变化时触发
|
||||||
|
watch(userid, handleUserSelection, { immediate: true });
|
||||||
|
|
||||||
|
// ====================== 方法 ======================
|
||||||
|
// 打开选择框
|
||||||
|
function choiceResidentFun() {
|
||||||
|
dialog.value.dialogVisible = true;
|
||||||
|
multipleSelection.value = []; // 打开时清空之前的选择
|
||||||
|
if (typeof props.userid === 'string' && props.userid.trim() !== '') {
|
||||||
|
multipleSelection.value = [
|
||||||
|
{
|
||||||
|
userId: props.userid
|
||||||
|
} as ResidentVO
|
||||||
|
];
|
||||||
|
} else if (Array.isArray(props.userid)) {
|
||||||
|
multipleSelection.value = props.userid.map((id) => ({ userId: id })) as tableType[];
|
||||||
|
}
|
||||||
|
getList();
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取列表
|
||||||
|
function getList() {
|
||||||
|
loading.value = true;
|
||||||
|
getUserByRoleKey({
|
||||||
|
...queryParams.value,
|
||||||
|
roleKey: userType.value
|
||||||
|
})
|
||||||
|
.then((res) => {
|
||||||
|
tableData.value = res.rows;
|
||||||
|
total.value = res.total;
|
||||||
|
handleUserSelection();
|
||||||
|
})
|
||||||
|
.catch((error) => {
|
||||||
|
console.error('获取用户列表失败:', error);
|
||||||
|
})
|
||||||
|
.finally(() => {
|
||||||
|
loading.value = false;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
// ==============================================
|
||||||
|
// ✅ 新增:处理 selection-change(多选专用)
|
||||||
|
// ==============================================
|
||||||
|
function handleSelectionChange(selection: tableType[]) {
|
||||||
|
if (isFetching.value) return;
|
||||||
|
if (isMultiple.value) {
|
||||||
|
const currentSelectedIds = new Set(selection.map((item) => item.id));
|
||||||
|
const otherPageSelections = multipleSelection.value.filter((item) => {
|
||||||
|
const isCurrentPageItem = tableData.value.some((row) => row.id === item.id);
|
||||||
|
if (isCurrentPageItem) {
|
||||||
|
return currentSelectedIds.has(item.id);
|
||||||
|
} else {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
// 3. 合并:其他页保留的 + 当前页新选中的
|
||||||
|
const finalSelection = [...otherPageSelections, ...selection];
|
||||||
|
// 4. 去重(以防万一)
|
||||||
|
const uniqueMap = new Map();
|
||||||
|
finalSelection.forEach((item) => uniqueMap.set(item.id, item));
|
||||||
|
multipleSelection.value = Array.from(uniqueMap.values());
|
||||||
|
console.log(multipleSelection.value.map((item) => item.id));
|
||||||
|
} else {
|
||||||
|
// --- 单选逻辑 ---
|
||||||
|
if (selection.length > 0) {
|
||||||
|
const lastSelected = selection[selection.length - 1];
|
||||||
|
multipleSelection.value = [lastSelected];
|
||||||
|
nextTick(() => {
|
||||||
|
if (selection.length > 1) {
|
||||||
|
multipleTableRef.value?.clearSelection();
|
||||||
|
multipleTableRef.value?.toggleRowSelection(lastSelected, true);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
multipleSelection.value = [];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log('handleSelectionChange', selection);
|
||||||
|
}
|
||||||
|
// 重置查询
|
||||||
|
function resetQuery() {
|
||||||
|
queryParams.value = {
|
||||||
|
pageNum: 1,
|
||||||
|
pageSize: 10,
|
||||||
|
nickName: null,
|
||||||
|
phonenumber: null
|
||||||
|
};
|
||||||
|
getList();
|
||||||
|
}
|
||||||
|
|
||||||
|
// 退出
|
||||||
|
function conBack() {
|
||||||
|
dialog.value.dialogVisible = false;
|
||||||
|
resetQuery();
|
||||||
|
}
|
||||||
|
|
||||||
|
// ==============================================
|
||||||
|
// ✅ 核心修改:根据 returnvalue 返回对应的值
|
||||||
|
// ==============================================
|
||||||
|
function confirm() {
|
||||||
|
dialog.value.dialogVisible = false;
|
||||||
|
if (isMultiple.value) {
|
||||||
|
// 多选
|
||||||
|
if (returnvalue.value === '*') {
|
||||||
|
// ✅ 返回整个对象数组
|
||||||
|
emit('change', multipleSelection.value);
|
||||||
|
} else {
|
||||||
|
// 返回指定字段数组
|
||||||
|
emit(
|
||||||
|
'change',
|
||||||
|
multipleSelection.value.map((item) => item[returnvalue.value as keyof tableType])
|
||||||
|
);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// 单选
|
||||||
|
if (returnvalue.value === '*') {
|
||||||
|
// ✅ 返回整个对象
|
||||||
|
emit('change', multipleSelection.value[multipleSelection.value.length - 1]);
|
||||||
|
} else {
|
||||||
|
// 返回指定字段
|
||||||
|
emit('change', multipleSelection.value[multipleSelection.value.length - 1][returnvalue.value as keyof tableType]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
onMounted(() => {
|
||||||
|
// 初始化
|
||||||
|
});
|
||||||
|
|
||||||
|
defineExpose({
|
||||||
|
open: () => {
|
||||||
|
dialog.value.dialogVisible = true;
|
||||||
|
getList();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.residentBox {
|
||||||
|
width: 385px;
|
||||||
|
height: 35px;
|
||||||
|
line-height: 35px;
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
border-radius: 5px;
|
||||||
|
padding: 0 10px;
|
||||||
|
.defaultBox {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
|
cursor: pointer;
|
||||||
|
&:hover {
|
||||||
|
background-color: #f4f8ff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<slot name="default" />
|
<slot name="default" />
|
||||||
|
|
||||||
<el-dialog append-to-body v-model="dialog.dialogVisible" :title="dialog.dialogTitle" width="1400">
|
<el-dialog v-model="dialog.dialogVisible" :title="dialog.dialogTitle" append-to-body width="1400">
|
||||||
<nav class="flex flex-items-center mb-8 justify-between">
|
<nav class="flex flex-items-center mb-8 justify-between">
|
||||||
<!-- <div class="flex flex-items-center">
|
<!-- <div class="flex flex-items-center">
|
||||||
<div style="width: 70px; text-align: right; padding-right: 10px">房屋类型</div>
|
<div style="width: 70px; text-align: right; padding-right: 10px">房屋类型</div>
|
||||||
@@ -15,14 +15,14 @@
|
|||||||
<div class="flex flex-items-center">
|
<div class="flex flex-items-center">
|
||||||
<div style="width: 50px; text-align: right; padding-right: 10px">楼栋</div>
|
<div style="width: 50px; text-align: right; padding-right: 10px">楼栋</div>
|
||||||
<div class="flex-1"></div>
|
<div class="flex-1"></div>
|
||||||
<el-select @change="handleChangeBuilding" clearable style="width: 120px" v-model="queryParams.buildingId">
|
<el-select v-model="queryParams.buildingId" clearable style="width: 120px" @change="handleChangeBuilding">
|
||||||
<el-option v-for="(item, index) in buildingList" :key="index" :label="item.buildingName" :value="item.id"></el-option>
|
<el-option v-for="(item, index) in buildingList" :key="index" :label="item.buildingName" :value="item.id"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex flex-items-center mr-20px">
|
<div class="flex flex-items-center mr-20px">
|
||||||
<div style="width: 50px; text-align: right; padding-right: 10px">单元</div>
|
<div style="width: 50px; text-align: right; padding-right: 10px">单元</div>
|
||||||
<div class="flex-1">
|
<div class="flex-1">
|
||||||
<el-select @change="handleChangeUnit" clearable style="width: 120px" v-model="queryParams.unitNoId">
|
<el-select v-model="queryParams.unitNoId" clearable style="width: 120px" @change="handleChangeUnit">
|
||||||
<el-option v-for="(item, index) in unitList" :key="index" :label="item.unitNoName" :value="item.unitNoId"></el-option>
|
<el-option v-for="(item, index) in unitList" :key="index" :label="item.unitNoName" :value="item.unitNoId"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</div>
|
</div>
|
||||||
@@ -30,7 +30,7 @@
|
|||||||
<div class="flex flex-items-center mr-20px">
|
<div class="flex flex-items-center mr-20px">
|
||||||
<div style="width: 80px; text-align: right; padding-right: 10px">房屋类型</div>
|
<div style="width: 80px; text-align: right; padding-right: 10px">房屋类型</div>
|
||||||
<div class="flex-1">
|
<div class="flex-1">
|
||||||
<el-select clearable @change="handleHouseUseChange" style="width: 120px" v-model="queryParams.houseUseTypeId">
|
<el-select v-model="queryParams.houseUseTypeId" clearable style="width: 120px" @change="handleHouseUseChange">
|
||||||
<el-option v-for="(item, index) in houseUseTypeList" :key="index" :label="item.name" :value="item.id"></el-option>
|
<el-option v-for="(item, index) in houseUseTypeList" :key="index" :label="item.name" :value="item.id"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</div>
|
</div>
|
||||||
@@ -38,13 +38,13 @@
|
|||||||
<div class="flex flex-items-center mr-20px">
|
<div class="flex flex-items-center mr-20px">
|
||||||
<div style="width: 60px; text-align: right; padding-right: 10px">房屋号</div>
|
<div style="width: 60px; text-align: right; padding-right: 10px">房屋号</div>
|
||||||
<div class="flex-1">
|
<div class="flex-1">
|
||||||
<el-input clearable @clear="handleClear" style="width: 120px" v-model="queryParams.houseNo" placeholder="请输入房屋号"></el-input>
|
<el-input v-model="queryParams.houseNo" clearable placeholder="请输入房屋号" style="width: 120px" @clear="handleClear"></el-input>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex flex-items-center mr-20px">
|
<div class="flex flex-items-center mr-20px">
|
||||||
<div style="width: 80px; text-align: right; padding-right: 10px">业主名称</div>
|
<div style="width: 80px; text-align: right; padding-right: 10px">业主名称</div>
|
||||||
<div class="flex-1">
|
<div class="flex-1">
|
||||||
<el-input clearable @clear="handleClear" style="width: 120px" v-model="queryParams.residentName" placeholder="请输入业主名称"></el-input>
|
<el-input v-model="queryParams.residentName" clearable placeholder="请输入业主名称" style="width: 120px" @clear="handleClear"></el-input>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -54,21 +54,21 @@
|
|||||||
</div>
|
</div>
|
||||||
</nav>
|
</nav>
|
||||||
<el-table
|
<el-table
|
||||||
style="height: 500px"
|
|
||||||
row-key="houseId"
|
|
||||||
v-loading="loading"
|
|
||||||
ref="multipleTableRef"
|
ref="multipleTableRef"
|
||||||
|
v-loading="loading"
|
||||||
:data="tableData"
|
:data="tableData"
|
||||||
border
|
border
|
||||||
|
row-key="houseId"
|
||||||
|
style="height: 500px"
|
||||||
@selection-change="handleSelectionChange"
|
@selection-change="handleSelectionChange"
|
||||||
>
|
>
|
||||||
<el-table-column type="selection" width="55" align="center" />
|
<el-table-column align="center" type="selection" width="55" />
|
||||||
<el-table-column label="序号" align="center" width="55" type="index" />
|
<el-table-column align="center" label="序号" type="index" width="55" />
|
||||||
<el-table-column label="小区" align="center" prop="villageName" />
|
<el-table-column align="center" label="小区" prop="villageName" />
|
||||||
<el-table-column label="楼栋" align="center" prop="buildingName" />
|
<el-table-column align="center" label="楼栋" prop="buildingName" />
|
||||||
<el-table-column label="单元" align="center" prop="unitNoName" />
|
<el-table-column align="center" label="单元" prop="unitNoName" />
|
||||||
<el-table-column label="房间" align="center" prop="houseNo" />
|
<el-table-column align="center" label="房间" prop="houseNo" />
|
||||||
<el-table-column label="业主" align="center">
|
<el-table-column align="center" label="业主">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span>{{ scope.row.residentName ? scope.row.residentName : '---' }}</span>
|
<span>{{ scope.row.residentName ? scope.row.residentName : '---' }}</span>
|
||||||
</template>
|
</template>
|
||||||
@@ -77,12 +77,11 @@
|
|||||||
<template #footer>
|
<template #footer>
|
||||||
<div class="dialog-footer flex flex-items-center flex-justify-between">
|
<div class="dialog-footer flex flex-items-center flex-justify-between">
|
||||||
<pagination
|
<pagination
|
||||||
style="margin-top: 0"
|
|
||||||
layout="total, prev, sizes, pager, next, jumper"
|
|
||||||
v-show="total > 0"
|
v-show="total > 0"
|
||||||
:total="total"
|
|
||||||
v-model:page="queryParams.pageNum"
|
|
||||||
v-model:limit="queryParams.pageSize"
|
v-model:limit="queryParams.pageSize"
|
||||||
|
v-model:page="queryParams.pageNum"
|
||||||
|
:total="total"
|
||||||
|
style="margin-top: 0"
|
||||||
@pagination="getList"
|
@pagination="getList"
|
||||||
/>
|
/>
|
||||||
<div>
|
<div>
|
||||||
@@ -94,7 +93,7 @@
|
|||||||
</el-dialog>
|
</el-dialog>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script lang="ts" setup>
|
||||||
import { getBuildinglistAPI, getHouselistAPI } from '@/api/system/house';
|
import { getBuildinglistAPI, getHouselistAPI } from '@/api/system/house';
|
||||||
import { listHouseUseType_add_house } from '@/api/system/houseUse';
|
import { listHouseUseType_add_house } from '@/api/system/houseUse';
|
||||||
import { BillHouse, listBillHouse } from '@/api/system/SdbBill';
|
import { BillHouse, listBillHouse } from '@/api/system/SdbBill';
|
||||||
@@ -365,7 +364,7 @@ defineExpose({
|
|||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style lang="scss" scoped>
|
||||||
.residentBox {
|
.residentBox {
|
||||||
width: 385px;
|
width: 385px;
|
||||||
height: 35px;
|
height: 35px;
|
||||||
|
|||||||
@@ -1,17 +1,17 @@
|
|||||||
<template>
|
<template>
|
||||||
<slot name="default" />
|
<slot name="default" />
|
||||||
<el-dialog append-to-body v-model="dialog.dialogVisible" :title="dialog.dialogTitle" width="1050">
|
<el-dialog v-model="dialog.dialogVisible" :title="dialog.dialogTitle" append-to-body width="1050">
|
||||||
<nav class="flex flex-items-center mb-8">
|
<nav class="flex flex-items-center mb-8">
|
||||||
<div class="flex flex-items-center">
|
<div class="flex flex-items-center">
|
||||||
<div style="width: 70px; text-align: right; padding-right: 10px">物料名称</div>
|
<div style="width: 70px; text-align: right; padding-right: 10px">物料名称</div>
|
||||||
<div class="mr-5 flex-1">
|
<div class="mr-5 flex-1">
|
||||||
<el-input style="width: 170px" clearable v-model="queryParams.materialName" placeholder="请输入物料名称" />
|
<el-input v-model="queryParams.materialName" clearable placeholder="请输入物料名称" style="width: 170px" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex flex-items-center">
|
<div class="flex flex-items-center">
|
||||||
<div style="width: 70px; text-align: right; padding-right: 10px">品牌</div>
|
<div style="width: 70px; text-align: right; padding-right: 10px">品牌</div>
|
||||||
<div class="mr-5 flex-1">
|
<div class="mr-5 flex-1">
|
||||||
<el-input style="width: 170px" clearable v-model="queryParams.brand" placeholder="请输入品牌" />
|
<el-input v-model="queryParams.brand" clearable placeholder="请输入品牌" style="width: 170px" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
@@ -20,30 +20,29 @@
|
|||||||
</div>
|
</div>
|
||||||
</nav>
|
</nav>
|
||||||
<el-table
|
<el-table
|
||||||
@select-all="handleSelectionChange"
|
|
||||||
@row-click="handleRowClick"
|
|
||||||
ref="multipleTableRef"
|
ref="multipleTableRef"
|
||||||
:data="tableData"
|
:data="tableData"
|
||||||
border
|
border
|
||||||
|
@select-all="handleSelectionChange"
|
||||||
|
@row-click="handleRowClick"
|
||||||
@selection-change="handleSelectionChange"
|
@selection-change="handleSelectionChange"
|
||||||
>
|
>
|
||||||
<el-table-column type="selection" width="55" align="center" />
|
<el-table-column align="center" type="selection" width="55" />
|
||||||
<el-table-column label="物料名称" align="center" prop="materialName" />
|
<el-table-column align="center" label="物料名称" prop="materialName" />
|
||||||
<el-table-column label="品牌" align="center" prop="brand" />
|
<el-table-column align="center" label="品牌" prop="brand" />
|
||||||
<el-table-column label="规格型号" align="center" prop="model" />
|
<el-table-column align="center" label="规格型号" prop="model" />
|
||||||
<el-table-column label="单位" align="center" prop="unit" />
|
<el-table-column align="center" label="单位" prop="unit" />
|
||||||
<el-table-column label="备注" align="center" prop="remark" />
|
<el-table-column align="center" label="备注" prop="remark" />
|
||||||
</el-table>
|
</el-table>
|
||||||
|
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<div class="dialog-footer flex flex-items-center flex-justify-between">
|
<div class="dialog-footer flex flex-items-center flex-justify-between">
|
||||||
<pagination
|
<pagination
|
||||||
style="margin-top: 0"
|
|
||||||
layout="total, prev, pager, next, jumper"
|
|
||||||
v-show="total > 0"
|
v-show="total > 0"
|
||||||
:total="total"
|
|
||||||
v-model:page="queryParams.pageNum"
|
|
||||||
v-model:limit="queryParams.pageSize"
|
v-model:limit="queryParams.pageSize"
|
||||||
|
v-model:page="queryParams.pageNum"
|
||||||
|
:total="total"
|
||||||
|
style="margin-top: 0"
|
||||||
@pagination="getlist"
|
@pagination="getlist"
|
||||||
/>
|
/>
|
||||||
<div>
|
<div>
|
||||||
@@ -55,7 +54,7 @@
|
|||||||
</el-dialog>
|
</el-dialog>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script lang="ts" setup>
|
||||||
import { listMaterial } from '@/api/system/Tmaterial';
|
import { listMaterial } from '@/api/system/Tmaterial';
|
||||||
import { MaterialVO } from '@/api/system/Tmaterial/type';
|
import { MaterialVO } from '@/api/system/Tmaterial/type';
|
||||||
import { ref, nextTick, getCurrentInstance, ComponentInternalInstance, toRefs } from 'vue';
|
import { ref, nextTick, getCurrentInstance, ComponentInternalInstance, toRefs } from 'vue';
|
||||||
@@ -246,7 +245,7 @@ defineExpose({
|
|||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style lang="scss" scoped>
|
||||||
.residentBox {
|
.residentBox {
|
||||||
width: 385px;
|
width: 385px;
|
||||||
height: 35px;
|
height: 35px;
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
<slot v-if="$slots.default" />
|
<slot v-if="$slots.default" />
|
||||||
|
|
||||||
<div v-else class="residentBox" @click="choiceResidentFun">
|
<div v-else class="residentBox" @click="choiceResidentFun">
|
||||||
<div class="defaultBox" v-if="multipleSelection.length === 0 && props.username === null">
|
<div v-if="multipleSelection.length === 0 && props.username === null" class="defaultBox">
|
||||||
<span>请选择</span>
|
<span>请选择</span>
|
||||||
<el-icon><Search /></el-icon>
|
<el-icon><Search /></el-icon>
|
||||||
</div>
|
</div>
|
||||||
@@ -11,18 +11,18 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<el-dialog append-to-body v-model="dialog.dialogVisible" :title="dialog.dialogTitle" width="1050">
|
<el-dialog v-model="dialog.dialogVisible" :title="dialog.dialogTitle" append-to-body width="1050">
|
||||||
<nav class="flex flex-items-center mb-8">
|
<nav class="flex flex-items-center mb-8">
|
||||||
<div class="flex flex-items-center">
|
<div class="flex flex-items-center">
|
||||||
<div style="width: 70px; text-align: right; padding-right: 10px">员工姓名</div>
|
<div style="width: 70px; text-align: right; padding-right: 10px">员工姓名</div>
|
||||||
<div class="mr-5 flex-1">
|
<div class="mr-5 flex-1">
|
||||||
<el-input style="width: 170px" clearable v-model="queryParams.nickName" placeholder="请输入员工姓名" />
|
<el-input v-model="queryParams.nickName" clearable placeholder="请输入员工姓名" style="width: 170px" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex flex-items-center">
|
<div class="flex flex-items-center">
|
||||||
<div style="width: 70px; text-align: right; padding-right: 10px">手机号</div>
|
<div style="width: 70px; text-align: right; padding-right: 10px">手机号</div>
|
||||||
<div class="mr-5 flex-1">
|
<div class="mr-5 flex-1">
|
||||||
<el-input style="width: 170px" clearable v-model="queryParams.phonenumber" placeholder="请输入手机号" />
|
<el-input v-model="queryParams.phonenumber" clearable placeholder="请输入手机号" style="width: 170px" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
@@ -31,18 +31,18 @@
|
|||||||
</div>
|
</div>
|
||||||
</nav>
|
</nav>
|
||||||
<el-table ref="multipleTableRef" :data="tableData" border @selection-change="handleSelectionChange">
|
<el-table ref="multipleTableRef" :data="tableData" border @selection-change="handleSelectionChange">
|
||||||
<el-table-column type="selection" width="55" align="center" />
|
<el-table-column align="center" type="selection" width="55" />
|
||||||
<el-table-column label="序号" align="center" width="55" type="index" />
|
<el-table-column align="center" label="序号" type="index" width="55" />
|
||||||
<el-table-column label="姓名" align="center" prop="nickName" />
|
<el-table-column align="center" label="姓名" prop="nickName" />
|
||||||
<el-table-column label="性别" align="center" width="85" prop="sex">
|
<el-table-column align="center" label="性别" prop="sex" width="85">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<dict-tag :options="sys_user_sex" :value="row.sex" />
|
<dict-tag :options="sys_user_sex" :value="row.sex" />
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="角色" align="center" prop="roleName" />
|
<el-table-column align="center" label="角色" prop="roleName" />
|
||||||
<el-table-column label="当前任务数量" align="center" prop="taskCount" v-if="props.userType == 'repair'" />
|
<el-table-column v-if="props.userType == 'repair'" align="center" label="当前任务数量" prop="taskCount" />
|
||||||
<el-table-column label="手机号码" align="center" prop="phonenumber" />
|
<el-table-column align="center" label="手机号码" prop="phonenumber" />
|
||||||
<el-table-column label="状态" align="center" prop="status">
|
<el-table-column align="center" label="状态" prop="status">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<el-tag :type="row.status === '0' ? 'success' : 'danger'">{{ row.status === '0' ? '正常' : '停用' }}</el-tag>
|
<el-tag :type="row.status === '0' ? 'success' : 'danger'">{{ row.status === '0' ? '正常' : '停用' }}</el-tag>
|
||||||
</template>
|
</template>
|
||||||
@@ -52,12 +52,11 @@
|
|||||||
<template #footer>
|
<template #footer>
|
||||||
<div class="dialog-footer flex flex-items-center flex-justify-between">
|
<div class="dialog-footer flex flex-items-center flex-justify-between">
|
||||||
<pagination
|
<pagination
|
||||||
style="margin-top: 0"
|
|
||||||
layout="total, sizes, prev, pager, next, jumper"
|
|
||||||
v-show="total > 0"
|
v-show="total > 0"
|
||||||
:total="total"
|
|
||||||
v-model:page="queryParams.pageNum"
|
|
||||||
v-model:limit="queryParams.pageSize"
|
v-model:limit="queryParams.pageSize"
|
||||||
|
v-model:page="queryParams.pageNum"
|
||||||
|
:total="total"
|
||||||
|
style="margin-top: 0"
|
||||||
@pagination="getList"
|
@pagination="getList"
|
||||||
/>
|
/>
|
||||||
<div>
|
<div>
|
||||||
@@ -69,7 +68,7 @@
|
|||||||
</el-dialog>
|
</el-dialog>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script lang="ts" setup>
|
||||||
import { ResidentVO } from '@/api/system/residentReviewProcess/resident/type';
|
import { ResidentVO } from '@/api/system/residentReviewProcess/resident/type';
|
||||||
import { getUserByRoleKey } from '@/api/system/user';
|
import { getUserByRoleKey } from '@/api/system/user';
|
||||||
import { ref, watch, nextTick, getCurrentInstance, ComponentInternalInstance, toRefs } from 'vue';
|
import { ref, watch, nextTick, getCurrentInstance, ComponentInternalInstance, toRefs } from 'vue';
|
||||||
@@ -299,7 +298,7 @@ defineExpose({
|
|||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style lang="scss" scoped>
|
||||||
.residentBox {
|
.residentBox {
|
||||||
width: 385px;
|
width: 385px;
|
||||||
height: 35px;
|
height: 35px;
|
||||||
|
|||||||
@@ -1,19 +1,19 @@
|
|||||||
<template>
|
<template>
|
||||||
<slot name="default" />
|
<slot name="default" />
|
||||||
<el-dialog append-to-body v-model="dialog.dialogVisible" :title="dialog.dialogTitle" width="1050">
|
<el-dialog v-model="dialog.dialogVisible" :title="dialog.dialogTitle" append-to-body width="1050">
|
||||||
<nav class="flex flex-items-center mb-8 justify-between">
|
<nav class="flex flex-items-center mb-8 justify-between">
|
||||||
<div class="flex flex-items-center">
|
<div class="flex flex-items-center">
|
||||||
<div class="flex flex-items-center">
|
<div class="flex flex-items-center">
|
||||||
<div style="width: 50px; text-align: right; padding-right: 10px">楼栋</div>
|
<div style="width: 50px; text-align: right; padding-right: 10px">楼栋</div>
|
||||||
<div class="flex-1"></div>
|
<div class="flex-1"></div>
|
||||||
<el-select @change="handleChangeBuilding" clearable style="width: 120px" v-model="queryParams.buildingId">
|
<el-select v-model="queryParams.buildingId" clearable style="width: 120px" @change="handleChangeBuilding">
|
||||||
<el-option v-for="(item, index) in buildingList" :key="index" :label="item.buildingName" :value="item.id"></el-option>
|
<el-option v-for="(item, index) in buildingList" :key="index" :label="item.buildingName" :value="item.id"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex flex-items-center mr-20px">
|
<div class="flex flex-items-center mr-20px">
|
||||||
<div style="width: 50px; text-align: right; padding-right: 10px">单元</div>
|
<div style="width: 50px; text-align: right; padding-right: 10px">单元</div>
|
||||||
<div class="flex-1">
|
<div class="flex-1">
|
||||||
<el-select @change="handleChangeUnit" clearable style="width: 120px" v-model="queryParams.unitNoId">
|
<el-select v-model="queryParams.unitNoId" clearable style="width: 120px" @change="handleChangeUnit">
|
||||||
<el-option v-for="(item, index) in unitList" :key="index" :label="item.unitNoName" :value="item.unitNoId"></el-option>
|
<el-option v-for="(item, index) in unitList" :key="index" :label="item.unitNoName" :value="item.unitNoId"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</div>
|
</div>
|
||||||
@@ -21,13 +21,13 @@
|
|||||||
<div class="flex flex-items-center mr-20px">
|
<div class="flex flex-items-center mr-20px">
|
||||||
<div style="width: 60px; text-align: right; padding-right: 10px">房屋号</div>
|
<div style="width: 60px; text-align: right; padding-right: 10px">房屋号</div>
|
||||||
<div class="flex-1">
|
<div class="flex-1">
|
||||||
<el-input clearable @clear="handleClear" style="width: 120px" v-model="queryParams.houseNo" placeholder="请输入房屋号"></el-input>
|
<el-input v-model="queryParams.houseNo" clearable placeholder="请输入房屋号" style="width: 120px" @clear="handleClear"></el-input>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex flex-items-center mr-20px">
|
<div class="flex flex-items-center mr-20px">
|
||||||
<div style="width: 80px; text-align: right; padding-right: 10px">业主名称</div>
|
<div style="width: 80px; text-align: right; padding-right: 10px">业主名称</div>
|
||||||
<div class="flex-1">
|
<div class="flex-1">
|
||||||
<el-input clearable @clear="handleClear" style="width: 120px" v-model="queryParams.residentName" placeholder="请输入业主名称"></el-input>
|
<el-input v-model="queryParams.residentName" clearable placeholder="请输入业主名称" style="width: 120px" @clear="handleClear"></el-input>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -36,8 +36,8 @@
|
|||||||
<el-button @click="resetQuery">重置</el-button>
|
<el-button @click="resetQuery">重置</el-button>
|
||||||
</div>
|
</div>
|
||||||
</nav>
|
</nav>
|
||||||
<el-table v-loading="loading" ref="multipleTableRef" :data="tableData" border>
|
<el-table ref="multipleTableRef" v-loading="loading" :data="tableData" border>
|
||||||
<el-table-column width="55" align="center">
|
<el-table-column align="center" width="55">
|
||||||
<template #header>
|
<template #header>
|
||||||
<el-checkbox v-model="isSelectAll" :indeterminate="isIndeterminate" @change="handleSelectAllChange" />
|
<el-checkbox v-model="isSelectAll" :indeterminate="isIndeterminate" @change="handleSelectAllChange" />
|
||||||
</template>
|
</template>
|
||||||
@@ -45,55 +45,54 @@
|
|||||||
<el-checkbox :model-value="isRowSelected(scope.row)" @change="(val: boolean) => handleRowCheckChange(scope.row, val)" />
|
<el-checkbox :model-value="isRowSelected(scope.row)" @change="(val: boolean) => handleRowCheckChange(scope.row, val)" />
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="序号" align="center" width="55" type="index" />
|
<el-table-column align="center" label="序号" type="index" width="55" />
|
||||||
<el-table-column label="楼栋号" align="center">
|
<el-table-column align="center" label="楼栋号">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span>{{ scope.row.house_name ? scope.row.house_name.split('-')[0] : '---' }}</span>
|
<span>{{ scope.row.house_name ? scope.row.house_name.split('-')[0] : '---' }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="单元" align="center">
|
<el-table-column align="center" label="单元">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span>{{ scope.row.house_name ? scope.row.house_name.split('-')[1] : '---' }}</span>
|
<span>{{ scope.row.house_name ? scope.row.house_name.split('-')[1] : '---' }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="房间" align="center">
|
<el-table-column align="center" label="房间">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span>{{ scope.row.house_name ? scope.row.house_name.split('-')[2] : '---' }}</span>
|
<span>{{ scope.row.house_name ? scope.row.house_name.split('-')[2] : '---' }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="业主" align="center">
|
<el-table-column align="center" label="业主">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span>{{ scope.row.residentName ? scope.row.residentName : '---' }}</span>
|
<span>{{ scope.row.residentName ? scope.row.residentName : '---' }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="性别" align="center">
|
<el-table-column align="center" label="性别">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<dict-tag :options="sys_user_sex" :value="scope.row.gender"></dict-tag>
|
<dict-tag :options="sys_user_sex" :value="scope.row.gender"></dict-tag>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="手机号" align="center" prop="phone" />
|
<el-table-column align="center" label="手机号" prop="phone" />
|
||||||
</el-table>
|
</el-table>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<div class="dialog-footer flex flex-items-center flex-justify-between">
|
<div class="dialog-footer flex flex-items-center flex-justify-between">
|
||||||
<pagination
|
<pagination
|
||||||
style="margin-top: 0"
|
|
||||||
layout="sizes, prev, pager, next, jumper"
|
|
||||||
v-show="total > 0"
|
v-show="total > 0"
|
||||||
:total="total"
|
|
||||||
v-model:page="queryParams.pageNum"
|
|
||||||
v-model:limit="queryParams.pageSize"
|
v-model:limit="queryParams.pageSize"
|
||||||
|
v-model:page="queryParams.pageNum"
|
||||||
|
:total="total"
|
||||||
|
style="margin-top: 0"
|
||||||
@pagination="getList"
|
@pagination="getList"
|
||||||
/>
|
/>
|
||||||
<div>
|
<div>
|
||||||
<el-button @click="conback">退出</el-button>
|
<el-button @click="conback">退出</el-button>
|
||||||
<el-button type="primary" @click="confirm" :loading="loading"> 确定 </el-button>
|
<el-button :loading="loading" type="primary" @click="confirm"> 确定 </el-button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script lang="ts" setup>
|
||||||
import { getBuildinglistAPI, getHouselistAPI } from '@/api/system/house';
|
import { getBuildinglistAPI, getHouselistAPI } from '@/api/system/house';
|
||||||
import { BillUserlist, queryResidentList_holder } from '@/api/system/SdbBill';
|
import { BillUserlist, queryResidentList_holder } from '@/api/system/SdbBill';
|
||||||
import { ComponentInternalInstance, getCurrentInstance, ref, toRefs } from 'vue';
|
import { ComponentInternalInstance, getCurrentInstance, ref, toRefs } from 'vue';
|
||||||
@@ -132,7 +131,7 @@ const dialog = ref({
|
|||||||
|
|
||||||
const queryParams = ref({
|
const queryParams = ref({
|
||||||
pageNum: 1,
|
pageNum: 1,
|
||||||
pageSize: 5,
|
pageSize: 10,
|
||||||
|
|
||||||
buildingId: null,
|
buildingId: null,
|
||||||
residentName: null,
|
residentName: null,
|
||||||
@@ -356,7 +355,7 @@ defineExpose({
|
|||||||
// 重置查询条件,避免残留上次的筛选条件
|
// 重置查询条件,避免残留上次的筛选条件
|
||||||
queryParams.value = {
|
queryParams.value = {
|
||||||
pageNum: 1,
|
pageNum: 1,
|
||||||
pageSize: 5,
|
pageSize: 10,
|
||||||
buildingId: null,
|
buildingId: null,
|
||||||
residentName: null,
|
residentName: null,
|
||||||
houseNo: null,
|
houseNo: null,
|
||||||
@@ -389,7 +388,7 @@ defineExpose({
|
|||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style lang="scss" scoped>
|
||||||
.residentBox {
|
.residentBox {
|
||||||
width: 385px;
|
width: 385px;
|
||||||
height: 35px;
|
height: 35px;
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div :class="{ hidden: hidden }" class="pagination-container">
|
<div :class="{ hidden: hidden }" class="pagination-container">
|
||||||
<span class="total">共 {{ total }} 条</span>
|
<span v-if="!props.layout.includes('total')" class="total">共 {{ total }} 条</span>
|
||||||
<slot name="pageContent"></slot>
|
<slot name="pageContent"></slot>
|
||||||
<el-pagination
|
<el-pagination
|
||||||
v-model:current-page="currentPage"
|
v-model:current-page="currentPage"
|
||||||
@@ -16,7 +16,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup name="Pagination" lang="ts">
|
<script lang="ts" name="Pagination" setup>
|
||||||
import { scrollTo } from '@/utils/scroll-to';
|
import { scrollTo } from '@/utils/scroll-to';
|
||||||
import { propTypes } from '@/utils/propTypes';
|
import { propTypes } from '@/utils/propTypes';
|
||||||
|
|
||||||
|
|||||||
@@ -51,7 +51,8 @@ const whiteVillageId = [
|
|||||||
|
|
||||||
'/paidInExpenses/*',
|
'/paidInExpenses/*',
|
||||||
// 租赁管理明细
|
// 租赁管理明细
|
||||||
'/leaseManagementDetail/*'
|
'/leaseManagementDetail/*',
|
||||||
|
'/warehouse/*'
|
||||||
// '/building/list'
|
// '/building/list'
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="13">
|
<el-col :span="13">
|
||||||
<el-form-item label="活动标题" prop="title">
|
<el-form-item label="活动标题" prop="title">
|
||||||
<el-input maxlength="30" v-model.trim="form.title" placeholder="请输入活动标题" />
|
<el-input v-model.trim="form.title" maxlength="30" placeholder="请输入活动标题" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<!-- <el-col :span="11">-->
|
<!-- <el-col :span="11">-->
|
||||||
@@ -23,11 +23,13 @@
|
|||||||
<el-col :span="11">
|
<el-col :span="11">
|
||||||
<el-form-item label="报名截止日期" prop="applyDeadline">
|
<el-form-item label="报名截止日期" prop="applyDeadline">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
format="YYYY-MM-DD HH:mm:ss"
|
|
||||||
value-format="YYYY-MM-DD HH:mm:ss"
|
|
||||||
v-model="deadline"
|
v-model="deadline"
|
||||||
style="width: 100%"
|
|
||||||
:disabled-date="disabledDate"
|
:disabled-date="disabledDate"
|
||||||
|
format="YYYY-MM-DD HH:mm:ss"
|
||||||
|
placeholder="请选择报名截止日期"
|
||||||
|
style="width: 100%"
|
||||||
|
type="datetime"
|
||||||
|
value-format="YYYY-MM-DD HH:mm:ss"
|
||||||
@update:model-value="
|
@update:model-value="
|
||||||
(data) => {
|
(data) => {
|
||||||
if (data) {
|
if (data) {
|
||||||
@@ -37,8 +39,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
"
|
"
|
||||||
type="datetime"
|
|
||||||
placeholder="请选择报名截止日期"
|
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
@@ -48,7 +48,11 @@
|
|||||||
<el-form-item label="活动时间" prop="startTime">
|
<el-form-item label="活动时间" prop="startTime">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="activityTime"
|
v-model="activityTime"
|
||||||
|
end-placeholder="结束活动"
|
||||||
format="YYYY-MM-DD HH:mm:ss"
|
format="YYYY-MM-DD HH:mm:ss"
|
||||||
|
range-separator="至"
|
||||||
|
start-placeholder="开始活动"
|
||||||
|
type="datetimerange"
|
||||||
value-format="YYYY-MM-DD HH:mm:ss"
|
value-format="YYYY-MM-DD HH:mm:ss"
|
||||||
@change="
|
@change="
|
||||||
(data: string[] | null) => {
|
(data: string[] | null) => {
|
||||||
@@ -61,16 +65,12 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
"
|
"
|
||||||
type="datetimerange"
|
|
||||||
range-separator="至"
|
|
||||||
start-placeholder="开始活动"
|
|
||||||
end-placeholder="结束活动"
|
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="11">
|
<el-col :span="11">
|
||||||
<el-form-item label="活动地点" prop="address">
|
<el-form-item label="活动地点" prop="address">
|
||||||
<el-input maxlength="50" type="textarea" show-word-limit v-model.trim="form.address" placeholder="请输入活动地点" />
|
<el-input v-model.trim="form.address" maxlength="50" placeholder="请输入活动地点" show-word-limit type="textarea" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
@@ -78,8 +78,14 @@
|
|||||||
<el-col :span="13">
|
<el-col :span="13">
|
||||||
<el-form-item label="签到时间" prop="signinStartTime">
|
<el-form-item label="签到时间" prop="signinStartTime">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="SigninTime"
|
v-model="SignInTime"
|
||||||
|
:disabled="!Boolean(form.endTime)"
|
||||||
|
:disabled-date="disabledSignInDate"
|
||||||
|
end-placeholder="结束签到"
|
||||||
format="YYYY-MM-DD HH:mm:ss"
|
format="YYYY-MM-DD HH:mm:ss"
|
||||||
|
range-separator="至"
|
||||||
|
start-placeholder="开始签到"
|
||||||
|
type="datetimerange"
|
||||||
value-format="YYYY-MM-DD HH:mm:ss"
|
value-format="YYYY-MM-DD HH:mm:ss"
|
||||||
@change="
|
@change="
|
||||||
(data: string[] | null) => {
|
(data: string[] | null) => {
|
||||||
@@ -92,28 +98,24 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
"
|
"
|
||||||
type="datetimerange"
|
|
||||||
range-separator="至"
|
|
||||||
start-placeholder="开始签到"
|
|
||||||
end-placeholder="结束签到"
|
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="11">
|
<el-col :span="11">
|
||||||
<el-form-item label="主办方" prop="organizer">
|
<el-form-item label="主办方" prop="organizer">
|
||||||
<el-input maxlength="20" v-model.trim="form.organizer" placeholder="请输入主办方" />
|
<el-input v-model.trim="form.organizer" maxlength="20" placeholder="请输入主办方" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="13">
|
<el-col :span="13">
|
||||||
<el-form-item label="联系人" prop="contactName">
|
<el-form-item label="联系人" prop="contactName">
|
||||||
<el-input maxlength="20" v-model.trim="form.contactName" placeholder="请输入联系人" />
|
<el-input v-model.trim="form.contactName" maxlength="20" placeholder="请输入联系人" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="11">
|
<el-col :span="11">
|
||||||
<el-form-item label="联系方式" prop="contactPhone">
|
<el-form-item label="联系方式" prop="contactPhone">
|
||||||
<el-input maxlength="20" v-model.trim="form.contactPhone" placeholder="请输入联系方式" />
|
<el-input v-model.trim="form.contactPhone" maxlength="11" placeholder="请输入联系方式" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
@@ -121,7 +123,7 @@
|
|||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="活动名额" prop="quota">
|
<el-form-item label="活动名额" prop="quota">
|
||||||
<div class="flex items-center">
|
<div class="flex items-center">
|
||||||
<el-input-number v-model.trim.number="form.quota" :min="0" :max="99999" placeholder="0代表无限" />
|
<el-input-number v-model.trim.number="form.quota" :max="99999" :min="0" placeholder="0代表无限" />
|
||||||
<span class="ml-2 text-gray-500 text-sm" style="font-size: 12px">(填 <strong>0</strong> 代表 <u>不限制名额</u> )</span>
|
<span class="ml-2 text-gray-500 text-sm" style="font-size: 12px">(填 <strong>0</strong> 代表 <u>不限制名额</u> )</span>
|
||||||
</div>
|
</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@@ -132,17 +134,17 @@
|
|||||||
<el-form-item label="活动封面" prop="title">
|
<el-form-item label="活动封面" prop="title">
|
||||||
<el-upload
|
<el-upload
|
||||||
ref="upload"
|
ref="upload"
|
||||||
class="avatar-uploader"
|
|
||||||
:action="uploadUrl"
|
:action="uploadUrl"
|
||||||
:show-file-list="false"
|
|
||||||
:on-success="handleAvatarSuccess"
|
|
||||||
:on-exceed="handleExceed"
|
|
||||||
:before-upload="handleBeforeUpload"
|
:before-upload="handleBeforeUpload"
|
||||||
:on-error="handleError"
|
|
||||||
accept=".png,.jpg,.jpeg,.bmp"
|
|
||||||
:limit="1"
|
:limit="1"
|
||||||
|
:on-error="handleError"
|
||||||
|
:on-exceed="handleExceed"
|
||||||
|
:on-success="handleAvatarSuccess"
|
||||||
|
:show-file-list="false"
|
||||||
|
accept=".png,.jpg,.jpeg,.bmp"
|
||||||
|
class="avatar-uploader"
|
||||||
>
|
>
|
||||||
<img alt="活动封面" v-if="form.coverImage" :src="form.coverImage" class="avatar" />
|
<img v-if="form.coverImage" :src="form.coverImage" alt="活动封面" class="avatar" />
|
||||||
<el-icon v-else class="avatar-uploader-icon"><Plus /></el-icon>
|
<el-icon v-else class="avatar-uploader-icon"><Plus /></el-icon>
|
||||||
</el-upload>
|
</el-upload>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@@ -151,14 +153,14 @@
|
|||||||
<el-row>
|
<el-row>
|
||||||
<el-col>
|
<el-col>
|
||||||
<el-form-item label="招募要求" prop="requirements">
|
<el-form-item label="招募要求" prop="requirements">
|
||||||
<editor v-model="form.requirements" :height="200" :min-height="200" :read-only="false" :file-size="5" :type="'url'" />
|
<editor v-model="form.requirements" :file-size="5" :height="200" :min-height="200" :read-only="false" :type="'url'" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col>
|
<el-col>
|
||||||
<el-form-item label="活动详情" prop="content">
|
<el-form-item label="活动详情" prop="content">
|
||||||
<editor v-model="form.content" :height="300" :min-height="300" :read-only="false" :file-size="5" :type="'url'" />
|
<editor v-model="form.content" :file-size="5" :height="300" :min-height="300" :read-only="false" :type="'url'" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
@@ -187,7 +189,7 @@
|
|||||||
<el-col :span="13">
|
<el-col :span="13">
|
||||||
<el-form-item label="签到时间" prop="signinStartTime">
|
<el-form-item label="签到时间" prop="signinStartTime">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="SigninTime"
|
v-model="SignInTime"
|
||||||
type="datetimerange"
|
type="datetimerange"
|
||||||
format="YYYY-MM-DD HH:mm:ss"
|
format="YYYY-MM-DD HH:mm:ss"
|
||||||
value-format="YYYY-MM-DD HH:mm:ss"
|
value-format="YYYY-MM-DD HH:mm:ss"
|
||||||
@@ -238,7 +240,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script lang="ts" setup>
|
||||||
import editor from '@/components/Editor/index.vue';
|
import editor from '@/components/Editor/index.vue';
|
||||||
import { ref } from 'vue';
|
import { ref } from 'vue';
|
||||||
import PageHeader from '@/components/Pageheader/index.vue';
|
import PageHeader from '@/components/Pageheader/index.vue';
|
||||||
@@ -333,8 +335,8 @@ const rules = {
|
|||||||
contactPhone: [
|
contactPhone: [
|
||||||
{ required: true, message: '请输入联系方式', trigger: 'blur' },
|
{ required: true, message: '请输入联系方式', trigger: 'blur' },
|
||||||
{
|
{
|
||||||
validator: (_: any, value: string | number) => validator(value, 'Character'),
|
validator: (_: any, value: string | number) => validator(value, 'phone'),
|
||||||
message: '请输入中文,字母,数字等字符',
|
message: '请输入联系方式',
|
||||||
trigger: 'blur'
|
trigger: 'blur'
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
@@ -348,12 +350,16 @@ const disabledDate = (time: string) => {
|
|||||||
const selectDate = new Date(time);
|
const selectDate = new Date(time);
|
||||||
return selectDate.getTime() < today.getTime();
|
return selectDate.getTime() < today.getTime();
|
||||||
};
|
};
|
||||||
|
function disabledSignInDate(time: string) {
|
||||||
|
const selectDate = new Date(time);
|
||||||
|
const today = new Date(form.value.endTime);
|
||||||
|
return selectDate.getTime() > today.getTime();
|
||||||
|
}
|
||||||
const userid = ref();
|
const userid = ref();
|
||||||
// 报名截止日期
|
// 报名截止日期
|
||||||
const deadline = ref([]);
|
const deadline = ref([]);
|
||||||
// 有效签到时间
|
// 有效签到时间
|
||||||
const SigninTime = ref([]);
|
const SignInTime = ref([]);
|
||||||
// 活动时间
|
// 活动时间
|
||||||
const activityTime = ref([]);
|
const activityTime = ref([]);
|
||||||
|
|
||||||
@@ -553,7 +559,7 @@ function init() {
|
|||||||
...res.data
|
...res.data
|
||||||
};
|
};
|
||||||
activityTime.value = [res.data.startTime, res.data.endTime];
|
activityTime.value = [res.data.startTime, res.data.endTime];
|
||||||
SigninTime.value = [res.data.signinStartTime, res.data.signinEndTime];
|
SignInTime.value = [res.data.signinStartTime, res.data.signinEndTime];
|
||||||
deadline.value = [res.data.applyDeadline];
|
deadline.value = [res.data.applyDeadline];
|
||||||
|
|
||||||
// if (res.data?.SignInfo !== null) {
|
// if (res.data?.SignInfo !== null) {
|
||||||
@@ -565,7 +571,7 @@ function init() {
|
|||||||
// 提交
|
// 提交
|
||||||
const submitForm = (status: string) => {
|
const submitForm = (status: string) => {
|
||||||
form.value.status = status;
|
form.value.status = status;
|
||||||
console.log(form.value);
|
|
||||||
// if (!isSignin.value) {
|
// if (!isSignin.value) {
|
||||||
// form.value.SignInfo = null;
|
// form.value.SignInfo = null;
|
||||||
// }
|
// }
|
||||||
@@ -611,7 +617,7 @@ onUnmounted(() => {
|
|||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style lang="scss" scoped>
|
||||||
.SignMapbox {
|
.SignMapbox {
|
||||||
height: 500px;
|
height: 500px;
|
||||||
width: 500px;
|
width: 500px;
|
||||||
|
|||||||
@@ -4,9 +4,9 @@
|
|||||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||||
<div v-show="showSearch" class="mb-[10px]">
|
<div v-show="showSearch" class="mb-[10px]">
|
||||||
<el-card shadow="hover">
|
<el-card shadow="hover">
|
||||||
<el-form ref="queryFormRef" :model="queryParams" @submit.prevent="handleQuery" :inline="true">
|
<el-form ref="queryFormRef" :inline="true" :model="queryParams" @submit.prevent="handleQuery">
|
||||||
<el-form-item label="名称" prop="name">
|
<el-form-item label="名称" prop="name">
|
||||||
<el-input maxlength="20" v-model="queryParams.name" placeholder="请输入名称" clearable @keyup.enter="handleQuery" />
|
<el-input v-model="queryParams.name" clearable maxlength="20" placeholder="请输入名称" @keyup.enter="handleQuery" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" @click="handleQuery">搜索</el-button>
|
<el-button type="primary" @click="handleQuery">搜索</el-button>
|
||||||
@@ -24,8 +24,8 @@
|
|||||||
:disable-delete="multiple"
|
:disable-delete="multiple"
|
||||||
:disable-edit="single"
|
:disable-edit="single"
|
||||||
:show-add="checkPermi(['banner:banner:add'])"
|
:show-add="checkPermi(['banner:banner:add'])"
|
||||||
:show-edit="false"
|
:show-delete="checkPermi(['banner:banner:remove'])"
|
||||||
:show-delete="false"
|
:show-edit="checkPermi(['banner:banner:edit'])"
|
||||||
@update:add="handleAdd"
|
@update:add="handleAdd"
|
||||||
@update:edit="handleUpdate()"
|
@update:edit="handleUpdate()"
|
||||||
@update:delete="handleDelete()"
|
@update:delete="handleDelete()"
|
||||||
@@ -33,49 +33,49 @@
|
|||||||
</el-row>
|
</el-row>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<el-table v-loading="loading" border :data="bannerList" @selection-change="handleSelectionChange">
|
<el-table v-loading="loading" :data="bannerList" border @selection-change="handleSelectionChange">
|
||||||
<el-table-column type="selection" width="55" align="center" />
|
<el-table-column align="center" type="selection" width="55" />
|
||||||
<el-table-column label="Banner缩略图" align="center" prop="id">
|
<el-table-column align="center" label="Banner缩略图" prop="id">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-image
|
<el-image
|
||||||
v-if="scope.row.url && scope.row.url.includes('http')"
|
v-if="scope.row.url && scope.row.url.includes('http')"
|
||||||
:src="scope.row.url"
|
|
||||||
:preview-src-list="[scope.row.url]"
|
:preview-src-list="[scope.row.url]"
|
||||||
style="width: 40px; height: 40px; border-radius: 4px; margin-right: 5px"
|
:src="scope.row.url"
|
||||||
fit="cover"
|
fit="cover"
|
||||||
preview-teleported
|
preview-teleported
|
||||||
|
style="width: 40px; height: 40px; border-radius: 4px; margin-right: 5px"
|
||||||
/>
|
/>
|
||||||
<span v-else>暂时没有</span>
|
<span v-else>暂时没有</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="名称" align="center" prop="name" />
|
<el-table-column align="center" label="名称" prop="name" />
|
||||||
<el-table-column label="状态" align="center" prop="status">
|
<el-table-column align="center" label="状态" prop="status">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<!-- 0启用 1停用 -->
|
<!-- 0启用 1停用 -->
|
||||||
<el-switch
|
<el-switch
|
||||||
@change="(val: string) => handleSwitch(scope.row.id, val)"
|
|
||||||
inactive-value="1"
|
|
||||||
active-value="0"
|
|
||||||
v-model="scope.row.status"
|
v-model="scope.row.status"
|
||||||
|
active-value="0"
|
||||||
|
inactive-value="1"
|
||||||
|
@change="(val: string) => handleSwitch(scope.row.id, val)"
|
||||||
></el-switch>
|
></el-switch>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="排序" align="center" prop="byOrder" />
|
<el-table-column align="center" label="排序" prop="byOrder" />
|
||||||
<el-table-column label="添加时间" align="center" prop="createTime" />
|
<el-table-column align="center" label="添加时间" prop="createTime" />
|
||||||
<el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width">
|
<el-table-column align="center" class-name="small-padding fixed-width" fixed="right" label="操作">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button link type="primary" @click="handleUpdate(scope.row)" v-has-permi="['banner:banner:edit']">修改</el-button>
|
<el-button v-has-permi="['banner:banner:edit']" link type="primary" @click="handleUpdate(scope.row)">修改</el-button>
|
||||||
<el-button link type="primary" @click="handleDelete(scope.row)" v-has-permi="['banner:banner:remove']">删除</el-button>
|
<el-button v-has-permi="['banner:banner:remove']" link type="primary" @click="handleDelete(scope.row)">删除</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</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" v-model:limit="queryParams.pageSize" v-model:page="queryParams.pageNum" :total="total" @pagination="getList" />
|
||||||
</el-card>
|
</el-card>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup name="Banner" lang="ts">
|
<script lang="ts" name="Banner" setup>
|
||||||
import { listBanner, delBanner, switchBanner } from '@/api/system/Banner';
|
import { listBanner, delBanner, switchBanner } from '@/api/system/Banner';
|
||||||
import { BannerVO, BannerQuery, BannerForm } from '@/api/system/Banner/type';
|
import { BannerVO, BannerQuery, BannerForm } from '@/api/system/Banner/type';
|
||||||
import { checkPermi } from '@/utils/permission';
|
import { checkPermi } from '@/utils/permission';
|
||||||
|
|||||||
@@ -52,10 +52,10 @@
|
|||||||
<el-image
|
<el-image
|
||||||
v-for="(item, index) in problemImageUrlList"
|
v-for="(item, index) in problemImageUrlList"
|
||||||
:key="index"
|
:key="index"
|
||||||
:src="item"
|
|
||||||
:preview-teleported="true"
|
|
||||||
:initial-index="index"
|
:initial-index="index"
|
||||||
:preview-src-list="problemImageUrlList"
|
:preview-src-list="problemImageUrlList"
|
||||||
|
:preview-teleported="true"
|
||||||
|
:src="item"
|
||||||
style="width: 120px; height: 120px; margin-right: 10px"
|
style="width: 120px; height: 120px; margin-right: 10px"
|
||||||
></el-image>
|
></el-image>
|
||||||
</div>
|
</div>
|
||||||
@@ -73,27 +73,27 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</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 ref="formRef" :inline="false" :model="form" :rules="rules" class="m-auto" label-width="100px">
|
||||||
<el-form-item label="处理状态" prop="status">
|
<el-form-item label="处理状态" prop="status">
|
||||||
<el-radio-group v-model="form.status">
|
<el-radio-group v-model="form.status">
|
||||||
<el-radio value="1">处理完成</el-radio>
|
<el-radio value="1">处理完成</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="处理人员" prop="handleId">
|
<el-form-item label="处理人员" prop="handleId">
|
||||||
<repairUser
|
<complainUser
|
||||||
title-name="选择处理人员"
|
|
||||||
:is-multiple="false"
|
:is-multiple="false"
|
||||||
:username="formInfo.handleName"
|
|
||||||
:userid="formInfo.handleId"
|
:userid="formInfo.handleId"
|
||||||
|
:username="formInfo.handleName"
|
||||||
returnvalue="*"
|
returnvalue="*"
|
||||||
|
title-name="选择处理人员"
|
||||||
@change="handleChange"
|
@change="handleChange"
|
||||||
></repairUser>
|
></complainUser>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="处理描述" prop="handleContent">
|
<el-form-item label="处理描述" prop="handleContent">
|
||||||
<el-input maxlength="200" show-word-limit type="textarea" :rows="5" v-model.trim="form.handleContent"></el-input>
|
<el-input v-model.trim="form.handleContent" :rows="5" maxlength="200" show-word-limit type="textarea"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" v-if="form.status !== '0'" @click="submitForm">提交</el-button>
|
<el-button v-if="form.status !== '0'" type="primary" @click="submitForm">提交</el-button>
|
||||||
<el-button @click="handleBack">返回</el-button>
|
<el-button @click="handleBack">返回</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
@@ -103,10 +103,10 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script lang="ts" setup>
|
||||||
import DictTag from '@/components/DictTag/index.vue';
|
import DictTag from '@/components/DictTag/index.vue';
|
||||||
import { ref } from 'vue';
|
import { ref } from 'vue';
|
||||||
import repairUser from '@/components/Holder/repairUser.vue';
|
import complainUser from '@/components/Holder/complainUser.vue';
|
||||||
import PageHeader from '@/components/Pageheader/index.vue';
|
import PageHeader from '@/components/Pageheader/index.vue';
|
||||||
import { getComplaint, updateComplaint } from '@/api/system/Complaint';
|
import { getComplaint, updateComplaint } from '@/api/system/Complaint';
|
||||||
import { listComplaintType } from '@/api/system/ComplainType';
|
import { listComplaintType } from '@/api/system/ComplainType';
|
||||||
@@ -143,7 +143,7 @@ const form = ref({
|
|||||||
});
|
});
|
||||||
const rules = {
|
const rules = {
|
||||||
status: [{ required: true, message: '选择投诉处理状态', trigger: 'blur' }],
|
status: [{ required: true, message: '选择投诉处理状态', trigger: 'blur' }],
|
||||||
handleContent: [{ required: true, message: '投诉处理内容不能为空', trigger: 'blur' }],
|
handleContent: [{ required: false, message: '投诉处理内容不能为空', trigger: 'blur' }],
|
||||||
handleId: [{ required: true, message: '投诉处理人员不能为空', trigger: 'blur' }]
|
handleId: [{ required: true, message: '投诉处理人员不能为空', trigger: 'blur' }]
|
||||||
};
|
};
|
||||||
const userid = ref();
|
const userid = ref();
|
||||||
@@ -155,7 +155,7 @@ async function init() {
|
|||||||
getComplaint(userid.value).then((res) => {
|
getComplaint(userid.value).then((res) => {
|
||||||
formInfo.value = {
|
formInfo.value = {
|
||||||
...formInfo.value,
|
...formInfo.value,
|
||||||
...res.data,
|
...res.data
|
||||||
};
|
};
|
||||||
form.value = {
|
form.value = {
|
||||||
...form.value,
|
...form.value,
|
||||||
@@ -210,7 +210,7 @@ function handleBack() {
|
|||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style lang="scss" scoped>
|
||||||
.ResidentMainBox {
|
.ResidentMainBox {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
|||||||
@@ -4,9 +4,9 @@
|
|||||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||||
<div v-show="showSearch" class="mb-[10px]">
|
<div v-show="showSearch" class="mb-[10px]">
|
||||||
<el-card shadow="hover">
|
<el-card shadow="hover">
|
||||||
<el-form ref="queryFormRef" label-width="100px" :model="queryParams" :inline="true">
|
<el-form ref="queryFormRef" :inline="true" :model="queryParams" label-width="100px">
|
||||||
<el-form-item label="投诉类型名称" prop="name">
|
<el-form-item label="投诉类型名称" prop="name">
|
||||||
<el-input maxlength="20" v-model.trim="queryParams.name" placeholder="请输入投诉类型名称" clearable @keyup.enter="handleQuery" />
|
<el-input v-model.trim="queryParams.name" clearable maxlength="20" placeholder="请输入投诉类型名称" @keyup.enter="handleQuery" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" @click="handleQuery">搜索</el-button>
|
<el-button type="primary" @click="handleQuery">搜索</el-button>
|
||||||
@@ -17,15 +17,15 @@
|
|||||||
</div>
|
</div>
|
||||||
</transition>
|
</transition>
|
||||||
|
|
||||||
<el-card shadow="never" class="flex-1">
|
<el-card class="flex-1" shadow="never">
|
||||||
<template #header>
|
<template #header>
|
||||||
<el-row :gutter="10" class="mb8">
|
<el-row :gutter="10" class="mb8">
|
||||||
<right-toolbar
|
<right-toolbar
|
||||||
:disable-delete="multiple"
|
:disable-delete="multiple"
|
||||||
:disable-edit="single"
|
:disable-edit="single"
|
||||||
:show-add="checkPermi(['complaintType:complaintType:add'])"
|
:show-add="checkPermi(['complaintType:complaintType:add'])"
|
||||||
:show-edit="false"
|
:show-delete="checkPermi(['complaintType:complaintType:remove'])"
|
||||||
:show-delete="false"
|
:show-edit="checkPermi(['complaintType:complaintType:edit'])"
|
||||||
@update:add="handleAdd"
|
@update:add="handleAdd"
|
||||||
@update:edit="handleUpdate()"
|
@update:edit="handleUpdate()"
|
||||||
@update:delete="handleDelete()"
|
@update:delete="handleDelete()"
|
||||||
@@ -33,38 +33,38 @@
|
|||||||
</el-row>
|
</el-row>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<el-table v-loading="loading" border :data="complaintTypeList" @selection-change="handleSelectionChange">
|
<el-table v-loading="loading" :data="complaintTypeList" border @selection-change="handleSelectionChange">
|
||||||
<el-table-column type="selection" width="55" align="center" />
|
<el-table-column align="center" type="selection" width="55" />
|
||||||
<el-table-column label="投诉类型名称" align="center" prop="name" />
|
<el-table-column align="center" label="投诉类型名称" prop="name" />
|
||||||
<el-table-column label="状态" align="center" prop="status">
|
<el-table-column align="center" label="状态" prop="status">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-switch
|
<el-switch
|
||||||
@change="(val: string) => handleChange(val, scope.row)"
|
|
||||||
v-model="scope.row.status"
|
v-model="scope.row.status"
|
||||||
active-value="0"
|
active-value="0"
|
||||||
inactive-value="1"
|
inactive-value="1"
|
||||||
|
@change="(val: string) => handleChange(val, scope.row)"
|
||||||
></el-switch>
|
></el-switch>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="创建时间" align="center" prop="createTime" width="180">
|
<el-table-column align="center" label="创建时间" prop="createTime" width="180">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>
|
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width">
|
<el-table-column align="center" class-name="small-padding fixed-width" fixed="right" label="操作">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button link type="primary" @click="handleUpdate(scope.row)" v-has-permi="['complaintType:complaintType:edit']">编辑</el-button>
|
<el-button v-has-permi="['complaintType:complaintType:edit']" link type="primary" @click="handleUpdate(scope.row)">编辑</el-button>
|
||||||
<el-button link type="primary" @click="handleDelete(scope.row)" v-has-permi="['complaintType:complaintType:remove']">删除</el-button>
|
<el-button v-has-permi="['complaintType:complaintType:remove']" link type="primary" @click="handleDelete(scope.row)">删除</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</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" v-model:limit="queryParams.pageSize" v-model:page="queryParams.pageNum" :total="total" @pagination="getList" />
|
||||||
</el-card>
|
</el-card>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup name="ComplaintType" lang="ts">
|
<script lang="ts" name="ComplaintType" setup>
|
||||||
import { listComplaintType, delComplaintType, updateComplaintType } from '@/api/system/ComplainType';
|
import { listComplaintType, delComplaintType, updateComplaintType } from '@/api/system/ComplainType';
|
||||||
import { ComplaintTypeVO, ComplaintTypeQuery, ComplaintTypeForm } from '@/api/system/ComplainType/type';
|
import { ComplaintTypeVO, ComplaintTypeQuery, ComplaintTypeForm } from '@/api/system/ComplainType/type';
|
||||||
import { checkPermi } from '@/utils/permission';
|
import { checkPermi } from '@/utils/permission';
|
||||||
|
|||||||
@@ -4,12 +4,12 @@
|
|||||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||||
<div v-show="showSearch" class="mb-[10px]">
|
<div v-show="showSearch" class="mb-[10px]">
|
||||||
<el-card shadow="hover">
|
<el-card shadow="hover">
|
||||||
<el-form label-width="120px" ref="queryFormRef" :rules="rules" :model="queryParams" :inline="true">
|
<el-form ref="queryFormRef" :inline="true" :model="queryParams" :rules="rules" label-width="120px">
|
||||||
<el-form-item label="申请人姓名" prop="applyName">
|
<el-form-item label="申请人姓名" prop="applyName">
|
||||||
<el-input maxlength="20" v-model.trim="queryParams.applyName" placeholder="请输入申请人姓名" clearable @keyup.enter="handleQuery" />
|
<el-input v-model.trim="queryParams.applyName" clearable maxlength="20" placeholder="请输入申请人姓名" @keyup.enter="handleQuery" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="装修验收结果">
|
<el-form-item label="装修验收结果">
|
||||||
<el-select clearable @clear="handleClear" v-model="queryParams.inspectionResult" placeholder="请选择装修验收结果" style="width: 240px">
|
<el-select v-model="queryParams.inspectionResult" clearable placeholder="请选择装修验收结果" style="width: 240px" @clear="handleClear">
|
||||||
<el-option v-for="item in com_decoration_status" :key="item.value" :label="item.label" :value="item.value" />
|
<el-option v-for="item in com_decoration_status" :key="item.value" :label="item.label" :value="item.value" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@@ -29,8 +29,8 @@
|
|||||||
:disable-delete="multiple"
|
:disable-delete="multiple"
|
||||||
:disable-edit="single"
|
:disable-edit="single"
|
||||||
:show-add="checkPermi(['decoration:decoration:add'])"
|
:show-add="checkPermi(['decoration:decoration:add'])"
|
||||||
:show-edit="checkPermi(['decoration:decoration:edit'])"
|
|
||||||
:show-delete="checkPermi(['decoration:decoration:remove'])"
|
:show-delete="checkPermi(['decoration:decoration:remove'])"
|
||||||
|
:show-edit="checkPermi(['decoration:decoration:edit'])"
|
||||||
@update:add="handleAdd"
|
@update:add="handleAdd"
|
||||||
@update:edit="handleUpdate()"
|
@update:edit="handleUpdate()"
|
||||||
@update:delete="handleDelete()"
|
@update:delete="handleDelete()"
|
||||||
@@ -38,91 +38,91 @@
|
|||||||
</el-row>
|
</el-row>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<el-table v-loading="loading" border :data="decorationList" @selection-change="handleSelectionChange">
|
<el-table v-loading="loading" :data="decorationList" border @selection-change="handleSelectionChange">
|
||||||
<el-table-column type="selection" width="55" align="center" />
|
<el-table-column align="center" type="selection" width="55" />
|
||||||
<el-table-column label="小区名称" align="center" prop="villageName" />
|
<el-table-column align="center" label="小区名称" prop="villageName" />
|
||||||
<el-table-column label="房屋号" show-overflow-tooltip align="center" prop="houseName" />
|
<el-table-column align="center" label="房屋号" prop="houseName" show-overflow-tooltip />
|
||||||
<el-table-column label="申请人姓名" align="center" prop="applyName" />
|
<el-table-column align="center" label="申请人姓名" prop="applyName" />
|
||||||
<el-table-column label="装修公司" align="center" prop="decorationCompany" />
|
<el-table-column align="center" label="装修公司" prop="decorationCompany" />
|
||||||
<el-table-column label="装修内容" align="center" prop="decorationContent" />
|
<el-table-column align="center" label="装修内容" prop="decorationContent" />
|
||||||
<el-table-column label="装修押金" width="120" align="center" prop="decorationDeposit" />
|
<el-table-column align="center" label="申请时间" prop="createTime" width="170" />
|
||||||
<el-table-column label="验收结果" width="100" align="center" prop="inspectionResult">
|
<el-table-column align="center" label="装修押金(元)" prop="decorationDeposit" width="120" />
|
||||||
|
<el-table-column align="center" label="验收结果" prop="inspectionResult" width="100">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<dict-tag :options="com_decoration_status" :value="Number(scope.row.inspectionResult)"></dict-tag>
|
<dict-tag :options="com_decoration_status" :value="Number(scope.row.inspectionResult)"></dict-tag>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="申请时间" width="170" align="center" prop="createTime" />
|
<el-table-column align="center" label="验收人" prop="inspectionName" />
|
||||||
<el-table-column label="验收人" align="center" prop="inspectionName" />
|
<el-table-column align="center" class-name="small-padding fixed-width" fixed="right" label="操作" width="170">
|
||||||
<el-table-column label="操作" width="170" align="center" fixed="right" class-name="small-padding fixed-width">
|
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button
|
<el-button
|
||||||
|
v-if="scope.row.inspectionResult !== '1'"
|
||||||
|
v-has-permi="['decoration:decoration:edit']"
|
||||||
link
|
link
|
||||||
type="primary"
|
type="primary"
|
||||||
v-if="scope.row.inspectionResult !== '1'"
|
|
||||||
@click="handleInspection(scope.row, EditType.Add, '验收')"
|
@click="handleInspection(scope.row, EditType.Add, '验收')"
|
||||||
v-has-permi="['decoration:decoration:edit']"
|
|
||||||
>验收</el-button
|
>验收</el-button
|
||||||
>
|
>
|
||||||
<el-button
|
<el-button
|
||||||
|
v-else
|
||||||
|
v-has-permi="['decoration:decoration:query']"
|
||||||
link
|
link
|
||||||
type="primary"
|
type="primary"
|
||||||
v-else
|
|
||||||
@click="handleInspection(scope.row, EditType.Detail, '详情')"
|
@click="handleInspection(scope.row, EditType.Detail, '详情')"
|
||||||
v-has-permi="['decoration:decoration:query']"
|
|
||||||
>详情</el-button
|
>详情</el-button
|
||||||
>
|
>
|
||||||
<el-button link type="primary" @click="handleUpdate(scope.row)" v-has-permi="['decoration:decoration:edit']">编辑</el-button>
|
<el-button v-has-permi="['decoration:decoration:edit']" link type="primary" @click="handleUpdate(scope.row)">编辑</el-button>
|
||||||
<el-button link type="primary" @click="handleDelete(scope.row)" v-has-permi="['decoration:decoration:remove']">删除</el-button>
|
<el-button v-has-permi="['decoration:decoration:remove']" link type="primary" @click="handleDelete(scope.row)">删除</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</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" v-model:limit="queryParams.pageSize" v-model:page="queryParams.pageNum" :total="total" @pagination="getList" />
|
||||||
</el-card>
|
</el-card>
|
||||||
|
|
||||||
<el-dialog :title="dialog.title" v-model="dialog.visible" width="500px" append-to-body>
|
<el-dialog v-model="dialog.visible" :title="dialog.title" append-to-body width="500px">
|
||||||
<el-form ref="decorationFormRef" :model="form" :rules="rules" label-width="120px">
|
<el-form ref="decorationFormRef" :model="form" :rules="rules" label-width="120px">
|
||||||
<div v-if="isEditComputed">
|
<div v-if="isEditComputed">
|
||||||
<el-form-item label="小区名称" prop="villageName">
|
<el-form-item label="小区名称" prop="villageName">
|
||||||
<el-input :disabled="isEditComputed" v-model="form.villageName" />
|
<el-input v-model="form.villageName" :disabled="isEditComputed" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="房屋号" prop="houseName">
|
<el-form-item label="房屋号" prop="houseName">
|
||||||
<el-input :disabled="isEditComputed" v-model="form.houseName" />
|
<el-input v-model="form.houseName" :disabled="isEditComputed" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="申请人" prop="applyName">
|
<el-form-item label="申请人" prop="applyName">
|
||||||
<el-input :disabled="isEditComputed" v-model="form.applyName" />
|
<el-input v-model="form.applyName" :disabled="isEditComputed" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="装修公司" prop="decorationCompany">
|
<el-form-item label="装修公司" prop="decorationCompany">
|
||||||
<el-input :disabled="isEditComputed" v-model="form.decorationCompany" />
|
<el-input v-model="form.decorationCompany" :disabled="isEditComputed" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="装修内容" prop="decorationContent">
|
<el-form-item label="装修内容" prop="decorationContent">
|
||||||
<el-input :disabled="isEditComputed" v-model="form.decorationContent" />
|
<el-input v-model="form.decorationContent" :disabled="isEditComputed" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="装修押金" prop="decorationDeposit">
|
<el-form-item label="装修押金" prop="decorationDeposit">
|
||||||
<el-input :disabled="isEditComputed" v-model="form.decorationDeposit" />
|
<el-input v-model="form.decorationDeposit" :disabled="isEditComputed" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</div>
|
</div>
|
||||||
<el-form-item label="验收结果" :prop="isEditComputed ? '' : 'inspectionResult'">
|
<el-form-item :prop="isEditComputed ? '' : 'inspectionResult'" label="验收结果">
|
||||||
<el-select :disabled="isEditComputed" v-model="form.inspectionResult" placeholder="请选择装修验收结果">
|
<el-select v-model="form.inspectionResult" :disabled="isEditComputed" placeholder="请选择装修验收结果">
|
||||||
<el-option v-for="item in com_decoration_status" :key="item.value" :label="item.label" :value="item.value" />
|
<el-option v-for="item in com_decoration_status" :key="item.value" :label="item.label" :value="item.value" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="验收人" :prop="isEditComputed ? '' : 'inspectionName'">
|
<el-form-item :prop="isEditComputed ? '' : 'inspectionName'" label="验收人">
|
||||||
<el-input :disabled="isEditComputed" placeholder="请输入验收人" v-model.trim="form.inspectionName" />
|
<el-input v-model.trim="form.inspectionName" :disabled="isEditComputed" placeholder="请输入验收人" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="备注" prop="remark">
|
<el-form-item label="备注" prop="remark">
|
||||||
<el-input
|
<el-input
|
||||||
:disabled="isEditComputed"
|
|
||||||
v-model="form.remark"
|
v-model="form.remark"
|
||||||
type="textarea"
|
:disabled="isEditComputed"
|
||||||
maxlength="200"
|
|
||||||
show-word-limit
|
|
||||||
:placeholder="isEditComputed ? '' : '请输入'"
|
:placeholder="isEditComputed ? '' : '请输入'"
|
||||||
:rows="5"
|
:rows="5"
|
||||||
|
maxlength="200"
|
||||||
|
show-word-limit
|
||||||
|
type="textarea"
|
||||||
></el-input>
|
></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
<template #footer v-if="!isEditComputed">
|
<template v-if="!isEditComputed" #footer>
|
||||||
<div class="dialog-footer">
|
<div class="dialog-footer">
|
||||||
<el-button :loading="buttonLoading" type="primary" @click="submitForm">确 定</el-button>
|
<el-button :loading="buttonLoading" type="primary" @click="submitForm">确 定</el-button>
|
||||||
<el-button @click="cancel">取 消</el-button>
|
<el-button @click="cancel">取 消</el-button>
|
||||||
@@ -132,7 +132,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup name="Decoration" lang="ts">
|
<script lang="ts" name="Decoration" setup>
|
||||||
import { listDecoration, delDecoration, updateDecoration } from '@/api/system/Decoration';
|
import { listDecoration, delDecoration, updateDecoration } from '@/api/system/Decoration';
|
||||||
import { DecorationVO, DecorationQuery, DecorationForm } from '@/api/system/Decoration/type';
|
import { DecorationVO, DecorationQuery, DecorationForm } from '@/api/system/Decoration/type';
|
||||||
import { checkPermi } from '@/utils/permission';
|
import { checkPermi } from '@/utils/permission';
|
||||||
|
|||||||
@@ -4,9 +4,9 @@
|
|||||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||||
<div v-show="showSearch" class="mb-[10px]">
|
<div v-show="showSearch" class="mb-[10px]">
|
||||||
<el-card shadow="hover">
|
<el-card shadow="hover">
|
||||||
<el-form ref="queryFormRef" :model="queryParams" @submit.prevent="handleQuery" :inline="true">
|
<el-form ref="queryFormRef" :inline="true" :model="queryParams" @submit.prevent="handleQuery">
|
||||||
<el-form-item label="求助人" prop="seekName">
|
<el-form-item label="求助人" prop="seekName">
|
||||||
<el-input maxlength="20" v-model="queryParams.seekName" placeholder="请输入求助人" clearable @keyup.enter="handleQuery" />
|
<el-input v-model="queryParams.seekName" clearable maxlength="20" placeholder="请输入求助人" @keyup.enter="handleQuery" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" @click="handleQuery">搜索</el-button>
|
<el-button type="primary" @click="handleQuery">搜索</el-button>
|
||||||
@@ -24,8 +24,8 @@
|
|||||||
:disable-delete="multiple"
|
:disable-delete="multiple"
|
||||||
:disable-edit="single"
|
:disable-edit="single"
|
||||||
:show-add="checkPermi(['handleLog:handleLog:add'])"
|
:show-add="checkPermi(['handleLog:handleLog:add'])"
|
||||||
:show-edit="checkPermi(['handleLog:handleLog:edit'])"
|
|
||||||
:show-delete="checkPermi(['handleLog:handleLog:remove'])"
|
:show-delete="checkPermi(['handleLog:handleLog:remove'])"
|
||||||
|
:show-edit="checkPermi(['handleLog:handleLog:edit'])"
|
||||||
@update:add="handleAdd"
|
@update:add="handleAdd"
|
||||||
@update:edit="handleUpdate()"
|
@update:edit="handleUpdate()"
|
||||||
@update:delete="handleDelete()"
|
@update:delete="handleDelete()"
|
||||||
@@ -33,46 +33,46 @@
|
|||||||
</el-row>
|
</el-row>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<el-table v-loading="loading" border :data="handleLogList" @selection-change="handleSelectionChange">
|
<el-table v-loading="loading" :data="handleLogList" border @selection-change="handleSelectionChange">
|
||||||
<el-table-column type="selection" width="55" align="center" />
|
<el-table-column align="center" type="selection" width="55" />
|
||||||
<el-table-column label="办事内容" align="center" prop="content">
|
<el-table-column align="center" label="办事内容" prop="content">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<div class="color-blue moreRowEllipsis" v-html="scope.row.content"></div>
|
<div class="color-blue moreRowEllipsis" v-html="scope.row.content"></div>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="求助人" align="center" prop="seekName" width="120" />
|
<el-table-column align="center" label="求助人" prop="seekName" width="120" />
|
||||||
<el-table-column label="联系方式" align="center" prop="phone" width="120" />
|
<el-table-column align="center" label="联系方式" prop="phone" width="120" />
|
||||||
<el-table-column label="办事地点" align="center" prop="handlePosition" />
|
<el-table-column align="center" label="办事时间" prop="handleTime" width="120">
|
||||||
<el-table-column label="办事时间" align="center" prop="handleTime" width="120">
|
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span>{{ parseTime(scope.row.handleTime, '{y}-{m}-{d}') }}</span>
|
<span>{{ parseTime(scope.row.handleTime, '{y}-{m}-{d}') }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="附属材料" width="100" align="center" prop="handlePosition">
|
<el-table-column align="center" label="办事地点" prop="handlePosition" />
|
||||||
|
<el-table-column align="center" label="附属材料" prop="handlePosition" width="100">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button type="primary" v-if="scope.row.handleLogFileList?.length > 0" @click="openDialog(scope.row)" link>点击查看</el-button>
|
<el-button v-if="scope.row.handleLogFileList?.length > 0" link type="primary" @click="openDialog(scope.row)">点击查看</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="操作" width="200" align="center" fixed="right" class-name="small-padding fixed-width">
|
<el-table-column align="center" class-name="small-padding fixed-width" fixed="right" label="操作" width="200">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button link type="primary" @click="handleUpdate(scope.row)" v-has-permi="['handleLog:handleLog:edit']">编辑</el-button>
|
<el-button v-has-permi="['handleLog:handleLog:edit']" link type="primary" @click="handleUpdate(scope.row)">编辑</el-button>
|
||||||
<el-button link type="primary" @click="handleDelete(scope.row)" v-has-permi="['handleLog:handleLog:remove']">删除</el-button>
|
<el-button v-has-permi="['handleLog:handleLog:remove']" link type="primary" @click="handleDelete(scope.row)">删除</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</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" v-model:limit="queryParams.pageSize" v-model:page="queryParams.pageNum" :total="total" @pagination="getList" />
|
||||||
<!-- 添加或修改办事记录对话框 -->
|
<!-- 添加或修改办事记录对话框 -->
|
||||||
<el-dialog :title="dialog.title" v-model="dialog.visible" width="500px" append-to-body>
|
<el-dialog v-model="dialog.visible" :title="dialog.title" append-to-body width="500px">
|
||||||
<ul class="ulBox" v-if="dialog.files.length > 0">
|
<ul v-if="dialog.files.length > 0" class="ulBox">
|
||||||
<li @click="handleDown(item)" class="files_item" v-for="(item, index) in dialog.files" :key="index">
|
<li v-for="(item, index) in dialog.files" :key="index" class="files_item" @click="handleDown(item)">
|
||||||
<div>
|
<div>
|
||||||
{{ item.fileName }}
|
{{ item.fileName }}
|
||||||
</div>
|
</div>
|
||||||
<span class="clickDown">点击下载</span>
|
<span class="clickDown">点击下载</span>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<ul class="ulBox" v-else>
|
<ul v-else class="ulBox">
|
||||||
<li class="files_item_no">
|
<li class="files_item_no">
|
||||||
<div>暂无数据</div>
|
<div>暂无数据</div>
|
||||||
</li>
|
</li>
|
||||||
@@ -82,7 +82,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup name="HandleLog" lang="ts">
|
<script lang="ts" name="HandleLog" setup>
|
||||||
import { listHandleLog, delHandleLog } from '@/api/system/HandleLog';
|
import { listHandleLog, delHandleLog } from '@/api/system/HandleLog';
|
||||||
import { HandleLogVO, HandleLogQuery, HandleLogForm, FileVO } from '@/api/system/HandleLog/type';
|
import { HandleLogVO, HandleLogQuery, HandleLogForm, FileVO } from '@/api/system/HandleLog/type';
|
||||||
import { checkPermi } from '@/utils/permission';
|
import { checkPermi } from '@/utils/permission';
|
||||||
|
|||||||
@@ -4,9 +4,9 @@
|
|||||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||||
<div v-show="showSearch" class="mb-[10px]">
|
<div v-show="showSearch" class="mb-[10px]">
|
||||||
<el-card shadow="hover">
|
<el-card shadow="hover">
|
||||||
<el-form ref="queryFormRef" :model="queryParams" @submit.prevent="handleQuery" :inline="true">
|
<el-form ref="queryFormRef" :inline="true" :model="queryParams" @submit.prevent="handleQuery">
|
||||||
<el-form-item label="设施名称" prop="name">
|
<el-form-item label="设施名称" prop="name">
|
||||||
<el-input maxlength="20" v-model.trim="queryParams.name" placeholder="请输入设施名称" clearable @keyup.enter="handleQuery" />
|
<el-input v-model.trim="queryParams.name" clearable maxlength="20" placeholder="请输入设施名称" @keyup.enter="handleQuery" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" @click="handleQuery">搜索</el-button>
|
<el-button type="primary" @click="handleQuery">搜索</el-button>
|
||||||
@@ -24,8 +24,8 @@
|
|||||||
:disable-delete="multiple"
|
:disable-delete="multiple"
|
||||||
:disable-edit="single"
|
:disable-edit="single"
|
||||||
:show-add="checkPermi(['houseFacilities:houseFacilities:add'])"
|
:show-add="checkPermi(['houseFacilities:houseFacilities:add'])"
|
||||||
:show-edit="false"
|
:show-delete="checkPermi(['houseFacilities:houseFacilities:remove'])"
|
||||||
:show-delete="false"
|
:show-edit="checkPermi(['houseFacilities:houseFacilities:edit'])"
|
||||||
@update:add="handleAdd"
|
@update:add="handleAdd"
|
||||||
@update:edit="handleUpdate()"
|
@update:edit="handleUpdate()"
|
||||||
@update:delete="handleDelete()"
|
@update:delete="handleDelete()"
|
||||||
@@ -33,28 +33,28 @@
|
|||||||
</el-row>
|
</el-row>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<el-table v-loading="loading" border :data="houseFacilitiesList" @selection-change="handleSelectionChange">
|
<el-table v-loading="loading" :data="houseFacilitiesList" border @selection-change="handleSelectionChange">
|
||||||
<el-table-column type="selection" width="55" align="center" />
|
<el-table-column align="center" type="selection" width="55" />
|
||||||
<el-table-column label="设施名称" align="center" prop="name" />
|
<el-table-column align="center" label="设施名称" prop="name" />
|
||||||
<el-table-column label="状态" align="center" prop="status">
|
<el-table-column align="center" label="状态" prop="status">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<dict-tag :options="com_repair_project_status" :value="scope.row.status"></dict-tag>
|
<dict-tag :options="com_repair_project_status" :value="scope.row.status"></dict-tag>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width">
|
<el-table-column align="center" class-name="small-padding fixed-width" fixed="right" label="操作">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button link type="primary" @click="handleUpdate(scope.row)" v-has-permi="['houseFacilities:houseFacilities:edit']">编辑</el-button>
|
<el-button v-has-permi="['houseFacilities:houseFacilities:edit']" link type="primary" @click="handleUpdate(scope.row)">编辑</el-button>
|
||||||
<el-button link type="primary" @click="handleDelete(scope.row)" v-has-permi="['houseFacilities:houseFacilities:remove']">删除</el-button>
|
<el-button v-has-permi="['houseFacilities:houseFacilities:remove']" link type="primary" @click="handleDelete(scope.row)">删除</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</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" v-model:limit="queryParams.pageSize" v-model:page="queryParams.pageNum" :total="total" @pagination="getList" />
|
||||||
</el-card>
|
</el-card>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup name="HouseFacilities" lang="ts">
|
<script lang="ts" name="HouseFacilities" setup>
|
||||||
import { listHouseFacilities, delHouseFacilities } from '@/api/system/HouseFacilities';
|
import { listHouseFacilities, delHouseFacilities } from '@/api/system/HouseFacilities';
|
||||||
import { HouseFacilitiesVO, HouseFacilitiesQuery, HouseFacilitiesForm } from '@/api/system/HouseFacilities/type';
|
import { HouseFacilitiesVO, HouseFacilitiesQuery, HouseFacilitiesForm } from '@/api/system/HouseFacilities/type';
|
||||||
import { checkPermi } from '@/utils/permission';
|
import { checkPermi } from '@/utils/permission';
|
||||||
|
|||||||
@@ -4,17 +4,17 @@
|
|||||||
<div class="AddBuildingBody">
|
<div class="AddBuildingBody">
|
||||||
<div class="title">基本信息</div>
|
<div class="title">基本信息</div>
|
||||||
<div class="addBuildingFormBody">
|
<div class="addBuildingFormBody">
|
||||||
<el-form class="formBody" label-position="right" ref="formRef" :model="form" :rules="rules" label-width="130px">
|
<el-form ref="formRef" :model="form" :rules="rules" class="formBody" label-position="right" label-width="130px">
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="11">
|
<el-col :span="11">
|
||||||
<el-form-item label="月卡编号" prop="cardCode">
|
<el-form-item label="月卡编号" prop="cardCode">
|
||||||
<el-input maxlength="15" v-model.trim="form.cardCode" placeholder="请输入月卡编号" />
|
<el-input v-model.trim="form.cardCode" maxlength="15" placeholder="请输入月卡编号" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="2"></el-col>
|
<el-col :span="2"></el-col>
|
||||||
<el-col :span="11">
|
<el-col :span="11">
|
||||||
<el-form-item label="持卡人姓名" prop="cardName">
|
<el-form-item label="持卡人姓名" prop="cardName">
|
||||||
<el-input maxlength="15" v-model.trim="form.cardName" placeholder="请输入持卡人姓名" />
|
<el-input v-model.trim="form.cardName" maxlength="15" placeholder="请输入持卡人姓名" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
@@ -22,15 +22,15 @@
|
|||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="11">
|
<el-col :span="11">
|
||||||
<el-form-item label="手机号码" prop="phone">
|
<el-form-item label="手机号码" prop="phone">
|
||||||
<el-input maxlength="11" v-model.number="form.phone" placeholder="请输入手机号码" />
|
<el-input v-model.number="form.phone" maxlength="11" placeholder="请输入手机号码" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="2"></el-col>
|
<el-col :span="2"></el-col>
|
||||||
<el-col :span="11">
|
<el-col :span="11">
|
||||||
<el-form-item label="绑定车牌号" prop="carNum">
|
<el-form-item label="绑定车牌号" prop="carNum">
|
||||||
<el-input
|
<el-input
|
||||||
maxlength="10"
|
|
||||||
v-model.trim="form.carNum"
|
v-model.trim="form.carNum"
|
||||||
|
maxlength="10"
|
||||||
placeholder="请输入车牌号"
|
placeholder="请输入车牌号"
|
||||||
style="text-transform: uppercase; letter-spacing: 2px"
|
style="text-transform: uppercase; letter-spacing: 2px"
|
||||||
/>
|
/>
|
||||||
@@ -40,22 +40,22 @@
|
|||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="11">
|
<el-col :span="11">
|
||||||
<el-form-item label="办理人" prop="handleName">
|
<el-form-item label="办理人" prop="handleName">
|
||||||
<el-input maxlength="15" v-model="form.handleName" placeholder="请输入办理人姓名" />
|
<el-input v-model="form.handleName" maxlength="15" placeholder="请输入办理人姓名" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="2"></el-col>
|
<el-col :span="2"></el-col>
|
||||||
<el-col :span="11">
|
<el-col :span="11">
|
||||||
<el-form-item label="有效日期" prop="startTime">
|
<el-form-item label="有效日期" prop="startTime">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
|
v-model="checkDate"
|
||||||
|
end-placeholder="结束日期"
|
||||||
|
placeholder="选择日期"
|
||||||
range-separator="到"
|
range-separator="到"
|
||||||
start-placeholder="开始日期"
|
start-placeholder="开始日期"
|
||||||
end-placeholder="结束日期"
|
|
||||||
v-model="checkDate"
|
|
||||||
type="daterange"
|
type="daterange"
|
||||||
@clear="handleClear"
|
|
||||||
placeholder="选择日期"
|
|
||||||
@change="handleDate"
|
|
||||||
value-format="YYYY-MM-DD"
|
value-format="YYYY-MM-DD"
|
||||||
|
@change="handleDate"
|
||||||
|
@clear="handleClear"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
@@ -63,7 +63,7 @@
|
|||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="11">
|
<el-col :span="11">
|
||||||
<el-form-item label="费用" prop="cost">
|
<el-form-item label="费用" prop="cost">
|
||||||
<el-input maxlength="8" v-model.number.trim="form.cost" placeholder="请输入费用">
|
<el-input v-model.number.trim="form.cost" maxlength="8" placeholder="请输入费用">
|
||||||
<template #suffix>元</template>
|
<template #suffix>元</template>
|
||||||
</el-input>
|
</el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@@ -71,7 +71,7 @@
|
|||||||
<el-col :span="2"></el-col>
|
<el-col :span="2"></el-col>
|
||||||
<el-col :span="11">
|
<el-col :span="11">
|
||||||
<el-form-item label="支付方式" prop="payMethod">
|
<el-form-item label="支付方式" prop="payMethod">
|
||||||
<el-select v-model="form.payMethod" placeholder="请选择支付方式" clearable>
|
<el-select v-model="form.payMethod" clearable placeholder="请选择支付方式">
|
||||||
<el-option v-for="dict in com_pay_method" :key="dict.value" :label="dict.label" :value="dict.value" />
|
<el-option v-for="dict in com_pay_method" :key="dict.value" :label="dict.label" :value="dict.value" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@@ -80,7 +80,7 @@
|
|||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="备注" prop="remark">
|
<el-form-item label="备注" prop="remark">
|
||||||
<el-input maxlength="200" show-word-limit type="textarea" :rows="5" v-model.trim="form.remark" placeholder="请输入" />
|
<el-input v-model.trim="form.remark" :rows="5" maxlength="200" placeholder="请输入" show-word-limit type="textarea" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
@@ -94,7 +94,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script lang="ts" setup>
|
||||||
import { ref } from 'vue';
|
import { ref } from 'vue';
|
||||||
import PageHeader from '@/components/Pageheader/index.vue';
|
import PageHeader from '@/components/Pageheader/index.vue';
|
||||||
import { addMonthCard, getMonthCard, updateMonthCard } from '@/api/system/MonthCard';
|
import { addMonthCard, getMonthCard, updateMonthCard } from '@/api/system/MonthCard';
|
||||||
@@ -148,7 +148,7 @@ const rules = ref({
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
handleName: [
|
handleName: [
|
||||||
{ required: true, message: '请输入姓名', trigger: 'blur' },
|
{ required: false, message: '请输入姓名', trigger: 'blur' },
|
||||||
{
|
{
|
||||||
validator: (_: any, value: string | number) => validator(value, 'ChineseName'),
|
validator: (_: any, value: string | number) => validator(value, 'ChineseName'),
|
||||||
message: '请输入正确的中文姓名',
|
message: '请输入正确的中文姓名',
|
||||||
@@ -239,7 +239,7 @@ const cancelForm = () => {
|
|||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style lang="scss" scoped>
|
||||||
.AddBuildingBox {
|
.AddBuildingBox {
|
||||||
padding: 15px;
|
padding: 15px;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
|||||||
@@ -12,23 +12,23 @@
|
|||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="公告标题" prop="noticeTitle">
|
<el-form-item label="公告标题" prop="noticeTitle">
|
||||||
<el-input maxlength="50" v-model.trim="form.noticeTitle" placeholder="请输入公告标题" />
|
<el-input v-model.trim="form.noticeTitle" maxlength="50" placeholder="请输入公告标题" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="作者" prop="author">
|
||||||
|
<el-input v-model.trim="form.author" placeholder="请输入作者" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<!-- <el-col :span="12">-->
|
|
||||||
<!-- <el-form-item label="作者" prop="author">-->
|
|
||||||
<!-- <el-input v-model.trim="form.author" placeholder="请输入作者" />-->
|
|
||||||
<!-- </el-form-item>-->
|
|
||||||
<!-- </el-col>-->
|
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-row>
|
<el-row>
|
||||||
<!-- <el-col :span="12">-->
|
<el-col :span="12">
|
||||||
<!-- <el-form-item label="公告紧急程度" prop="urgencyLevel">-->
|
<el-form-item label="公告紧急程度" prop="urgencyLevel">
|
||||||
<!-- <el-select v-model="form.urgencyLevel" clearable placeholder="请选择公告紧急程度">-->
|
<el-select v-model="form.urgencyLevel" clearable placeholder="请选择公告紧急程度">
|
||||||
<!-- <el-option v-for="dict in com_noticepc_level" :key="dict.value" :label="dict.label" :value="Number(dict.value)" />-->
|
<el-option v-for="dict in com_noticepc_level" :key="dict.value" :label="dict.label" :value="Number(dict.value)" />
|
||||||
<!-- </el-select>-->
|
</el-select>
|
||||||
<!-- </el-form-item>-->
|
</el-form-item>
|
||||||
<!-- </el-col>-->
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="是否发布" prop="publishStatus">
|
<el-form-item label="是否发布" prop="publishStatus">
|
||||||
<el-radio-group v-model="form.publishStatus">
|
<el-radio-group v-model="form.publishStatus">
|
||||||
@@ -43,13 +43,13 @@
|
|||||||
<el-col>
|
<el-col>
|
||||||
<el-form-item label="公告详情" prop="noticeContent">
|
<el-form-item label="公告详情" prop="noticeContent">
|
||||||
<editor
|
<editor
|
||||||
@update:model-value="handleContent"
|
:file-size="5"
|
||||||
:model-value="form.noticeContent"
|
|
||||||
:height="500"
|
:height="500"
|
||||||
:min-height="300"
|
:min-height="300"
|
||||||
|
:model-value="form.noticeContent"
|
||||||
:read-only="false"
|
:read-only="false"
|
||||||
type="url"
|
type="url"
|
||||||
:file-size="5"
|
@update:model-value="handleContent"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
@@ -65,14 +65,14 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script lang="ts" setup>
|
||||||
import editor from '@/components/Editor/index.vue';
|
import editor from '@/components/Editor/index.vue';
|
||||||
import { ref } from 'vue';
|
import { ref } from 'vue';
|
||||||
import PageHeader from '@/components/Pageheader/index.vue';
|
import PageHeader from '@/components/Pageheader/index.vue';
|
||||||
import { addNotice, getNotice } from '@/api/system/NoticePc';
|
import { addNotice, getNotice } from '@/api/system/NoticePc';
|
||||||
import { updateNotice } from '@/api/system/NoticePc';
|
import { updateNotice } from '@/api/system/NoticePc';
|
||||||
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
||||||
const { com_publish_status } = toRefs<any>(proxy?.useDict('com_publish_status'));
|
const { com_publish_status, com_noticepc_level } = toRefs<any>(proxy?.useDict('com_publish_status', 'com_noticepc_level'));
|
||||||
|
|
||||||
const route = useRoute();
|
const route = useRoute();
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
@@ -139,7 +139,7 @@ function handleBack() {
|
|||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style lang="scss" scoped>
|
||||||
.ResidentMainBox {
|
.ResidentMainBox {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
|||||||
@@ -4,9 +4,9 @@
|
|||||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||||
<div v-show="showSearch" class="mb-[10px]">
|
<div v-show="showSearch" class="mb-[10px]">
|
||||||
<el-card shadow="hover">
|
<el-card shadow="hover">
|
||||||
<el-form ref="queryFormRef" :model="queryParams" @submit.prevent="handleQuery" :inline="true">
|
<el-form ref="queryFormRef" :inline="true" :model="queryParams" @submit.prevent="handleQuery">
|
||||||
<el-form-item label="公告标题" prop="noticeTitle">
|
<el-form-item label="公告标题" prop="noticeTitle">
|
||||||
<el-input maxlength="30" v-model="queryParams.noticeTitle" placeholder="请输入公告标题" clearable @keyup.enter="handleQuery" />
|
<el-input v-model="queryParams.noticeTitle" clearable maxlength="30" placeholder="请输入公告标题" @keyup.enter="handleQuery" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" @click="handleQuery">搜索</el-button>
|
<el-button type="primary" @click="handleQuery">搜索</el-button>
|
||||||
@@ -17,15 +17,15 @@
|
|||||||
</div>
|
</div>
|
||||||
</transition>
|
</transition>
|
||||||
|
|
||||||
<el-card shadow="never" class="flex-1">
|
<el-card class="flex-1" shadow="never">
|
||||||
<template #header>
|
<template #header>
|
||||||
<el-row :gutter="10" class="mb8">
|
<el-row :gutter="10" class="mb8">
|
||||||
<right-toolbar
|
<right-toolbar
|
||||||
:disable-delete="multiple"
|
:disable-delete="multiple"
|
||||||
:disable-edit="single"
|
:disable-edit="single"
|
||||||
:show-add="checkPermi(['notice:notice:add'])"
|
:show-add="checkPermi(['notice:notice:add'])"
|
||||||
:show-edit="checkPermi(['notice:notice:edit'])"
|
|
||||||
:show-delete="checkPermi(['notice:notice:remove'])"
|
:show-delete="checkPermi(['notice:notice:remove'])"
|
||||||
|
:show-edit="checkPermi(['notice:notice:edit'])"
|
||||||
@update:add="handleAdd"
|
@update:add="handleAdd"
|
||||||
@update:edit="handleUpdate()"
|
@update:edit="handleUpdate()"
|
||||||
@update:delete="handleDelete()"
|
@update:delete="handleDelete()"
|
||||||
@@ -33,26 +33,26 @@
|
|||||||
</el-row>
|
</el-row>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<el-table v-loading="loading" border :data="noticeList" @selection-change="handleSelectionChange">
|
<el-table v-loading="loading" :data="noticeList" border @selection-change="handleSelectionChange">
|
||||||
<el-table-column type="selection" width="55" align="center" />
|
<el-table-column align="center" type="selection" width="55" />
|
||||||
<el-table-column label="公告标题" align="center" prop="noticeTitle" />
|
<el-table-column align="center" label="公告标题" prop="noticeTitle" />
|
||||||
<!-- <el-table-column label="作者" width="120" align="center" prop="author" />-->
|
<el-table-column align="center" label="作者" prop="author" width="120" />
|
||||||
<!-- <el-table-column label="紧急程度" align="center" prop="urgencyLevel">-->
|
<el-table-column align="center" label="紧急程度" prop="urgencyLevel">
|
||||||
<!-- <template #default="scope">-->
|
<template #default="scope">
|
||||||
<!-- <dict-tag :options="com_noticepc_level" :value="scope.row.urgencyLevel"></dict-tag>-->
|
<dict-tag :options="com_noticepc_level" :value="scope.row.urgencyLevel"></dict-tag>
|
||||||
<!-- </template>-->
|
</template>
|
||||||
<!-- </el-table-column>-->
|
</el-table-column>
|
||||||
<el-table-column label="发布状态" align="center" prop="publishStatus">
|
<el-table-column align="center" label="发布状态" prop="publishStatus">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<dict-tag :options="com_publish_status" :value="scope.row.publishStatus"></dict-tag>
|
<dict-tag :options="com_publish_status" :value="scope.row.publishStatus"></dict-tag>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="已读" align="center" prop="readNum">
|
<el-table-column align="center" label="已读" prop="readNum">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span>{{ scope.row.readNum ?? '--' }} 人</span>
|
<span>{{ scope.row.readNum ?? '--' }} 人</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="未读" align="center" prop="unReadNum">
|
<el-table-column align="center" label="未读" prop="unReadNum">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span>{{ scope.row.unReadNum ?? '--' }} 人</span>
|
<span>{{ scope.row.unReadNum ?? '--' }} 人</span>
|
||||||
</template>
|
</template>
|
||||||
@@ -63,16 +63,16 @@
|
|||||||
<!-- <span>{{ parseTime(scope.row.publishTime, '{y}-{m}-{d}') }}</span>-->
|
<!-- <span>{{ parseTime(scope.row.publishTime, '{y}-{m}-{d}') }}</span>-->
|
||||||
<!-- </template>-->
|
<!-- </template>-->
|
||||||
<!-- </el-table-column>-->
|
<!-- </el-table-column>-->
|
||||||
<el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width">
|
<el-table-column align="center" class-name="small-padding fixed-width" fixed="right" label="操作">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button link type="primary" @click="handleMain(scope.row)" v-has-permi="['notice:notice:query']">详情</el-button>
|
<el-button v-has-permi="['notice:notice:query']" link type="primary" @click="handleMain(scope.row)">详情</el-button>
|
||||||
<el-button link type="primary" @click="handleUpdate(scope.row)" v-has-permi="['notice:notice:edit']">编辑</el-button>
|
<el-button v-has-permi="['notice:notice:edit']" link type="primary" @click="handleUpdate(scope.row)">编辑</el-button>
|
||||||
<el-button link type="primary" @click="handleDelete(scope.row)" v-has-permi="['notice:notice:remove']">删除</el-button>
|
<el-button v-has-permi="['notice:notice:remove']" link type="primary" @click="handleDelete(scope.row)">删除</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</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" v-model:limit="queryParams.pageSize" v-model:page="queryParams.pageNum" :total="total" @pagination="getList" />
|
||||||
</el-card>
|
</el-card>
|
||||||
|
|
||||||
<el-dialog v-model="MainForm.visible" title="公告详情">
|
<el-dialog v-model="MainForm.visible" title="公告详情">
|
||||||
@@ -88,13 +88,13 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup name="Notice" lang="ts">
|
<script lang="ts" name="Notice" setup>
|
||||||
import { listNotice, delNotice } from '@/api/system/NoticePc';
|
import { listNotice, delNotice } from '@/api/system/NoticePc';
|
||||||
import { NoticeVO, NoticeQuery, NoticeForm } from '@/api/system/NoticePc/type';
|
import { NoticeVO, NoticeQuery, NoticeForm } from '@/api/system/NoticePc/type';
|
||||||
import { checkPermi } from '@/utils/permission';
|
import { checkPermi } from '@/utils/permission';
|
||||||
|
|
||||||
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
||||||
const { com_publish_status } = toRefs<any>(proxy?.useDict('com_publish_status'));
|
const { com_publish_status, com_noticepc_level } = toRefs<any>(proxy?.useDict('com_publish_status', 'com_noticepc_level'));
|
||||||
|
|
||||||
const noticeList = ref<NoticeVO[]>([]);
|
const noticeList = ref<NoticeVO[]>([]);
|
||||||
const loading = ref(true);
|
const loading = ref(true);
|
||||||
|
|||||||
@@ -4,12 +4,12 @@
|
|||||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||||
<div v-show="showSearch" class="mb-[10px]">
|
<div v-show="showSearch" class="mb-[10px]">
|
||||||
<el-card shadow="hover">
|
<el-card shadow="hover">
|
||||||
<el-form ref="queryFormRef" :model="queryParams" @submit.prevent="handleQuery" :inline="true">
|
<el-form ref="queryFormRef" :inline="true" :model="queryParams" @submit.prevent="handleQuery">
|
||||||
<el-form-item label="缴费人" prop="payerName">
|
<el-form-item label="缴费人" prop="payerName">
|
||||||
<el-input maxlength="12" v-model="queryParams.payerName" placeholder="请输入缴费人" clearable @keyup.enter="handleQuery" />
|
<el-input v-model="queryParams.payerName" clearable maxlength="12" placeholder="请输入缴费人" @keyup.enter="handleQuery" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="车牌号" prop="carNum">
|
<el-form-item label="车牌号" prop="carNum">
|
||||||
<el-input maxlength="8" v-model="queryParams.carNum" placeholder="请输入车牌号" clearable @keyup.enter="handleQuery" />
|
<el-input v-model="queryParams.carNum" clearable maxlength="8" placeholder="请输入车牌号" @keyup.enter="handleQuery" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" @click="handleQuery">搜索</el-button>
|
<el-button type="primary" @click="handleQuery">搜索</el-button>
|
||||||
@@ -27,8 +27,8 @@
|
|||||||
:disable-delete="multiple"
|
:disable-delete="multiple"
|
||||||
:disable-edit="single"
|
:disable-edit="single"
|
||||||
:show-add="checkPermi(['parkingCost:parkingCost:add'])"
|
:show-add="checkPermi(['parkingCost:parkingCost:add'])"
|
||||||
:show-edit="checkPermi(['parkingCost:parkingCost:edit'])"
|
|
||||||
:show-delete="checkPermi(['parkingCost:parkingCost:remove'])"
|
:show-delete="checkPermi(['parkingCost:parkingCost:remove'])"
|
||||||
|
:show-edit="checkPermi(['parkingCost:parkingCost:edit'])"
|
||||||
@update:add="handleAdd"
|
@update:add="handleAdd"
|
||||||
@update:edit="handleUpdate()"
|
@update:edit="handleUpdate()"
|
||||||
@update:delete="handleDelete()"
|
@update:delete="handleDelete()"
|
||||||
@@ -36,52 +36,52 @@
|
|||||||
</el-row>
|
</el-row>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<el-table v-loading="loading" border :data="parkingCostList" @selection-change="handleSelectionChange">
|
<el-table v-loading="loading" :data="parkingCostList" border @selection-change="handleSelectionChange">
|
||||||
<el-table-column type="selection" width="55" align="center" />
|
<el-table-column align="center" type="selection" width="55" />
|
||||||
<el-table-column label="车位" align="center" prop="areaId">
|
<el-table-column align="center" label="车位" prop="areaId">
|
||||||
<template #default="scope"> {{ scope.row.name }} </template>
|
<template #default="scope"> {{ scope.row.name }} </template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="收费项目" align="center" prop="chargeItem">
|
<el-table-column align="center" label="收费项目" prop="chargeItem">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<dict-tag :options="com_parking_charge" :value="scope.row.chargeItem" />
|
<dict-tag :options="com_parking_charge" :value="scope.row.chargeItem" />
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="缴纳人" align="center" prop="payerName" />
|
<el-table-column align="center" label="缴纳人" prop="payerName" />
|
||||||
<el-table-column label="车牌号" align="center" prop="carNum" />
|
<el-table-column align="center" label="车牌号" prop="carNum" />
|
||||||
<el-table-column label="停车时长" align="center" width="100">
|
<el-table-column align="center" label="停车时长" width="100">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span>{{ formatTimeDiff(scope.row.startTime, scope.row.endTime) }}</span>
|
<span>{{ formatTimeDiff(scope.row.startTime, scope.row.endTime) }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="费用" align="center" prop="cost">
|
<el-table-column align="center" label="费用" prop="cost">
|
||||||
<template #default="scope"> {{ Number(scope.row.cost).toFixed(2) }}元 </template>
|
<template #default="scope"> {{ Number(scope.row.cost).toFixed(2) }}元 </template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="缴纳状态" align="center" prop="payerStatus">
|
<el-table-column align="center" label="缴纳状态" prop="payerStatus">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<dict-tag :options="com_parking_payer_status" :value="scope.row.payerStatus" />
|
<dict-tag :options="com_parking_payer_status" :value="scope.row.payerStatus" />
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="支付方式" align="center" prop="payMethod">
|
<!-- <el-table-column label="支付方式" align="center" prop="payMethod">-->
|
||||||
|
<!-- <template #default="scope">-->
|
||||||
|
<!-- <dict-tag v-if="scope.row.payMethod" :options="com_pay_method" :value="scope.row.payMethod" />-->
|
||||||
|
<!-- <span v-else>--</span>-->
|
||||||
|
<!-- </template>-->
|
||||||
|
<!-- </el-table-column>-->
|
||||||
|
<el-table-column align="center" label="备注" prop="remark" />
|
||||||
|
<el-table-column align="center" class-name="small-padding fixed-width" fixed="right" label="操作">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<dict-tag v-if="scope.row.payMethod" :options="com_pay_method" :value="scope.row.payMethod" />
|
<el-button v-has-permi="['parkingCost:parkingCost:edit']" link type="primary" @click="handleUpdate(scope.row)">修改</el-button>
|
||||||
<span v-else>--</span>
|
<el-button v-has-permi="['parkingCost:parkingCost:remove']" link type="primary" @click="handleDelete(scope.row)">删除</el-button>
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<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-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>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</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" v-model:limit="queryParams.pageSize" v-model:page="queryParams.pageNum" :total="total" @pagination="getList" />
|
||||||
</el-card>
|
</el-card>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup name="ParkingCost" lang="ts">
|
<script lang="ts" name="ParkingCost" setup>
|
||||||
import Pagination from '@/components/Pagination/index.vue';
|
import Pagination from '@/components/Pagination/index.vue';
|
||||||
import pageHeader from '@/components/Pageheader/index.vue';
|
import pageHeader from '@/components/Pageheader/index.vue';
|
||||||
import RightToolbar from '@/components/RightToolbar/index.vue';
|
import RightToolbar from '@/components/RightToolbar/index.vue';
|
||||||
|
|||||||
@@ -2,19 +2,24 @@
|
|||||||
<div class="p-2 h-full flex flex-col">
|
<div class="p-2 h-full flex flex-col">
|
||||||
<PageHeader></PageHeader>
|
<PageHeader></PageHeader>
|
||||||
<el-card class="mt-20px" style="min-height: 80px">
|
<el-card class="mt-20px" style="min-height: 80px">
|
||||||
<div class="tabs">
|
<div class="flex justify-between">
|
||||||
<div class="tab-item" :class="{ 'active': activeTab == 'preview' }" @click="handleTabClick('preview')">
|
<div class="tabs">
|
||||||
<div class="tab-content">问卷预览</div>
|
<div :class="{ 'active': activeTab == 'preview' }" class="tab-item" @click="handleTabClick('preview')">
|
||||||
|
<div class="tab-content">问卷预览</div>
|
||||||
|
</div>
|
||||||
|
<div :class="{ 'active': activeTab == 'detail' }" class="tab-item" @click="handleTabClick('detail')">
|
||||||
|
<div class="tab-content">调查详情</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="tab-item" :class="{ 'active': activeTab == 'detail' }" @click="handleTabClick('detail')">
|
<div class="tabs">
|
||||||
<div class="tab-content">调查详情</div>
|
<el-button @click="handleBack">返回</el-button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
<div class="flex-1 mt-20px">
|
<div class="flex-1 mt-20px">
|
||||||
<el-card v-if="activeTab == 'preview'">
|
<el-card v-if="activeTab == 'preview'">
|
||||||
<div class="container_box flex-1">
|
<div class="container_box flex-1">
|
||||||
<div class="contentBox h-full" v-loading="viewLoading">
|
<div v-loading="viewLoading" class="contentBox h-full">
|
||||||
<div class="detail-header">
|
<div class="detail-header">
|
||||||
<h2>{{ viewData.title }}</h2>
|
<h2>{{ viewData.title }}</h2>
|
||||||
<p style="color: #666">{{ viewData.description }}</p>
|
<p style="color: #666">{{ viewData.description }}</p>
|
||||||
@@ -24,7 +29,7 @@
|
|||||||
<div v-for="(q, index) in viewData.content" :key="q.cid" class="question-item">
|
<div v-for="(q, index) in viewData.content" :key="q.cid" class="question-item">
|
||||||
<div class="title">
|
<div class="title">
|
||||||
<span style="font-weight: bold">{{ index + 1 }}. {{ q.title }}</span>
|
<span style="font-weight: bold">{{ index + 1 }}. {{ q.title }}</span>
|
||||||
<span style="color: #f56c6c; margin-left: 5px" v-if="q.required">*</span>
|
<span v-if="q.required" style="color: #f56c6c; margin-left: 5px">*</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="type-tag">
|
<div class="type-tag">
|
||||||
<el-tag size="small">{{ getComponentLabel(q.type) }}</el-tag>
|
<el-tag size="small">{{ getComponentLabel(q.type) }}</el-tag>
|
||||||
@@ -42,7 +47,7 @@
|
|||||||
<el-input disabled placeholder="用户输入区域" />
|
<el-input disabled placeholder="用户输入区域" />
|
||||||
</div>
|
</div>
|
||||||
<div v-else-if="q.type === 'textarea'" class="input-placeholder">
|
<div v-else-if="q.type === 'textarea'" class="input-placeholder">
|
||||||
<el-input disabled type="textarea" placeholder="用户输入区域" />
|
<el-input disabled placeholder="用户输入区域" type="textarea" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -56,25 +61,25 @@
|
|||||||
<el-card v-else-if="activeTab == 'detail'">
|
<el-card v-else-if="activeTab == 'detail'">
|
||||||
<div>
|
<div>
|
||||||
<el-table :data="list" style="width: 100%">
|
<el-table :data="list" style="width: 100%">
|
||||||
<el-table-column prop="answerName" label="答题人" />
|
<el-table-column label="答题人" prop="answerName" />
|
||||||
<el-table-column prop="type" label="提交时间" />
|
<el-table-column label="提交时间" prop="type" />
|
||||||
<el-table-column prop="options" label="操作">
|
<el-table-column label="操作" prop="options">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button type="primary" link @click="handleGetMain(scope.row.id)">查看详情</el-button>
|
<el-button link type="primary" @click="handleGetMain(scope.row.id)">查看详情</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
<Pagination
|
<Pagination
|
||||||
v-show="total > 0"
|
v-show="total > 0"
|
||||||
:total="total"
|
|
||||||
v-model:page="queryParams.pageNum"
|
|
||||||
v-model:limit="queryParams.pageSize"
|
v-model:limit="queryParams.pageSize"
|
||||||
|
v-model:page="queryParams.pageNum"
|
||||||
|
:total="total"
|
||||||
@pagination="getList"
|
@pagination="getList"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
</div>
|
</div>
|
||||||
<el-dialog :title="dialog.title" v-model="dialog.visible" width="680px" append-to-body>
|
<el-dialog v-model="dialog.visible" :title="dialog.title" append-to-body width="680px">
|
||||||
<el-form ref="houseRentalFormRef" :model="form.content" label-width="120px">
|
<el-form ref="houseRentalFormRef" :model="form.content" label-width="120px">
|
||||||
<div class="detail-header">
|
<div class="detail-header">
|
||||||
<h2>{{ viewData.title }}</h2>
|
<h2>{{ viewData.title }}</h2>
|
||||||
@@ -85,7 +90,7 @@
|
|||||||
<div v-for="(q, index) in form.content" :key="q.cid" class="question-item">
|
<div v-for="(q, index) in form.content" :key="q.cid" class="question-item">
|
||||||
<div class="title">
|
<div class="title">
|
||||||
<span style="font-weight: bold">{{ index + 1 }}. {{ q.title }}</span>
|
<span style="font-weight: bold">{{ index + 1 }}. {{ q.title }}</span>
|
||||||
<span style="color: #f56c6c; margin-left: 5px" v-if="q.required">*</span>
|
<span v-if="q.required" style="color: #f56c6c; margin-left: 5px">*</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="type-tag">
|
<div class="type-tag">
|
||||||
<el-tag size="small">{{ getComponentLabel(q.type) }}</el-tag>
|
<el-tag size="small">{{ getComponentLabel(q.type) }}</el-tag>
|
||||||
@@ -96,7 +101,7 @@
|
|||||||
<el-radio-group v-model="q.value as string">
|
<el-radio-group v-model="q.value as string">
|
||||||
<div>
|
<div>
|
||||||
<div v-for="(opt, idx) in q.options" :key="idx">
|
<div v-for="(opt, idx) in q.options" :key="idx">
|
||||||
<el-radio disabled :value="opt.label">{{ opt.label }}</el-radio>
|
<el-radio :value="opt.label" disabled>{{ opt.label }}</el-radio>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
@@ -104,16 +109,16 @@
|
|||||||
<div v-if="q.type === 'checkbox'" class="options">
|
<div v-if="q.type === 'checkbox'" class="options">
|
||||||
<el-checkbox-group v-model="q.value as string[]">
|
<el-checkbox-group v-model="q.value as string[]">
|
||||||
<div v-for="(opt, idx) in q.options" :key="idx">
|
<div v-for="(opt, idx) in q.options" :key="idx">
|
||||||
<el-checkbox disabled :label="opt.label" :value="opt.label" />
|
<el-checkbox :label="opt.label" :value="opt.label" disabled />
|
||||||
</div>
|
</div>
|
||||||
</el-checkbox-group>
|
</el-checkbox-group>
|
||||||
</div>
|
</div>
|
||||||
<!-- 填空题/多行文本展示 -->
|
<!-- 填空题/多行文本展示 -->
|
||||||
<div v-else-if="q.type === 'input'" class="input-placeholder">
|
<div v-else-if="q.type === 'input'" class="input-placeholder">
|
||||||
<el-input disabled placeholder="" v-model="q.value as string" />
|
<el-input v-model="q.value as string" disabled placeholder="" />
|
||||||
</div>
|
</div>
|
||||||
<div v-else-if="q.type === 'textarea'" class="input-placeholder">
|
<div v-else-if="q.type === 'textarea'" class="input-placeholder">
|
||||||
<el-input disabled type="textarea" placeholder="" v-model="q.value as string" />
|
<el-input v-model="q.value as string" disabled placeholder="" type="textarea" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -126,7 +131,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script lang="ts" setup>
|
||||||
import { getQuestionnaire, getQuestionnaireAnswer, getQuestionnaireAnswerMain } from '@/api/system/Questionnaire';
|
import { getQuestionnaire, getQuestionnaireAnswer, getQuestionnaireAnswerMain } from '@/api/system/Questionnaire';
|
||||||
import { QuestionComponentItem } from '@/api/system/Questionnaire/type';
|
import { QuestionComponentItem } from '@/api/system/Questionnaire/type';
|
||||||
import { ref } from 'vue';
|
import { ref } from 'vue';
|
||||||
@@ -198,6 +203,10 @@ function init() {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
init();
|
init();
|
||||||
|
const router = useRouter();
|
||||||
|
function handleBack() {
|
||||||
|
router.back();
|
||||||
|
}
|
||||||
|
|
||||||
const dialog = reactive<DialogOption>({
|
const dialog = reactive<DialogOption>({
|
||||||
visible: false,
|
visible: false,
|
||||||
@@ -242,7 +251,7 @@ function handleGetMain(id: string) {
|
|||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style lang="scss" scoped>
|
||||||
.tabs {
|
.tabs {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
<div class="AddBuildingBox">
|
<div class="AddBuildingBox">
|
||||||
<PageHeader :title="userid ? '编辑问卷' : '添加问卷'"></PageHeader>
|
<PageHeader :title="userid ? '编辑问卷' : '添加问卷'"></PageHeader>
|
||||||
<div class="AddBuildingBody">
|
<div class="AddBuildingBody">
|
||||||
<el-form class="formBody" label-position="right" label-width="130px">
|
<el-form :rules="rules" class="formBody" label-position="right" label-width="130px">
|
||||||
<el-card>
|
<el-card>
|
||||||
<template #header>
|
<template #header>
|
||||||
<span>基本信息</span>
|
<span>基本信息</span>
|
||||||
@@ -12,31 +12,32 @@
|
|||||||
<el-form-item label="参与范围" prop="cardName">
|
<el-form-item label="参与范围" prop="cardName">
|
||||||
<div class="flex flex-items-center">
|
<div class="flex flex-items-center">
|
||||||
<el-radio-group v-model="form.scope">
|
<el-radio-group v-model="form.scope">
|
||||||
<el-radio v-for="item in com_questionnaire_scope" :value="item.value" :label="item.label" :key="item.value"></el-radio>
|
<el-radio v-for="item in com_questionnaire_scope" :key="item.value" :label="item.label" :value="item.value"></el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
<Holder v-if="form.scope === '1'" returnvalue="id" ref="HolderRef" :isMultiple="true" :userid="checkoutUses" @change="handleSelect">
|
<Holder v-if="form.scope === '1'" ref="HolderRef" :isMultiple="true" :userid="checkoutUses" returnvalue="id" @change="handleSelect">
|
||||||
<template #default>
|
<template #default>
|
||||||
<el-button type="primary" link @click="OpenUseTablesFun">选择业主</el-button>
|
<el-button link type="primary" @click="OpenUseTablesFun">选择业主</el-button>
|
||||||
</template>
|
</template>
|
||||||
</Holder>
|
</Holder>
|
||||||
</div>
|
</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="时间范围" prop="timeData">
|
<el-form-item label="时间范围" prop="startTime">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="timeData"
|
v-model="timeData"
|
||||||
style="min-width: 380px"
|
:disabled-date="handleDate"
|
||||||
value-format="YYYY-MM-DD HH:mm:ss"
|
end-placeholder="结束日期时间"
|
||||||
format="YYYY-MM-DD HH:mm:ss"
|
format="YYYY-MM-DD HH:mm:ss"
|
||||||
type="datetimerange"
|
placeholder="请选择问卷时间范围"
|
||||||
range-separator="到"
|
range-separator="到"
|
||||||
start-placeholder="开始日期时间"
|
start-placeholder="开始日期时间"
|
||||||
end-placeholder="结束日期时间"
|
style="min-width: 380px"
|
||||||
placeholder="请选择问卷时间范围"
|
type="datetimerange"
|
||||||
|
value-format="YYYY-MM-DD HH:mm:ss"
|
||||||
|
@update:model-value="handleModelDate"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
@@ -44,7 +45,7 @@
|
|||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="备注" prop="remark">
|
<el-form-item label="备注" prop="remark">
|
||||||
<el-input :rows="5" maxlength="200" show-word-limit type="textarea" placeholder="请输入" v-model="form.remark"></el-input>
|
<el-input v-model="form.remark" :rows="5" maxlength="200" placeholder="请输入" show-word-limit type="textarea"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
@@ -53,14 +54,14 @@
|
|||||||
<template #header>
|
<template #header>
|
||||||
<span>问卷题目</span>
|
<span>问卷题目</span>
|
||||||
</template>
|
</template>
|
||||||
<QuestionnaireEdit ref="questionnaireEditRef" :initial-data="editData" @cancel="handleCancel" @save="handleSave" @publish="handlePublish" />
|
<QuestionnaireEdit ref="questionnaireEditRef" :initial-data="editData" @cancel="handleCancel" @publish="handlePublish" @save="handleSave" />
|
||||||
</el-card>
|
</el-card>
|
||||||
</el-form>
|
</el-form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script lang="ts" setup>
|
||||||
import Holder from '@/components/Holder/index.vue';
|
import Holder from '@/components/Holder/index.vue';
|
||||||
import QuestionnaireEdit from './components/QuestionnaireEdit.vue';
|
import QuestionnaireEdit from './components/QuestionnaireEdit.vue';
|
||||||
|
|
||||||
@@ -77,9 +78,22 @@ const route = useRoute();
|
|||||||
const form = ref({
|
const form = ref({
|
||||||
scope: '0',
|
scope: '0',
|
||||||
residents: '',
|
residents: '',
|
||||||
remark: ''
|
remark: '',
|
||||||
|
startTime: '',
|
||||||
|
endTime: ''
|
||||||
|
});
|
||||||
|
const rules = ref({
|
||||||
|
startTime: [{ required: true, message: '请选择日期范围', trigger: 'blur' }]
|
||||||
});
|
});
|
||||||
const timeData = ref([]);
|
const timeData = ref([]);
|
||||||
|
function handleDate(data: string) {
|
||||||
|
const date = new Date();
|
||||||
|
return date.getTime() > new Date(data).getTime();
|
||||||
|
}
|
||||||
|
function handleModelDate(date: string) {
|
||||||
|
form.value.startTime = date[0];
|
||||||
|
form.value.endTime = date[1];
|
||||||
|
}
|
||||||
// ! 路由参数 --------------------------------------------------------------------------------
|
// ! 路由参数 --------------------------------------------------------------------------------
|
||||||
// 打开
|
// 打开
|
||||||
const HolderRef = ref<InstanceType<typeof Holder>>();
|
const HolderRef = ref<InstanceType<typeof Holder>>();
|
||||||
@@ -126,7 +140,9 @@ function handleEdit(id: string | number) {
|
|||||||
form.value = {
|
form.value = {
|
||||||
scope: res.data.scope,
|
scope: res.data.scope,
|
||||||
residents: res.data.residents,
|
residents: res.data.residents,
|
||||||
remark: res.data.remark
|
remark: res.data.remark,
|
||||||
|
startTime: '',
|
||||||
|
endTime: ''
|
||||||
};
|
};
|
||||||
checkoutUses.value = res.data.residents
|
checkoutUses.value = res.data.residents
|
||||||
.split(',')
|
.split(',')
|
||||||
@@ -138,6 +154,9 @@ function handleEdit(id: string | number) {
|
|||||||
|
|
||||||
// 保存草稿
|
// 保存草稿
|
||||||
async function handleSave(data: QuestionComponentnaireForm) {
|
async function handleSave(data: QuestionComponentnaireForm) {
|
||||||
|
if (timeData.value.length <= 0) {
|
||||||
|
return ElMessage.warning('请选择问卷时间范围');
|
||||||
|
}
|
||||||
try {
|
try {
|
||||||
// 父组件自己调用接口提交
|
// 父组件自己调用接口提交
|
||||||
if (userid.value !== null) {
|
if (userid.value !== null) {
|
||||||
@@ -169,6 +188,9 @@ async function handleSave(data: QuestionComponentnaireForm) {
|
|||||||
|
|
||||||
// 发布问卷
|
// 发布问卷
|
||||||
async function handlePublish(data: QuestionComponentnaireForm) {
|
async function handlePublish(data: QuestionComponentnaireForm) {
|
||||||
|
if (timeData.value.length <= 0) {
|
||||||
|
return ElMessage.warning('请选择问卷时间范围');
|
||||||
|
}
|
||||||
try {
|
try {
|
||||||
if (userid.value !== null) {
|
if (userid.value !== null) {
|
||||||
await updateQuestionnaire({
|
await updateQuestionnaire({
|
||||||
@@ -202,7 +224,7 @@ function handleCancel() {
|
|||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style lang="scss" scoped>
|
||||||
.AddBuildingBox {
|
.AddBuildingBox {
|
||||||
padding: 15px;
|
padding: 15px;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
|||||||
@@ -4,9 +4,9 @@
|
|||||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||||
<div v-show="showSearch" class="mb-[10px]">
|
<div v-show="showSearch" class="mb-[10px]">
|
||||||
<el-card shadow="hover">
|
<el-card shadow="hover">
|
||||||
<el-form ref="queryFormRef" :model="queryParams" @submit.prevent="handleQuery" :inline="true">
|
<el-form ref="queryFormRef" :inline="true" :model="queryParams" @submit.prevent="handleQuery">
|
||||||
<el-form-item label="问卷标题" prop="title">
|
<el-form-item label="问卷标题" prop="title">
|
||||||
<el-input maxlength="20" v-model="queryParams.title" placeholder="请输入问卷标题" clearable @keyup.enter="handleQuery" />
|
<el-input v-model="queryParams.title" clearable maxlength="20" placeholder="请输入问卷标题" @keyup.enter="handleQuery" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- <el-form-item label="参与范围" prop="scope">
|
<!-- <el-form-item label="参与范围" prop="scope">
|
||||||
<el-input v-model="queryParams.scope" placeholder="请输入参与范围 0全体业主 1部分业主" clearable @keyup.enter="handleQuery" />
|
<el-input v-model="queryParams.scope" placeholder="请输入参与范围 0全体业主 1部分业主" clearable @keyup.enter="handleQuery" />
|
||||||
@@ -26,8 +26,8 @@
|
|||||||
:disable-delete="multiple"
|
:disable-delete="multiple"
|
||||||
:disable-edit="single"
|
:disable-edit="single"
|
||||||
:show-add="checkPermi(['questionnaire:questionnaire:add'])"
|
:show-add="checkPermi(['questionnaire:questionnaire:add'])"
|
||||||
:show-edit="checkPermi(['questionnaire:questionnaire:edit'])"
|
|
||||||
:show-delete="checkPermi(['questionnaire:questionnaire:remove'])"
|
:show-delete="checkPermi(['questionnaire:questionnaire:remove'])"
|
||||||
|
:show-edit="checkPermi(['questionnaire:questionnaire:edit'])"
|
||||||
@update:add="handleAdd"
|
@update:add="handleAdd"
|
||||||
@update:edit="handleUpdate()"
|
@update:edit="handleUpdate()"
|
||||||
@update:delete="handleDelete()"
|
@update:delete="handleDelete()"
|
||||||
@@ -35,36 +35,50 @@
|
|||||||
</el-row>
|
</el-row>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<el-table v-loading="loading" border :data="questionnaireList" @selection-change="handleSelectionChange">
|
<el-table v-loading="loading" :data="questionnaireList" border @selection-change="handleSelectionChange">
|
||||||
<el-table-column type="selection" width="55" align="center" />
|
<el-table-column align="center" type="selection" width="55" />
|
||||||
<el-table-column label="问卷标题" align="center" prop="title" />
|
<el-table-column align="center" label="小区" prop="villageName" />
|
||||||
<el-table-column label="问卷描述" align="center" prop="description" />
|
<el-table-column align="center" label="问卷标题" prop="title" />
|
||||||
<el-table-column label="状态" align="center" prop="status">
|
<el-table-column align="center" label="问卷描述" prop="description" />
|
||||||
|
|
||||||
|
<el-table-column align="center" label="状态" prop="status">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<dict-tag :options="com_questionnaire_status" :value="scope.row.status"></dict-tag>
|
<dict-tag :options="com_questionnaire_status" :value="scope.row.status"></dict-tag>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="参与范围" align="center" prop="scope">
|
<el-table-column align="center" label="参与范围" prop="scope">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<dict-tag :options="com_questionnaire_scope" :value="scope.row.scope"></dict-tag>
|
<dict-tag :options="com_questionnaire_scope" :value="scope.row.scope"></dict-tag>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="备注" align="center" prop="remark" />
|
<el-table-column align="center" label="问题数量" prop="questionCount" />
|
||||||
<el-table-column label="操作" align="center" fixed="right" width="200">
|
<el-table-column align="center" label="发布时间" prop="updateTime" />
|
||||||
|
<el-table-column align="center" label="结束时间" prop="endTime" />
|
||||||
|
<el-table-column align="center" label="已答数量" prop="answeredCount" />
|
||||||
|
<el-table-column align="center" label="未答数量" prop="unansweredCount" />
|
||||||
|
<el-table-column align="center" label="备注" prop="remark" />
|
||||||
|
<el-table-column align="center" fixed="right" label="操作" width="200">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button link type="primary" @click="handleView(scope.row)" v-has-permi="['questionnaire:questionnaire:query']">查看</el-button>
|
<el-button v-has-permi="['questionnaire:questionnaire:query']" link type="primary" @click="handleView(scope.row)">查看</el-button>
|
||||||
<el-button link type="primary" @click="handleUpdate(scope.row)" v-has-permi="['questionnaire:questionnaire:edit']">编辑</el-button>
|
<el-button
|
||||||
<el-button link type="primary" @click="handleDelete(scope.row)" v-has-permi="['questionnaire:questionnaire:remove']">删除</el-button>
|
v-if="scope.row.status === '0'"
|
||||||
|
v-has-permi="['questionnaire:questionnaire:edit']"
|
||||||
|
link
|
||||||
|
type="primary"
|
||||||
|
@click="handleUpdate(scope.row)"
|
||||||
|
>编辑</el-button
|
||||||
|
>
|
||||||
|
<el-button v-has-permi="['questionnaire:questionnaire:remove']" link type="primary" @click="handleDelete(scope.row)">删除</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</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" v-model:limit="queryParams.pageSize" v-model:page="queryParams.pageNum" :total="total" @pagination="getList" />
|
||||||
</el-card>
|
</el-card>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup name="Questionnaire" lang="ts">
|
<script lang="ts" name="Questionnaire" setup>
|
||||||
import Pagination from '@/components/Pagination/index.vue';
|
import Pagination from '@/components/Pagination/index.vue';
|
||||||
import pageHeader from '@/components/Pageheader/index.vue';
|
import pageHeader from '@/components/Pageheader/index.vue';
|
||||||
import RightToolbar from '@/components/RightToolbar/index.vue';
|
import RightToolbar from '@/components/RightToolbar/index.vue';
|
||||||
@@ -72,13 +86,17 @@ import DictTag from '@/components/DictTag/index.vue';
|
|||||||
import { listQuestionnaire, delQuestionnaire, addQuestionnaire, updateQuestionnaire } from '@/api/system/Questionnaire';
|
import { listQuestionnaire, delQuestionnaire, addQuestionnaire, updateQuestionnaire } from '@/api/system/Questionnaire';
|
||||||
import { QuestionnaireVO, QuestionnaireQuery, QuestionnaireForm } from '@/api/system/Questionnaire/type';
|
import { QuestionnaireVO, QuestionnaireQuery, QuestionnaireForm } from '@/api/system/Questionnaire/type';
|
||||||
import { checkPermi } from '@/utils/permission';
|
import { checkPermi } from '@/utils/permission';
|
||||||
|
import type { communitylist_rows_type } from '@/api/system/community/type';
|
||||||
|
|
||||||
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
||||||
|
|
||||||
const { com_questionnaire_scope } = toRefs<any>(proxy?.useDict('com_questionnaire_scope'));
|
const { com_questionnaire_scope } = toRefs<any>(proxy?.useDict('com_questionnaire_scope'));
|
||||||
const { com_questionnaire_status } = toRefs<any>(proxy?.useDict('com_questionnaire_status'));
|
const { com_questionnaire_status } = toRefs<any>(proxy?.useDict('com_questionnaire_status'));
|
||||||
|
type QuestionVoList = QuestionnaireVO & {
|
||||||
const questionnaireList = ref<QuestionnaireVO[]>([]);
|
contentLength?: number;
|
||||||
|
villageName?: string;
|
||||||
|
};
|
||||||
|
const questionnaireList = ref<QuestionVoList[]>([]);
|
||||||
const buttonLoading = ref(false);
|
const buttonLoading = ref(false);
|
||||||
const loading = ref(true);
|
const loading = ref(true);
|
||||||
const showSearch = ref(true);
|
const showSearch = ref(true);
|
||||||
@@ -125,9 +143,15 @@ const { queryParams, form, rules } = toRefs(data);
|
|||||||
/** 查询问卷调查列表 */
|
/** 查询问卷调查列表 */
|
||||||
const getList = async () => {
|
const getList = async () => {
|
||||||
loading.value = true;
|
loading.value = true;
|
||||||
|
const villageInfo = localStorage.getItem('villageInfo') as string;
|
||||||
listQuestionnaire(queryParams.value)
|
listQuestionnaire(queryParams.value)
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
questionnaireList.value = res.rows;
|
questionnaireList.value = res.rows;
|
||||||
|
questionnaireList.value.forEach((item) => {
|
||||||
|
item.contentLength = JSON.parse(item.content as string).length ?? 0;
|
||||||
|
item.villageName = JSON.parse(villageInfo).villageName;
|
||||||
|
return item;
|
||||||
|
});
|
||||||
total.value = res.total;
|
total.value = res.total;
|
||||||
})
|
})
|
||||||
.finally(() => {
|
.finally(() => {
|
||||||
@@ -217,18 +241,25 @@ const handleDelete = async (row?: QuestionnaireVO) => {
|
|||||||
await proxy?.$modal
|
await proxy?.$modal
|
||||||
.confirm('是否确认删除问卷调查?')
|
.confirm('是否确认删除问卷调查?')
|
||||||
.then(() => {
|
.then(() => {
|
||||||
delQuestionnaire(_ids, true).catch(async (res) => {
|
delQuestionnaire(_ids, true)
|
||||||
const content = res.msg.replace(/\n/g, '<br/>');
|
.catch(async (res) => {
|
||||||
await proxy?.$modal
|
const content = res.msg.replace(/\n/g, '<br/>');
|
||||||
.confirm(content)
|
await proxy?.$modal
|
||||||
.then(() => {
|
.confirm(content)
|
||||||
delQuestionnaire(_ids, false).then(() => {
|
.then(() => {
|
||||||
proxy?.$modal.msgSuccess('删除成功');
|
delQuestionnaire(_ids, false).then(() => {
|
||||||
getList();
|
proxy?.$modal.msgSuccess('删除成功');
|
||||||
});
|
getList();
|
||||||
})
|
});
|
||||||
.finally(() => (loading.value = false));
|
})
|
||||||
});
|
.finally(() => (loading.value = false));
|
||||||
|
})
|
||||||
|
.then((res) => {
|
||||||
|
if (res.msg === '操作成功') {
|
||||||
|
proxy?.$modal.msgSuccess('删除成功');
|
||||||
|
getList();
|
||||||
|
}
|
||||||
|
});
|
||||||
})
|
})
|
||||||
.finally(() => (loading.value = false));
|
.finally(() => (loading.value = false));
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -4,24 +4,24 @@
|
|||||||
<div class="AddBuildingBody">
|
<div class="AddBuildingBody">
|
||||||
<div class="title">基本信息</div>
|
<div class="title">基本信息</div>
|
||||||
<div class="addBuildingFormBody">
|
<div class="addBuildingFormBody">
|
||||||
<el-form class="formBody" label-position="right" ref="formRef" :model="form" :rules="rules" label-width="130px">
|
<el-form ref="formRef" :model="form" :rules="rules" class="formBody" label-position="right" label-width="130px">
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="11" v-if="type === 'private'">
|
<el-col v-if="type === 'private'" :span="11">
|
||||||
<el-form-item label="关联房屋" prop="houseId">
|
<el-form-item label="关联房屋" prop="houseId">
|
||||||
<el-cascader v-model="form.houseId" :options="treedata" @change="handleChangeHouse" />
|
<el-cascader v-model="form.houseId" :options="treedata" @change="handleChangeHouse" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="2" v-if="type === 'private'"></el-col>
|
<el-col v-if="type === 'private'" :span="2"></el-col>
|
||||||
<el-col :span="11">
|
<el-col :span="11">
|
||||||
<el-form-item label="维修项目" prop="maintenanceItemId">
|
<el-form-item label="维修项目" prop="maintenanceItemId">
|
||||||
<el-cascader
|
<el-cascader
|
||||||
|
v-model="form.maintenanceItemId"
|
||||||
|
:options="maintenanceItemTreeData"
|
||||||
:props="{
|
:props="{
|
||||||
label: 'projectName',
|
label: 'projectName',
|
||||||
value: 'id'
|
value: 'id'
|
||||||
}"
|
}"
|
||||||
v-model="form.maintenanceItemId"
|
|
||||||
placeholder="请选择维修项目"
|
placeholder="请选择维修项目"
|
||||||
:options="maintenanceItemTreeData"
|
|
||||||
@change="handleChangeMaintenanceItem"
|
@change="handleChangeMaintenanceItem"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@@ -37,17 +37,17 @@
|
|||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="问题描述" prop="problem">
|
<el-form-item label="问题描述" prop="problem">
|
||||||
<el-input maxlength="200" show-word-limit type="textarea" :rows="5" v-model.trim="form.problem" placeholder="请输入问题描述" />
|
<el-input v-model.trim="form.problem" :rows="5" maxlength="200" placeholder="请输入问题描述" show-word-limit type="textarea" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="20">
|
<el-col :span="20">
|
||||||
<el-form-item label="报修人" prop="residentId">
|
<el-form-item label="报修人" prop="residentId">
|
||||||
<Holder :isMultiple="false" :userid="form.residentId ?? ''" ref="HolderRef" @change="handleChange">
|
<Holder ref="HolderRef" :isMultiple="false" :userid="form.residentId ?? ''" @change="handleChange">
|
||||||
<template #default>
|
<template #default>
|
||||||
<div class="residentBox" @click="choiceResidentFun">
|
<div class="residentBox" @click="choiceResidentFun">
|
||||||
<div class="defaultBox" v-if="form.residentId === '' || form.residentId === null">
|
<div v-if="form.residentId === '' || form.residentId === null" class="defaultBox">
|
||||||
<span>请选择</span>
|
<span>请选择</span>
|
||||||
<el-icon><Search /></el-icon>
|
<el-icon><Search /></el-icon>
|
||||||
</div>
|
</div>
|
||||||
@@ -71,10 +71,10 @@
|
|||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="预约日期" prop="orderDate">
|
<el-form-item label="预约日期" prop="orderDate">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
:disabled-date="disabledDate"
|
|
||||||
v-model="form.orderDate"
|
v-model="form.orderDate"
|
||||||
type="datetime"
|
:disabled-date="disabledDate"
|
||||||
placeholder="年/月/日 时:分:秒"
|
placeholder="年/月/日 时:分:秒"
|
||||||
|
type="datetime"
|
||||||
value-format="YYYY-MM-DD HH:mm:ss"
|
value-format="YYYY-MM-DD HH:mm:ss"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@@ -87,17 +87,17 @@
|
|||||||
<el-upload
|
<el-upload
|
||||||
v-model:file-list="fileList"
|
v-model:file-list="fileList"
|
||||||
:action="uploadUrl"
|
:action="uploadUrl"
|
||||||
list-type="picture-card"
|
:before-upload="handleChangeFile"
|
||||||
:limit="9"
|
:limit="9"
|
||||||
:on-exceed="handleExceed"
|
:on-exceed="handleExceed"
|
||||||
:on-preview="handlePictureCardPreview"
|
:on-preview="handlePictureCardPreview"
|
||||||
:on-remove="handleRemove"
|
:on-remove="handleRemove"
|
||||||
:before-upload="handleChangeFile"
|
list-type="picture-card"
|
||||||
>
|
>
|
||||||
<el-icon><Plus /></el-icon>
|
<el-icon><Plus /></el-icon>
|
||||||
</el-upload>
|
</el-upload>
|
||||||
<el-dialog v-model="dialogVisible">
|
<el-dialog v-model="dialogVisible">
|
||||||
<img w-full :src="dialogImageUrl" alt="Preview Image" />
|
<img :src="dialogImageUrl" alt="Preview Image" w-full />
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
@@ -112,7 +112,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script lang="ts" setup>
|
||||||
import { ref } from 'vue';
|
import { ref } from 'vue';
|
||||||
import PageHeader from '@/components/Pageheader/index.vue';
|
import PageHeader from '@/components/Pageheader/index.vue';
|
||||||
import { hasFormData } from '@/utils/house';
|
import { hasFormData } from '@/utils/house';
|
||||||
@@ -151,6 +151,7 @@ const form = ref({
|
|||||||
const type = ref('private');
|
const type = ref('private');
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
type.value = (route.query.type as 'public' | 'private') || 'private';
|
type.value = (route.query.type as 'public' | 'private') || 'private';
|
||||||
|
init();
|
||||||
});
|
});
|
||||||
const rules = ref({
|
const rules = ref({
|
||||||
houseId: [{ required: type.value === 'private', message: '请选择关联房屋', trigger: 'blur' }],
|
houseId: [{ required: type.value === 'private', message: '请选择关联房屋', trigger: 'blur' }],
|
||||||
@@ -172,7 +173,10 @@ const userid = ref(null);
|
|||||||
const maintenanceItemTreeData = ref();
|
const maintenanceItemTreeData = ref();
|
||||||
|
|
||||||
function init() {
|
function init() {
|
||||||
gettreelistRepairProject().then((res) => {
|
const obj = {
|
||||||
|
projectType: type.value === 'private' ? '1' : '0'
|
||||||
|
};
|
||||||
|
gettreelistRepairProject(obj).then((res) => {
|
||||||
maintenanceItemTreeData.value = handleTreeDisable(res.data);
|
maintenanceItemTreeData.value = handleTreeDisable(res.data);
|
||||||
if (route.query.id) {
|
if (route.query.id) {
|
||||||
userid.value = route.query.id;
|
userid.value = route.query.id;
|
||||||
@@ -196,7 +200,6 @@ function init() {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
init();
|
|
||||||
|
|
||||||
function handleTreeDisable(TreeData: RepairProjectVO[]) {
|
function handleTreeDisable(TreeData: RepairProjectVO[]) {
|
||||||
return TreeData.map((item) => {
|
return TreeData.map((item) => {
|
||||||
@@ -340,7 +343,7 @@ const cancelForm = () => {
|
|||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style lang="scss" scoped>
|
||||||
.AddBuildingBox {
|
.AddBuildingBox {
|
||||||
padding: 15px;
|
padding: 15px;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
|||||||
@@ -4,9 +4,9 @@
|
|||||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||||
<div v-show="showSearch" class="mb-[10px]">
|
<div v-show="showSearch" class="mb-[10px]">
|
||||||
<el-card shadow="hover">
|
<el-card shadow="hover">
|
||||||
<el-form ref="queryFormRef" :model="queryParams" @submit.prevent="handleQuery" label-width="120" :inline="true">
|
<el-form ref="queryFormRef" :inline="true" :model="queryParams" label-width="120" @submit.prevent="handleQuery">
|
||||||
<el-form-item label="收费类型名称" prop="name">
|
<el-form-item label="收费类型名称" prop="name">
|
||||||
<el-input maxlength="20" v-model.trim="queryParams.name" placeholder="请输入收费类型名称" clearable @keyup.enter="handleQuery" />
|
<el-input v-model.trim="queryParams.name" clearable maxlength="20" placeholder="请输入收费类型名称" @keyup.enter="handleQuery" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" @click="handleQuery">搜索</el-button>
|
<el-button type="primary" @click="handleQuery">搜索</el-button>
|
||||||
@@ -28,8 +28,8 @@
|
|||||||
:disable-delete="multiple"
|
:disable-delete="multiple"
|
||||||
:disable-edit="single"
|
:disable-edit="single"
|
||||||
:show-add="checkPermi(['chargeType:chargeType:add'])"
|
:show-add="checkPermi(['chargeType:chargeType:add'])"
|
||||||
:show-edit="false"
|
:show-delete="checkPermi(['chargeType:chargeType:remove'])"
|
||||||
:show-delete="false"
|
:show-edit="checkPermi(['chargeType:chargeType:edit'])"
|
||||||
@update:add="handleAdd"
|
@update:add="handleAdd"
|
||||||
@update:edit="handleUpdate()"
|
@update:edit="handleUpdate()"
|
||||||
@update:delete="handleDelete()"
|
@update:delete="handleDelete()"
|
||||||
@@ -39,34 +39,34 @@
|
|||||||
</el-row>
|
</el-row>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<el-table v-loading="loading" border :data="chargeTypeList" @selection-change="handleSelectionChange">
|
<el-table v-loading="loading" :data="chargeTypeList" border @selection-change="handleSelectionChange">
|
||||||
<el-table-column type="selection" width="55" align="center" />
|
<el-table-column align="center" type="selection" width="55" />
|
||||||
<el-table-column label="收费类型名称" align="center" prop="name" />
|
<el-table-column align="center" label="收费类型名称" prop="name" />
|
||||||
<el-table-column label="状态" align="center" prop="status">
|
<el-table-column align="center" label="状态" prop="status">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-switch
|
<el-switch
|
||||||
@change="(val: string) => handleChange(val, scope.row)"
|
|
||||||
v-model="scope.row.status"
|
v-model="scope.row.status"
|
||||||
active-value="0"
|
active-value="0"
|
||||||
inactive-value="1"
|
inactive-value="1"
|
||||||
|
@change="(val: string) => handleChange(val, scope.row)"
|
||||||
></el-switch>
|
></el-switch>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width">
|
<el-table-column align="center" class-name="small-padding fixed-width" fixed="right" label="操作">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button link type="primary" @click="handleUpdate(scope.row)" v-has-permi="['chargeType:chargeType:edit']">修改</el-button>
|
<el-button v-has-permi="['chargeType:chargeType:edit']" link type="primary" @click="handleUpdate(scope.row)">修改</el-button>
|
||||||
<el-button link type="primary" @click="handleDelete(scope.row)" v-has-permi="['chargeType:chargeType:remove']">删除</el-button>
|
<el-button v-has-permi="['chargeType:chargeType:remove']" link type="primary" @click="handleDelete(scope.row)">删除</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</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" v-model:limit="queryParams.pageSize" v-model:page="queryParams.pageNum" :total="total" @pagination="getList" />
|
||||||
</el-card>
|
</el-card>
|
||||||
<!-- 添加或修改收费类型对话框 -->
|
<!-- 添加或修改收费类型对话框 -->
|
||||||
<el-dialog :title="dialog.title" v-model="dialog.visible" width="500px" append-to-body>
|
<el-dialog v-model="dialog.visible" :title="dialog.title" append-to-body width="500px">
|
||||||
<el-form ref="chargeTypeFormRef" :model="form" :rules="rules" label-width="100px">
|
<el-form ref="chargeTypeFormRef" :model="form" :rules="rules" label-width="100px">
|
||||||
<el-form-item label="收费类型名称" prop="name">
|
<el-form-item label="收费类型名称" prop="name">
|
||||||
<el-input maxlength="20" v-model.trim="form.name" placeholder="请输入收费类型名称" />
|
<el-input v-model.trim="form.name" maxlength="20" placeholder="请输入收费类型名称" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
@@ -76,36 +76,36 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
<el-dialog :title="dialog2.title" v-model="dialog2.visible" width="500px" append-to-body>
|
<el-dialog v-model="dialog2.visible" :title="dialog2.title" append-to-body width="500px">
|
||||||
<el-form ref="chargeTypeForm2Ref" :model="form2" :rules="rules2" label-width="100px">
|
<el-form ref="chargeTypeForm2Ref" :model="form2" :rules="rules2" label-width="100px">
|
||||||
<el-form-item label="主收费类型">
|
<el-form-item label="主收费类型">
|
||||||
<el-select
|
<el-select
|
||||||
@change="handleChangeMasterType"
|
|
||||||
style="width: 220px; margin-right: 10px"
|
|
||||||
v-model="form2.masterTypeId"
|
v-model="form2.masterTypeId"
|
||||||
placeholder="请选择收费类型"
|
placeholder="请选择收费类型"
|
||||||
|
style="width: 220px; margin-right: 10px"
|
||||||
|
@change="handleChangeMasterType"
|
||||||
>
|
>
|
||||||
<el-option v-for="item in TypeList" :key="item.id" :label="item.name" :value="item.id" />
|
<el-option v-for="item in TypeList" :key="item.id" :label="item.name" :value="item.id" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="次收费类型" v-for="(_, index) in slaveTypeIdsList" :key="index">
|
<el-form-item v-for="(_, index) in slaveTypeIdsList" :key="index" label="次收费类型">
|
||||||
<div class="flex flex-items-center">
|
<div class="flex flex-items-center">
|
||||||
<el-select
|
<el-select
|
||||||
@change="handleChangeMasterType"
|
|
||||||
style="width: 220px; margin-right: 10px"
|
|
||||||
v-model="slaveTypeIdsList[index]"
|
v-model="slaveTypeIdsList[index]"
|
||||||
placeholder="请选择收费类型"
|
placeholder="请选择收费类型"
|
||||||
|
style="width: 220px; margin-right: 10px"
|
||||||
|
@change="handleChangeMasterType"
|
||||||
>
|
>
|
||||||
<el-option :disabled="item.disabled" v-for="item in TypeList" :key="item.id" :label="item.name" :value="item.id" />
|
<el-option v-for="item in TypeList" :key="item.id" :disabled="item.disabled" :label="item.name" :value="item.id" />
|
||||||
</el-select>
|
</el-select>
|
||||||
<div class="addBox" @click="handleAddType" v-if="index === 0 && slaveTypeIdsList.length < TypeList.length - 1">
|
<div v-if="index === 0 && slaveTypeIdsList.length < TypeList.length - 1" class="addBox" @click="handleAddType">
|
||||||
<el-icon size="23" color="#ffffff"><Plus /></el-icon>
|
<el-icon color="#ffffff" size="23"><Plus /></el-icon>
|
||||||
</div>
|
</div>
|
||||||
<el-icon @click="deleteType(index)" v-else-if="slaveTypeIdsList.length > 1" size="24" color="red"><Delete /></el-icon>
|
<el-icon v-else-if="slaveTypeIdsList.length > 1" color="red" size="24" @click="deleteType(index)"><Delete /></el-icon>
|
||||||
</div>
|
</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="是否启用关联">
|
<el-form-item label="是否启用关联">
|
||||||
<el-switch v-model="form2.status" active-value="0" inactive-value="1" active-text="启用" inactive-text="禁用" />
|
<el-switch v-model="form2.status" active-text="启用" active-value="0" inactive-text="禁用" inactive-value="1" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
@@ -118,7 +118,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup name="ChargeType" lang="ts">
|
<script lang="ts" name="ChargeType" setup>
|
||||||
import PageHeader from '@/components/Pageheader/index.vue';
|
import PageHeader from '@/components/Pageheader/index.vue';
|
||||||
import pagination from '@/components/Pagination/index.vue';
|
import pagination from '@/components/Pagination/index.vue';
|
||||||
import {
|
import {
|
||||||
@@ -347,7 +347,7 @@ onMounted(() => {
|
|||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style lang="scss" scoped>
|
||||||
.el-table {
|
.el-table {
|
||||||
height: calc(100% - 80px);
|
height: calc(100% - 80px);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,28 +3,28 @@
|
|||||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||||
<div v-show="showSearch" class="mb-[10px]">
|
<div v-show="showSearch" class="mb-[10px]">
|
||||||
<el-card shadow="hover">
|
<el-card shadow="hover">
|
||||||
<el-form ref="queryFormRef" :model="queryParams" @submit.prevent="handleQuery" :inline="true">
|
<el-form ref="queryFormRef" :inline="true" :model="queryParams" @submit.prevent="handleQuery">
|
||||||
<el-form-item label="用户ID" prop="deviceCode">
|
<el-form-item label="用户ID" prop="deviceCode">
|
||||||
<el-input v-model="queryParams.deviceCode" placeholder="请输入用户ID" clearable @keyup.enter="handleQuery" />
|
<el-input v-model="queryParams.deviceCode" clearable placeholder="请输入用户ID" @keyup.enter="handleQuery" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="总用电量" prop="totalEnergy">
|
<el-form-item label="总用电量" prop="totalEnergy">
|
||||||
<el-input v-model="queryParams.totalEnergy" placeholder="请输入总用电量" clearable @keyup.enter="handleQuery" />
|
<el-input v-model="queryParams.totalEnergy" clearable placeholder="请输入总用电量" @keyup.enter="handleQuery" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="抄表时间" prop="readTime">
|
<el-form-item label="抄表时间" prop="readTime">
|
||||||
<el-date-picker clearable v-model="queryParams.readTime" type="date" value-format="YYYY-MM-DD" placeholder="请选择抄表时间" />
|
<el-date-picker v-model="queryParams.readTime" clearable placeholder="请选择抄表时间" type="date" value-format="YYYY-MM-DD" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="当前余额" prop="balance">
|
<el-form-item label="当前余额" prop="balance">
|
||||||
<el-input v-model="queryParams.balance" placeholder="请输入当前余额" clearable @keyup.enter="handleQuery" />
|
<el-input v-model="queryParams.balance" clearable placeholder="请输入当前余额" @keyup.enter="handleQuery" />
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="" prop="event">
|
|
||||||
<el-input v-model="queryParams.event" placeholder="请输入" clearable @keyup.enter="handleQuery" />
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="" prop="rangeTime">
|
|
||||||
<el-input v-model="queryParams.rangeTime" placeholder="请输入" clearable @keyup.enter="handleQuery" />
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="" prop="rangeFee">
|
|
||||||
<el-input v-model="queryParams.rangeFee" placeholder="请输入" clearable @keyup.enter="handleQuery" />
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<!-- <el-form-item label="" prop="event">-->
|
||||||
|
<!-- <el-input v-model="queryParams.event" placeholder="请输入" clearable @keyup.enter="handleQuery" />-->
|
||||||
|
<!-- </el-form-item>-->
|
||||||
|
<!-- <el-form-item label="" prop="rangeTime">-->
|
||||||
|
<!-- <el-input v-model="queryParams.rangeTime" placeholder="请输入" clearable @keyup.enter="handleQuery" />-->
|
||||||
|
<!-- </el-form-item>-->
|
||||||
|
<!-- <el-form-item label="" prop="rangeFee">-->
|
||||||
|
<!-- <el-input v-model="queryParams.rangeFee" placeholder="请输入" clearable @keyup.enter="handleQuery" />-->
|
||||||
|
<!-- </el-form-item>-->
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" @click="handleQuery">搜索</el-button>
|
<el-button type="primary" @click="handleQuery">搜索</el-button>
|
||||||
<el-button @click="resetQuery">重置</el-button>
|
<el-button @click="resetQuery">重置</el-button>
|
||||||
@@ -38,32 +38,32 @@
|
|||||||
<template #header>
|
<template #header>
|
||||||
<el-row :gutter="10" class="mb8">
|
<el-row :gutter="10" class="mb8">
|
||||||
<el-col :span="1.5">
|
<el-col :span="1.5">
|
||||||
<el-button type="primary" plain icon="Plus" @click="handleAdd" v-has-permi="['electricityRecord:electricityRecord:add']">新增</el-button>
|
<el-button v-has-permi="['electricityRecord:electricityRecord:add']" icon="Plus" plain type="primary" @click="handleAdd">新增</el-button>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="1.5">
|
<el-col :span="1.5">
|
||||||
<el-button
|
<el-button
|
||||||
type="success"
|
|
||||||
plain
|
|
||||||
icon="Edit"
|
|
||||||
:disabled="single"
|
|
||||||
@click="handleUpdate()"
|
|
||||||
v-has-permi="['electricityRecord:electricityRecord:edit']"
|
v-has-permi="['electricityRecord:electricityRecord:edit']"
|
||||||
|
:disabled="single"
|
||||||
|
icon="Edit"
|
||||||
|
plain
|
||||||
|
type="success"
|
||||||
|
@click="handleUpdate()"
|
||||||
>修改</el-button
|
>修改</el-button
|
||||||
>
|
>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="1.5">
|
<el-col :span="1.5">
|
||||||
<el-button
|
<el-button
|
||||||
type="danger"
|
|
||||||
plain
|
|
||||||
icon="Delete"
|
|
||||||
:disabled="multiple"
|
|
||||||
@click="handleDelete()"
|
|
||||||
v-has-permi="['electricityRecord:electricityRecord:remove']"
|
v-has-permi="['electricityRecord:electricityRecord:remove']"
|
||||||
|
:disabled="multiple"
|
||||||
|
icon="Delete"
|
||||||
|
plain
|
||||||
|
type="danger"
|
||||||
|
@click="handleDelete()"
|
||||||
>删除</el-button
|
>删除</el-button
|
||||||
>
|
>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="1.5">
|
<el-col :span="1.5">
|
||||||
<el-button type="warning" plain icon="Download" @click="handleExport" v-has-permi="['electricityRecord:electricityRecord:export']"
|
<el-button v-has-permi="['electricityRecord:electricityRecord:export']" icon="Download" plain type="warning" @click="handleExport"
|
||||||
>导出</el-button
|
>导出</el-button
|
||||||
>
|
>
|
||||||
</el-col>
|
</el-col>
|
||||||
@@ -71,49 +71,49 @@
|
|||||||
</el-row>
|
</el-row>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<el-table v-loading="loading" border :data="electricityRecordList" @selection-change="handleSelectionChange">
|
<el-table v-loading="loading" :data="electricityRecordList" border @selection-change="handleSelectionChange">
|
||||||
<el-table-column type="selection" width="55" align="center" />
|
<el-table-column align="center" type="selection" width="55" />
|
||||||
<el-table-column label="抄表记录ID" align="center" prop="id" v-if="true" />
|
<el-table-column v-if="true" align="center" label="抄表记录ID" prop="id" />
|
||||||
<el-table-column label="用户ID" align="center" prop="deviceCode" />
|
<el-table-column align="center" label="用户ID" prop="deviceCode" />
|
||||||
<el-table-column label="总用电量" align="center" prop="totalEnergy" />
|
<el-table-column align="center" label="总用电量" prop="totalEnergy" />
|
||||||
<el-table-column label="抄表时间" align="center" prop="readTime" width="180">
|
<el-table-column align="center" label="抄表时间" prop="readTime" width="180">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span>{{ parseTime(scope.row.readTime, '{y}-{m}-{d}') }}</span>
|
<span>{{ parseTime(scope.row.readTime, '{y}-{m}-{d}') }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="当前余额" align="center" prop="balance" />
|
<el-table-column align="center" label="当前余额" prop="balance" />
|
||||||
<el-table-column label="状态" align="center" prop="status" />
|
<el-table-column align="center" label="状态" prop="status" />
|
||||||
<el-table-column label="" align="center" prop="event" />
|
<el-table-column align="center" label="" prop="event" />
|
||||||
<el-table-column label="" align="center" prop="rangeTime" />
|
<el-table-column align="center" label="" prop="rangeTime" />
|
||||||
<el-table-column label="" align="center" prop="rangeFee" />
|
<el-table-column align="center" label="" prop="rangeFee" />
|
||||||
<el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width">
|
<el-table-column align="center" class-name="small-padding fixed-width" fixed="right" label="操作">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-tooltip content="修改" placement="top">
|
<el-tooltip content="修改" placement="top">
|
||||||
<el-button
|
<el-button
|
||||||
|
v-has-permi="['electricityRecord:electricityRecord:edit']"
|
||||||
|
icon="Edit"
|
||||||
link
|
link
|
||||||
type="primary"
|
type="primary"
|
||||||
icon="Edit"
|
|
||||||
@click="handleUpdate(scope.row)"
|
@click="handleUpdate(scope.row)"
|
||||||
v-has-permi="['electricityRecord:electricityRecord:edit']"
|
|
||||||
></el-button>
|
></el-button>
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
<el-tooltip content="删除" placement="top">
|
<el-tooltip content="删除" placement="top">
|
||||||
<el-button
|
<el-button
|
||||||
|
v-has-permi="['electricityRecord:electricityRecord:remove']"
|
||||||
|
icon="Delete"
|
||||||
link
|
link
|
||||||
type="primary"
|
type="primary"
|
||||||
icon="Delete"
|
|
||||||
@click="handleDelete(scope.row)"
|
@click="handleDelete(scope.row)"
|
||||||
v-has-permi="['electricityRecord:electricityRecord:remove']"
|
|
||||||
></el-button>
|
></el-button>
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</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" v-model:limit="queryParams.pageSize" v-model:page="queryParams.pageNum" :total="total" @pagination="getList" />
|
||||||
</el-card>
|
</el-card>
|
||||||
<!-- 添加或修改电抄记录对话框 -->
|
<!-- 添加或修改电抄记录对话框 -->
|
||||||
<el-dialog :title="dialog.title" v-model="dialog.visible" width="500px" append-to-body>
|
<el-dialog v-model="dialog.visible" :title="dialog.title" append-to-body width="500px">
|
||||||
<el-form ref="electricityRecordFormRef" :model="form" :rules="rules" label-width="80px">
|
<el-form ref="electricityRecordFormRef" :model="form" :rules="rules" label-width="80px">
|
||||||
<el-form-item label="用户ID" prop="deviceCode">
|
<el-form-item label="用户ID" prop="deviceCode">
|
||||||
<el-input v-model="form.deviceCode" placeholder="请输入用户ID" />
|
<el-input v-model="form.deviceCode" placeholder="请输入用户ID" />
|
||||||
@@ -122,7 +122,7 @@
|
|||||||
<el-input v-model="form.totalEnergy" placeholder="请输入总用电量" />
|
<el-input v-model="form.totalEnergy" placeholder="请输入总用电量" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="抄表时间" prop="readTime">
|
<el-form-item label="抄表时间" prop="readTime">
|
||||||
<el-date-picker clearable v-model="form.readTime" type="datetime" value-format="YYYY-MM-DD HH:mm:ss" placeholder="请选择抄表时间">
|
<el-date-picker v-model="form.readTime" clearable placeholder="请选择抄表时间" type="datetime" value-format="YYYY-MM-DD HH:mm:ss">
|
||||||
</el-date-picker>
|
</el-date-picker>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="当前余额" prop="balance">
|
<el-form-item label="当前余额" prop="balance">
|
||||||
@@ -148,7 +148,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup name="ElectricityRecord" lang="ts">
|
<script lang="ts" name="ElectricityRecord" setup>
|
||||||
import pagination from '@/components/Pagination/index.vue';
|
import pagination from '@/components/Pagination/index.vue';
|
||||||
import {
|
import {
|
||||||
listElectricityRecord,
|
listElectricityRecord,
|
||||||
|
|||||||
@@ -5,12 +5,12 @@
|
|||||||
<div v-show="showSearch" class="mb-[10px]">
|
<div v-show="showSearch" class="mb-[10px]">
|
||||||
<el-card shadow="hover">
|
<el-card shadow="hover">
|
||||||
<div class="flex flex-items-center justify-between">
|
<div class="flex flex-items-center justify-between">
|
||||||
<el-form ref="queryFormRef" :model="queryParams" @submit.prevent="handleQuery" :inline="true">
|
<el-form ref="queryFormRef" :inline="true" :model="queryParams" @submit.prevent="handleQuery">
|
||||||
<el-form-item label="精准查询">
|
<el-form-item label="精准查询">
|
||||||
<el-select v-model="queryParamsType" style="width: 160px; margin-right: 20px">
|
<el-select v-model="queryParamsType" style="width: 160px; margin-right: 20px">
|
||||||
<el-option v-for="item in deviceCodeList" :key="item.value" :label="item.name" :value="item.value"></el-option>
|
<el-option v-for="item in deviceCodeList" :key="item.value" :label="item.name" :value="item.value"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
<el-input v-model="queryParamsValue" placeholder="请输入" clearable @keyup.enter="handleQuery" />
|
<el-input v-model="queryParamsValue" clearable placeholder="请输入" @keyup.enter="handleQuery" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" @click="handleQuery">搜索</el-button>
|
<el-button type="primary" @click="handleQuery">搜索</el-button>
|
||||||
@@ -24,48 +24,45 @@
|
|||||||
</transition>
|
</transition>
|
||||||
|
|
||||||
<el-card class="flex-1" shadow="never">
|
<el-card class="flex-1" shadow="never">
|
||||||
<el-table v-loading="loading" border :data="payRecordListList">
|
<el-table v-loading="loading" :data="payRecordListList" border>
|
||||||
<el-table-column type="selection" width="55" align="center" />
|
<el-table-column align="center" type="selection" width="55" />
|
||||||
<el-table-column label="仪表名称" align="center" prop="deviceType">
|
<el-table-column align="center" label="仪表名称" prop="deviceType">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<dict-tag :options="com_waterelectricity_topup_type" :value="scope.row.deviceType"></dict-tag>
|
<dict-tag :options="com_waterelectricity_topup_type" :value="scope.row.deviceType"></dict-tag>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="设备编号" align="center" prop="deviceCode" />
|
<el-table-column align="center" label="设备编号" prop="deviceCode" width="160" />
|
||||||
<el-table-column label="房间号" align="center" prop="houseName" />
|
<el-table-column align="center" label="房间号" prop="houseName" />
|
||||||
<el-table-column label="收费项目" align="center" prop="payType" width="160">
|
<el-table-column align="center" label="收费项目" prop="payType" width="160">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<dict-tag :options="com_payrecord_pay_type" :value="scope.row.payType"></dict-tag>
|
<dict-tag :options="com_payrecord_pay_type" :value="scope.row.payType"></dict-tag>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="抄表月份" align="center" prop="recordMonth" width="100">
|
<el-table-column align="center" label="抄表月份" prop="recordMonth" width="100">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span>{{ parseTime(scope.row.recordMonth, '{y}-{m}') }}</span>
|
<span>{{ parseTime(scope.row.recordMonth, '{y}-{m}') }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="开始时间" align="center" prop="startTime" width="160">
|
<el-table-column align="center" label="收费起止日期" prop="endTime" width="250">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span>{{ parseTime(scope.row.startTime, '{y}-{m}-{d}') }}</span>
|
<span>{{ parseTime(scope.row.startTime, '{y}-{m}-{d}') }}</span>
|
||||||
</template>
|
<span style="margin: 0 10px">-</span>
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="结束时间" align="center" prop="endTime" width="160">
|
|
||||||
<template #default="scope">
|
|
||||||
<span>{{ parseTime(scope.row.endTime, '{y}-{m}-{d}') }}</span>
|
<span>{{ parseTime(scope.row.endTime, '{y}-{m}-{d}') }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="本期用度" align="center" prop="currentCost" width="160" />
|
<el-table-column align="center" label="本期用度" prop="currentCost" width="100" />
|
||||||
<el-table-column label="费用合计(元)" align="center" prop="totalCost" width="120" />
|
<el-table-column align="center" label="费用合计(元)" prop="totalCost" width="120" />
|
||||||
<el-table-column label="操作" align="center" width="160" fixed="right" class-name="small-padding fixed-width">
|
<el-table-column align="center" class-name="small-padding fixed-width" fixed="right" label="操作" width="160">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button link type="primary" @click="handleUpdate(scope.row)">详情</el-button>
|
<el-button link type="primary" @click="handleUpdate(scope.row)">详情</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</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" v-model:limit="queryParams.pageSize" v-model:page="queryParams.pageNum" :total="total" @pagination="getList" />
|
||||||
</el-card>
|
</el-card>
|
||||||
<!-- 添加或修改抄表周期明细对话框 -->
|
<!-- 添加或修改抄表周期明细对话框 -->
|
||||||
<el-dialog :title="dialog.title" v-model="dialog.visible" width="800px" append-to-body>
|
<el-dialog v-model="dialog.visible" :title="dialog.title" append-to-body width="800px">
|
||||||
<el-form ref="payRecordListFormRef" :model="form" label-position="left">
|
<el-form ref="payRecordListFormRef" :model="form" label-position="left">
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
@@ -141,7 +138,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup name="PayRecordList" lang="ts">
|
<script lang="ts" name="PayRecordList" setup>
|
||||||
import { listPayRecordList, getPayRecordList, addPayRecordList, updatePayRecordList } from '@/api/system/SdbPayRecordMain';
|
import { listPayRecordList, getPayRecordList, addPayRecordList, updatePayRecordList } from '@/api/system/SdbPayRecordMain';
|
||||||
import { PayRecordListVO, PayRecordListQuery, PayRecordListForm } from '@/api/system/SdbPayRecordMain/type';
|
import { PayRecordListVO, PayRecordListQuery, PayRecordListForm } from '@/api/system/SdbPayRecordMain/type';
|
||||||
|
|
||||||
@@ -205,15 +202,15 @@ const deviceCodeList = [
|
|||||||
{
|
{
|
||||||
name: '房屋号',
|
name: '房屋号',
|
||||||
value: 'houseName'
|
value: 'houseName'
|
||||||
},
|
|
||||||
{
|
|
||||||
name: '住户姓名',
|
|
||||||
value: 'residentName'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: '仪表名称',
|
|
||||||
value: 'paycordName'
|
|
||||||
}
|
}
|
||||||
|
// {
|
||||||
|
// name: '住户姓名',
|
||||||
|
// value: 'residentName'
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// name: '仪表名称',
|
||||||
|
// value: 'paycordName'
|
||||||
|
// }
|
||||||
];
|
];
|
||||||
const { queryParams, form } = toRefs(data);
|
const { queryParams, form } = toRefs(data);
|
||||||
|
|
||||||
|
|||||||
@@ -4,18 +4,18 @@
|
|||||||
<div class="AddBuildingBody">
|
<div class="AddBuildingBody">
|
||||||
<div class="title">基本信息</div>
|
<div class="title">基本信息</div>
|
||||||
<div class="addBuildingFormBody">
|
<div class="addBuildingFormBody">
|
||||||
<el-form class="formBody" label-position="right" ref="formRef" :model="form" :rules="rules" label-width="130px">
|
<el-form ref="formRef" :model="form" :rules="rules" class="formBody" label-position="right" label-width="130px">
|
||||||
<el-form-item label="账单名称" prop="billName">
|
<el-form-item label="账单名称" prop="billName">
|
||||||
<el-input maxlength="30" v-model.trim="form.billName" placeholder="请输入账单名称" />
|
<el-input v-model.trim="form.billName" maxlength="30" placeholder="请输入账单名称" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="收费项目" prop="chargeItemId">
|
<el-form-item label="收费项目" prop="chargeItemId">
|
||||||
<el-select v-model="form.chargeItemId" @change="(val: string) => handleChange(val, true)">
|
<el-select v-model="form.chargeItemId" @change="(val: string) => handleChange(val, true)">
|
||||||
<el-option :disabled="item.status === '1'" v-for="(item, index) in chargeItemList" :key="index" :value="item.id" :label="item.itemName">
|
<el-option v-for="(item, index) in chargeItemList" :key="index" :disabled="item.status === '1'" :label="item.itemName" :value="item.id">
|
||||||
<div class="flex flex-row justify-between" style="font-size: 13px">
|
<div class="flex flex-row justify-between" style="font-size: 13px">
|
||||||
<span>{{ item.itemName }}</span>
|
<span>{{ item.itemName }}</span>
|
||||||
<div class="flex flex-items-baseline" style="color: var(--el-text-color-secondary)">
|
<div class="flex flex-items-baseline" style="color: var(--el-text-color-secondary)">
|
||||||
<span>{{ item.fixedPrice }} ¥ </span>
|
<span>{{ item.fixedPrice }} ¥ </span>
|
||||||
<span style="margin: 0 5px" v-if="item.unit">/</span>
|
<span v-if="item.unit" style="margin: 0 5px">/</span>
|
||||||
<dict-tag v-if="item.unit" :options="com_charge_item_unit" :value="item.unit"></dict-tag>
|
<dict-tag v-if="item.unit" :options="com_charge_item_unit" :value="item.unit"></dict-tag>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -23,75 +23,75 @@
|
|||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- 水费,电费, 收费范围为 房屋 -->
|
<!-- 水费,电费, 收费范围为 房屋 -->
|
||||||
<el-form-item label="收费范围" prop="chargeScope" v-if="typeNameList.includes(typeName)">
|
<el-form-item v-if="typeNameList.includes(typeName)" label="收费范围" prop="chargeScope">
|
||||||
<div>
|
<div>
|
||||||
<div class="flex flex-row flex-items-end">
|
<div class="flex flex-row flex-items-end">
|
||||||
<el-radio-group v-model="form.chargeScope">
|
<el-radio-group v-model="form.chargeScope">
|
||||||
<div class="flex flex-col flex-items-end">
|
<div class="flex flex-col flex-items-end">
|
||||||
<el-radio
|
<el-radio
|
||||||
:disabled="!form.chargeItemId"
|
|
||||||
style="margin-right: 0"
|
|
||||||
v-for="(item, index) in com_bill_charge_scope_house"
|
v-for="(item, index) in com_bill_charge_scope_house"
|
||||||
:key="index"
|
:key="index"
|
||||||
:value="item.value"
|
:disabled="!form.chargeItemId"
|
||||||
:label="item.label"
|
:label="item.label"
|
||||||
|
:value="item.value"
|
||||||
|
style="margin-right: 0"
|
||||||
></el-radio>
|
></el-radio>
|
||||||
</div>
|
</div>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
<div style="height: 32px">
|
<div style="height: 32px">
|
||||||
<el-button @click="OpenUseTablesFun('house')" link type="primary" v-if="form.chargeScope === '1'" class="ml-10px">请选择</el-button>
|
<el-button v-if="form.chargeScope === '1'" class="ml-10px" link type="primary" @click="OpenUseTablesFun('house')">请选择</el-button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- 其他费用, 收费范围为 业主 -->
|
<!-- 其他费用, 收费范围为 业主 -->
|
||||||
<el-form-item label="收费范围" prop="chargeScope" v-else>
|
<el-form-item v-else label="收费范围" prop="chargeScope">
|
||||||
<div class="flex flex-row flex-items-end">
|
<div class="flex flex-row flex-items-end">
|
||||||
<el-radio-group v-model="form.chargeScope">
|
<el-radio-group v-model="form.chargeScope">
|
||||||
<div class="flex flex-col flex-items-end">
|
<div class="flex flex-col flex-items-end">
|
||||||
<el-radio
|
<el-radio
|
||||||
style="margin-right: 0"
|
|
||||||
:disabled="!form.chargeItemId"
|
|
||||||
v-for="(item, index) in com_questionnaire_scope"
|
v-for="(item, index) in com_questionnaire_scope"
|
||||||
:key="index"
|
:key="index"
|
||||||
:value="item.value"
|
:disabled="!form.chargeItemId"
|
||||||
:label="item.label"
|
:label="item.label"
|
||||||
|
:value="item.value"
|
||||||
|
style="margin-right: 0"
|
||||||
></el-radio>
|
></el-radio>
|
||||||
</div>
|
</div>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
<div style="height: 32px">
|
<div style="height: 32px">
|
||||||
<el-button @click="OpenUseTablesFun('user')" link type="primary" v-if="form.chargeScope === '1'" class="ml-10px">请选择</el-button>
|
<el-button v-if="form.chargeScope === '1'" class="ml-10px" link type="primary" @click="OpenUseTablesFun('user')">请选择</el-button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- 房屋选择 -->
|
<!-- 房屋选择 -->
|
||||||
<el-form-item v-if="form.chargeScope === '1' && typeNameList.includes(typeName)">
|
<el-form-item v-if="form.chargeScope === '1' && typeNameList.includes(typeName)">
|
||||||
<div class="residentBox">
|
<div class="residentBox">
|
||||||
<House returnvalue="houseId" ref="HolderRef" :isMultiple="true" @change="handleSelect"> </House>
|
<House ref="HolderRef" :isMultiple="true" returnvalue="houseId" @change="handleSelect"> </House>
|
||||||
</div>
|
</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- 业主选择 -->
|
<!-- 业主选择 -->
|
||||||
<el-form-item v-if="form.chargeScope === '1' && !typeNameList.includes(typeName)">
|
<el-form-item v-if="form.chargeScope === '1' && !typeNameList.includes(typeName)">
|
||||||
<!-- 业主选择 车位费用 -->
|
<!-- 业主选择 车位费用 -->
|
||||||
<div class="residentBox" v-if="typeName === HandleTypeId.Resident.Parking">
|
<div v-if="typeName === HandleTypeId.Resident.Parking" class="residentBox">
|
||||||
<CarUser returnvalue="parkingId" ref="ParkingUserRef" :isMultiple="true" @change="handleCheckParking"></CarUser>
|
<CarUser ref="ParkingUserRef" :isMultiple="true" returnvalue="parkingId" @change="handleCheckParking"></CarUser>
|
||||||
</div>
|
</div>
|
||||||
<div class="residentBox" v-else>
|
<div v-else class="residentBox">
|
||||||
<UserHolder returnvalue="residentId" ref="userRef" :isMultiple="true" @change="handleCheckUser"></UserHolder>
|
<UserHolder ref="userRef" :isMultiple="true" returnvalue="residentId" @change="handleCheckUser"></UserHolder>
|
||||||
</div>
|
</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="费用周期" prop="chargePeriod">
|
<el-form-item label="费用周期" prop="chargePeriod">
|
||||||
<el-select @change="handleChangePeriod" v-model="form.chargePeriod">
|
<el-select v-model="form.chargePeriod" @change="handleChangePeriod">
|
||||||
<el-option v-for="(item, index) in com_bill_charge_period" :key="index" :value="item.value" :label="item.label"></el-option>
|
<el-option v-for="(item, index) in com_bill_charge_period" :key="index" :label="item.label" :value="item.value"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item v-if="form.chargePeriod !== '2'" label="周期计算维度" prop="periodCalcType">
|
<el-form-item v-if="form.chargePeriod !== '2'" label="周期计算维度" prop="periodCalcType">
|
||||||
<div class="w-full flex flex-row flex-items-center">
|
<div class="w-full flex flex-row flex-items-center">
|
||||||
<el-select @change="handleChangePeriodCalcType" v-model="form.periodCalcType">
|
<el-select v-model="form.periodCalcType" @change="handleChangePeriodCalcType">
|
||||||
<el-option v-for="(item, index) in PeriodicCalculationDimensionList" :key="index" :value="item.value" :label="item.label"></el-option>
|
<el-option v-for="(item, index) in PeriodicCalculationDimensionList" :key="index" :label="item.label" :value="item.value"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
<el-tooltip class="box-item" effect="light" placement="top">
|
<el-tooltip class="box-item" effect="light" placement="top">
|
||||||
<el-icon style="margin-left: 10px" color="#909399"><QuestionFilled /></el-icon>
|
<el-icon color="#909399" style="margin-left: 10px"><QuestionFilled /></el-icon>
|
||||||
<template #content>
|
<template #content>
|
||||||
<div class="items">
|
<div class="items">
|
||||||
<div class="label">自然年:</div>
|
<div class="label">自然年:</div>
|
||||||
@@ -124,20 +124,20 @@
|
|||||||
<el-form-item label="起止日期" prop="startDate">
|
<el-form-item label="起止日期" prop="startDate">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="StartEndDate"
|
v-model="StartEndDate"
|
||||||
unlink-panels
|
|
||||||
@update:model-value="handleDate"
|
|
||||||
@clear="handleClear"
|
|
||||||
:value-format="eldatepick.valueformat"
|
|
||||||
:disabled-date="handleDisableDate"
|
:disabled-date="handleDisableDate"
|
||||||
:format="eldatepick.format"
|
:format="eldatepick.format"
|
||||||
:type="eldatepick.type"
|
:type="eldatepick.type"
|
||||||
|
:value-format="eldatepick.valueformat"
|
||||||
|
end-placeholder="结束"
|
||||||
range-separator="到"
|
range-separator="到"
|
||||||
start-placeholder="开始"
|
start-placeholder="开始"
|
||||||
end-placeholder="结束"
|
unlink-panels
|
||||||
|
@clear="handleClear"
|
||||||
|
@update:model-value="handleDate"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="备注" prop="remark">
|
<el-form-item label="备注" prop="remark">
|
||||||
<el-input type="textarea" maxlength="200" show-word-limit :rows="5" v-model.trim="form.remark" placeholder="请输入" />
|
<el-input v-model.trim="form.remark" :rows="5" maxlength="200" placeholder="请输入" show-word-limit type="textarea" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item style="margin-top: 30px">
|
<el-form-item style="margin-top: 30px">
|
||||||
@@ -150,7 +150,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script lang="ts" setup>
|
||||||
import { ref } from 'vue';
|
import { ref } from 'vue';
|
||||||
|
|
||||||
import House from '@/components/Holder/house.vue';
|
import House from '@/components/Holder/house.vue';
|
||||||
@@ -182,11 +182,13 @@ const form = ref({
|
|||||||
'billName': '',
|
'billName': '',
|
||||||
'chargeItemId': '', // 收费项目
|
'chargeItemId': '', // 收费项目
|
||||||
'chargeScope': '0', // 业主范围
|
'chargeScope': '0', // 业主范围
|
||||||
'chargePeriod': '2', // 费用周期 2 day 0 year 1 month 3 jidu
|
/** 2 day 0 year 1 month 3 季度 */
|
||||||
|
'chargePeriod': '2', // 费用周期
|
||||||
houseIds: [], // 部分房屋
|
houseIds: [], // 部分房屋
|
||||||
residentIds: [], // 部分业主
|
residentIds: [], // 部分业主
|
||||||
parkingIds: [],
|
parkingIds: [],
|
||||||
chargeTypeId: '', // 收费类型
|
chargeTypeId: '', // 收费类型
|
||||||
|
/** 周期计算维度 // 0 自然 1 滚动 */
|
||||||
periodCalcType: '0', // 周期计算维度 // 0 自然 1 滚动
|
periodCalcType: '0', // 周期计算维度 // 0 自然 1 滚动
|
||||||
'startDate': '', // 开始
|
'startDate': '', // 开始
|
||||||
'endDate': '', // 结束
|
'endDate': '', // 结束
|
||||||
@@ -425,6 +427,19 @@ function handleChangePeriodCalcType() {
|
|||||||
|
|
||||||
// !== 提交 =============================================================================
|
// !== 提交 =============================================================================
|
||||||
const submitForm = () => {
|
const submitForm = () => {
|
||||||
|
if (form.value.chargePeriod === '0') {
|
||||||
|
if (form.value.periodCalcType === '0') {
|
||||||
|
const startData = new Date(form.value.startDate);
|
||||||
|
const endData = new Date(form.value.endDate);
|
||||||
|
|
||||||
|
const diff = endData.getTime() - startData.getTime();
|
||||||
|
console.log(diff);
|
||||||
|
if (diff <= 60 * 60 * 24 * 1000 * 2) {
|
||||||
|
ElMessage.warning('起止日期不足1年');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
formRef.value?.validate(async (valid: boolean) => {
|
formRef.value?.validate(async (valid: boolean) => {
|
||||||
if (valid) {
|
if (valid) {
|
||||||
if (userid.value) {
|
if (userid.value) {
|
||||||
@@ -447,7 +462,7 @@ const cancelForm = () => {
|
|||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style lang="scss" scoped>
|
||||||
.items {
|
.items {
|
||||||
.label {
|
.label {
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
|
|||||||
@@ -4,12 +4,15 @@
|
|||||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||||
<div v-show="showSearch" class="mb-[10px]">
|
<div v-show="showSearch" class="mb-[10px]">
|
||||||
<el-card shadow="hover">
|
<el-card shadow="hover">
|
||||||
<el-form ref="queryFormRef" :model="queryParams" @submit.prevent="handleQuery" :inline="true">
|
<el-form ref="queryFormRef" :inline="true" :model="queryParams" @submit.prevent="handleQuery">
|
||||||
<el-form-item label="收费项目" prop="chargeItemId">
|
<el-form-item label="收费项目" prop="chargeItemId">
|
||||||
<el-select v-model="queryParams.chargeItemId" placeholder="请选择收费项目">
|
<el-select v-model="queryParams.chargeItemId" placeholder="请选择收费项目">
|
||||||
<el-option v-for="(item, index) in chargeItems" :key="index" :value="item.id" :label="item.itemName"></el-option>
|
<el-option v-for="(item, index) in chargeItems" :key="index" :label="item.itemName" :value="item.id"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item label="账单编号" prop="billCode">
|
||||||
|
<el-input v-model="queryParams.billCode" placeholder="请输入账单编号"></el-input>
|
||||||
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" @click="handleQuery">搜索</el-button>
|
<el-button type="primary" @click="handleQuery">搜索</el-button>
|
||||||
<el-button @click="resetQuery">重置</el-button>
|
<el-button @click="resetQuery">重置</el-button>
|
||||||
@@ -21,15 +24,15 @@
|
|||||||
<el-card class="flex-1" shadow="never">
|
<el-card class="flex-1" shadow="never">
|
||||||
<template #header>
|
<template #header>
|
||||||
<el-row :gutter="10" class="mb8">
|
<el-row :gutter="10" class="mb8">
|
||||||
<right-toolbar :show-add="checkPermi(['bill:bill:add'])" :show-edit="false" :show-delete="false" @update:add="handleAdd"></right-toolbar>
|
<right-toolbar :show-add="checkPermi(['bill:bill:add'])" :show-delete="false" :show-edit="false" @update:add="handleAdd"></right-toolbar>
|
||||||
</el-row>
|
</el-row>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<el-table v-loading="loading" border :data="billList" @selection-change="handleSelectionChange">
|
<el-table v-loading="loading" :data="billList" border @selection-change="handleSelectionChange">
|
||||||
<el-table-column type="selection" width="55" align="center" />
|
<el-table-column align="center" type="selection" width="55" />
|
||||||
<el-table-column label="账单编号" align="center" prop="billCode" />
|
<el-table-column align="center" label="账单编号" prop="billCode" />
|
||||||
<el-table-column label="账单名称" align="center" prop="billName" />
|
<el-table-column align="center" label="账单名称" prop="billName" />
|
||||||
<el-table-column label="收费范围" align="center" prop="chargeScope" width="100">
|
<el-table-column align="center" label="收费范围" prop="chargeScope" width="100">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<template v-if="ShowHouseList.includes(scope.row.chargeTypeId)">
|
<template v-if="ShowHouseList.includes(scope.row.chargeTypeId)">
|
||||||
<DictTag :options="com_bill_charge_scope_house" :value="scope.row.chargeScope"></DictTag>
|
<DictTag :options="com_bill_charge_scope_house" :value="scope.row.chargeScope"></DictTag>
|
||||||
@@ -39,31 +42,31 @@
|
|||||||
</template>
|
</template>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="收费项目" align="center" prop="chargeItemName" />
|
<el-table-column align="center" label="收费项目" prop="chargeItemName" />
|
||||||
<el-table-column label="起止时间" align="center">
|
<el-table-column align="center" label="起止时间">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span>{{ parseTime(scope.row.startDate, '{y}/{m}/{d}') }}</span> -
|
<span>{{ parseTime(scope.row.startDate, '{y}/{m}/{d}') }}</span> -
|
||||||
<span>{{ parseTime(scope.row.endDate, '{y}/{m}/{d}') }}</span>
|
<span>{{ parseTime(scope.row.endDate, '{y}/{m}/{d}') }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="单价" align="center" width="180">
|
<el-table-column align="center" label="单价" width="180">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<div class="flex justify-center" v-if="scope.row.unit">
|
<div v-if="scope.row.unit" class="flex justify-center">
|
||||||
<span>{{ scope.row.fixedPrice }}</span> /
|
<span>{{ scope.row.fixedPrice }}</span> /
|
||||||
<DictTag :options="com_charge_item_unit" :value="scope.row.unit"></DictTag>
|
<DictTag :options="com_charge_item_unit" :value="scope.row.unit"></DictTag>
|
||||||
</div>
|
</div>
|
||||||
<span v-else>---</span>
|
<span v-else>---</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="操作" width="200" align="center" fixed="right" class-name="small-padding fixed-width">
|
<el-table-column align="center" class-name="small-padding fixed-width" fixed="right" label="操作" width="200">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button link type="primary" @click="handleChange(scope.row)">生成账单</el-button>
|
<el-button link type="primary" @click="handleChange(scope.row)">生成账单</el-button>
|
||||||
<el-button link type="primary" @click="handleUpdate(scope.row)" v-has-permi="['bill:bill:edit']">编辑</el-button>
|
<el-button v-has-permi="['bill:bill:edit']" link type="primary" @click="handleUpdate(scope.row)">编辑</el-button>
|
||||||
<el-button link type="primary" @click="handleMain(scope.row)" v-has-permi="['bill:bill:query']">详情</el-button>
|
<el-button v-has-permi="['bill:bill:query']" link type="primary" @click="handleMain(scope.row)">详情</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</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" v-model:limit="queryParams.pageSize" v-model:page="queryParams.pageNum" :total="total" @pagination="getList" />
|
||||||
</el-card>
|
</el-card>
|
||||||
<el-dialog v-model="BillVisible" :title="BillForm.title" width="500">
|
<el-dialog v-model="BillVisible" :title="BillForm.title" width="500">
|
||||||
<el-form v-loading="UploadLoading" :model="BillForm" label-width="auto" style="max-width: 600px">
|
<el-form v-loading="UploadLoading" :model="BillForm" label-width="auto" style="max-width: 600px">
|
||||||
@@ -71,43 +74,43 @@
|
|||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-if="BillForm.chargePeriod === '0'"
|
v-if="BillForm.chargePeriod === '0'"
|
||||||
v-model="BillForm.years"
|
v-model="BillForm.years"
|
||||||
type="years"
|
|
||||||
format="YYYY"
|
format="YYYY"
|
||||||
value-format="YYYY"
|
|
||||||
placeholder="选择账单生成年份"
|
placeholder="选择账单生成年份"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
|
type="years"
|
||||||
|
value-format="YYYY"
|
||||||
/>
|
/>
|
||||||
<!-- 滚动月份 -->
|
<!-- 滚动月份 -->
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
format="YYYY-MM"
|
|
||||||
value-format="YYYY-MM"
|
|
||||||
v-else-if="BillForm.chargePeriod === '1'"
|
v-else-if="BillForm.chargePeriod === '1'"
|
||||||
v-model="BillForm.yearMonths"
|
v-model="BillForm.yearMonths"
|
||||||
:disabled-date="handleDisableMonth"
|
:disabled-date="handleDisableMonth"
|
||||||
type="months"
|
format="YYYY-MM"
|
||||||
placeholder="选择账单生成月份"
|
placeholder="选择账单生成月份"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
|
type="months"
|
||||||
|
value-format="YYYY-MM"
|
||||||
/>
|
/>
|
||||||
<!-- 滚动季度 -->
|
<!-- 滚动季度 -->
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
format="YYYY-MM"
|
|
||||||
value-format="YYYY-MM"
|
|
||||||
v-else-if="BillForm.chargePeriod === '3'"
|
v-else-if="BillForm.chargePeriod === '3'"
|
||||||
v-model="BillForm.yearQuarters"
|
v-model="BillForm.yearQuarters"
|
||||||
type="months"
|
|
||||||
placeholder="选择账单生成季度"
|
|
||||||
:disabled-date="handleDisableMonth"
|
:disabled-date="handleDisableMonth"
|
||||||
|
format="YYYY-MM"
|
||||||
|
placeholder="选择账单生成季度"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
|
type="months"
|
||||||
|
value-format="YYYY-MM"
|
||||||
/>
|
/>
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
format="YYYY-MM-DD"
|
|
||||||
value-format="YYYY-MM-DD"
|
|
||||||
v-else-if="BillForm.chargePeriod === '2'"
|
v-else-if="BillForm.chargePeriod === '2'"
|
||||||
v-model="BillForm.days"
|
v-model="BillForm.days"
|
||||||
:disabled-date="handleDisableMonth"
|
:disabled-date="handleDisableMonth"
|
||||||
type="dates"
|
format="YYYY-MM-DD"
|
||||||
placeholder="选择日期生成每日账单"
|
placeholder="选择日期生成每日账单"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
|
type="dates"
|
||||||
|
value-format="YYYY-MM-DD"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<!-- 季度账单-滚动季度 -->
|
<!-- 季度账单-滚动季度 -->
|
||||||
@@ -141,7 +144,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup name="Bill" lang="ts">
|
<script lang="ts" name="Bill" setup>
|
||||||
import PageHeader from '@/components/Pageheader/index.vue';
|
import PageHeader from '@/components/Pageheader/index.vue';
|
||||||
import pagination from '@/components/Pagination/index.vue';
|
import pagination from '@/components/Pagination/index.vue';
|
||||||
import DictTag from '@/components/DictTag/index.vue';
|
import DictTag from '@/components/DictTag/index.vue';
|
||||||
@@ -184,7 +187,7 @@ const data = reactive<PageData<BillForm, BillQuery>>({
|
|||||||
form: { ...initFormData },
|
form: { ...initFormData },
|
||||||
queryParams: {
|
queryParams: {
|
||||||
pageNum: 1,
|
pageNum: 1,
|
||||||
pageSize: 20,
|
pageSize: 10,
|
||||||
chargeItemId: '',
|
chargeItemId: '',
|
||||||
billCode: ''
|
billCode: ''
|
||||||
}
|
}
|
||||||
@@ -221,6 +224,10 @@ const handleQuery = () => {
|
|||||||
|
|
||||||
/** 重置按钮操作 */
|
/** 重置按钮操作 */
|
||||||
const resetQuery = () => {
|
const resetQuery = () => {
|
||||||
|
queryParams.value.billCode = '';
|
||||||
|
queryParams.value.chargeItemId = '';
|
||||||
|
queryParams.value.pageNum = 1;
|
||||||
|
queryParams.value.pageSize = 10;
|
||||||
queryFormRef.value?.resetFields();
|
queryFormRef.value?.resetFields();
|
||||||
handleQuery();
|
handleQuery();
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -4,48 +4,56 @@
|
|||||||
<div class="AddBuildingBody">
|
<div class="AddBuildingBody">
|
||||||
<div class="title">基本信息</div>
|
<div class="title">基本信息</div>
|
||||||
<div class="addBuildingFormBody">
|
<div class="addBuildingFormBody">
|
||||||
<el-form class="formBody" label-position="right" ref="formRef" :model="form" :rules="rules" label-width="130px">
|
<el-form ref="formRef" :model="form" :rules="rules" class="formBody" label-position="right" label-width="130px">
|
||||||
<el-form-item label="账单名称" prop="billName">
|
<el-form-item label="账单名称" prop="billName">
|
||||||
<el-input disabled v-model.trim="form.billName" placeholder="请输入账单名称" />
|
<el-input v-model.trim="form.billName" disabled placeholder="请输入账单名称" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="账单编号" prop="billCode">
|
||||||
|
<el-input v-model.trim="form.billCode" disabled placeholder="请输入账单编号" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item label="收费项目" prop="chargeItemId">
|
<el-form-item label="收费项目" prop="chargeItemId">
|
||||||
<el-select disabled v-model="form.chargeItemId" @change="handleChange">
|
<el-select v-model="form.chargeItemId" disabled @change="handleChange">
|
||||||
<el-option v-for="(item, index) in chargeItemList" :key="index" :value="item.id" :label="item.itemName"></el-option>
|
<el-option v-for="(item, index) in chargeItemList" :key="index" :label="item.itemName" :value="item.id"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item label="费用单价" prop="price">
|
||||||
<el-form-item label="收费范围" prop="chargeScope" v-if="itemTypeIncludes">
|
<el-input v-model.trim="form.price" disabled placeholder="请输入账单编号" />
|
||||||
<el-radio-group disabled v-model="form.chargeScope">
|
</el-form-item>
|
||||||
<el-radio v-for="(item, index) in com_questionnaire_scope" :key="index" :value="item.value" :label="item.label"></el-radio>
|
<el-form-item label="收费周期" prop="date">
|
||||||
|
<el-input v-model.trim="form.date" disabled placeholder="请输入账单编号" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item v-if="itemTypeIncludes" label="收费范围" prop="chargeScope">
|
||||||
|
<el-radio-group v-model="form.chargeScope" disabled>
|
||||||
|
<el-radio v-for="(item, index) in com_questionnaire_scope" :key="index" :label="item.label" :value="item.value"></el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="收费范围" prop="chargeScope" v-else>
|
<el-form-item v-else label="收费范围" prop="chargeScope">
|
||||||
<el-radio-group disabled v-model="form.chargeScope">
|
<el-radio-group v-model="form.chargeScope" disabled>
|
||||||
<el-radio v-for="(item, index) in com_bill_charge_scope_house" :key="index" :value="item.value" :label="item.label"></el-radio>
|
<el-radio v-for="(item, index) in com_bill_charge_scope_house" :key="index" :label="item.label" :value="item.value"></el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item label="费用周期" prop="chargePeriod">
|
<el-form-item label="费用周期" prop="chargePeriod">
|
||||||
<el-select disabled v-model="form.chargePeriod">
|
<el-select v-model="form.chargePeriod" disabled>
|
||||||
<el-option v-for="(item, index) in com_bill_charge_period" :key="index" :value="item.value" :label="item.label"></el-option>
|
<el-option v-for="(item, index) in com_bill_charge_period" :key="index" :label="item.label" :value="item.value"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="起止日期" prop="price">
|
<el-form-item label="起止日期" prop="price">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
disabled
|
|
||||||
v-model="StartEndDate"
|
v-model="StartEndDate"
|
||||||
@update:model-value="handleDate"
|
|
||||||
:value-format="datepicker[form.chargePeriod].format"
|
|
||||||
:format="datepicker[form.chargePeriod].format"
|
:format="datepicker[form.chargePeriod].format"
|
||||||
:type="datepicker[form.chargePeriod].type"
|
:type="datepicker[form.chargePeriod].type"
|
||||||
|
:value-format="datepicker[form.chargePeriod].format"
|
||||||
|
disabled
|
||||||
|
end-placeholder="结束"
|
||||||
range-separator="到"
|
range-separator="到"
|
||||||
start-placeholder="开始"
|
start-placeholder="开始"
|
||||||
end-placeholder="结束"
|
@update:model-value="handleDate"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="备注" prop="remark">
|
<el-form-item label="备注" prop="remark">
|
||||||
<el-input disabled type="textarea" :rows="5" v-model.trim="form.remark" placeholder="请输入" />
|
<el-input v-model.trim="form.remark" :rows="5" disabled placeholder="请输入" type="textarea" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item style="margin-top: 30px">
|
<el-form-item style="margin-top: 30px">
|
||||||
@@ -57,7 +65,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script lang="ts" setup>
|
||||||
import { ref } from 'vue';
|
import { ref } from 'vue';
|
||||||
import PageHeader from '@/components/Pageheader/index.vue';
|
import PageHeader from '@/components/Pageheader/index.vue';
|
||||||
import { listChargeItem } from '@/api/system/SdbChargeItem';
|
import { listChargeItem } from '@/api/system/SdbChargeItem';
|
||||||
@@ -69,6 +77,7 @@ const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
|||||||
const { com_questionnaire_scope } = toRefs<any>(proxy?.useDict('com_questionnaire_scope'));
|
const { com_questionnaire_scope } = toRefs<any>(proxy?.useDict('com_questionnaire_scope'));
|
||||||
const { com_bill_charge_scope_house } = toRefs<any>(proxy?.useDict('com_bill_charge_scope_house'));
|
const { com_bill_charge_scope_house } = toRefs<any>(proxy?.useDict('com_bill_charge_scope_house'));
|
||||||
const { com_bill_charge_period } = toRefs<any>(proxy?.useDict('com_bill_charge_period'));
|
const { com_bill_charge_period } = toRefs<any>(proxy?.useDict('com_bill_charge_period'));
|
||||||
|
const { com_charge_item_unit } = toRefs<any>(proxy?.useDict('com_charge_item_unit'));
|
||||||
|
|
||||||
type PickerConfig = {
|
type PickerConfig = {
|
||||||
type: DatePickerType;
|
type: DatePickerType;
|
||||||
@@ -85,18 +94,26 @@ const route = useRoute();
|
|||||||
const formRef = ref();
|
const formRef = ref();
|
||||||
const form = ref({
|
const form = ref({
|
||||||
'id': null,
|
'id': null,
|
||||||
|
billCode: '',
|
||||||
'billName': '',
|
'billName': '',
|
||||||
'chargeItemId': '', // 收费项目
|
'chargeItemId': '', // 收费项目
|
||||||
'chargeScope': '0', // 业主范围
|
'chargeScope': '0', // 业主范围
|
||||||
'chargePeriod': '2', // 费用周期
|
'chargePeriod': '2', // 费用周期
|
||||||
houseIds: [], // 部分业主
|
houseIds: [], // 部分业主
|
||||||
charegeTypeId: '', // typeid
|
charegeTypeId: '', // typeid
|
||||||
|
fixedPrice: '',
|
||||||
|
unit: '',
|
||||||
|
price: '',
|
||||||
|
date: '',
|
||||||
'startDate': '', // 开始
|
'startDate': '', // 开始
|
||||||
'endDate': '', // 结束
|
'endDate': '', // 结束
|
||||||
'remark': ''
|
'remark': ''
|
||||||
});
|
});
|
||||||
const rules = ref({
|
const rules = ref({
|
||||||
billName: [{ required: true, message: '请输入 项目名称', trigger: 'blur' }],
|
billName: [{ required: true, message: '请输入 项目名称', trigger: 'blur' }],
|
||||||
|
date: [{ required: true, message: '请输入 收费周期', trigger: 'blur' }],
|
||||||
|
billCode: [{ required: true, message: '请输入 账单编号', trigger: 'blur' }],
|
||||||
|
price: [{ required: true, message: '请输入 费用单价', trigger: 'blur' }],
|
||||||
chargeItemId: [{ required: true, message: '请选择 收费项目', trigger: 'blur' }],
|
chargeItemId: [{ required: true, message: '请选择 收费项目', trigger: 'blur' }],
|
||||||
chargePeriod: [{ required: true, message: '请选择 费用周期', trigger: 'blur' }],
|
chargePeriod: [{ required: true, message: '请选择 费用周期', trigger: 'blur' }],
|
||||||
startDate: [{ required: true, message: '请选择 起止日期', trigger: 'blur' }],
|
startDate: [{ required: true, message: '请选择 起止日期', trigger: 'blur' }],
|
||||||
@@ -117,14 +134,7 @@ const typeNameList = ref(['2049026484272791553', '2049026503017136129']);
|
|||||||
const itemTypeIncludes = computed(() => {
|
const itemTypeIncludes = computed(() => {
|
||||||
return typeNameList.value.includes(form.value.chargeItemId);
|
return typeNameList.value.includes(form.value.chargeItemId);
|
||||||
});
|
});
|
||||||
|
|
||||||
const houseList = ref([]);
|
|
||||||
|
|
||||||
const checkoutUses = ref([]);
|
|
||||||
async function init() {
|
async function init() {
|
||||||
const res1 = await listBillHouse({ pageNum: 1, pageSize: 999999 });
|
|
||||||
houseList.value = res1.rows;
|
|
||||||
|
|
||||||
listChargeItem().then(async (res) => {
|
listChargeItem().then(async (res) => {
|
||||||
chargeItemList.value = res.rows;
|
chargeItemList.value = res.rows;
|
||||||
|
|
||||||
@@ -135,20 +145,13 @@ async function init() {
|
|||||||
...form.value,
|
...form.value,
|
||||||
...res1.data
|
...res1.data
|
||||||
};
|
};
|
||||||
|
const find = com_charge_item_unit.value.find((item) => item.value === form.value.unit);
|
||||||
|
if (find) {
|
||||||
|
form.value.price = `${form.value.fixedPrice}元/${find.label}`;
|
||||||
|
}
|
||||||
|
form.value.date = form.value.startDate.split(' ')[0] + ' - ' + form.value.endDate.split(' ')[0];
|
||||||
form.value.houseIds = res1.data.houseIds || [];
|
form.value.houseIds = res1.data.houseIds || [];
|
||||||
StartEndDate.value = [formatDate(res1.data.startDate), formatDate(res1.data.endDate)];
|
StartEndDate.value = [res1.data.startDate, res1.data.endDate];
|
||||||
checkoutUses.value = form.value.houseIds
|
|
||||||
.map((item) => {
|
|
||||||
if (item) {
|
|
||||||
const find = houseList.value.find((it) => it.houseId === item);
|
|
||||||
if (find) {
|
|
||||||
return find;
|
|
||||||
} else {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.filter((item) => item !== null);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -169,7 +172,7 @@ const cancelForm = () => {
|
|||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style lang="scss" scoped>
|
||||||
.AddBuildingBox {
|
.AddBuildingBox {
|
||||||
padding: 15px;
|
padding: 15px;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
|||||||
@@ -3,24 +3,24 @@
|
|||||||
<PageHeader></PageHeader>
|
<PageHeader></PageHeader>
|
||||||
<div class="mb-[10px]">
|
<div class="mb-[10px]">
|
||||||
<el-card shadow="hover">
|
<el-card shadow="hover">
|
||||||
<el-form ref="queryFormRef" :model="queryParams" @submit.prevent="handleQuery" :inline="true">
|
<el-form ref="queryFormRef" :inline="true" :model="queryParams" @submit.prevent="handleQuery">
|
||||||
<div>
|
<div>
|
||||||
<el-form-item label="小区" prop="villageId">
|
<el-form-item label="小区" prop="villageId">
|
||||||
<el-select @change="handleChangeVillage" v-model="queryParams.villageId" placeholder="请选择小区">
|
<el-select v-model="queryParams.villageId" placeholder="请选择小区" @change="handleChangeVillage">
|
||||||
<el-option v-for="(item, index) in villageList" :key="index" :value="item.villageId" :label="item.villageName"></el-option>
|
<el-option v-for="(item, index) in villageList" :key="index" :label="item.villageName" :value="item.villageId"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="楼栋" prop="buildingId">
|
<el-form-item label="楼栋" prop="buildingId">
|
||||||
<el-select @change="handleChangeBuilding" v-model="queryParams.buildingId" placeholder="请选择楼栋">
|
<el-select v-model="queryParams.buildingId" placeholder="请选择楼栋" @change="handleChangeBuilding">
|
||||||
<el-option v-for="(item, index) in buildingList" :key="index" :value="item.id" :label="item.buildingName"></el-option>
|
<el-option v-for="(item, index) in buildingList" :key="index" :label="item.buildingName" :value="item.id"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="单元" prop="unitNoId">
|
<el-form-item label="单元" prop="unitNoId">
|
||||||
<el-select @change="handleChangeUnit" v-model="queryParams.unitNoId" placeholder="请选择单元">
|
<el-select v-model="queryParams.unitNoId" placeholder="请选择单元" @change="handleChangeUnit">
|
||||||
<el-option v-for="(item, index) in unitList" :key="index" :value="item.unitNoId" :label="item.unitNoName"></el-option>
|
<el-option v-for="(item, index) in unitList" :key="index" :label="item.unitNoName" :value="item.unitNoId"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item @change="handleChangeHouseNo" label="房号" prop="houseId">
|
<el-form-item label="房号" prop="houseId" @change="handleChangeHouseNo">
|
||||||
<el-select v-model="queryParams.houseId" placeholder="请选择房号">
|
<el-select v-model="queryParams.houseId" placeholder="请选择房号">
|
||||||
<el-option-group v-for="group in houseList" :key="group.floorNo" :label="String(group.floorNo) + ' 楼'">
|
<el-option-group v-for="group in houseList" :key="group.floorNo" :label="String(group.floorNo) + ' 楼'">
|
||||||
<el-option v-for="item in group.houses" :key="item.houseId" :label="item.houseNo" :value="item.houseId" />
|
<el-option v-for="item in group.houses" :key="item.houseId" :label="item.houseNo" :value="item.houseId" />
|
||||||
@@ -30,33 +30,33 @@
|
|||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<el-form-item label="收费项目" prop="itemId">
|
<el-form-item label="收费项目" prop="itemId">
|
||||||
<el-select multiple v-model="queryParams.chargeItemId" placeholder="请选择收费项目">
|
<el-select v-model="queryParams.chargeItemId" multiple placeholder="请选择收费项目">
|
||||||
<el-option
|
<el-option
|
||||||
:disabled="item.status === '1'"
|
|
||||||
v-for="(item, index) in chargeItems"
|
v-for="(item, index) in chargeItems"
|
||||||
:key="index"
|
:key="index"
|
||||||
:value="item.id"
|
:disabled="item.status === '1'"
|
||||||
:label="item.itemName"
|
:label="item.itemName"
|
||||||
|
:value="item.id"
|
||||||
></el-option>
|
></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="缴费周期">
|
<el-form-item label="缴费周期">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="queryParams.startDate"
|
v-model="queryParams.startDate"
|
||||||
type="date"
|
|
||||||
format="YYYY-MM-DD"
|
format="YYYY-MM-DD"
|
||||||
|
placeholder="请选择开始缴费日期"
|
||||||
|
type="date"
|
||||||
value-format="YYYY-MM-DD"
|
value-format="YYYY-MM-DD"
|
||||||
@clear="handleClearChargePeriod('start')"
|
@clear="handleClearChargePeriod('start')"
|
||||||
placeholder="请选择开始缴费日期"
|
|
||||||
/>
|
/>
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="queryParams.endDate"
|
v-model="queryParams.endDate"
|
||||||
type="date"
|
|
||||||
format="YYYY-MM-DD"
|
format="YYYY-MM-DD"
|
||||||
|
placeholder="请选择结束缴费日期"
|
||||||
|
style="margin-left: 10px"
|
||||||
|
type="date"
|
||||||
value-format="YYYY-MM-DD"
|
value-format="YYYY-MM-DD"
|
||||||
@clear="handleClearChargePeriod('end')"
|
@clear="handleClearChargePeriod('end')"
|
||||||
style="margin-left: 10px"
|
|
||||||
placeholder="请选择结束缴费日期"
|
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="房屋分类" prop="houseUseTypeId">
|
<el-form-item label="房屋分类" prop="houseUseTypeId">
|
||||||
@@ -67,24 +67,24 @@
|
|||||||
<el-form-item label="缴费时间">
|
<el-form-item label="缴费时间">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="queryParams.payTimeBegin"
|
v-model="queryParams.payTimeBegin"
|
||||||
type="datetime"
|
|
||||||
format="YYYY-MM-DD HH:mm:ss"
|
format="YYYY-MM-DD HH:mm:ss"
|
||||||
|
placeholder="请选择开始缴费时间"
|
||||||
|
type="datetime"
|
||||||
value-format="YYYY-MM-DD HH:mm:ss"
|
value-format="YYYY-MM-DD HH:mm:ss"
|
||||||
@clear="handleClearPayTime('payTimeBegin')"
|
@clear="handleClearPayTime('payTimeBegin')"
|
||||||
placeholder="请选择开始缴费时间"
|
|
||||||
/>
|
/>
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="queryParams.payTimeEnd"
|
v-model="queryParams.payTimeEnd"
|
||||||
type="datetime"
|
|
||||||
format="YYYY-MM-DD HH:mm:ss"
|
format="YYYY-MM-DD HH:mm:ss"
|
||||||
|
placeholder="请选择结束缴费时间"
|
||||||
|
style="margin-left: 10px"
|
||||||
|
type="datetime"
|
||||||
value-format="YYYY-MM-DD HH:mm:ss"
|
value-format="YYYY-MM-DD HH:mm:ss"
|
||||||
@clear="handleClearPayTime('payTimeEnd')"
|
@clear="handleClearPayTime('payTimeEnd')"
|
||||||
style="margin-left: 10px"
|
|
||||||
placeholder="请选择结束缴费时间"
|
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="业主姓名" prop="residentName">
|
<el-form-item label="业主姓名" prop="residentName">
|
||||||
<el-input maxlength="30" v-model.trim="queryParams.residentName" placeholder="请选择业主姓名"></el-input>
|
<el-input v-model.trim="queryParams.residentName" maxlength="30" placeholder="请选择业主姓名"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<div style="text-align: right">
|
<div style="text-align: right">
|
||||||
@@ -99,43 +99,43 @@
|
|||||||
<div class="actionsBox">
|
<div class="actionsBox">
|
||||||
<div class="tabs-box">
|
<div class="tabs-box">
|
||||||
<div
|
<div
|
||||||
class="tabs-items"
|
|
||||||
v-for="(item, index) in tabs"
|
v-for="(item, index) in tabs"
|
||||||
:key="index"
|
:key="index"
|
||||||
:class="{
|
:class="{
|
||||||
active: activeTabs === item.value
|
active: activeTabs === item.value
|
||||||
}"
|
}"
|
||||||
|
class="tabs-items"
|
||||||
@click="changeTabs(item.value)"
|
@click="changeTabs(item.value)"
|
||||||
>
|
>
|
||||||
{{ item.type }}
|
{{ item.type }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="actions">
|
<div class="actions">
|
||||||
<el-button @click="handleIncome(false)" :disabled="!single">收费</el-button>
|
<el-button :disabled="!single" @click="handleIncome(false)">收费</el-button>
|
||||||
<el-button @click="printPIaoJuByOnly(false)" :disabled="!printSingle">打印票据</el-button>
|
<el-button :disabled="!printSingle" @click="printPIaoJuByOnly(false)">打印票据</el-button>
|
||||||
<el-button @click="handleDelete(false)">批量删除</el-button>
|
<el-button @click="handleDelete(false)">批量删除</el-button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<el-card class="flex-1" shadow="never">
|
<el-card class="flex-1" shadow="never">
|
||||||
<el-table v-loading="loading" border :data="tableData" @selection-change="handleSelectionChange">
|
<el-table v-loading="loading" :data="tableData" border @selection-change="handleSelectionChange">
|
||||||
<el-table-column type="selection" fixed="left" width="55" align="center" />
|
<el-table-column align="center" fixed="left" type="selection" width="55" />
|
||||||
<el-table-column label="房屋/车位/车辆" fixed="left" align="center" prop="unitNo" width="120">
|
<el-table-column align="center" fixed="left" label="房屋/车位/车辆" prop="unitNo" width="120">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
{{ scope.row.unitNo }}
|
<el-button link type="primary" @click="handleRoute(scope.row)">{{ scope.row.unitNo }}</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="收费项目" fixed="left" align="center" prop="billCode" width="120">
|
<el-table-column align="center" fixed="left" label="收费项目" prop="billCode" width="120">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
{{ scope.row.chargeItemName }}
|
{{ scope.row.chargeItemName }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="收费周期" align="center" prop="periodDisplay" width="280">
|
<el-table-column align="center" label="收费周期" prop="periodDisplay" width="280">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span>{{ scope.row.periodDisplay }}</span>
|
<span>{{ scope.row.periodDisplay }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|
||||||
<el-table-column label="单价" width="100" align="center" prop="fixedPrice">
|
<el-table-column align="center" label="单价" prop="fixedPrice" width="100">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<div class="flex justify-center">
|
<div class="flex justify-center">
|
||||||
<span>
|
<span>
|
||||||
@@ -146,13 +146,13 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="数量" width="85" align="center" prop="quantity">
|
<el-table-column align="center" label="数量" prop="quantity" width="85">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span>{{ scope.row.quantity }}</span>
|
<span>{{ scope.row.quantity }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="应收金额" width="100" align="center" prop="amount" />
|
<el-table-column align="center" label="应收金额" prop="amount" width="100" />
|
||||||
<el-table-column label="缴费状态" width="100" align="center" prop="payStatus">
|
<el-table-column align="center" label="缴费状态" prop="payStatus" width="100">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span v-if="scope.row.payStatus === '0'">未缴纳</span>
|
<span v-if="scope.row.payStatus === '0'">未缴纳</span>
|
||||||
<span v-else-if="scope.row.payStatus === '1'">已缴纳</span>
|
<span v-else-if="scope.row.payStatus === '1'">已缴纳</span>
|
||||||
@@ -160,16 +160,16 @@
|
|||||||
<span v-else-if="scope.row.payStatus === '3'">部分缴纳</span>
|
<span v-else-if="scope.row.payStatus === '3'">部分缴纳</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="应缴金额" width="100" align="center" prop="amount" />
|
<el-table-column align="center" label="应缴金额" prop="amount" width="100" />
|
||||||
<el-table-column label="优惠金额" width="100" align="center" prop="singleDiscountAmount" />
|
<el-table-column align="center" label="优惠金额" prop="singleDiscountAmount" width="100" />
|
||||||
<el-table-column label="实缴金额" width="100" align="center" prop="actualAccount" />
|
<el-table-column align="center" label="实缴金额" prop="actualAccount" width="100" />
|
||||||
<el-table-column label="缴费人" width="120" align="center" prop="residentName" />
|
<el-table-column align="center" label="缴费人" prop="residentName" width="120" />
|
||||||
<el-table-column label="缴费时间" align="center" prop="payTime" />
|
<el-table-column align="center" label="缴费时间" prop="payTime" />
|
||||||
<el-table-column label="备注" align="center" prop="remark" show-overflow-tooltip />
|
<el-table-column align="center" label="备注" prop="remark" show-overflow-tooltip />
|
||||||
<el-table-column label="操作" width="150" align="center" class-name="small-padding fixed-width">
|
<el-table-column align="center" class-name="small-padding fixed-width" label="操作" width="150">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button link type="primary" v-if="scope.row.payStatus !== '1'" @click="handleIncome(scope.row)">收款</el-button>
|
<el-button v-if="scope.row.payStatus !== '1'" link type="primary" @click="handleIncome(scope.row)">收款</el-button>
|
||||||
<el-button link type="success" v-if="scope.row.payStatus === '1'" @click="printPIaoJuByOnly(scope.row)">打印票据</el-button>
|
<el-button v-if="scope.row.payStatus === '1'" link type="success" @click="printPIaoJuByOnly(scope.row)">打印票据</el-button>
|
||||||
<el-button link type="danger" @click="handleDelete(scope.row)">删除</el-button>
|
<el-button link type="danger" @click="handleDelete(scope.row)">删除</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
@@ -182,10 +182,10 @@
|
|||||||
<span style="padding: 0 10px">优惠:{{ totalAll.totalDiscountAmount }}元</span>
|
<span style="padding: 0 10px">优惠:{{ totalAll.totalDiscountAmount }}元</span>
|
||||||
<span style="padding: 0 10px">未收:{{ totalAll.TotalUnPaymentAmount }}元</span>
|
<span style="padding: 0 10px">未收:{{ totalAll.TotalUnPaymentAmount }}元</span>
|
||||||
</div>
|
</div>
|
||||||
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" />
|
<pagination v-show="total > 0" v-model:limit="queryParams.pageSize" v-model:page="queryParams.pageNum" :total="total" @pagination="getList" />
|
||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
<el-dialog :title="dialog.title" v-model="dialog.visible" width="650px" append-to-body>
|
<el-dialog v-model="dialog.visible" :title="dialog.title" append-to-body width="650px">
|
||||||
<div class="payInfo">
|
<div class="payInfo">
|
||||||
<div>
|
<div>
|
||||||
<div class="flex flex-items-center justify-between">
|
<div class="flex flex-items-center justify-between">
|
||||||
@@ -206,19 +206,19 @@
|
|||||||
<div style="text-decoration: underline; padding-right: 5px; text-align: center">
|
<div style="text-decoration: underline; padding-right: 5px; text-align: center">
|
||||||
{{ item.detailsName }} (应缴:¥{{ item.needPayAmount }})
|
{{ item.detailsName }} (应缴:¥{{ item.needPayAmount }})
|
||||||
</div>
|
</div>
|
||||||
<el-tooltip class="box-item" effect="light" placement="top" v-if="item.payStatus === '3'">
|
<el-tooltip v-if="item.payStatus === '3'" class="box-item" effect="light" placement="top">
|
||||||
<el-icon color="#909399"><QuestionFilled /></el-icon>
|
<el-icon color="#909399"><QuestionFilled /></el-icon>
|
||||||
<template #content>
|
<template #content>
|
||||||
<div style="line-height: 1.8; font-size: 13px; width: 180px">
|
<div style="line-height: 1.8; font-size: 13px; width: 180px">
|
||||||
<div style="text-align: right" class="flex justify-between">
|
<div class="flex justify-between" style="text-align: right">
|
||||||
<span>总金额</span>
|
<span>总金额</span>
|
||||||
<span>{{ item.amount }}¥</span>
|
<span>{{ item.amount }}¥</span>
|
||||||
</div>
|
</div>
|
||||||
<div style="text-align: right" class="flex justify-between">
|
<div class="flex justify-between" style="text-align: right">
|
||||||
<span>累计优惠金额</span>
|
<span>累计优惠金额</span>
|
||||||
<span>− {{ item.singleDiscountAmount }}¥</span>
|
<span>− {{ item.singleDiscountAmount }}¥</span>
|
||||||
</div>
|
</div>
|
||||||
<div style="text-align: right" class="flex justify-between">
|
<div class="flex justify-between" style="text-align: right">
|
||||||
<span>累计已交金额</span>
|
<span>累计已交金额</span>
|
||||||
<span>− {{ item.paidAmount }}¥</span>
|
<span>− {{ item.paidAmount }}¥</span>
|
||||||
</div>
|
</div>
|
||||||
@@ -275,33 +275,33 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="缴纳状态" prop="payStatus">
|
<el-form-item label="缴纳状态" prop="payStatus">
|
||||||
<el-radio-group v-model="inComeFrom.payStatus">
|
<el-radio-group v-model="inComeFrom.payStatus">
|
||||||
<el-radio value="1" label="已缴纳"></el-radio>
|
<el-radio label="已缴纳" value="1"></el-radio>
|
||||||
<el-radio value="3" label="部分缴纳"></el-radio>
|
<el-radio label="部分缴纳" value="3"></el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item label="优惠方式" prop="discountMethod" v-if="inComeFrom.payStatus !== '0'">
|
<el-form-item v-if="inComeFrom.payStatus !== '0'" label="优惠方式" prop="discountMethod">
|
||||||
<el-select style="width: 400px" @change="handleChangeDisCountMethod" v-model="inComeFrom.discountMethod" placeholder="请选择">
|
<el-select v-model="inComeFrom.discountMethod" placeholder="请选择" style="width: 400px" @change="handleChangeDisCountMethod">
|
||||||
<el-option label="不优惠" :value="0"></el-option>
|
<el-option :value="0" label="不优惠"></el-option>
|
||||||
<el-option label="金额" :value="2"></el-option>
|
<el-option :value="2" label="金额"></el-option>
|
||||||
<el-option label="比例" :value="1"></el-option>
|
<el-option :value="1" label="比例"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<div v-if="inComeFrom.discountMethod !== 0">
|
<div v-if="inComeFrom.discountMethod !== 0">
|
||||||
<div v-if="inComeFrom.discountMethod === 2">
|
<div v-if="inComeFrom.discountMethod === 2">
|
||||||
<el-form-item label="单笔优惠金额" prop="discount">
|
<el-form-item label="单笔优惠金额" prop="discount">
|
||||||
<el-input style="width: 400px" v-model.trim.number="inComeFrom.discount" @input="debouncedHandleDiscountMoney">
|
<el-input v-model.trim.number="inComeFrom.discount" style="width: 400px" @input="debouncedHandleDiscountMoney">
|
||||||
<template #append>
|
<template #append>
|
||||||
<span>¥</span>
|
<span>¥</span>
|
||||||
</template>
|
</template>
|
||||||
</el-input>
|
</el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</div>
|
</div>
|
||||||
<el-form-item label="优惠比例" prop="discountRate" v-else>
|
<el-form-item v-else label="优惠比例" prop="discountRate">
|
||||||
<el-input
|
<el-input
|
||||||
style="width: 400px"
|
|
||||||
v-model.trim.number="inComeFrom.discountRate"
|
v-model.trim.number="inComeFrom.discountRate"
|
||||||
placeholder="0~100:0=无优惠,80=优惠80%,100=全免"
|
placeholder="0~100:0=无优惠,80=优惠80%,100=全免"
|
||||||
|
style="width: 400px"
|
||||||
@input="debounceDiscountRate"
|
@input="debounceDiscountRate"
|
||||||
>
|
>
|
||||||
<template #append>
|
<template #append>
|
||||||
@@ -310,61 +310,61 @@
|
|||||||
</el-input>
|
</el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="总优惠金额" prop="totalDiscountAmount">
|
<el-form-item label="总优惠金额" prop="totalDiscountAmount">
|
||||||
<el-input style="width: 400px" disabled v-model="totalDiscountAmount">
|
<el-input v-model="totalDiscountAmount" disabled style="width: 400px">
|
||||||
<template #append>
|
<template #append>
|
||||||
<span>¥</span>
|
<span>¥</span>
|
||||||
</template>
|
</template>
|
||||||
</el-input>
|
</el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</div>
|
</div>
|
||||||
<el-form-item label="支付方式" prop="payType" v-if="inComeFrom.payStatus !== '0'">
|
<el-form-item v-if="inComeFrom.payStatus !== '0'" label="支付方式" prop="payType">
|
||||||
<div class="flex-1">
|
<div class="flex-1">
|
||||||
<div class="flex flex-items-center" v-for="(item, index) in payList" :key="index">
|
<div v-for="(item, index) in payList" :key="index" class="flex flex-items-center">
|
||||||
<div class="flex-1 flex">
|
<div class="flex-1 flex">
|
||||||
<el-select @change="handleChangePayTypeId($event, index)" v-model="item.payType" placeholder="请选择">
|
<el-select v-model="item.payType" placeholder="请选择" @change="handleChangePayTypeId($event, index)">
|
||||||
<el-option
|
<el-option
|
||||||
:disabled="isOptionDisabled(dict.value, item.payType)"
|
|
||||||
v-for="dict in com_pay_method"
|
v-for="dict in com_pay_method"
|
||||||
:key="dict.value"
|
:key="dict.value"
|
||||||
|
:disabled="isOptionDisabled(dict.value, item.payType)"
|
||||||
:label="dict.label"
|
:label="dict.label"
|
||||||
:value="dict.value"
|
:value="dict.value"
|
||||||
></el-option>
|
></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
<el-input @change="(val: string) => handleChangePay(val, index)" v-model.number.trim="item.payAmount" style="margin: 0 10px">
|
<el-input v-model.number.trim="item.payAmount" style="margin: 0 10px" @change="(val: string) => handleChangePay(val, index)">
|
||||||
<template #append>¥</template>
|
<template #append>¥</template>
|
||||||
</el-input>
|
</el-input>
|
||||||
</div>
|
</div>
|
||||||
<div style="width: 80px; text-align: left">
|
<div style="width: 80px; text-align: left">
|
||||||
<el-icon
|
<el-icon
|
||||||
|
v-if="index === payList.length - 1 && payList.length < com_pay_method.length"
|
||||||
color="blue"
|
color="blue"
|
||||||
size="24"
|
size="24"
|
||||||
v-if="index === payList.length - 1 && payList.length < com_pay_method.length"
|
|
||||||
@click="addPayList"
|
|
||||||
style="margin-right: 10px; cursor: pointer"
|
style="margin-right: 10px; cursor: pointer"
|
||||||
|
@click="addPayList"
|
||||||
><CirclePlus
|
><CirclePlus
|
||||||
/></el-icon>
|
/></el-icon>
|
||||||
<el-icon color="red" style="cursor: pointer" size="24" v-if="payList.length > 1" @click="removePayList(index)"><Delete /></el-icon>
|
<el-icon v-if="payList.length > 1" color="red" size="24" style="cursor: pointer" @click="removePayList(index)"><Delete /></el-icon>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="备注" prop="remark">
|
<el-form-item label="备注" prop="remark">
|
||||||
<el-input style="width: 400px" type="textarea" show-word-limit maxlength="100" :rows="5" v-model="inComeFrom.remark"></el-input>
|
<el-input v-model="inComeFrom.remark" :rows="5" maxlength="100" show-word-limit style="width: 400px" type="textarea"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<div class="flex justify-end">
|
<div class="flex justify-end">
|
||||||
<el-button @click="closer">取消</el-button>
|
<el-button @click="closer">取消</el-button>
|
||||||
<el-button @click="submitForm" :loading="buttonLoading" type="primary">提交</el-button>
|
<el-button :loading="buttonLoading" type="primary" @click="submitForm">提交</el-button>
|
||||||
</div>
|
</div>
|
||||||
</el-form>
|
</el-form>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
<el-dialog :title="dialog_print.title" v-model="dialog_print.visible" width="1200px" append-to-body>
|
<el-dialog v-model="dialog_print.visible" :title="dialog_print.title" append-to-body width="1200px">
|
||||||
<template #header>
|
<template #header>
|
||||||
<div class="flex" style="justify-content: space-between; padding: 0 20px">
|
<div class="flex" style="justify-content: space-between; padding: 0 20px">
|
||||||
<div class="title">票据打印</div>
|
<div class="title">票据打印</div>
|
||||||
<el-button type="primary" v-print="printOption" :loading="isLoading" @click="conFimPrint">打印</el-button>
|
<el-button v-print="printOption" :loading="isLoading" type="primary" @click="conFimPrint">打印</el-button>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<div class="printBox" id="printBox-Bill" style="margin: 0; color: rgba(0, 0, 0, 1); padding: 5px">
|
<div id="printBox-Bill" class="printBox" style="margin: 0; color: rgba(0, 0, 0, 1); padding: 5px">
|
||||||
<div class="title" style="font-size: 1.2rem; margin-bottom: 10px; text-indent: 5em">{{ print_form.title }}</div>
|
<div class="title" style="font-size: 1.2rem; margin-bottom: 10px; text-indent: 5em">{{ print_form.title }}</div>
|
||||||
<div style="font-size: 12px; display: grid; grid-template-columns: 1fr 1fr 1fr 1fr; grid-gap: 10px; grid-template-rows: 1fr">
|
<div style="font-size: 12px; display: grid; grid-template-columns: 1fr 1fr 1fr 1fr; grid-gap: 10px; grid-template-rows: 1fr">
|
||||||
<div>单据日期:{{ print_form.printDate }}</div>
|
<div>单据日期:{{ print_form.printDate }}</div>
|
||||||
@@ -425,8 +425,8 @@
|
|||||||
<div style="flex: 1">交款人:</div>
|
<div style="flex: 1">交款人:</div>
|
||||||
<div style="flex: 1; display: flex; align-items: center">
|
<div style="flex: 1; display: flex; align-items: center">
|
||||||
<span style="white-space: nowrap">收款人: </span>
|
<span style="white-space: nowrap">收款人: </span>
|
||||||
<el-input v-model="inHomelyUse" v-if="!isPrint" placeholder="请输入收款人姓名" style="width: 150px"></el-input>
|
<el-input v-if="!isPrint" v-model="inHomelyUse" placeholder="请输入收款人姓名" style="width: 150px"></el-input>
|
||||||
<span style="white-space: nowrap" v-else> {{ inHomelyUse }}</span>
|
<span v-else style="white-space: nowrap"> {{ inHomelyUse }}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -435,7 +435,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script lang="ts" setup>
|
||||||
import PageHeader from '@/components/Pageheader/index.vue';
|
import PageHeader from '@/components/Pageheader/index.vue';
|
||||||
import pagination from '@/components/Pagination/index.vue';
|
import pagination from '@/components/Pagination/index.vue';
|
||||||
import DictTag from '@/components/DictTag/index.vue';
|
import DictTag from '@/components/DictTag/index.vue';
|
||||||
@@ -926,6 +926,41 @@ const submitForm = () => {
|
|||||||
buttonLoading.value = false;
|
buttonLoading.value = false;
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const router = useRouter();
|
||||||
|
function handleRoute(row: billlistType) {
|
||||||
|
const villageId = localStorage.getItem('villageid');
|
||||||
|
console.log(row);
|
||||||
|
console.log(row.villageId);
|
||||||
|
console.log(row.detailsType);
|
||||||
|
console.log(row.unitNoId);
|
||||||
|
if (row.villageId !== villageId) {
|
||||||
|
ElMessage.warning('非本小区房屋/车位/车辆');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
switch (row.detailsType) {
|
||||||
|
case '0':
|
||||||
|
case '2':
|
||||||
|
case '3':
|
||||||
|
case '4':
|
||||||
|
router.push({
|
||||||
|
path: '/house/HouseDetails',
|
||||||
|
query: {
|
||||||
|
id: row.unitNoId
|
||||||
|
}
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
case '1':
|
||||||
|
router.push({
|
||||||
|
path: '/carArea/parkMain',
|
||||||
|
query: {
|
||||||
|
id: row.unitNoId
|
||||||
|
}
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// 打印票据--------------------------------------------------------------
|
// 打印票据--------------------------------------------------------------
|
||||||
const isPrint = ref(false);
|
const isPrint = ref(false);
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||||
<div v-show="showSearch" class="mb-[10px]">
|
<div v-show="showSearch" class="mb-[10px]">
|
||||||
<el-card shadow="hover">
|
<el-card shadow="hover">
|
||||||
<el-form ref="queryFormRef" label-width="70px" @submit.prevent="handleQuery" :model="queryParams" :inline="true">
|
<el-form ref="queryFormRef" :inline="true" :model="queryParams" label-width="70px" @submit.prevent="handleQuery">
|
||||||
<!-- <el-form-item label="设备状态" prop="eleStatus">
|
<!-- <el-form-item label="设备状态" prop="eleStatus">
|
||||||
<el-select v-model="queryParams.eleStatus">
|
<el-select v-model="queryParams.eleStatus">
|
||||||
<el-option v-for="(item, index) in com_waterdevice_on_status" :key="index" :label="item.label" :value="item.value"></el-option>
|
<el-option v-for="(item, index) in com_waterdevice_on_status" :key="index" :label="item.label" :value="item.value"></el-option>
|
||||||
@@ -16,10 +16,10 @@
|
|||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item> -->
|
</el-form-item> -->
|
||||||
<el-form-item label="设备编号" prop="deviceCode">
|
<el-form-item label="设备编号" prop="deviceCode">
|
||||||
<el-input maxlength="25" v-model="queryParams.deviceCode" placeholder="请输入" clearable />
|
<el-input v-model="queryParams.deviceCode" clearable maxlength="25" placeholder="请输入" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="房屋" prop="houseName">
|
<el-form-item label="房屋" prop="houseName">
|
||||||
<el-input maxlength="20" clearable v-model="queryParams.houseName" placeholder="请输入" />
|
<el-input v-model="queryParams.houseName" clearable maxlength="20" placeholder="请输入" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" @click="handleQuery">搜索</el-button>
|
<el-button type="primary" @click="handleQuery">搜索</el-button>
|
||||||
@@ -36,9 +36,9 @@
|
|||||||
<el-col :span="1.5">
|
<el-col :span="1.5">
|
||||||
<div style="font-size: 0.8rem">水表列表</div>
|
<div style="font-size: 0.8rem">水表列表</div>
|
||||||
</el-col>
|
</el-col>
|
||||||
<right-toolbar :show-add="false" :show-edit="false" :show-delete="false">
|
<right-toolbar :show-add="false" :show-delete="false" :show-edit="false">
|
||||||
<template #dropdown>
|
<template #dropdown>
|
||||||
<el-dropdown-item @click="handleMarkqrcode" >
|
<el-dropdown-item @click="handleMarkqrcode">
|
||||||
<span>批量生成条形码</span>
|
<span>批量生成条形码</span>
|
||||||
</el-dropdown-item>
|
</el-dropdown-item>
|
||||||
<el-dropdown-item @click="handleMarkQrcodeZip">
|
<el-dropdown-item @click="handleMarkQrcodeZip">
|
||||||
@@ -52,38 +52,38 @@
|
|||||||
</el-row>
|
</el-row>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<el-table v-loading="loading" border :data="waterDeviceList" @selection-change="handleSelectionChange">
|
<el-table v-loading="loading" :data="waterDeviceList" border @selection-change="handleSelectionChange">
|
||||||
<el-table-column type="selection" width="55" align="center" />
|
<el-table-column align="center" type="selection" width="55" />
|
||||||
<el-table-column label="设备编码" width="250" align="center" prop="deviceCode" />
|
<el-table-column align="center" label="设备编码" prop="deviceCode" width="250" />
|
||||||
<el-table-column label="设备状态" width="100" align="center" prop="eleStatus">
|
<el-table-column align="center" label="设备状态" prop="eleStatus" width="100">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<!-- 1 离线 0在线 -->
|
<!-- 1 离线 0在线 -->
|
||||||
<dict-tag v-if="scope.row.waterRecord" :options="com_waterdevice_on_status" :value="Number(scope.row.status)"></dict-tag>
|
<dict-tag v-if="scope.row.waterRecord" :options="com_waterdevice_on_status" :value="Number(scope.row.status)"></dict-tag>
|
||||||
<span v-else>---</span>
|
<span v-else>---</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="分合状态" width="100" align="center">
|
<el-table-column align="center" label="分合状态" width="100">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<dict-tag v-if="scope.row.status !== null" :options="com_water_readrecord_status" :value="scope.row.waterRecord.status"></dict-tag>
|
<dict-tag v-if="scope.row.status !== null" :options="com_water_readrecord_status" :value="scope.row.waterRecord.status"></dict-tag>
|
||||||
<span v-else>---</span>
|
<span v-else>---</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="房屋" align="center" prop="houseName" />
|
<el-table-column align="center" label="房屋" prop="houseName" />
|
||||||
<el-table-column label="余额" width="120" align="center" prop="deviceCode">
|
<el-table-column align="center" label="余额" prop="deviceCode" width="120">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span v-if="scope.row.waterRecord">{{ scope.row.waterRecord.balance }}</span>
|
<span v-if="scope.row.waterRecord">{{ scope.row.waterRecord.balance }}</span>
|
||||||
<span v-else>---</span>
|
<span v-else>---</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="条码" width="250" align="center">
|
<el-table-column align="center" label="条码" width="250">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-image
|
<el-image
|
||||||
v-if="scope.row.url && scope.row.url.includes('http')"
|
v-if="scope.row.url && scope.row.url.includes('http')"
|
||||||
:src="scope.row.url"
|
|
||||||
:preview-src-list="[scope.row.url]"
|
:preview-src-list="[scope.row.url]"
|
||||||
style="width: 100%; height: 100%; border-radius: 4px"
|
:src="scope.row.url"
|
||||||
fit="cover"
|
fit="cover"
|
||||||
preview-teleported
|
preview-teleported
|
||||||
|
style="width: 100%; height: 100%; border-radius: 4px"
|
||||||
>
|
>
|
||||||
<template #toolbar>
|
<template #toolbar>
|
||||||
<el-icon @click="download(scope.row.url)"><Download /></el-icon>
|
<el-icon @click="download(scope.row.url)"><Download /></el-icon>
|
||||||
@@ -92,7 +92,7 @@
|
|||||||
<span v-else>暂未生成</span>
|
<span v-else>暂未生成</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="抄表时间" align="center">
|
<el-table-column align="center" label="抄表时间">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span>{{ scope.row.waterRecord ? scope.row.waterRecord.readTime : '---' }}</span>
|
<span>{{ scope.row.waterRecord ? scope.row.waterRecord.readTime : '---' }}</span>
|
||||||
</template>
|
</template>
|
||||||
@@ -109,36 +109,24 @@
|
|||||||
></el-switch>
|
></el-switch>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column> -->
|
</el-table-column> -->
|
||||||
<el-table-column label="操作" min-width="150" align="center" fixed="right" class-name="small-padding fixed-width">
|
<el-table-column align="center" class-name="small-padding fixed-width" fixed="right" label="操作" min-width="150">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<div class="actions">
|
<div class="actions">
|
||||||
<el-button link type="primary" @click="handleRecode(scope.row)" >充值记录</el-button>
|
<el-button link type="primary" @click="handleRecode(scope.row)">充值记录</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
|
v-has-permi="['equipment:addqrcode:waterdevice']"
|
||||||
|
:loading="loadingQRCode.includes(scope.row.id)"
|
||||||
link
|
link
|
||||||
type="primary"
|
type="primary"
|
||||||
:loading="loadingQRCode.includes(scope.row.id)"
|
|
||||||
@click="handleQrCode(scope.row)"
|
@click="handleQrCode(scope.row)"
|
||||||
v-has-permi="['equipment:addqrcode:waterdevice']"
|
|
||||||
>生成条码</el-button
|
>生成条码</el-button
|
||||||
>
|
>
|
||||||
<el-button link type="primary" @click="handleOpenDialog('usedWater', scope.row)"
|
<el-button link type="primary" @click="handleOpenDialog('usedWater', scope.row)">用水量</el-button>
|
||||||
>用水量</el-button
|
<el-button link type="primary" @click="handleOpenDialog('Upload', scope.row)">更新固件</el-button>
|
||||||
>
|
|
||||||
<el-button link type="primary" @click="handleOpenDialog('Upload', scope.row)"
|
|
||||||
>更新固件</el-button
|
|
||||||
>
|
|
||||||
<!-- <el-button link type="primary" @click="handleUpdate(scope.row.deviceCode)">最新抄表记录</el-button> -->
|
<!-- <el-button link type="primary" @click="handleUpdate(scope.row.deviceCode)">最新抄表记录</el-button> -->
|
||||||
|
|
||||||
<el-button
|
<el-button v-if="!scope.row.houseName" link type="primary" @click="handleOpenDialog('UpdateHouse', scope.row)">绑定房屋</el-button>
|
||||||
v-if="!scope.row.houseName"
|
<el-button v-else link type="primary" @click="handleUnbind(scope.row)">解绑房屋</el-button>
|
||||||
link
|
|
||||||
type="primary"
|
|
||||||
@click="handleOpenDialog('UpdateHouse', scope.row)"
|
|
||||||
>绑定房屋</el-button
|
|
||||||
>
|
|
||||||
<el-button v-else link type="primary" @click="handleUnbind(scope.row)"
|
|
||||||
>解绑房屋</el-button
|
|
||||||
>
|
|
||||||
|
|
||||||
<!-- <el-dropdown style="vertical-align: text-top">
|
<!-- <el-dropdown style="vertical-align: text-top">
|
||||||
<el-button link type="primary">
|
<el-button link type="primary">
|
||||||
@@ -166,37 +154,37 @@
|
|||||||
</el-table>
|
</el-table>
|
||||||
|
|
||||||
<pagination
|
<pagination
|
||||||
:pageSizes="[10, 30, 50, 100]"
|
|
||||||
v-show="total > 0"
|
v-show="total > 0"
|
||||||
:total="total"
|
|
||||||
v-model:page="queryParams.pageNum"
|
|
||||||
v-model:limit="queryParams.pageSize"
|
v-model:limit="queryParams.pageSize"
|
||||||
|
v-model:page="queryParams.pageNum"
|
||||||
|
:pageSizes="[10, 30, 50, 100]"
|
||||||
|
:total="total"
|
||||||
@pagination="getList"
|
@pagination="getList"
|
||||||
/>
|
/>
|
||||||
</el-card>
|
</el-card>
|
||||||
<!-- 添加或修改水 设备对话框 -->
|
<!-- 添加或修改水 设备对话框 -->
|
||||||
<el-dialog :title="dialog.title" v-model="dialog.visible" width="500px" append-to-body>
|
<el-dialog v-model="dialog.visible" :title="dialog.title" append-to-body width="500px">
|
||||||
<!-- water -->
|
<!-- water -->
|
||||||
<el-form v-if="dialogType === 'usedWater'" :rules="rules" ref="UsedWaterformRef" :model="UsedWaterform" label-width="100px">
|
<el-form v-if="dialogType === 'usedWater'" ref="UsedWaterformRef" :model="UsedWaterform" :rules="rules" label-width="100px">
|
||||||
<el-form-item label="设备编号" prop="deviceCode"> {{ UsedWaterform.deviceCode }} </el-form-item>
|
<el-form-item label="设备编号" prop="deviceCode"> {{ UsedWaterform.deviceCode }} </el-form-item>
|
||||||
<el-form-item label="开始时间" prop="startTime">
|
<el-form-item label="开始时间" prop="startTime">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
format="YYYY-MM-DD HH:mm:ss"
|
|
||||||
value-format="YYYY-MM-DD HH:mm:ss"
|
|
||||||
v-model="UsedWaterform.startTime"
|
v-model="UsedWaterform.startTime"
|
||||||
type="datetime"
|
format="YYYY-MM-DD HH:mm:ss"
|
||||||
@update:model-value="handleStarTime"
|
|
||||||
placeholder="开始时间"
|
placeholder="开始时间"
|
||||||
|
type="datetime"
|
||||||
|
value-format="YYYY-MM-DD HH:mm:ss"
|
||||||
|
@update:model-value="handleStarTime"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="结束时间" prop="endTime">
|
<el-form-item label="结束时间" prop="endTime">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
format="YYYY-MM-DD HH:mm:ss"
|
|
||||||
value-format="YYYY-MM-DD HH:mm:ss"
|
|
||||||
v-model="UsedWaterform.endTime"
|
v-model="UsedWaterform.endTime"
|
||||||
type="datetime"
|
format="YYYY-MM-DD HH:mm:ss"
|
||||||
@update:model-value="handleEndTime"
|
|
||||||
placeholder="结束时间"
|
placeholder="结束时间"
|
||||||
|
type="datetime"
|
||||||
|
value-format="YYYY-MM-DD HH:mm:ss"
|
||||||
|
@update:model-value="handleEndTime"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
@@ -206,24 +194,24 @@
|
|||||||
<!-- upload file -->
|
<!-- upload file -->
|
||||||
<el-form v-else-if="dialogType === 'Upload'" ref="UploadFileformRef" :model="UploadFileform" :rules="UploadFileformRules" label-width="140px">
|
<el-form v-else-if="dialogType === 'Upload'" ref="UploadFileformRef" :model="UploadFileform" :rules="UploadFileformRules" label-width="140px">
|
||||||
<el-form-item label="LEN_A" prop="lenA">
|
<el-form-item label="LEN_A" prop="lenA">
|
||||||
<el-input maxlength="40" v-model="UploadFileform.lenA"></el-input>
|
<el-input v-model="UploadFileform.lenA" maxlength="40"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="CRC32_HEX_A" prop="crcA">
|
<el-form-item label="CRC32_HEX_A" prop="crcA">
|
||||||
<el-input maxlength="40" v-model="UploadFileform.crcA"></el-input>
|
<el-input v-model="UploadFileform.crcA" maxlength="40"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="上传 A槽更新 文件" prop="urlA">
|
<el-form-item label="上传 A槽更新 文件" prop="urlA">
|
||||||
<el-upload
|
<el-upload
|
||||||
ref="uploadARef"
|
ref="uploadARef"
|
||||||
accept=".bin"
|
|
||||||
:action="uploadAUrl"
|
:action="uploadAUrl"
|
||||||
name="file"
|
:before-upload="beforeAvatarUpload"
|
||||||
:headers="headerToken()"
|
:headers="headerToken()"
|
||||||
:limit="1"
|
:limit="1"
|
||||||
:show-file-list="true"
|
|
||||||
class="upload-demo"
|
|
||||||
:on-exceed="handleExceedA"
|
:on-exceed="handleExceedA"
|
||||||
:on-success="handleAvatarSuccessA"
|
:on-success="handleAvatarSuccessA"
|
||||||
:before-upload="beforeAvatarUpload"
|
:show-file-list="true"
|
||||||
|
accept=".bin"
|
||||||
|
class="upload-demo"
|
||||||
|
name="file"
|
||||||
>
|
>
|
||||||
<div class="uploadFileBox flex flex-items-center">
|
<div class="uploadFileBox flex flex-items-center">
|
||||||
<el-icon>
|
<el-icon>
|
||||||
@@ -238,24 +226,24 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item label="LEN_B" prop="lenB">
|
<el-form-item label="LEN_B" prop="lenB">
|
||||||
<el-input maxlength="40" v-model="UploadFileform.lenB"></el-input>
|
<el-input v-model="UploadFileform.lenB" maxlength="40"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="CRC32_HEX_B" prop="crcB">
|
<el-form-item label="CRC32_HEX_B" prop="crcB">
|
||||||
<el-input maxlength="40" v-model="UploadFileform.crcB"></el-input>
|
<el-input v-model="UploadFileform.crcB" maxlength="40"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="上传 B槽更新 文件" prop="urlB">
|
<el-form-item label="上传 B槽更新 文件" prop="urlB">
|
||||||
<el-upload
|
<el-upload
|
||||||
ref="uploadBRef"
|
ref="uploadBRef"
|
||||||
accept=".bin"
|
|
||||||
:action="uploadBUrl"
|
:action="uploadBUrl"
|
||||||
name="file"
|
:before-upload="beforeAvatarUpload"
|
||||||
:limit="1"
|
|
||||||
:headers="headerToken()"
|
:headers="headerToken()"
|
||||||
:show-file-list="true"
|
:limit="1"
|
||||||
class="upload-demo"
|
|
||||||
:on-exceed="handleExceedB"
|
:on-exceed="handleExceedB"
|
||||||
:on-success="handleAvatarSuccessB"
|
:on-success="handleAvatarSuccessB"
|
||||||
:before-upload="beforeAvatarUpload"
|
:show-file-list="true"
|
||||||
|
accept=".bin"
|
||||||
|
class="upload-demo"
|
||||||
|
name="file"
|
||||||
>
|
>
|
||||||
<div class="uploadFileBox flex flex-items-center">
|
<div class="uploadFileBox flex flex-items-center">
|
||||||
<el-icon>
|
<el-icon>
|
||||||
@@ -309,7 +297,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup name="WaterDevice" lang="ts">
|
<script lang="ts" name="WaterDevice" setup>
|
||||||
import 'element-plus/theme-chalk/display.css';
|
import 'element-plus/theme-chalk/display.css';
|
||||||
import {
|
import {
|
||||||
listWaterDevice,
|
listWaterDevice,
|
||||||
|
|||||||
@@ -4,11 +4,17 @@
|
|||||||
<el-card class="flex-1 mt-10px" shadow="never">
|
<el-card class="flex-1 mt-10px" shadow="never">
|
||||||
<template #header>
|
<template #header>
|
||||||
<div class="flex justify-between items-center">
|
<div class="flex justify-between items-center">
|
||||||
<el-form class="demo-form-inline" :inline="true">
|
<el-form :inline="true" class="demo-form-inline">
|
||||||
<el-form-item label="查询日期">
|
<el-form-item label="查询日期">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
clearable
|
|
||||||
v-model="SearchTime"
|
v-model="SearchTime"
|
||||||
|
clearable
|
||||||
|
end-placeholder="结束日期"
|
||||||
|
format="YYYY-MM-DD"
|
||||||
|
range-separator="到"
|
||||||
|
start-placeholder="开始日期"
|
||||||
|
type="daterange"
|
||||||
|
value-format="YYYY-MM-DD HH:mm:ss"
|
||||||
@change="
|
@change="
|
||||||
(val) => {
|
(val) => {
|
||||||
if (!val) {
|
if (!val) {
|
||||||
@@ -22,47 +28,41 @@
|
|||||||
queryParams.endDate = end + ' 23:59:59';
|
queryParams.endDate = end + ' 23:59:59';
|
||||||
}
|
}
|
||||||
"
|
"
|
||||||
type="daterange"
|
|
||||||
value-format="YYYY-MM-DD HH:mm:ss"
|
|
||||||
format="YYYY-MM-DD"
|
|
||||||
range-separator="到"
|
|
||||||
start-placeholder="开始日期"
|
|
||||||
end-placeholder="结束日期"
|
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="" v-has-permi="['electricity:topupRecord:list']">
|
<el-form-item v-has-permi="['electricity:topupRecord:list']" label="">
|
||||||
<el-button type="primary" @click="getList">查询</el-button>
|
<el-button type="primary" @click="getList">查询</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
<el-button @click="handleExport" v-has-permi="['electricity:topupRecord:export']" type="warning">导出统计</el-button>
|
<el-button v-has-permi="['electricity:topupRecord:export']" type="warning" @click="handleExport">导出统计</el-button>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<el-table v-loading="loading" border :data="topupRecordList">
|
<el-table v-loading="loading" :data="topupRecordList" :span-method="handleSpanMethod" border>
|
||||||
<el-table-column label="充值时间" align="center" prop="rechargeTime">
|
<el-table-column align="center" label="充值时间" prop="rechargeTime">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span v-if="scope.row.rechargeTime">{{ scope.row.rechargeTime }}</span>
|
<span v-if="scope.row.rechargeTime">{{ scope.row.rechargeTime }}</span>
|
||||||
<span v-else>---</span>
|
<span v-else>---</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="小区名称" align="center" prop="villageName">
|
<el-table-column align="center" label="小区名称" prop="villageName">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span v-if="scope.row.villageName">{{ scope.row.villageName }}</span>
|
<span v-if="scope.row.villageName">{{ scope.row.villageName }}</span>
|
||||||
<span v-else>---</span>
|
<span v-else>---</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="户主" align="center" prop="residentName">
|
<el-table-column align="center" label="户主" prop="residentName">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span v-if="scope.row.residentName">{{ scope.row.residentName }}</span>
|
<span v-if="scope.row.residentName">{{ scope.row.residentName }}</span>
|
||||||
<span v-else>---</span>
|
<span v-else>---</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="房号" align="center" prop="houseName">
|
<el-table-column align="center" label="房号" prop="houseName">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span v-if="scope.row.houseName">{{ scope.row.houseName }}</span>
|
<span v-if="scope.row.houseName">{{ scope.row.houseName }}</span>
|
||||||
<span v-else>---</span>
|
<span v-else>---</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="单价" align="center" prop="fixedPrice">
|
<el-table-column align="center" label="单价" prop="fixedPrice">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<div v-if="scope.row.fixedPrice && scope.row.unit">
|
<div v-if="scope.row.fixedPrice && scope.row.unit">
|
||||||
<span>{{ scope.row.fixedPrice }}</span>
|
<span>{{ scope.row.fixedPrice }}</span>
|
||||||
@@ -74,17 +74,17 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="设备编号" align="center" prop="deviceCode" />
|
<el-table-column align="center" label="设备编号" prop="deviceCode" />
|
||||||
<el-table-column label="订单号" align="center" prop="orderId" />
|
<el-table-column align="center" label="订单号" prop="orderId" />
|
||||||
<el-table-column label="充值金额" align="center" prop="rechargeAmount" />
|
<el-table-column align="center" label="充值金额" prop="rechargeAmount" />
|
||||||
<el-table-column label="缴费方式" align="center" prop="topUpType" />
|
<el-table-column align="center" label="缴费方式" prop="topUpType" />
|
||||||
</el-table>
|
</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" v-model:limit="queryParams.pageSize" v-model:page="queryParams.pageNum" :total="total" @pagination="getList" />
|
||||||
</el-card>
|
</el-card>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script lang="ts" setup>
|
||||||
import pageHeader from '@/components/Pageheader/index.vue';
|
import pageHeader from '@/components/Pageheader/index.vue';
|
||||||
import pagination from '@/components/Pagination/index.vue';
|
import pagination from '@/components/Pagination/index.vue';
|
||||||
import { getElectricityTopupRecordByDate, type TopupRecordList } from '@/api/system/SdbTopupRecord';
|
import { getElectricityTopupRecordByDate, type TopupRecordList } from '@/api/system/SdbTopupRecord';
|
||||||
@@ -112,6 +112,7 @@ const getList = async () => {
|
|||||||
loading.value = true;
|
loading.value = true;
|
||||||
const res = await getElectricityTopupRecordByDate(queryParams.value);
|
const res = await getElectricityTopupRecordByDate(queryParams.value);
|
||||||
topupRecordList.value = res.rows;
|
topupRecordList.value = res.rows;
|
||||||
|
topupRecordList.value[topupRecordList.value.length - 1].rechargeTime = '合计';
|
||||||
total.value = res.total;
|
total.value = res.total;
|
||||||
loading.value = false;
|
loading.value = false;
|
||||||
};
|
};
|
||||||
@@ -119,7 +120,24 @@ const getList = async () => {
|
|||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
getList();
|
getList();
|
||||||
});
|
});
|
||||||
|
function handleSpanMethod({ rowIndex, columnIndex }) {
|
||||||
|
if (rowIndex === topupRecordList.value.length - 1) {
|
||||||
|
const rowspan = 7;
|
||||||
|
if (columnIndex === 0) {
|
||||||
|
return [1, rowspan];
|
||||||
|
}
|
||||||
|
if (columnIndex < rowspan) {
|
||||||
|
return [0, 0];
|
||||||
|
}
|
||||||
|
if (columnIndex === 8) {
|
||||||
|
return [0, 0];
|
||||||
|
}
|
||||||
|
if (columnIndex === 7) {
|
||||||
|
return [1, 2];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return [1, 1];
|
||||||
|
}
|
||||||
/** 导出按钮操作 */
|
/** 导出按钮操作 */
|
||||||
const handleExport = () => {
|
const handleExport = () => {
|
||||||
proxy?.download(
|
proxy?.download(
|
||||||
|
|||||||
@@ -4,13 +4,13 @@
|
|||||||
<div class="AddBuildingBody">
|
<div class="AddBuildingBody">
|
||||||
<div class="title">基本信息</div>
|
<div class="title">基本信息</div>
|
||||||
<div class="addBuildingFormBody">
|
<div class="addBuildingFormBody">
|
||||||
<el-form class="formBody" label-position="left" ref="formRef" :model="form" :rules="rules" label-width="130px">
|
<el-form ref="formRef" :model="form" :rules="rules" class="formBody" label-position="left" label-width="130px">
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="11">
|
<el-col :span="11">
|
||||||
<el-form-item label="车牌号" prop="carNum" :validate-event="false">
|
<el-form-item :validate-event="false" label="车牌号" prop="carNum">
|
||||||
<el-input
|
<el-input
|
||||||
maxlength="10"
|
|
||||||
v-model.trim="form.carNum"
|
v-model.trim="form.carNum"
|
||||||
|
maxlength="10"
|
||||||
placeholder="请输入车牌号"
|
placeholder="请输入车牌号"
|
||||||
style="text-transform: uppercase; letter-spacing: 2px"
|
style="text-transform: uppercase; letter-spacing: 2px"
|
||||||
/>
|
/>
|
||||||
@@ -19,20 +19,20 @@
|
|||||||
<el-col :span="2"></el-col>
|
<el-col :span="2"></el-col>
|
||||||
<el-col :span="11">
|
<el-col :span="11">
|
||||||
<el-form-item label="车辆品牌" prop="carBrand">
|
<el-form-item label="车辆品牌" prop="carBrand">
|
||||||
<el-input maxlength="12" v-model.trim="form.carBrand" placeholder="请输入车辆品牌" />
|
<el-input v-model.trim="form.carBrand" maxlength="12" placeholder="请输入车辆品牌" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="11">
|
<el-col :span="11">
|
||||||
<el-form-item label="车辆型号" prop="carModel">
|
<el-form-item label="车辆型号" prop="carModel">
|
||||||
<el-input maxlength="12" v-model.trim="form.carModel" placeholder="请输入补充车辆型号" />
|
<el-input v-model.trim="form.carModel" maxlength="12" placeholder="请输入补充车辆型号" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="2"></el-col>
|
<el-col :span="2"></el-col>
|
||||||
<el-col :span="11">
|
<el-col :span="11">
|
||||||
<el-form-item label="车身颜色" prop="carColor">
|
<el-form-item label="车身颜色" prop="carColor">
|
||||||
<el-input maxlength="12" v-model.trim="form.carColor" placeholder="请输入车身颜色" />
|
<el-input v-model.trim="form.carColor" maxlength="12" placeholder="请输入车身颜色" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
@@ -40,18 +40,18 @@
|
|||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="车辆照片">
|
<el-form-item label="车辆照片">
|
||||||
<el-upload
|
<el-upload
|
||||||
class="avatar-uploader"
|
|
||||||
ref="uploadRef"
|
ref="uploadRef"
|
||||||
accept=".png, .jpg"
|
|
||||||
:action="uploadUrl"
|
:action="uploadUrl"
|
||||||
name="file"
|
:before-upload="beforeAvatarUpload"
|
||||||
:headers="headerToken()"
|
:headers="headerToken()"
|
||||||
:show-file-list="false"
|
|
||||||
:limit="1"
|
:limit="1"
|
||||||
:on-success="handleAvatarSuccess"
|
:on-success="handleAvatarSuccess"
|
||||||
:before-upload="beforeAvatarUpload"
|
:show-file-list="false"
|
||||||
|
accept=".png, .jpg"
|
||||||
|
class="avatar-uploader"
|
||||||
|
name="file"
|
||||||
>
|
>
|
||||||
<img alt="车辆照片" v-if="form.carImageUrl" :src="form.carImageUrl" class="avatar" />
|
<img v-if="form.carImageUrl" :src="form.carImageUrl" alt="车辆照片" class="avatar" />
|
||||||
<el-icon v-else class="avatar-uploader-icon"><Plus /></el-icon>
|
<el-icon v-else class="avatar-uploader-icon"><Plus /></el-icon>
|
||||||
<template #tip>
|
<template #tip>
|
||||||
<div style="color: gray; font-size: small">支持jpg, png等格式文件上传</div>
|
<div style="color: gray; font-size: small">支持jpg, png等格式文件上传</div>
|
||||||
@@ -64,10 +64,10 @@
|
|||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="持有人">
|
<el-form-item label="持有人">
|
||||||
<AppUser returnable="*" :isMultiple="false" ref="HolderRef" @change="handleChange">
|
<AppUser ref="HolderRef" :isMultiple="false" returnable="*" @change="handleChange">
|
||||||
<template #default>
|
<template #default>
|
||||||
<div class="residentBox" @click="choiceResidentFun">
|
<div class="residentBox" @click="choiceResidentFun">
|
||||||
<div class="defaultBox" v-if="form.userId === ''">
|
<div v-if="form.userId === ''" class="defaultBox">
|
||||||
<span>请选择</span>
|
<span>请选择</span>
|
||||||
<el-icon><Search /></el-icon>
|
<el-icon><Search /></el-icon>
|
||||||
</div>
|
</div>
|
||||||
@@ -84,7 +84,7 @@
|
|||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="备注" prop="remark">
|
<el-form-item label="备注" prop="remark">
|
||||||
<el-input maxlength="200" show-word-limit type="textarea" :rows="5" v-model.trim="form.remark" placeholder="请输入" />
|
<el-input v-model.trim="form.remark" :rows="5" maxlength="200" placeholder="请输入" show-word-limit type="textarea" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
@@ -98,9 +98,8 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script lang="ts" setup>
|
||||||
import { ref } from 'vue';
|
import { ref } from 'vue';
|
||||||
import Holder from '@/components/Holder/index.vue';
|
|
||||||
import PageHeader from '@/components/Pageheader/index.vue';
|
import PageHeader from '@/components/Pageheader/index.vue';
|
||||||
import { listArea } from '@/api/system/carArea';
|
import { listArea } from '@/api/system/carArea';
|
||||||
import { listParking } from '@/api/system/parking';
|
import { listParking } from '@/api/system/parking';
|
||||||
@@ -242,7 +241,7 @@ const cancelForm = () => {
|
|||||||
router.back();
|
router.back();
|
||||||
};
|
};
|
||||||
const holderInfo = ref(null);
|
const holderInfo = ref(null);
|
||||||
const HolderRef = ref<typeof Holder>(null);
|
const HolderRef = ref<typeof AppUser>(null);
|
||||||
function choiceResidentFun() {
|
function choiceResidentFun() {
|
||||||
if (form.value.userId && form.value.userId.trim() !== '') {
|
if (form.value.userId && form.value.userId.trim() !== '') {
|
||||||
HolderRef.value.open([form.value.userId]);
|
HolderRef.value.open([form.value.userId]);
|
||||||
@@ -262,7 +261,7 @@ function handleChange(pop) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
<style scoped lang="scss">
|
<style lang="scss" scoped>
|
||||||
.avatar {
|
.avatar {
|
||||||
width: 178px;
|
width: 178px;
|
||||||
height: 178px;
|
height: 178px;
|
||||||
|
|||||||
@@ -5,12 +5,12 @@
|
|||||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||||
<div v-show="showSearch" class="mb-[10px]">
|
<div v-show="showSearch" class="mb-[10px]">
|
||||||
<el-card shadow="hover">
|
<el-card shadow="hover">
|
||||||
<el-form ref="queryFormRef" :model="queryParams" @submit.prevent="handleQuery" :inline="true">
|
<el-form ref="queryFormRef" :inline="true" :model="queryParams" @submit.prevent="handleQuery">
|
||||||
<el-form-item label="设备名称" prop="deviceName">
|
<el-form-item label="设备名称" prop="deviceName">
|
||||||
<el-input maxlength="20" v-model="queryParams.deviceName" placeholder="请输入设备名称" clearable @keyup.enter="handleQuery" />
|
<el-input v-model="queryParams.deviceName" clearable maxlength="20" placeholder="请输入设备名称" @keyup.enter="handleQuery" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="设备编号" prop="deviceCode">
|
<el-form-item label="设备编号" prop="deviceCode">
|
||||||
<el-input maxlength="20" v-model="queryParams.deviceCode" placeholder="请输入设备编号" clearable @keyup.enter="handleQuery" />
|
<el-input v-model="queryParams.deviceCode" clearable maxlength="20" placeholder="请输入设备编号" @keyup.enter="handleQuery" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" @click="handleQuery">搜索</el-button>
|
<el-button type="primary" @click="handleQuery">搜索</el-button>
|
||||||
@@ -28,44 +28,43 @@
|
|||||||
:disable-delete="multiple"
|
:disable-delete="multiple"
|
||||||
:disable-edit="single"
|
:disable-edit="single"
|
||||||
:show-add="checkPermi(['warehouse:device:add'])"
|
:show-add="checkPermi(['warehouse:device:add'])"
|
||||||
:show-edit="checkPermi(['warehouse:device:edit'])"
|
|
||||||
:show-delete="checkPermi(['warehouse:device:remove'])"
|
:show-delete="checkPermi(['warehouse:device:remove'])"
|
||||||
|
:show-edit="checkPermi(['warehouse:device:edit'])"
|
||||||
@update:add="handleAdd"
|
@update:add="handleAdd"
|
||||||
@update:edit="handleUpdate()"
|
@update:edit="handleUpdate()"
|
||||||
@update:delete="handleDelete()"
|
@update:delete="handleDelete()"
|
||||||
></right-toolbar>
|
></right-toolbar>
|
||||||
</el-row>
|
</el-row>
|
||||||
</template>
|
</template>
|
||||||
<el-table v-loading="loading" border :data="deviceList" @selection-change="handleSelectionChange">
|
<el-table v-loading="loading" :data="deviceList" border @selection-change="handleSelectionChange">
|
||||||
<el-table-column type="selection" width="55" align="center" />
|
<el-table-column align="center" type="selection" width="55" />
|
||||||
<el-table-column label="设备分类" width="100" align="center" prop="categoryName" />
|
<el-table-column align="center" label="设备分类" prop="categoryName" width="100" />
|
||||||
<el-table-column label="设备名称" align="center" prop="deviceName" />
|
<el-table-column align="center" label="设备名称" prop="deviceName" />
|
||||||
<el-table-column label="设备编号" align="center" prop="deviceCode" />
|
<el-table-column align="center" label="设备编号" prop="deviceCode" />
|
||||||
<el-table-column label="设备型号" align="center" prop="deviceModel" />
|
<el-table-column align="center" label="品牌型号" prop="deviceModel" />
|
||||||
<el-table-column label="位置区域" align="center" prop="area" show-overflow-tooltip />
|
<el-table-column align="center" label="所在区域" prop="area" show-overflow-tooltip />
|
||||||
<el-table-column label="维护人员" align="center" prop="maintainUserListName" show-overflow-tooltip />
|
<el-table-column align="center" label="设备状态" prop="status" width="80">
|
||||||
<el-table-column label="设备状态" width="80" align="center" prop="status">
|
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<dict-tag :options="com_equipment_archive_status" :value="scope.row.status"></dict-tag>
|
<dict-tag :options="com_equipment_archive_status" :value="scope.row.status"></dict-tag>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="保修期" align="center" prop="shelfLife" />
|
<el-table-column align="center" label="维护人员" prop="maintainUserListName" show-overflow-tooltip />
|
||||||
<el-table-column label="备注" align="center" prop="remark" show-overflow-tooltip />
|
<el-table-column align="center" label="备注" prop="remark" show-overflow-tooltip />
|
||||||
<el-table-column label="操作" width="180" align="center" fixed="right" class-name="small-padding fixed-width">
|
<el-table-column align="center" class-name="small-padding fixed-width" fixed="right" label="操作" width="180">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button link type="primary" @click="handleMain(scope.row)" v-has-permi="['warehouse:device:query']">查看详情</el-button>
|
<el-button v-has-permi="['warehouse:device:query']" link type="primary" @click="handleMain(scope.row)">查看详情</el-button>
|
||||||
<el-button link type="primary" @click="handleUpdate(scope.row)" v-has-permi="['warehouse:device:edit']">编辑</el-button>
|
<el-button v-has-permi="['warehouse:device:edit']" link type="primary" @click="handleUpdate(scope.row)">编辑</el-button>
|
||||||
<el-button link type="primary" @click="handleDelete(scope.row)" v-has-permi="['warehouse:device:remove']">删除</el-button>
|
<el-button v-has-permi="['warehouse:device:remove']" link type="primary" @click="handleDelete(scope.row)">删除</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</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" v-model:limit="queryParams.pageSize" v-model:page="queryParams.pageNum" :total="total" @pagination="getList" />
|
||||||
</el-card>
|
</el-card>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup name="Device" lang="ts">
|
<script lang="ts" name="Device" setup>
|
||||||
import { listDevice, delDevice, addDevice, updateDevice } from '@/api/system/equipment/archive';
|
import { listDevice, delDevice, addDevice, updateDevice } from '@/api/system/equipment/archive';
|
||||||
import { DeviceVO, DeviceQuery, DeviceForm } from '@/api/system/equipment/archive/type';
|
import { DeviceVO, DeviceQuery, DeviceForm } from '@/api/system/equipment/archive/type';
|
||||||
import { checkPermi } from '@/utils/permission';
|
import { checkPermi } from '@/utils/permission';
|
||||||
|
|||||||
@@ -4,12 +4,12 @@
|
|||||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||||
<div v-show="showSearch" class="mb-[10px]">
|
<div v-show="showSearch" class="mb-[10px]">
|
||||||
<el-card shadow="hover">
|
<el-card shadow="hover">
|
||||||
<el-form ref="queryFormRef" label-width="100" :model="queryParams" :inline="true">
|
<el-form ref="queryFormRef" :inline="true" :model="queryParams" label-width="100">
|
||||||
<el-form-item label="设备名称" prop="deviceName">
|
<el-form-item label="设备名称" prop="deviceName">
|
||||||
<el-input maxlength="20" v-model="queryParams.deviceName" placeholder="请输入设备名称" clearable @keyup.enter="handleQuery" />
|
<el-input v-model="queryParams.deviceName" clearable maxlength="20" placeholder="请输入设备名称" @keyup.enter="handleQuery" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="设备编号" prop="deviceCode">
|
<el-form-item label="设备编号" prop="deviceCode">
|
||||||
<el-input maxlength="20" v-model="queryParams.deviceCode" placeholder="请输入设备编号" clearable @keyup.enter="handleQuery" />
|
<el-input v-model="queryParams.deviceCode" clearable maxlength="20" placeholder="请输入设备编号" @keyup.enter="handleQuery" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" @click="handleQuery">搜索</el-button>
|
<el-button type="primary" @click="handleQuery">搜索</el-button>
|
||||||
@@ -27,8 +27,8 @@
|
|||||||
:disable-delete="multiple"
|
:disable-delete="multiple"
|
||||||
:disable-edit="single"
|
:disable-edit="single"
|
||||||
:show-add="checkPermi(['warehouse:deviceRepair:add'])"
|
:show-add="checkPermi(['warehouse:deviceRepair:add'])"
|
||||||
:show-edit="checkPermi(['warehouse:deviceRepair:edit'])"
|
|
||||||
:show-delete="checkPermi(['warehouse:deviceRepair:remove'])"
|
:show-delete="checkPermi(['warehouse:deviceRepair:remove'])"
|
||||||
|
:show-edit="checkPermi(['warehouse:deviceRepair:edit'])"
|
||||||
@update:add="handleAdd"
|
@update:add="handleAdd"
|
||||||
@update:edit="handleUpdate()"
|
@update:edit="handleUpdate()"
|
||||||
@update:delete="handleDelete()"
|
@update:delete="handleDelete()"
|
||||||
@@ -36,40 +36,34 @@
|
|||||||
</el-row>
|
</el-row>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<el-table v-loading="loading" border :data="deviceRepairList" @selection-change="handleSelectionChange">
|
<el-table v-loading="loading" :data="deviceRepairList" border @selection-change="handleSelectionChange">
|
||||||
<el-table-column type="selection" width="55" align="center" />
|
<el-table-column align="center" type="selection" width="55" />
|
||||||
<el-table-column label="设备名称" align="center" prop="deviceName" />
|
<el-table-column align="center" label="设备名称" prop="deviceName" />
|
||||||
<el-table-column label="设备编号" align="center" prop="deviceCode" />
|
<el-table-column align="center" label="设备编号" prop="deviceCode" />
|
||||||
<el-table-column label="设备型号" align="center" prop="deviceModel" />
|
<el-table-column align="center" label="品牌型号" prop="deviceModel" />
|
||||||
<el-table-column label="位置区域" align="center" prop="area" />
|
<el-table-column align="center" label="维护人员" prop="maintainUserNames" />
|
||||||
<el-table-column label="维护人员" align="center" prop="maintainUserNames" />
|
<el-table-column align="center" label="故障描述" prop="faultDesc" />
|
||||||
<el-table-column label="故障描述" align="center" prop="faultDesc" />
|
<el-table-column align="center" label="维修结果" prop="repairResult">
|
||||||
<el-table-column label="维修结果" align="center" prop="repairResult">
|
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<dict-tag :options="com_equipment_repair_status" :value="scope.row.repairResult"></dict-tag>
|
<dict-tag :options="com_equipment_repair_status" :value="scope.row.repairResult"></dict-tag>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="维修时间" align="center" prop="repairTime" width="180">
|
<el-table-column align="center" label="备注" prop="remark" />
|
||||||
|
<el-table-column align="center" class-name="small-padding fixed-width" fixed="right" label="操作" width="160">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span>{{ parseTime(scope.row.repairTime, '{y}-{m}-{d}') }}</span>
|
<el-button v-has-permi="['warehouse:deviceRepair:query']" link type="primary" @click="handleMain(scope.row)">查看详情</el-button>
|
||||||
</template>
|
<el-button v-has-permi="['warehouse:deviceRepair:edit']" link type="primary" @click="handleUpdate(scope.row)">编辑</el-button>
|
||||||
</el-table-column>
|
<el-button v-has-permi="['warehouse:deviceRepair:remove']" link type="primary" @click="handleDelete(scope.row)">删除</el-button>
|
||||||
<el-table-column label="备注" align="center" prop="remark" />
|
|
||||||
<el-table-column label="操作" width="160" align="center" fixed="right" class-name="small-padding fixed-width">
|
|
||||||
<template #default="scope">
|
|
||||||
<el-button link type="primary" @click="handleMain(scope.row)" v-has-permi="['warehouse:deviceRepair:query']">详情</el-button>
|
|
||||||
<el-button link type="primary" @click="handleUpdate(scope.row)" v-has-permi="['warehouse:deviceRepair:edit']">编辑</el-button>
|
|
||||||
<el-button link type="primary" @click="handleDelete(scope.row)" v-has-permi="['warehouse:deviceRepair:remove']">删除</el-button>
|
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</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" v-model:limit="queryParams.pageSize" v-model:page="queryParams.pageNum" :total="total" @pagination="getList" />
|
||||||
</el-card>
|
</el-card>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup name="DeviceRepair" lang="ts">
|
<script lang="ts" name="DeviceRepair" setup>
|
||||||
import { listDeviceRepair, delDeviceRepair } from '@/api/system/equipment/Repair';
|
import { listDeviceRepair, delDeviceRepair } from '@/api/system/equipment/Repair';
|
||||||
import { DeviceRepairVO, DeviceRepairQuery, DeviceRepairForm } from '@/api/system/equipment/Repair/type';
|
import { DeviceRepairVO, DeviceRepairQuery, DeviceRepairForm } from '@/api/system/equipment/Repair/type';
|
||||||
import { checkPermi } from '@/utils/permission';
|
import { checkPermi } from '@/utils/permission';
|
||||||
|
|||||||
181
src/views/system/house/AddUnit.vue
Normal file
181
src/views/system/house/AddUnit.vue
Normal file
@@ -0,0 +1,181 @@
|
|||||||
|
<template>
|
||||||
|
<div class="AddBuildingBox">
|
||||||
|
<PageHeader>
|
||||||
|
<template #operate>
|
||||||
|
<div class="BackBox" @click="goBack">返回</div>
|
||||||
|
</template>
|
||||||
|
</PageHeader>
|
||||||
|
<div class="AddBuildingBody">
|
||||||
|
<div class="title">基本信息</div>
|
||||||
|
<div class="addBuildingFormBody">
|
||||||
|
<el-form ref="unitNoFormRef" :model="form" :rules="rules" class="formBody" label-width="80px">
|
||||||
|
<el-form-item label="单元名称" prop="name">
|
||||||
|
<el-input v-model.trim="form.name" maxlength="6" placeholder="请输入单元名称" show-word-limit />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="楼栋" prop="buildingId">
|
||||||
|
<el-select v-model="form.buildingId" placeholder="请选择">
|
||||||
|
<el-option v-for="item in houseStore.currentBuildingInfoList" :key="item.id" :label="item.buildingName" :value="item.id" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<div class="dialog-footer">
|
||||||
|
<el-button :loading="buttonLoading" type="primary" @click="submitForm">确 定</el-button>
|
||||||
|
<el-button @click="cancel">重 置</el-button>
|
||||||
|
</div>
|
||||||
|
</el-form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup>
|
||||||
|
import { ref } from 'vue';
|
||||||
|
import PageHeader from '@/components/Pageheader/index.vue';
|
||||||
|
import { addUnitNo, getUnitNo, updateUnitNo } from '@/api/system/houseUnit';
|
||||||
|
import { useRouter } from 'vue-router';
|
||||||
|
import { useHouseStore } from '@/store/modules/house';
|
||||||
|
import { validator } from '@/utils/Reg';
|
||||||
|
|
||||||
|
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
||||||
|
const houseStore = useHouseStore();
|
||||||
|
const route = useRoute();
|
||||||
|
const router = useRouter();
|
||||||
|
const unitNoFormRef = ref();
|
||||||
|
const buttonLoading = ref(false);
|
||||||
|
const form = ref({
|
||||||
|
id: undefined,
|
||||||
|
name: undefined,
|
||||||
|
buildingId: undefined
|
||||||
|
});
|
||||||
|
const rules = ref({
|
||||||
|
name: [
|
||||||
|
{ required: true, message: '单元名称不能为空', trigger: 'blur' },
|
||||||
|
{
|
||||||
|
validator: (_: any, value: string, callback: (error?: Error) => void) => {
|
||||||
|
if (!value || value.trim() === '') {
|
||||||
|
callback();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// 使用 Character 正则验证(只允许字母、数字、中文、下划线、横线)
|
||||||
|
const isValid = validator(value, 'Character');
|
||||||
|
if (!isValid) {
|
||||||
|
callback(new Error('只能输入中文、字母、数字、下划线和横线'));
|
||||||
|
} else {
|
||||||
|
callback();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
trigger: 'blur'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
buildingId: [{ required: true, message: '所属楼栋不能为空', trigger: 'blur' }]
|
||||||
|
});
|
||||||
|
|
||||||
|
function init() {
|
||||||
|
const unitId = route.query.id as string;
|
||||||
|
if (unitId) {
|
||||||
|
getUnitNo(unitId).then((res) => {
|
||||||
|
form.value = {
|
||||||
|
id: res.data.id,
|
||||||
|
name: res.data.name,
|
||||||
|
buildingId: res.data.buildingId
|
||||||
|
};
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
onMounted(() => {
|
||||||
|
init();
|
||||||
|
});
|
||||||
|
|
||||||
|
/** 提交按钮 */
|
||||||
|
const submitForm = () => {
|
||||||
|
unitNoFormRef.value?.validate(async (valid: boolean) => {
|
||||||
|
if (valid) {
|
||||||
|
buttonLoading.value = true;
|
||||||
|
if (form.value.id) {
|
||||||
|
await updateUnitNo(form.value)
|
||||||
|
.then(() => {
|
||||||
|
goBack();
|
||||||
|
})
|
||||||
|
.finally(() => {
|
||||||
|
buttonLoading.value = false;
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
await addUnitNo(form.value)
|
||||||
|
.then(() => {
|
||||||
|
goBack();
|
||||||
|
})
|
||||||
|
.finally(() => {
|
||||||
|
buttonLoading.value = false;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
proxy?.$modal.msgSuccess('操作成功');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
/** 取消按钮 */
|
||||||
|
const cancel = () => {
|
||||||
|
resetForm();
|
||||||
|
};
|
||||||
|
/** 表单重置 */
|
||||||
|
const resetForm = () => {
|
||||||
|
form.value = { id: undefined, name: undefined, buildingId: undefined };
|
||||||
|
unitNoFormRef.value?.resetFields();
|
||||||
|
init();
|
||||||
|
};
|
||||||
|
function goBack() {
|
||||||
|
router.back();
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.BackBox {
|
||||||
|
width: 100px;
|
||||||
|
height: 45px;
|
||||||
|
line-height: 40px;
|
||||||
|
text-align: center;
|
||||||
|
border-radius: 5px;
|
||||||
|
color: rgba(16, 16, 16, 1);
|
||||||
|
border: 1px solid rgba(187, 187, 187, 1);
|
||||||
|
cursor: pointer;
|
||||||
|
font-size: 14px;
|
||||||
|
&:hover {
|
||||||
|
box-shadow: 0 2px 6px 0 rgba(26, 117, 255, 0.1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.AddBuildingBox {
|
||||||
|
padding: 15px;
|
||||||
|
height: 100%;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.AddBuildingBody {
|
||||||
|
margin-top: 20px;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: center;
|
||||||
|
background-color: white;
|
||||||
|
padding: 15px;
|
||||||
|
.title {
|
||||||
|
height: 40px;
|
||||||
|
line-height: 40px;
|
||||||
|
padding-left: 20px;
|
||||||
|
background-color: rgba(255, 255, 255, 1);
|
||||||
|
color: rgba(16, 16, 16, 1);
|
||||||
|
border-bottom: 1px solid #bbbbbb;
|
||||||
|
margin-bottom: 60px;
|
||||||
|
}
|
||||||
|
.addBuildingFormBody {
|
||||||
|
.formBody {
|
||||||
|
width: 550px;
|
||||||
|
margin: 0 auto;
|
||||||
|
.el-form-item {
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
.el-button {
|
||||||
|
width: 80px;
|
||||||
|
height: 35px;
|
||||||
|
margin-right: 20px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
padding-bottom: 40px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -13,16 +13,16 @@
|
|||||||
>楼栋结构:{{ houseStore.currentBuildingInfo?.buildStructure ? `${houseStore.currentBuildingInfo?.buildStructure}` : ' --' }}
|
>楼栋结构:{{ houseStore.currentBuildingInfo?.buildStructure ? `${houseStore.currentBuildingInfo?.buildStructure}` : ' --' }}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div style="text-wrap: nowrap" class="rightActions flex flex-items-center">
|
<div class="rightActions flex flex-items-center" style="text-wrap: nowrap">
|
||||||
<span class="mr-20px" @click="handleAddUnit" v-has-permi="['unitNo:unitNo:add']">+添加单元</span>
|
<span v-has-permi="['unitNo:unitNo:add']" class="mr-20px" @click="handleAddUnit">+添加单元</span>
|
||||||
<span class="mr-20px" @click="handleAddHouse" v-has-permi="['system:house:add']">+增加房屋</span>
|
<span v-has-permi="['system:house:add']" class="mr-20px" @click="handleAddHouse">+增加房屋</span>
|
||||||
<!-- <span class="mr-20px">收费标准设置</span> -->
|
<!-- <span class="mr-20px">收费标准设置</span> -->
|
||||||
<span @click="deleteAllhouse" v-has-permi="['system:house:remove']">批量删除房屋</span>
|
<span v-has-permi="['system:house:remove']" @click="deleteAllhouse">批量删除房屋</span>
|
||||||
<el-select clearable @clear="handleClearUse" @change="handleChangeUse" v-model="houseUse" placeholder="筛选房屋类型" class="selectbox">
|
<el-select v-model="houseUse" class="selectbox" clearable placeholder="筛选房屋类型" @change="handleChangeUse" @clear="handleClearUse">
|
||||||
<el-option v-for="item in houseUseTypeList" :key="item.id" :label="item.name" :value="item.id" />
|
<el-option v-for="item in houseUseTypeList" :key="item.id" :label="item.name" :value="item.id" />
|
||||||
</el-select>
|
</el-select>
|
||||||
<div class="searchbox flex flex-items-center">
|
<div class="searchbox flex flex-items-center">
|
||||||
<el-input v-model="housename" maxlength="15" class="searchinput" placeholder="请输入房屋号"></el-input>
|
<el-input v-model="housename" class="searchinput" maxlength="15" placeholder="请输入房屋号"></el-input>
|
||||||
<el-button style="margin-left: 10px" type="primary" @click="handleSearchHouse">搜索</el-button>
|
<el-button style="margin-left: 10px" type="primary" @click="handleSearchHouse">搜索</el-button>
|
||||||
<el-button @click="reset">重置</el-button>
|
<el-button @click="reset">重置</el-button>
|
||||||
</div>
|
</div>
|
||||||
@@ -32,10 +32,10 @@
|
|||||||
<TableUnit @edit-unit="handleEditUnit" @delete-unit="handleDelete"></TableUnit>
|
<TableUnit @edit-unit="handleEditUnit" @delete-unit="handleDelete"></TableUnit>
|
||||||
<!-- </div> -->
|
<!-- </div> -->
|
||||||
<!-- 添加或修改单元对话框 -->
|
<!-- 添加或修改单元对话框 -->
|
||||||
<el-dialog :title="dialog.title" v-model="dialog.visible" width="500px" append-to-body>
|
<el-dialog v-model="dialog.visible" :title="dialog.title" append-to-body width="500px">
|
||||||
<el-form ref="unitNoFormRef" :model="form" :rules="rules" label-width="80px">
|
<el-form ref="unitNoFormRef" :model="form" :rules="rules" label-width="80px">
|
||||||
<el-form-item label="单元名称" prop="name">
|
<el-form-item label="单元名称" prop="name">
|
||||||
<el-input maxlength="6" show-word-limit v-model.trim="form.name" placeholder="请输入单元名称" />
|
<el-input v-model.trim="form.name" maxlength="6" placeholder="请输入单元名称" show-word-limit />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="楼栋" prop="buildingId">
|
<el-form-item label="楼栋" prop="buildingId">
|
||||||
<el-select v-model="form.buildingId" placeholder="请选择">
|
<el-select v-model="form.buildingId" placeholder="请选择">
|
||||||
@@ -53,12 +53,12 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script lang="ts" setup>
|
||||||
import { deleteHouseApi } from '@/api/system/house';
|
import { deleteHouseApi } from '@/api/system/house';
|
||||||
import TableUnit from './components/table.vue';
|
import TableUnit from './components/table.vue';
|
||||||
import { useHouseStore } from '@/store/modules/house';
|
import { useHouseStore } from '@/store/modules/house';
|
||||||
import { listHouseUseType_add_house } from '@/api/system/houseUse';
|
import { listHouseUseType_add_house } from '@/api/system/houseUse';
|
||||||
import { addUnitNo, delUnitNo, getUnitNo, updateUnitNo } from '@/api/system/houseUnit';
|
import { addUnitNo, delUnitNo, updateUnitNo } from '@/api/system/houseUnit';
|
||||||
import { validator } from '@/utils/Reg';
|
import { validator } from '@/utils/Reg';
|
||||||
|
|
||||||
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
||||||
@@ -118,25 +118,30 @@ const rules = {
|
|||||||
};
|
};
|
||||||
/** 新增按钮操作 */
|
/** 新增按钮操作 */
|
||||||
const handleAddUnit = () => {
|
const handleAddUnit = () => {
|
||||||
resetForm();
|
router.push({
|
||||||
dialog.visible = true;
|
path: '/house/addUnit'
|
||||||
dialog.title = '添加单元';
|
});
|
||||||
};
|
};
|
||||||
/** 修改按钮操作 */
|
/** 修改按钮操作 */
|
||||||
const handleEditUnit = async (id: string) => {
|
const handleEditUnit = (id: string) => {
|
||||||
resetForm();
|
router.push({
|
||||||
const res = await getUnitNo(id);
|
path: '/house/editUnit',
|
||||||
Object.assign(form.value, res.data);
|
query: {
|
||||||
dialog.visible = true;
|
id
|
||||||
dialog.title = '修改单元';
|
}
|
||||||
|
});
|
||||||
};
|
};
|
||||||
/** 删除按钮操作 */
|
/** 删除按钮操作 */
|
||||||
const handleDelete = async (id: string) => {
|
const handleDelete = (id: string) => {
|
||||||
await proxy?.$modal.confirm('是否确认删除该单元?');
|
proxy?.$modal
|
||||||
await delUnitNo(id);
|
.confirm('是否确认删除该单元?')
|
||||||
proxy?.$modal.msgSuccess('删除成功');
|
.then(() => {
|
||||||
// await getList();
|
delUnitNo(id).then(() => {
|
||||||
houseStore.updateCureentBuilding();
|
proxy?.$modal.msgSuccess('删除成功');
|
||||||
|
houseStore.updateCureentBuilding();
|
||||||
|
});
|
||||||
|
})
|
||||||
|
.catch(() => {});
|
||||||
};
|
};
|
||||||
|
|
||||||
/** 提交按钮 */
|
/** 提交按钮 */
|
||||||
@@ -209,7 +214,7 @@ async function deleteAllhouse() {
|
|||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style lang="scss" scoped>
|
||||||
$primary_color: #1978fe;
|
$primary_color: #1978fe;
|
||||||
.UnitBox {
|
.UnitBox {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
|
|||||||
@@ -5,14 +5,14 @@
|
|||||||
<div v-show="showSearch" class="mb-[10px]">
|
<div v-show="showSearch" class="mb-[10px]">
|
||||||
<el-card>
|
<el-card>
|
||||||
<div class="h-full flex flex-align-center">
|
<div class="h-full flex flex-align-center">
|
||||||
<el-form label-width="80px" ref="queryFormRef" :model="queryParams" :inline="true">
|
<el-form ref="queryFormRef" :inline="true" :model="queryParams" label-width="80px">
|
||||||
<el-form-item label="房屋类型" prop="houseUse">
|
<el-form-item label="房屋类型" prop="houseUse">
|
||||||
<el-select v-model="queryParams.houseUse" placeholder="选择房屋类型" style="width: 240px">
|
<el-select v-model="queryParams.houseUse" placeholder="选择房屋类型" style="width: 240px">
|
||||||
<el-option v-for="item in houseUseTypeList" :key="item.id" :label="item.name" :value="item.id" />
|
<el-option v-for="item in houseUseTypeList" :key="item.id" :label="item.name" :value="item.id" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="发布人" prop="rentalName">
|
<el-form-item label="发布人" prop="rentalName">
|
||||||
<el-input maxlength="15" v-model="queryParams.rentalName" placeholder="请输入" clearable @keyup.enter="handleQuery" />
|
<el-input v-model="queryParams.rentalName" clearable maxlength="15" placeholder="请输入" @keyup.enter="handleQuery" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" @click="handleQuery">搜索</el-button>
|
<el-button type="primary" @click="handleQuery">搜索</el-button>
|
||||||
@@ -31,8 +31,8 @@
|
|||||||
:disable-delete="multiple"
|
:disable-delete="multiple"
|
||||||
:disable-edit="single"
|
:disable-edit="single"
|
||||||
:show-add="checkPermi(['houseRental:houseRental:add'])"
|
:show-add="checkPermi(['houseRental:houseRental:add'])"
|
||||||
:show-edit="checkPermi(['houseRental:houseRental:edit'])"
|
|
||||||
:show-delete="checkPermi(['houseRental:houseRental:remove'])"
|
:show-delete="checkPermi(['houseRental:houseRental:remove'])"
|
||||||
|
:show-edit="checkPermi(['houseRental:houseRental:edit'])"
|
||||||
@update:add="handleAdd"
|
@update:add="handleAdd"
|
||||||
@update:edit="handleUpdate()"
|
@update:edit="handleUpdate()"
|
||||||
@update:delete="handleDelete()"
|
@update:delete="handleDelete()"
|
||||||
@@ -40,63 +40,63 @@
|
|||||||
</el-row>
|
</el-row>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<el-table class="h-full" v-loading="loading" border :data="houseRentalList" @selection-change="handleSelectionChange">
|
<el-table v-loading="loading" :data="houseRentalList" border class="h-full" @selection-change="handleSelectionChange">
|
||||||
<el-table-column type="selection" width="55" align="center" />
|
<el-table-column align="center" type="selection" width="55" />
|
||||||
<el-table-column label="房屋信息" align="center" prop="name" />
|
<el-table-column align="center" label="房屋信息" prop="name" />
|
||||||
<el-table-column label="租赁状态" align="center" prop="rentalStatus">
|
<el-table-column align="center" label="租赁状态" prop="rentalStatus">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<DictTag :options="com_rental_status" :value="row.rentalStatus"></DictTag>
|
<DictTag :options="com_rental_status" :value="row.rentalStatus"></DictTag>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="发布人" align="center" prop="rentalName" />
|
<el-table-column align="center" label="发布人" prop="rentalName" />
|
||||||
<el-table-column label="联系方式" align="center" prop="phone" />
|
<el-table-column align="center" label="联系方式" prop="phone" />
|
||||||
<el-table-column label="发布时间" align="center" prop="pubTime" />
|
<el-table-column align="center" label="发布时间" prop="pubTime" />
|
||||||
<el-table-column label="房屋类型" align="center" prop="houseUse">
|
<el-table-column align="center" label="房屋类型" prop="houseUse">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<span>{{ handleHouseUse(row.houseUse) }}</span>
|
<span>{{ handleHouseUse(row.houseUse) }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="租赁方式" align="center" prop="rentalType">
|
<el-table-column align="center" label="租赁方式" prop="rentalType">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<DictTag :options="com_rental_method" :value="row.rentalType"></DictTag>
|
<DictTag :options="com_rental_method" :value="row.rentalType"></DictTag>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="状态" align="center" prop="status">
|
<el-table-column align="center" label="状态" prop="status">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<span>{{ row.status === '0' ? '下架' : '上架' }}</span>
|
<span>{{ row.status === '0' ? '下架' : '上架' }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width">
|
<el-table-column align="center" class-name="small-padding fixed-width" fixed="right" label="操作">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button link type="primary" v-if="scope.row.status === '0'" @click="sign(scope.row)">签约</el-button>
|
<el-button v-if="scope.row.status === '0'" link type="primary" @click="sign(scope.row)">签约</el-button>
|
||||||
<el-button link type="primary" v-if="scope.row.status === '0'" @click="putOnSale(scope.row)">上架</el-button>
|
<el-button v-if="scope.row.status === '0'" link type="primary" @click="putOnSale(scope.row)">上架</el-button>
|
||||||
<el-button link type="primary" v-else @click="putOnSale(scope.row)">下架</el-button>
|
<el-button v-else link type="primary" @click="putOnSale(scope.row)">下架</el-button>
|
||||||
<el-button link type="primary" @click="handleMain(scope.row)">详情</el-button>
|
<el-button link type="primary" @click="handleMain(scope.row)">详情</el-button>
|
||||||
<el-button link type="primary" @click="handleUpdate(scope.row)" v-has-permi="['houseRental:houseRental:query']">编辑</el-button>
|
<el-button v-has-permi="['houseRental:houseRental:query']" link type="primary" @click="handleUpdate(scope.row)">编辑</el-button>
|
||||||
<el-button link type="primary" @click="handleDelete(scope.row)" v-has-permi="['houseRental:houseRental:remove']">删除</el-button>
|
<el-button v-has-permi="['houseRental:houseRental:remove']" link type="primary" @click="handleDelete(scope.row)">删除</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</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" v-model:limit="queryParams.pageSize" v-model:page="queryParams.pageNum" :total="total" @pagination="getList" />
|
||||||
</el-card>
|
</el-card>
|
||||||
|
|
||||||
<el-dialog :title="dialog.title" v-model="dialog.visible" width="680px" append-to-body>
|
<el-dialog v-model="dialog.visible" :title="dialog.title" append-to-body width="680px">
|
||||||
<el-form ref="houseRentalFormRef" :model="form" :rules="rules" label-width="120px">
|
<el-form ref="houseRentalFormRef" :model="form" :rules="rules" label-width="120px">
|
||||||
<el-form-item label="区域" prop="villageId">
|
<el-form-item label="区域" prop="villageId">
|
||||||
<el-input disabled maxlength="20" v-model.trim="form.villageName" placeholder="请输入区域" />
|
<el-input v-model.trim="form.villageName" disabled maxlength="20" placeholder="请输入区域" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="承租方" prop="tenantName">
|
<el-form-item label="承租方" prop="tenantName">
|
||||||
<el-input maxlength="20" show-word-limit v-model.trim="form.tenantName" placeholder="请输入承租方" />
|
<el-input v-model.trim="form.tenantName" maxlength="20" placeholder="请输入承租方" show-word-limit />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="电话" prop="tenantPhone">
|
<el-form-item label="电话" prop="tenantPhone">
|
||||||
<el-input maxlength="11" v-model.trim="form.tenantPhone" placeholder="请输入电话" />
|
<el-input v-model.trim="form.tenantPhone" maxlength="11" placeholder="请输入电话" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="房号" prop="houseId">
|
<el-form-item label="房号" prop="houseId">
|
||||||
<el-input disabled maxlength="20" show-word-limit v-model.trim="form.houseName" placeholder="请输入房号" />
|
<el-input v-model.trim="form.houseName" disabled maxlength="20" placeholder="请输入房号" show-word-limit />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="面积" prop="houseArea">
|
<el-form-item label="面积" prop="houseArea">
|
||||||
<el-input disabled maxlength="20" show-word-limit v-model.trim="form.houseArea" placeholder="请输入面积" />
|
<el-input v-model.trim="form.houseArea" disabled maxlength="20" placeholder="请输入面积" show-word-limit />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="收费模式" prop="chargeMode">
|
<el-form-item label="收费模式" prop="chargeMode">
|
||||||
<el-select v-model.trim="form.chargeMode" placeholder="请选择收费模式">
|
<el-select v-model.trim="form.chargeMode" placeholder="请选择收费模式">
|
||||||
@@ -109,40 +109,40 @@
|
|||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="合同编号" prop="contractNo">
|
<el-form-item label="合同编号" prop="contractNo">
|
||||||
<el-input maxlength="20" show-word-limit v-model.trim="form.contractNo" placeholder="请输入合同编号" />
|
<el-input v-model.trim="form.contractNo" maxlength="20" placeholder="请输入合同编号" show-word-limit />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="合同状态" prop="contractStatus">
|
<el-form-item label="合同状态" prop="contractStatus">
|
||||||
<el-input show-word-limit maxlength="40" v-model.trim="form.contractStatus" placeholder="请输入合同状态" />
|
<el-input v-model.trim="form.contractStatus" maxlength="40" placeholder="请输入合同状态" show-word-limit />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="租赁起始日" prop="leaseStartDate">
|
<el-form-item label="租赁起始日" prop="leaseStartDate">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
style="width: 100%"
|
|
||||||
v-model.trim="form.leaseStartDate"
|
v-model.trim="form.leaseStartDate"
|
||||||
value-format="YYYY-MM-DD"
|
|
||||||
format="YYYY-MM-DD"
|
format="YYYY-MM-DD"
|
||||||
type="date"
|
|
||||||
placeholder="请选择租赁起始日"
|
placeholder="请选择租赁起始日"
|
||||||
|
style="width: 100%"
|
||||||
|
type="date"
|
||||||
|
value-format="YYYY-MM-DD"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="租赁终止日" prop="leaseEndDate">
|
<el-form-item label="租赁终止日" prop="leaseEndDate">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
style="width: 100%"
|
|
||||||
v-model.trim="form.leaseEndDate"
|
v-model.trim="form.leaseEndDate"
|
||||||
value-format="YYYY-MM-DD"
|
|
||||||
format="YYYY-MM-DD"
|
format="YYYY-MM-DD"
|
||||||
type="date"
|
|
||||||
placeholder="请选择租赁终止日"
|
placeholder="请选择租赁终止日"
|
||||||
|
style="width: 100%"
|
||||||
|
type="date"
|
||||||
|
value-format="YYYY-MM-DD"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="租金" prop="rentAmount">
|
<el-form-item label="租金" prop="rentAmount">
|
||||||
<el-input maxlength="8" v-model.trim.number="form.rentAmount" placeholder="请输入租金">
|
<el-input v-model.trim.number="form.rentAmount" maxlength="8" placeholder="请输入租金">
|
||||||
<template #append>
|
<template #append>
|
||||||
<span>元/月</span>
|
<span>元/月</span>
|
||||||
</template>
|
</template>
|
||||||
</el-input>
|
</el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="押金" prop="depositAmount">
|
<el-form-item label="押金" prop="depositAmount">
|
||||||
<el-input maxlength="8" v-model.trim.number="form.depositAmount" placeholder="请输入押金">
|
<el-input v-model.trim.number="form.depositAmount" maxlength="8" placeholder="请输入押金">
|
||||||
<template #append>
|
<template #append>
|
||||||
<span>元</span>
|
<span>元</span>
|
||||||
</template>
|
</template>
|
||||||
@@ -150,21 +150,21 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="合同附件">
|
<el-form-item label="合同附件">
|
||||||
<el-upload
|
<el-upload
|
||||||
accept=".png,.jpg,.jpeg, .pdf"
|
|
||||||
class="upload-demo"
|
|
||||||
ref="uploadRef"
|
ref="uploadRef"
|
||||||
:show-file-list="true"
|
|
||||||
v-model:file-list="showImgList"
|
v-model:file-list="showImgList"
|
||||||
name="files"
|
:action="uploadApi"
|
||||||
|
:auto-upload="false"
|
||||||
:limit="MAX_UPLOAD_FILES"
|
:limit="MAX_UPLOAD_FILES"
|
||||||
:onChange="handleChange"
|
|
||||||
:onExceed="handleExceed"
|
|
||||||
:multiple="true"
|
:multiple="true"
|
||||||
:on-preview="handlePreview"
|
:on-preview="handlePreview"
|
||||||
:auto-upload="false"
|
:onChange="handleChange"
|
||||||
|
:onExceed="handleExceed"
|
||||||
|
:show-file-list="true"
|
||||||
|
accept=".png,.jpg,.jpeg, .pdf"
|
||||||
|
class="upload-demo"
|
||||||
drag
|
drag
|
||||||
|
name="files"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
:action="uploadApi"
|
|
||||||
>
|
>
|
||||||
<el-icon class="el-icon--upload"><upload-filled /></el-icon>
|
<el-icon class="el-icon--upload"><upload-filled /></el-icon>
|
||||||
<div class="el-upload__text"><em>点击</em>或者将文件<em>拖拽</em>到这里上传</div>
|
<div class="el-upload__text"><em>点击</em>或者将文件<em>拖拽</em>到这里上传</div>
|
||||||
@@ -184,7 +184,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup name="HouseRental" lang="ts">
|
<script lang="ts" name="HouseRental" setup>
|
||||||
import pageHeader from '@/components/Pageheader/index.vue';
|
import pageHeader from '@/components/Pageheader/index.vue';
|
||||||
import { changeHouseRedientStatus, delHouseRental, HouseRedientSign, HouseRedientSignUpload, listHouseRental } from '@/api/system/houseRental';
|
import { changeHouseRedientStatus, delHouseRental, HouseRedientSign, HouseRedientSignUpload, listHouseRental } from '@/api/system/houseRental';
|
||||||
import { HouseRentalQuery, HouseRentalSigningVO, HouseRentalVO } from '@/api/system/houseRental/type';
|
import { HouseRentalQuery, HouseRentalSigningVO, HouseRentalVO } from '@/api/system/houseRental/type';
|
||||||
@@ -407,13 +407,15 @@ function handleHouseUse(houseUser: string) {
|
|||||||
function sign(row: HouseRentalVO) {
|
function sign(row: HouseRentalVO) {
|
||||||
clearForm();
|
clearForm();
|
||||||
form.value = {
|
form.value = {
|
||||||
|
...initFormData,
|
||||||
...row.signingList?.[0]
|
...row.signingList?.[0]
|
||||||
};
|
};
|
||||||
const info = JSON.parse(villageInfo || '{}');
|
const info = JSON.parse(villageInfo || '{}');
|
||||||
form.value.villageName = info.villageName;
|
form.value.villageName = info.villageName;
|
||||||
form.value.houseName = row.name;
|
form.value.houseName = row.name;
|
||||||
form.value.houseArea = row.houseArea;
|
form.value.houseArea = row.houseArea;
|
||||||
form.value.tenantPhone = row.signingList?.[0].tenantPhone || '';
|
|
||||||
|
form.value.tenantPhone = row.signingList.length > 0 ? row.signingList[0].tenantPhone : '';
|
||||||
form.value.houseId = row.houseId;
|
form.value.houseId = row.houseId;
|
||||||
form.value.villageId = info.villageId;
|
form.value.villageId = info.villageId;
|
||||||
form.value.rentalId = row.id;
|
form.value.rentalId = row.id;
|
||||||
@@ -422,9 +424,10 @@ function sign(row: HouseRentalVO) {
|
|||||||
const list = row.signingList[0].contractUrl ? row.signingList[0].contractUrl.split(',') : [];
|
const list = row.signingList[0].contractUrl ? row.signingList[0].contractUrl.split(',') : [];
|
||||||
if (list.length > 0) {
|
if (list.length > 0) {
|
||||||
showImgList.value = list.map((item, index) => {
|
showImgList.value = list.map((item, index) => {
|
||||||
|
console.log(names[index]);
|
||||||
return {
|
return {
|
||||||
uid: index,
|
uid: index,
|
||||||
name: names[index] || item ? item.split('.com/')[1].split('/')[3] : '',
|
name: names[index] || (item ? item.split('.com/')[1].split('/')[3] : ''),
|
||||||
url: item,
|
url: item,
|
||||||
isLink: true
|
isLink: true
|
||||||
};
|
};
|
||||||
@@ -509,7 +512,7 @@ onMounted(() => {
|
|||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style lang="scss" scoped>
|
||||||
.el-table {
|
.el-table {
|
||||||
height: calc(100% - 100px);
|
height: calc(100% - 100px);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,12 +4,12 @@
|
|||||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||||
<div v-show="showSearch" class="mb-[10px]">
|
<div v-show="showSearch" class="mb-[10px]">
|
||||||
<el-card shadow="hover">
|
<el-card shadow="hover">
|
||||||
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
|
<el-form ref="queryFormRef" :inline="true" :model="queryParams">
|
||||||
<el-form-item label="用途名称" prop="name">
|
<el-form-item label="用途名称" prop="name">
|
||||||
<el-input maxlength="20" v-model="queryParams.name" placeholder="请输入用途名称" clearable @keyup.enter="handleQuery" />
|
<el-input v-model="queryParams.name" clearable maxlength="20" placeholder="请输入用途名称" @keyup.enter="handleQuery" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
|
<el-button icon="Search" type="primary" @click="handleQuery">搜索</el-button>
|
||||||
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
|
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
@@ -17,32 +17,37 @@
|
|||||||
</div>
|
</div>
|
||||||
</transition>
|
</transition>
|
||||||
|
|
||||||
<el-card shadow="never" class="flex-1">
|
<el-card class="flex-1" shadow="never">
|
||||||
<template #header>
|
<template #header>
|
||||||
<el-row :gutter="10" class="mb8">
|
<el-row :gutter="10" class="mb8">
|
||||||
<right-toolbar :show-delete="false" :show-edit="false" :show-add="checkPermi(['houseUseType:houseUseType:add'])" @update:add="handleAdd">
|
<right-toolbar
|
||||||
|
:show-add="checkPermi(['houseUseType:houseUseType:add'])"
|
||||||
|
:show-delete="checkPermi(['houseUseType:houseUseType:remove'])"
|
||||||
|
:show-edit="checkPermi(['houseUseType:houseUseType:edit'])"
|
||||||
|
@update:add="handleAdd"
|
||||||
|
>
|
||||||
</right-toolbar>
|
</right-toolbar>
|
||||||
</el-row>
|
</el-row>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<el-table v-loading="loading" border :data="houseUseTypeList" @selection-change="handleSelectionChange">
|
<el-table v-loading="loading" :data="houseUseTypeList" border @selection-change="handleSelectionChange">
|
||||||
<el-table-column type="selection" width="55" align="center" />
|
<el-table-column align="center" type="selection" width="55" />
|
||||||
<el-table-column label="用途名称" align="center" prop="name" />
|
<el-table-column align="center" label="用途名称" prop="name" />
|
||||||
<el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width">
|
<el-table-column align="center" class-name="small-padding fixed-width" fixed="right" label="操作">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button link type="primary" @click="handleUpdate(scope.row)" v-has-permi="['houseUseType:houseUseType:edit']">修改</el-button>
|
<el-button v-has-permi="['houseUseType:houseUseType:edit']" link type="primary" @click="handleUpdate(scope.row)">修改</el-button>
|
||||||
<el-button link type="primary" @click="handleDelete(scope.row)" v-has-permi="['houseUseType:houseUseType:remove']">删除</el-button>
|
<el-button v-has-permi="['houseUseType:houseUseType:remove']" link type="primary" @click="handleDelete(scope.row)">删除</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</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" v-model:limit="queryParams.pageSize" v-model:page="queryParams.pageNum" :total="total" @pagination="getList" />
|
||||||
</el-card>
|
</el-card>
|
||||||
<!-- 添加或修改房屋类型对话框 -->
|
<!-- 添加或修改房屋类型对话框 -->
|
||||||
<el-dialog :title="dialog.title" v-model="dialog.visible" width="500px" append-to-body>
|
<el-dialog v-model="dialog.visible" :title="dialog.title" append-to-body width="500px">
|
||||||
<el-form ref="houseUseTypeFormRef" :model="form" :rules="rules" label-width="80px">
|
<el-form ref="houseUseTypeFormRef" :model="form" :rules="rules" label-width="80px">
|
||||||
<el-form-item label="用途名称" prop="name">
|
<el-form-item label="用途名称" prop="name">
|
||||||
<el-input maxlength="20" show-word-limit v-model="form.name" placeholder="请输入用途名称" />
|
<el-input v-model="form.name" maxlength="20" placeholder="请输入用途名称" show-word-limit />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
@@ -55,7 +60,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script lang="ts" setup>
|
||||||
import { listHouseUseType, getHouseUseType, delHouseUseType, addHouseUseType, updateHouseUseType } from '@/api/system/houseUse';
|
import { listHouseUseType, getHouseUseType, delHouseUseType, addHouseUseType, updateHouseUseType } from '@/api/system/houseUse';
|
||||||
import { HouseUseTypeVO, HouseUseTypeQuery, HouseUseTypeForm } from '@/api/system/houseUse/type';
|
import { HouseUseTypeVO, HouseUseTypeQuery, HouseUseTypeForm } from '@/api/system/houseUse/type';
|
||||||
import { checkPermi } from '@/utils/permission';
|
import { checkPermi } from '@/utils/permission';
|
||||||
|
|||||||
@@ -4,9 +4,9 @@
|
|||||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||||
<div v-show="showSearch" class="mb-[10px]">
|
<div v-show="showSearch" class="mb-[10px]">
|
||||||
<el-card shadow="hover">
|
<el-card shadow="hover">
|
||||||
<el-form ref="queryFormRef" :model="queryParams" @submit.prevent="handleQuery" :inline="true">
|
<el-form ref="queryFormRef" :inline="true" :model="queryParams" @submit.prevent="handleQuery">
|
||||||
<el-form-item label="项目名称" prop="itemName">
|
<el-form-item label="项目名称" prop="itemName">
|
||||||
<el-input maxlength="20" v-model="queryParams.itemName" placeholder="请输入项目名称" clearable @keyup.enter="handleQuery" />
|
<el-input v-model="queryParams.itemName" clearable maxlength="20" placeholder="请输入项目名称" @keyup.enter="handleQuery" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" @click="handleQuery">搜索</el-button>
|
<el-button type="primary" @click="handleQuery">搜索</el-button>
|
||||||
@@ -24,8 +24,8 @@
|
|||||||
:disable-delete="multiple"
|
:disable-delete="multiple"
|
||||||
:disable-edit="single"
|
:disable-edit="single"
|
||||||
:show-add="checkPermi(['inspection:item:add'])"
|
:show-add="checkPermi(['inspection:item:add'])"
|
||||||
:show-edit="checkPermi(['inspection:item:edit'])"
|
|
||||||
:show-delete="checkPermi(['inspection:item:remove'])"
|
:show-delete="checkPermi(['inspection:item:remove'])"
|
||||||
|
:show-edit="checkPermi(['inspection:item:edit'])"
|
||||||
@update:add="handleAdd"
|
@update:add="handleAdd"
|
||||||
@update:edit="handleUpdate()"
|
@update:edit="handleUpdate()"
|
||||||
@update:delete="handleDelete()"
|
@update:delete="handleDelete()"
|
||||||
@@ -33,34 +33,36 @@
|
|||||||
</el-row>
|
</el-row>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<el-table v-loading="loading" border :data="itemList" @selection-change="handleSelectionChange">
|
<el-table v-loading="loading" :data="itemList" border @selection-change="handleSelectionChange">
|
||||||
<el-table-column type="selection" width="55" align="center" />
|
<el-table-column align="center" type="selection" width="55" />
|
||||||
<el-table-column label="项目名称" width="200" align="center" prop="itemName" />
|
<el-table-column align="center" label="项目名称" prop="itemName" width="200" />
|
||||||
<el-table-column label="巡检标准" align="center" prop="inspectionStandard" />
|
<el-table-column align="center" label="巡检标准" prop="inspectionStandard" />
|
||||||
<el-table-column label="状态" width="200" align="center" prop="status">
|
<el-table-column align="center" label="状态" prop="status" width="200">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-switch
|
<el-switch
|
||||||
@change="(val: string) => handleChange(val, scope.row.id)"
|
|
||||||
v-model="scope.row.status"
|
v-model="scope.row.status"
|
||||||
active-value="0"
|
active-value="0"
|
||||||
inactive-value="1"
|
inactive-value="1"
|
||||||
|
@change="(val: string) => handleChange(val, scope.row.id)"
|
||||||
></el-switch>
|
></el-switch>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="操作" width="300" align="center" fixed="right" class-name="small-padding fixed-width">
|
<el-table-column align="center" label="添加人" prop="createByName" width="120" />
|
||||||
|
<el-table-column align="center" label="添加时间" prop="createTime" width="120" />
|
||||||
|
<el-table-column align="center" class-name="small-padding fixed-width" fixed="right" label="操作" width="300">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button link type="primary" @click="handleUpdate(scope.row)" v-has-permi="['system:item:edit']">编辑</el-button>
|
<el-button v-has-permi="['inspection:item:edit']" link type="primary" @click="handleUpdate(scope.row)">编辑</el-button>
|
||||||
<el-button link type="primary" @click="handleDelete(scope.row)" v-has-permi="['system:item:remove']">删除</el-button>
|
<el-button v-has-permi="['inspection:item:remove']" link type="primary" @click="handleDelete(scope.row)">删除</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</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" v-model:limit="queryParams.pageSize" v-model:page="queryParams.pageNum" :total="total" @pagination="getList" />
|
||||||
</el-card>
|
</el-card>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup name="Item" lang="ts">
|
<script lang="ts" name="Item" setup>
|
||||||
import { listItem, delItem, addItem, updateItem, updateItemStatus } from '@/api/system/InspectionItem/index';
|
import { listItem, delItem, addItem, updateItem, updateItemStatus } from '@/api/system/InspectionItem/index';
|
||||||
import { ItemVO, ItemQuery, ItemForm } from '@/api/system/InspectionItem/type';
|
import { ItemVO, ItemQuery, ItemForm } from '@/api/system/InspectionItem/type';
|
||||||
import { checkPermi } from '@/utils/permission';
|
import { checkPermi } from '@/utils/permission';
|
||||||
|
|||||||
@@ -13,12 +13,12 @@
|
|||||||
<div>选择日期</div>
|
<div>选择日期</div>
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="statDate"
|
v-model="statDate"
|
||||||
value-format="YYYY/MM/DD"
|
|
||||||
format="YYYY/MM/DD"
|
|
||||||
@update:model-value="handleStateDate"
|
|
||||||
type="date"
|
|
||||||
placeholder="选择日期"
|
|
||||||
:disabled-date="disabledDate"
|
:disabled-date="disabledDate"
|
||||||
|
format="YYYY/MM/DD"
|
||||||
|
placeholder="选择日期"
|
||||||
|
type="date"
|
||||||
|
value-format="YYYY/MM/DD"
|
||||||
|
@update:model-value="handleStateDate"
|
||||||
/>
|
/>
|
||||||
<i @click="handleQueryDay(0)">今日</i>
|
<i @click="handleQueryDay(0)">今日</i>
|
||||||
<i @click="handleQueryDay(1)">昨日</i>
|
<i @click="handleQueryDay(1)">昨日</i>
|
||||||
@@ -27,7 +27,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="overviewBox">
|
<div class="overviewBox">
|
||||||
<div class="overviewitem" v-for="(item, index) in list" :key="index">
|
<div v-for="(item, index) in list" :key="index" class="overviewitem">
|
||||||
<div class="overviewitem_name">{{ item.name }}</div>
|
<div class="overviewitem_name">{{ item.name }}</div>
|
||||||
<div class="overviewitem_value">{{ item.value }}</div>
|
<div class="overviewitem_value">{{ item.value }}</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -46,11 +46,11 @@
|
|||||||
<div class="echartsbox flex h-full flex-col">
|
<div class="echartsbox flex h-full flex-col">
|
||||||
<div class="echartsactions">
|
<div class="echartsactions">
|
||||||
<div
|
<div
|
||||||
@click="handleEchartsData(item)"
|
|
||||||
:class="{ active: activeEchartsindex === item.key }"
|
|
||||||
class="echartsactions_item"
|
|
||||||
v-for="(item, index) in ecartslist"
|
v-for="(item, index) in ecartslist"
|
||||||
:key="index"
|
:key="index"
|
||||||
|
:class="{ active: activeEchartsindex === item.key }"
|
||||||
|
class="echartsactions_item"
|
||||||
|
@click="handleEchartsData(item)"
|
||||||
>
|
>
|
||||||
{{ item.name }}
|
{{ item.name }}
|
||||||
</div>
|
</div>
|
||||||
@@ -62,21 +62,21 @@
|
|||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="1"></el-col>
|
<el-col :span="1"></el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-table v-loading="loading" border :data="itemList">
|
<el-table v-loading="loading" :data="itemList" border>
|
||||||
<el-table-column fixed="left" label="日期" width="100" align="center" prop="statDate" />
|
<el-table-column align="center" fixed="left" label="日期" prop="statDate" width="100" />
|
||||||
<el-table-column label="计划巡检任务" width="110" align="center" prop="totalTasks" />
|
<el-table-column align="center" label="计划巡检任务" prop="totalTasks" width="110" />
|
||||||
<el-table-column label="按时完成" align="center" prop="completedTasks" />
|
<el-table-column align="center" label="按时完成" prop="completedTasks" />
|
||||||
<el-table-column label="超时完成" align="center" prop="outCompletedTasks" />
|
<el-table-column align="center" label="超时完成" prop="outCompletedTasks" />
|
||||||
<el-table-column label="超时未完成" width="110" align="center" prop="outUncompletedTasks" />
|
<el-table-column align="center" label="超时未完成" prop="outUncompletedTasks" width="110" />
|
||||||
<el-table-column label="进行中" align="center" prop="activeTask" />
|
<el-table-column align="center" label="进行中" prop="activeTask" />
|
||||||
<el-table-column label="未开始" align="center" prop="pendingTask" />
|
<el-table-column align="center" label="未开始" prop="pendingTask" />
|
||||||
</el-table>
|
</el-table>
|
||||||
<pagination
|
<pagination
|
||||||
v-show="total > 0"
|
v-show="total > 0"
|
||||||
:total="total"
|
|
||||||
:layout="layout"
|
|
||||||
v-model:page="queryParams.pageNum"
|
|
||||||
v-model:limit="queryParams.pageSize"
|
v-model:limit="queryParams.pageSize"
|
||||||
|
v-model:page="queryParams.pageNum"
|
||||||
|
:layout="layout"
|
||||||
|
:total="total"
|
||||||
@pagination="getList"
|
@pagination="getList"
|
||||||
/>
|
/>
|
||||||
</el-col>
|
</el-col>
|
||||||
@@ -85,7 +85,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup name="Item" lang="ts">
|
<script lang="ts" name="Item" setup>
|
||||||
import EchartsCompontent from '@/components/Echarts/index.vue';
|
import EchartsCompontent from '@/components/Echarts/index.vue';
|
||||||
import { listItem, type Request } from '@/api/system/Inspection';
|
import { listItem, type Request } from '@/api/system/Inspection';
|
||||||
import { diffDays, formatDate, getLastNDays, getNaturalDayDiff } from '@/utils/time';
|
import { diffDays, formatDate, getLastNDays, getNaturalDayDiff } from '@/utils/time';
|
||||||
@@ -294,27 +294,18 @@ const getList = async () => {
|
|||||||
list.value.forEach((item) => {
|
list.value.forEach((item) => {
|
||||||
item.value = 0;
|
item.value = 0;
|
||||||
});
|
});
|
||||||
list.value[0].value = itemList.value[0].totalPlans ?? 0;
|
|
||||||
list.value[1].value = itemList.value[0].totalTasks ?? 0;
|
|
||||||
list.value[4].value = itemList.value[0].outUncompletedTasks ?? 0;
|
|
||||||
list.value[2].value = itemList.value[0].outCompletedTasks + itemList.value[0].completedTasks || 0;
|
|
||||||
//
|
|
||||||
// if (!Number.isNaN(+list.value[2].value) && !Number.isNaN(+list.value[1].value)) {
|
|
||||||
// const num = Number(list.value[2].value) / Number(list.value[1].value);
|
|
||||||
// list.value[3].value = Math.min((Number.isNaN(num) ? 0 : num) * 100, 100).toFixed(2) + '%';
|
|
||||||
// }
|
|
||||||
list.value[3].value = itemList.value[0].completionRateDisplay || '0%';
|
list.value[3].value = itemList.value[0].completionRateDisplay || '0%';
|
||||||
// itemList.value.forEach((item) => {
|
itemList.value.forEach((item) => {
|
||||||
// list.value[0].value += item.totalPlans ?? 0;
|
list.value[0].value += item.totalPlans ?? 0;
|
||||||
// list.value[1].value += item.totalTasks ?? 0;
|
list.value[1].value += item.totalTasks ?? 0;
|
||||||
// list.value[4].value += item.outUncompletedTasks ?? 0;
|
list.value[4].value += item.outUncompletedTasks ?? 0;
|
||||||
// const num = item.outCompletedTasks + item.completedTasks || 0;
|
const num = item.outCompletedTasks + item.completedTasks || 0;
|
||||||
// list.value[2].value += num;
|
list.value[2].value += num;
|
||||||
// });
|
});
|
||||||
// if (!Number.isNaN(+list.value[2].value) && !Number.isNaN(+list.value[1].value)) {
|
if (!Number.isNaN(+list.value[2].value) && !Number.isNaN(+list.value[1].value)) {
|
||||||
// const num = Number(list.value[2].value) / Number(list.value[1].value);
|
const num = Number(list.value[2].value) / Number(list.value[1].value);
|
||||||
// list.value[3].value = Math.min((Number.isNaN(num) ? 0 : num) * 100, 100).toFixed(2) + '%';
|
list.value[3].value = Math.min((Number.isNaN(num) ? 0 : num) * 100, 100).toFixed(2) + '%';
|
||||||
// }
|
}
|
||||||
|
|
||||||
handleEchartsData(ecartslist.value.find((item) => item.key === activeEchartsindex.value));
|
handleEchartsData(ecartslist.value.find((item) => item.key === activeEchartsindex.value));
|
||||||
total.value = res.total;
|
total.value = res.total;
|
||||||
|
|||||||
@@ -6,21 +6,21 @@
|
|||||||
<div>基本信息</div>
|
<div>基本信息</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="bodyBox">
|
<div class="bodyBox">
|
||||||
<el-form ref="formRef" :model="form" :rules="rules" label-width="120px" label-position="right">
|
<el-form ref="formRef" :model="form" :rules="rules" label-position="right" label-width="120px">
|
||||||
<el-form-item label="巡检计划名称" prop="planName">
|
<el-form-item label="巡检计划名称" prop="planName">
|
||||||
<el-input maxlength="20" v-model.trim="form.planName" placeholder="请输入"></el-input>
|
<el-input v-model.trim="form.planName" maxlength="20" placeholder="请输入"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item label="任务时间" prop="executeDay">
|
<el-form-item label="任务时间" prop="executeDay">
|
||||||
<div class="flex flex-wrap">
|
<div class="flex flex-wrap">
|
||||||
<div
|
<div
|
||||||
class="week-items"
|
v-for="(item, index) in 7"
|
||||||
@click="checkoutWeekFun(item)"
|
:key="index"
|
||||||
:class="{
|
:class="{
|
||||||
active: checkoutWeek.includes(item)
|
active: checkoutWeek.includes(item)
|
||||||
}"
|
}"
|
||||||
v-for="(item, index) in 7"
|
class="week-items"
|
||||||
:key="index"
|
@click="checkoutWeekFun(item)"
|
||||||
>
|
>
|
||||||
<div class="iconBox">
|
<div class="iconBox">
|
||||||
<el-icon v-show="checkoutWeek.includes(item)"><Check /></el-icon>
|
<el-icon v-show="checkoutWeek.includes(item)"><Check /></el-icon>
|
||||||
@@ -33,27 +33,27 @@
|
|||||||
<div v-for="(_, index) in taskTime" :key="index" style="display: flex; align-items: center; margin-top: 10px">
|
<div v-for="(_, index) in taskTime" :key="index" style="display: flex; align-items: center; margin-top: 10px">
|
||||||
<el-time-picker
|
<el-time-picker
|
||||||
v-model="taskTime[index]"
|
v-model="taskTime[index]"
|
||||||
|
end-placeholder="结束时间"
|
||||||
|
format="HH:mm"
|
||||||
|
is-range
|
||||||
|
range-separator="到"
|
||||||
|
start-placeholder="开始时间"
|
||||||
|
style="width: 100%"
|
||||||
|
value-format="HH:mm"
|
||||||
@update:model-value="
|
@update:model-value="
|
||||||
(val: string[]) => {
|
(val: string[]) => {
|
||||||
const time = val.filter((t) => t[0] && t[1]);
|
const time = val.filter((t) => t[0] && t[1]);
|
||||||
form.taskTime = `${time[0]}-${time[1]}`;
|
form.taskTime = `${time[0]}-${time[1]}`;
|
||||||
}
|
}
|
||||||
"
|
"
|
||||||
is-range
|
|
||||||
range-separator="到"
|
|
||||||
start-placeholder="开始时间"
|
|
||||||
format="HH:mm"
|
|
||||||
value-format="HH:mm"
|
|
||||||
end-placeholder="结束时间"
|
|
||||||
style="width: 100%"
|
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="计划路线" prop="routeIds">
|
<el-form-item label="计划路线" prop="routeIds">
|
||||||
<el-select @change="handleChangeMap" v-model="form.routeIds" placeholder="请选择" style="width: 100%">
|
<el-select v-model="form.routeIds" placeholder="请选择" style="width: 100%" @change="handleChangeMap">
|
||||||
<el-option v-for="item in playlist" :key="item.value" :label="item.routeName" :value="item.id" />
|
<el-option v-for="item in playlist" :key="item.value" :disabled="item.routeStatus === '1'" :label="item.routeName" :value="item.id" />
|
||||||
</el-select>
|
</el-select>
|
||||||
<MapWrapper :disabled="true" ref="MapWrapperRef"></MapWrapper>
|
<MapWrapper ref="MapWrapperRef" :disabled="true"></MapWrapper>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" @click="submit">提交</el-button>
|
<el-button type="primary" @click="submit">提交</el-button>
|
||||||
@@ -65,7 +65,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script lang="ts" setup>
|
||||||
import { listRoute } from '@/api/system/InspectionRoute';
|
import { listRoute } from '@/api/system/InspectionRoute';
|
||||||
import PageHeader from '@/components/Pageheader/index.vue';
|
import PageHeader from '@/components/Pageheader/index.vue';
|
||||||
import { numToWeek } from '@/utils/time';
|
import { numToWeek } from '@/utils/time';
|
||||||
@@ -213,7 +213,7 @@ function submit() {
|
|||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style lang="scss" scoped>
|
||||||
.EditBody {
|
.EditBody {
|
||||||
margin-top: 20px;
|
margin-top: 20px;
|
||||||
padding: 30px;
|
padding: 30px;
|
||||||
|
|||||||
@@ -4,9 +4,9 @@
|
|||||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||||
<div v-show="showSearch" class="mb-[10px]">
|
<div v-show="showSearch" class="mb-[10px]">
|
||||||
<el-card shadow="hover">
|
<el-card shadow="hover">
|
||||||
<el-form ref="queryFormRef" label-width="100px" :model="queryParams" @submit.prevent="handleQuery" :inline="true">
|
<el-form ref="queryFormRef" :inline="true" :model="queryParams" label-width="100px" @submit.prevent="handleQuery">
|
||||||
<el-form-item label="巡检计划名称" prop="planName">
|
<el-form-item label="巡检计划名称" prop="planName">
|
||||||
<el-input maxlength="20" v-model="queryParams.planName" placeholder="请输入巡检计划名称" clearable @keyup.enter="handleQuery" />
|
<el-input v-model="queryParams.planName" clearable maxlength="20" placeholder="请输入巡检计划名称" @keyup.enter="handleQuery" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" @click="handleQuery">搜索</el-button>
|
<el-button type="primary" @click="handleQuery">搜索</el-button>
|
||||||
@@ -24,8 +24,8 @@
|
|||||||
:disable-delete="multiple"
|
:disable-delete="multiple"
|
||||||
:disable-edit="single"
|
:disable-edit="single"
|
||||||
:show-add="checkPermi(['inspection:plan:add'])"
|
:show-add="checkPermi(['inspection:plan:add'])"
|
||||||
:show-edit="checkPermi(['inspection:plan:edit'])"
|
|
||||||
:show-delete="checkPermi(['inspection:plan:remove'])"
|
:show-delete="checkPermi(['inspection:plan:remove'])"
|
||||||
|
:show-edit="checkPermi(['inspection:plan:edit'])"
|
||||||
@update:add="handleAdd"
|
@update:add="handleAdd"
|
||||||
@update:edit="handleUpdate()"
|
@update:edit="handleUpdate()"
|
||||||
@update:delete="handleDelete()"
|
@update:delete="handleDelete()"
|
||||||
@@ -33,42 +33,42 @@
|
|||||||
</el-row>
|
</el-row>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<el-table v-loading="loading" border :data="planList" @selection-change="handleSelectionChange">
|
<el-table v-loading="loading" :data="planList" border @selection-change="handleSelectionChange">
|
||||||
<el-table-column type="selection" width="55" align="center" />
|
<el-table-column align="center" type="selection" width="55" />
|
||||||
<el-table-column label="巡检计划名称" align="center" prop="planName" />
|
<el-table-column align="center" label="巡检计划名称" prop="planName" />
|
||||||
|
<el-table-column align="center" label="巡检路线名称" prop="routeNames" />
|
||||||
<!-- <el-table-column label="执行周期" align="center" prop="executeCycle" /> -->
|
<!-- <el-table-column label="执行周期" align="center" prop="executeCycle" /> -->
|
||||||
<el-table-column label="执行星期" align="center">
|
<el-table-column align="center" label="执行星期">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span v-for="(item, index) in scope.row.executeDayNames" :key="index" class="pl-5px">{{ numToWeek(item) }}</span>
|
<span v-for="(item, index) in scope.row.executeDayNames" :key="index" class="pl-5px">{{ numToWeek(item) }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="任务时间" align="center" prop="taskTime" />
|
<el-table-column align="center" label="任务时间" prop="taskTime" />
|
||||||
<el-table-column label="计划路线" align="center" prop="routeNames" />
|
<el-table-column align="center" label="状态" prop="status" width="150">
|
||||||
<el-table-column label="状态" width="150" align="center" prop="status">
|
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-switch
|
<el-switch
|
||||||
@change="(val: string) => handleChangeStatus(scope.row.id, val)"
|
|
||||||
v-model="scope.row.status"
|
v-model="scope.row.status"
|
||||||
active-value="0"
|
active-value="0"
|
||||||
inactive-value="1"
|
inactive-value="1"
|
||||||
|
@change="(val: string) => handleChangeStatus(scope.row.id, val)"
|
||||||
></el-switch>
|
></el-switch>
|
||||||
<!-- 1关闭 0开启 -->
|
<!-- 1关闭 0开启 -->
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="操作" width="110" align="center" fixed="right" class-name="small-padding fixed-width">
|
<el-table-column align="center" class-name="small-padding fixed-width" fixed="right" label="操作" width="110">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button link type="primary" @click="handleUpdate(scope.row)" v-has-permi="['inspection:plan:edit']">编辑</el-button>
|
<el-button v-has-permi="['inspection:plan:edit']" link type="primary" @click="handleUpdate(scope.row)">编辑</el-button>
|
||||||
<el-button link type="primary" @click="handleDelete(scope.row)" v-has-permi="['inspection:plan:remove']">删除</el-button>
|
<el-button v-has-permi="['inspection:plan:remove']" link type="primary" @click="handleDelete(scope.row)">删除</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</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" v-model:limit="queryParams.pageSize" v-model:page="queryParams.pageNum" :total="total" @pagination="getList" />
|
||||||
</el-card>
|
</el-card>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup name="Plan" lang="ts">
|
<script lang="ts" name="Plan" setup>
|
||||||
import { listPlan, delPlan, changePlanStatus } from '@/api/system/InspectionPlan';
|
import { listPlan, delPlan, changePlanStatus } from '@/api/system/InspectionPlan';
|
||||||
import { PlanVO, PlanQuery, PlanForm } from '@/api/system/InspectionPlan/type';
|
import { PlanVO, PlanQuery, PlanForm } from '@/api/system/InspectionPlan/type';
|
||||||
import { checkPermi } from '@/utils/permission';
|
import { checkPermi } from '@/utils/permission';
|
||||||
|
|||||||
@@ -4,21 +4,21 @@
|
|||||||
<div class="AddBuildingBody">
|
<div class="AddBuildingBody">
|
||||||
<div class="title">基本信息</div>
|
<div class="title">基本信息</div>
|
||||||
<div class="addBuildingFormBody">
|
<div class="addBuildingFormBody">
|
||||||
<el-form class="formBody" label-position="right" ref="formRef" :model="form" :rules="rules" label-width="130px">
|
<el-form ref="formRef" :model="form" :rules="rules" class="formBody" label-position="right" label-width="130px">
|
||||||
<el-form-item label="巡检点名称" prop="pointName">
|
<el-form-item label="巡检点名称" prop="pointName">
|
||||||
<el-input maxlength="20" v-model.trim="form.pointName" placeholder="请输入巡检点名称" />
|
<el-input v-model.trim="form.pointName" maxlength="20" placeholder="请输入巡检点名称" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="巡检项目" prop="itemId">
|
<el-form-item label="巡检项目" prop="itemId">
|
||||||
<div class="itemBox">
|
<div class="itemBox">
|
||||||
<div
|
<div
|
||||||
class="item"
|
v-for="(item, index) in pointItemList"
|
||||||
|
:key="index"
|
||||||
:class="{
|
:class="{
|
||||||
disabled: item.status === '1',
|
disabled: item.status === '1',
|
||||||
active: checkoutPointItemList.includes(item.id)
|
active: checkoutPointItemList.includes(item.id)
|
||||||
}"
|
}"
|
||||||
|
class="item"
|
||||||
@click="checkoutItem(item.id)"
|
@click="checkoutItem(item.id)"
|
||||||
v-for="(item, index) in pointItemList"
|
|
||||||
:key="index"
|
|
||||||
>
|
>
|
||||||
<el-icon><Check /></el-icon>
|
<el-icon><Check /></el-icon>
|
||||||
<div>{{ item.itemName }}</div>
|
<div>{{ item.itemName }}</div>
|
||||||
@@ -27,20 +27,21 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="巡检点状态" prop="status">
|
<el-form-item label="巡检点状态" prop="status">
|
||||||
<el-radio-group v-model="form.status">
|
<el-radio-group v-model="form.status">
|
||||||
<el-radio v-for="item in com_inspection_point_status" :value="item.value" :key="item.value" :label="item.value">{{
|
<el-radio v-for="item in com_inspection_point_status" :key="item.value" :label="item.value" :value="item.value">{{
|
||||||
item.label
|
item.label
|
||||||
}}</el-radio>
|
}}</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="巡检点位置" prop="location">
|
<el-form-item label="巡检点位置" prop="location">
|
||||||
<MapWrapper :click-or-draw="true" ref="MapWrapperRef" @click-point="handleClickMapPoint"></MapWrapper>
|
<MapWrapper ref="MapWrapperRef" :click-or-draw="true" @click-point="handleClickMapPoint"></MapWrapper>
|
||||||
<div class="tips">
|
<div class="tips">
|
||||||
<span>点击地图选择位置</span>
|
<span>点击地图选择位置</span>
|
||||||
<span
|
<span
|
||||||
class="deleteMarker"
|
|
||||||
v-show="Boolean(marker)"
|
v-show="Boolean(marker)"
|
||||||
|
class="deleteMarker"
|
||||||
@click="
|
@click="
|
||||||
() => {
|
() => {
|
||||||
|
form.location = ``;
|
||||||
MapWrapperRef.clearLocation();
|
MapWrapperRef.clearLocation();
|
||||||
}
|
}
|
||||||
"
|
"
|
||||||
@@ -58,7 +59,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script lang="ts" setup>
|
||||||
import { ref, toRefs } from 'vue';
|
import { ref, toRefs } from 'vue';
|
||||||
import { getCurrentInstance, ComponentInternalInstance } from 'vue';
|
import { getCurrentInstance, ComponentInternalInstance } from 'vue';
|
||||||
import { useRouter, useRoute } from 'vue-router';
|
import { useRouter, useRoute } from 'vue-router';
|
||||||
@@ -181,7 +182,7 @@ onMounted(async () => {
|
|||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style lang="scss" scoped>
|
||||||
.AddBuildingBox {
|
.AddBuildingBox {
|
||||||
padding: 15px;
|
padding: 15px;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
|||||||
@@ -4,9 +4,9 @@
|
|||||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||||
<div v-show="showSearch" class="mb-[10px]">
|
<div v-show="showSearch" class="mb-[10px]">
|
||||||
<el-card shadow="hover">
|
<el-card shadow="hover">
|
||||||
<el-form label-width="100px" ref="queryFormRef" @submit.prevent="handleQuery" :model="queryParams" :inline="true">
|
<el-form ref="queryFormRef" :inline="true" :model="queryParams" label-position="left" label-width="100px" @submit.prevent="handleQuery">
|
||||||
<el-form-item label="巡检点名称" prop="pointName">
|
<el-form-item label="巡检点名称" prop="pointName">
|
||||||
<el-input maxlength="20" v-model="queryParams.pointName" placeholder="请输入巡检点名称" clearable @keyup.enter="handleQuery" />
|
<el-input v-model="queryParams.pointName" clearable maxlength="20" placeholder="请输入巡检点名称" @keyup.enter="handleQuery" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" @click="handleQuery">搜索</el-button>
|
<el-button type="primary" @click="handleQuery">搜索</el-button>
|
||||||
@@ -24,8 +24,8 @@
|
|||||||
:disable-delete="multiple"
|
:disable-delete="multiple"
|
||||||
:disable-edit="single"
|
:disable-edit="single"
|
||||||
:show-add="checkPermi(['inspection:point:add'])"
|
:show-add="checkPermi(['inspection:point:add'])"
|
||||||
:show-edit="checkPermi(['inspection:point:edit'])"
|
|
||||||
:show-delete="checkPermi(['inspection:point:remove'])"
|
:show-delete="checkPermi(['inspection:point:remove'])"
|
||||||
|
:show-edit="checkPermi(['inspection:point:edit'])"
|
||||||
@update:add="handleAdd"
|
@update:add="handleAdd"
|
||||||
@update:edit="handleUpdate()"
|
@update:edit="handleUpdate()"
|
||||||
@update:delete="handleDelete()"
|
@update:delete="handleDelete()"
|
||||||
@@ -33,41 +33,42 @@
|
|||||||
</el-row>
|
</el-row>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<el-table v-loading="loading" border :data="pointList" @selection-change="handleSelectionChange">
|
<el-table v-loading="loading" :data="pointList" border @selection-change="handleSelectionChange">
|
||||||
<el-table-column type="selection" width="55" align="center" />
|
<el-table-column align="center" type="selection" width="55" />
|
||||||
<el-table-column label="巡检点名称" align="center" prop="pointName" />
|
<el-table-column align="center" label="巡检点名称" prop="pointName" />
|
||||||
<el-table-column label="打卡方式" align="center" prop="checkMode">
|
<el-table-column align="center" label="打卡方式" prop="checkMode">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<DictTag :options="com_inspection_point_checkmode" :value="scope.row.checkMode"></DictTag>
|
<DictTag :options="com_inspection_point_checkmode" :value="scope.row.checkMode"></DictTag>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="巡检点位置" align="center" prop="location" />
|
<el-table-column align="center" label="巡检点位置" prop="location" />
|
||||||
<el-table-column label="状态" align="center" prop="status">
|
<el-table-column align="center" label="状态" prop="status">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-switch
|
<el-switch
|
||||||
@change="(val: string) => handleChangeStatus(scope.row.id, val)"
|
|
||||||
v-model="scope.row.status"
|
v-model="scope.row.status"
|
||||||
active-value="0"
|
active-value="0"
|
||||||
inactive-value="1"
|
inactive-value="1"
|
||||||
|
@change="(val: string) => handleChangeStatus(scope.row.id, val)"
|
||||||
></el-switch>
|
></el-switch>
|
||||||
<!-- 0开启 1关闭 -->
|
<!-- 0开启 1关闭 -->
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="添加时间" align="center" prop="createTime" />
|
<el-table-column align="center" label="添加人" prop="createByName" width="120" />
|
||||||
<el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width">
|
<el-table-column align="center" label="添加时间" prop="createTime" width="120" />
|
||||||
|
<el-table-column align="center" class-name="small-padding fixed-width" fixed="right" label="操作">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button link type="primary" @click="handleUpdate(scope.row)" v-has-permi="['inspection:point:edit']">编辑</el-button>
|
<el-button v-has-permi="['inspection:point:edit']" link type="primary" @click="handleUpdate(scope.row)">编辑</el-button>
|
||||||
<el-button link type="primary" @click="handleDelete(scope.row)" v-has-permi="['inspection:point:remove']">删除</el-button>
|
<el-button v-has-permi="['inspection:point:remove']" link type="primary" @click="handleDelete(scope.row)">删除</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</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" v-model:limit="queryParams.pageSize" v-model:page="queryParams.pageNum" :total="total" @pagination="getList" />
|
||||||
</el-card>
|
</el-card>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup name="Point" lang="ts">
|
<script lang="ts" name="Point" setup>
|
||||||
import Pageheader from '@/components/Pageheader/index.vue';
|
import Pageheader from '@/components/Pageheader/index.vue';
|
||||||
import { listPoint, delPoint, changePointStatus } from '@/api/system/InspectionPoint/index';
|
import { listPoint, delPoint, changePointStatus } from '@/api/system/InspectionPoint/index';
|
||||||
import { PointVO, PointQuery, PointForm } from '@/api/system/InspectionPoint/type';
|
import { PointVO, PointQuery, PointForm } from '@/api/system/InspectionPoint/type';
|
||||||
|
|||||||
@@ -51,59 +51,64 @@
|
|||||||
<div class="timequerybox">
|
<div class="timequerybox">
|
||||||
<div class="label">筛选日期:</div>
|
<div class="label">筛选日期:</div>
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
value-format="YYYY-MM-DD"
|
|
||||||
format="YYYY-MM-DD"
|
|
||||||
clearable
|
|
||||||
:disabled-date="disabledDate"
|
|
||||||
v-model="date"
|
v-model="date"
|
||||||
type="date"
|
:disabled-date="disabledDate"
|
||||||
|
clearable
|
||||||
|
format="YYYY-MM-DD"
|
||||||
placeholder="选择查看日期"
|
placeholder="选择查看日期"
|
||||||
|
type="date"
|
||||||
|
value-format="YYYY-MM-DD"
|
||||||
/>
|
/>
|
||||||
<el-button style="margin-left: 10px" @click="querySeale">查询</el-button>
|
<el-button style="margin-left: 10px" @click="querySeale">查询</el-button>
|
||||||
</div>
|
</div>
|
||||||
<el-table
|
<el-table
|
||||||
|
:data="form.details"
|
||||||
:default-sort="{
|
:default-sort="{
|
||||||
prop: 'checkTime',
|
prop: 'checkTime',
|
||||||
order: 'descending'
|
order: 'descending'
|
||||||
}"
|
}"
|
||||||
:data="form.details"
|
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
>
|
>
|
||||||
<el-table-column type="index" align="center" label="序号" width="85" />
|
<el-table-column align="center" label="序号" type="index" width="85" />
|
||||||
<el-table-column prop="pointName" align="center" label="巡检点" />
|
<el-table-column align="center" label="巡检点" prop="pointName" />
|
||||||
<el-table-column sortable prop="checkTime" align="center" label=" 巡检时间" />
|
<el-table-column align="center" label=" 巡检时间" prop="checkTime" sortable />
|
||||||
<el-table-column prop="status" align="center" label="巡检状态">
|
<el-table-column align="center" label="巡检状态" prop="status">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-tag v-if="scope.row.status === 0" type="success">正常</el-tag>
|
<el-tag v-if="scope.row.status === 0" type="success">正常</el-tag>
|
||||||
<el-tag v-else type="danger">异常</el-tag>
|
<el-tag v-else type="danger">异常</el-tag>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<!-- <el-table-column prop="location" align="center" label="巡检地址" /> -->
|
<!-- <el-table-column prop="location" align="center" label="巡检地址" /> -->
|
||||||
<el-table-column prop="remark" align="left" label="巡检结果" />
|
<el-table-column align="left" label="巡检结果" prop="remark" />
|
||||||
<el-table-column label="图片">
|
<el-table-column label="图片">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<div>
|
<div>
|
||||||
<el-image
|
<el-image
|
||||||
v-for="(item, index) in scope.row.photoslist"
|
v-for="(item, index) in scope.row.photoslist"
|
||||||
:key="index"
|
:key="index"
|
||||||
:src="item"
|
|
||||||
:preview-src-list="scope.row.photoslist"
|
|
||||||
show-progress
|
|
||||||
fit="cover"
|
|
||||||
:initial-index="0"
|
:initial-index="0"
|
||||||
|
:preview-src-list="scope.row.photoslist"
|
||||||
:preview-teleported="true"
|
:preview-teleported="true"
|
||||||
|
:src="item"
|
||||||
|
fit="cover"
|
||||||
|
show-progress
|
||||||
style="width: 80px; height: 50px; margin-right: 10px"
|
style="width: 80px; height: 50px; margin-right: 10px"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
<el-table-column align="left" label="执行结果" prop="completionStatus">
|
||||||
|
<template #default="scope">
|
||||||
|
<DictTag :options="com_inspection_task_status" :value="scope.row.completionStatus"></DictTag>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script lang="ts" setup>
|
||||||
import { ref } from 'vue';
|
import { ref } from 'vue';
|
||||||
import PageHeader from '@/components/Pageheader/index.vue';
|
import PageHeader from '@/components/Pageheader/index.vue';
|
||||||
import { getRecord } from '@/api/system/InspectionRecord';
|
import { getRecord } from '@/api/system/InspectionRecord';
|
||||||
@@ -217,7 +222,7 @@ const cancelForm = () => {
|
|||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style lang="scss" scoped>
|
||||||
.AddBuildingBox {
|
.AddBuildingBox {
|
||||||
padding: 15px;
|
padding: 15px;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
|||||||
@@ -4,24 +4,26 @@
|
|||||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||||
<div v-show="showSearch" class="mb-[10px]">
|
<div v-show="showSearch" class="mb-[10px]">
|
||||||
<el-card shadow="hover">
|
<el-card shadow="hover">
|
||||||
<el-form ref="queryFormRef" :model="queryParams" @submit.prevent="handleQuery" :inline="true">
|
<el-form ref="queryFormRef" :inline="true" :model="queryParams" @submit.prevent="handleQuery">
|
||||||
<el-form-item label="执行状态" prop="status">
|
<el-form-item label="执行状态" prop="status">
|
||||||
<el-select v-model="queryParams.status">
|
<el-select v-model="queryParams.status">
|
||||||
<el-option v-for="item in com_inspection_task_status" :key="item.value" :value="item.value" :label="item.label"></el-option>
|
<el-option v-for="item in com_inspection_task_status" :key="item.value" :label="item.label" :value="item.value"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="巡检日期" prop="taskTime">
|
<el-form-item label="巡检日期" prop="taskTime">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="queryParams.taskTime"
|
v-model="taskTime"
|
||||||
@update:model-value="handleDate"
|
end-placeholder="结束日期"
|
||||||
type="daterange"
|
format="YYYY-MM-DD"
|
||||||
range-separator="到"
|
range-separator="到"
|
||||||
start-placeholder="开始日期"
|
start-placeholder="开始日期"
|
||||||
end-placeholder="结束日期"
|
type="daterange"
|
||||||
|
value-format="YYYY-MM-DD"
|
||||||
|
@update:model-value="handleDate"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="任务名称" prop="taskName">
|
<el-form-item label="任务名称" prop="taskName">
|
||||||
<el-input maxlength="20" v-model="queryParams.taskName" placeholder="请输入任务名称" clearable @keyup.enter="handleQuery" />
|
<el-input v-model="queryParams.taskName" clearable maxlength="20" placeholder="请输入任务名称" @keyup.enter="handleQuery" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" @click="handleQuery">搜索</el-button>
|
<el-button type="primary" @click="handleQuery">搜索</el-button>
|
||||||
@@ -33,46 +35,40 @@
|
|||||||
</transition>
|
</transition>
|
||||||
|
|
||||||
<el-card class="flex-1" shadow="never">
|
<el-card class="flex-1" shadow="never">
|
||||||
<!-- <template #header>
|
<el-table v-loading="loading" :data="recordList" border @selection-change="handleSelectionChange">
|
||||||
<el-row :gutter="10" class="mb8">
|
<el-table-column align="center" type="selection" width="55" />
|
||||||
<right-toolbar ></right-toolbar>
|
<el-table-column align="center" label="任务名称" prop="taskName" />
|
||||||
</el-row>
|
<el-table-column align="center" label="巡检人员" prop="inspectorName" />
|
||||||
</template> -->
|
|
||||||
|
|
||||||
<el-table v-loading="loading" border :data="recordList" @selection-change="handleSelectionChange">
|
|
||||||
<el-table-column type="selection" width="55" align="center" />
|
|
||||||
<el-table-column label="任务名称" align="center" prop="taskName" />
|
|
||||||
<el-table-column label="巡检人员" align="center" prop="inspectorName" />
|
|
||||||
<!-- <el-table-column label="任务周期" align="center" prop="taskTime" /> -->
|
<!-- <el-table-column label="任务周期" align="center" prop="taskTime" /> -->
|
||||||
<el-table-column label="任务开始时间" align="center" prop="taskTime" width="180">
|
<el-table-column align="center" label="任务开始时间" prop="taskTime" width="180">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span>{{ scope.row.taskTime.split(' - ')[0] }}</span>
|
<span>{{ scope.row.taskTime.split(' - ')[0] }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="任务结束时间" align="center" prop="endTime" width="180">
|
<el-table-column align="center" label="任务结束时间" prop="endTime" width="180">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span>{{ scope.row.taskTime.split(' - ')[1] }}</span>
|
<span>{{ scope.row.taskTime.split(' - ')[1] }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="执行状态" align="center" prop="status" width="120">
|
<el-table-column align="center" label="执行状态" prop="status" width="120">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<DictTag :options="com_inspection_task_status" :value="scope.row.status"></DictTag>
|
<DictTag :options="com_inspection_task_status" :value="scope.row.status"></DictTag>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="关联计划" align="center" prop="planName" />
|
<el-table-column align="center" label="关联计划" prop="planName" />
|
||||||
<el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width">
|
<el-table-column align="center" class-name="small-padding fixed-width" fixed="right" label="操作">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button link type="primary" @click="handleUpdate(scope.row)" v-has-permi="['inspection:record:query']">查看详情</el-button>
|
<el-button v-has-permi="['inspection:record:query']" link type="primary" @click="handleUpdate(scope.row)">查看详情</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</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" v-model:limit="queryParams.pageSize" v-model:page="queryParams.pageNum" :total="total" @pagination="getList" />
|
||||||
</el-card>
|
</el-card>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup name="Record" lang="ts">
|
<script lang="ts" name="Record" setup>
|
||||||
import { listRecord, delRecord, addRecord, updateRecord } from '@/api/system/InspectionRecord/index';
|
import { listRecord, delRecord, addRecord, updateRecord } from '@/api/system/InspectionRecord/index';
|
||||||
import { RecordVO, RecordQuery, RecordForm } from '@/api/system/InspectionRecord/type';
|
import { RecordVO, RecordQuery, RecordForm } from '@/api/system/InspectionRecord/type';
|
||||||
|
|
||||||
@@ -80,7 +76,6 @@ const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
|||||||
const { com_inspection_task_status } = toRefs<any>(proxy?.useDict('com_inspection_task_status'));
|
const { com_inspection_task_status } = toRefs<any>(proxy?.useDict('com_inspection_task_status'));
|
||||||
|
|
||||||
const recordList = ref<RecordVO[]>([]);
|
const recordList = ref<RecordVO[]>([]);
|
||||||
const buttonLoading = ref(false);
|
|
||||||
const loading = ref(true);
|
const loading = ref(true);
|
||||||
const showSearch = ref(true);
|
const showSearch = ref(true);
|
||||||
const ids = ref<Array<string | number>>([]);
|
const ids = ref<Array<string | number>>([]);
|
||||||
@@ -112,7 +107,8 @@ const data = reactive<PageData<RecordForm, RecordQuery>>({
|
|||||||
queryParams: {
|
queryParams: {
|
||||||
pageNum: 1,
|
pageNum: 1,
|
||||||
pageSize: 10,
|
pageSize: 10,
|
||||||
|
taskTimeBegin: '',
|
||||||
|
taskTimeEnd: '',
|
||||||
taskName: '',
|
taskName: '',
|
||||||
status: '',
|
status: '',
|
||||||
taskTime: ''
|
taskTime: ''
|
||||||
@@ -135,8 +131,10 @@ const getList = async () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// 处理日期选择
|
// 处理日期选择
|
||||||
|
const taskTime = ref([]);
|
||||||
const handleDate = (val) => {
|
const handleDate = (val) => {
|
||||||
console.log(val);
|
queryParams.value.taskTimeBegin = val[0];
|
||||||
|
queryParams.value.taskTimeEnd = val[1];
|
||||||
};
|
};
|
||||||
|
|
||||||
/** 取消按钮 */
|
/** 取消按钮 */
|
||||||
@@ -159,6 +157,9 @@ const handleQuery = () => {
|
|||||||
|
|
||||||
/** 重置按钮操作 */
|
/** 重置按钮操作 */
|
||||||
const resetQuery = () => {
|
const resetQuery = () => {
|
||||||
|
taskTime.value = [];
|
||||||
|
queryParams.value.taskTimeBegin = '';
|
||||||
|
queryParams.value.taskTimeEnd = '';
|
||||||
queryFormRef.value?.resetFields();
|
queryFormRef.value?.resetFields();
|
||||||
handleQuery();
|
handleQuery();
|
||||||
};
|
};
|
||||||
@@ -173,7 +174,7 @@ const handleSelectionChange = (selection: RecordVO[]) => {
|
|||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
|
|
||||||
/** 修改按钮操作 */
|
/** 修改按钮操作 */
|
||||||
const handleUpdate = async (row?: RecordVO) => {
|
const handleUpdate = (row?: RecordVO) => {
|
||||||
router.push({
|
router.push({
|
||||||
path: '/Inspection/RecordMain',
|
path: '/Inspection/RecordMain',
|
||||||
query: {
|
query: {
|
||||||
@@ -181,44 +182,6 @@ const handleUpdate = async (row?: RecordVO) => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
/** 提交按钮 */
|
|
||||||
const submitForm = () => {
|
|
||||||
recordFormRef.value?.validate(async (valid: boolean) => {
|
|
||||||
if (valid) {
|
|
||||||
buttonLoading.value = true;
|
|
||||||
if (form.value.id) {
|
|
||||||
await updateRecord(form.value).finally(() => (buttonLoading.value = false));
|
|
||||||
} else {
|
|
||||||
await addRecord(form.value).finally(() => (buttonLoading.value = false));
|
|
||||||
}
|
|
||||||
proxy?.$modal.msgSuccess('操作成功');
|
|
||||||
dialog.visible = false;
|
|
||||||
await getList();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
/** 删除按钮操作 */
|
|
||||||
const handleDelete = async (row?: RecordVO) => {
|
|
||||||
const _ids = row?.id || ids.value;
|
|
||||||
await proxy?.$modal.confirm('是否确认删除巡检记录主编号为"' + _ids + '"的数据项?').finally(() => (loading.value = false));
|
|
||||||
await delRecord(_ids);
|
|
||||||
proxy?.$modal.msgSuccess('删除成功');
|
|
||||||
await getList();
|
|
||||||
};
|
|
||||||
|
|
||||||
/** 导出按钮操作 */
|
|
||||||
const handleExport = () => {
|
|
||||||
proxy?.download(
|
|
||||||
'system/record/export',
|
|
||||||
{
|
|
||||||
...queryParams.value
|
|
||||||
},
|
|
||||||
`record_${new Date().getTime()}.xlsx`
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
getList();
|
getList();
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -4,20 +4,20 @@
|
|||||||
<div class="AddBuildingBody">
|
<div class="AddBuildingBody">
|
||||||
<div class="title">基本信息</div>
|
<div class="title">基本信息</div>
|
||||||
<div class="addBuildingFormBody">
|
<div class="addBuildingFormBody">
|
||||||
<el-form class="formBody" label-position="right" ref="formRef" :model="form" :rules="rules" label-width="130px">
|
<el-form ref="formRef" :model="form" :rules="rules" class="formBody" label-position="right" label-width="130px">
|
||||||
<el-form-item label="巡检路线名称" prop="routeName">
|
<el-form-item label="巡检路线名称" prop="routeName">
|
||||||
<el-input maxlength="20" v-model.trim="form.routeName" placeholder="请输入巡检路线名称" />
|
<el-input v-model.trim="form.routeName" maxlength="20" placeholder="请输入巡检路线名称" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="巡检点" prop="routeName">
|
<el-form-item label="巡检点" prop="routeName">
|
||||||
<div class="itemBox">
|
<div class="itemBox">
|
||||||
<div
|
<div
|
||||||
class="item"
|
v-for="(item, index) in pointsList"
|
||||||
|
:key="index"
|
||||||
:class="{
|
:class="{
|
||||||
active: checkoutPointList.includes(item.id)
|
active: checkoutPointList.includes(item.id)
|
||||||
}"
|
}"
|
||||||
v-for="(item, index) in pointsList"
|
class="item"
|
||||||
@click="checkoutItemPoint(item)"
|
@click="checkoutItemPoint(item)"
|
||||||
:key="index"
|
|
||||||
>
|
>
|
||||||
<el-icon v-show="checkoutPointList.includes(item.id)"><Check /></el-icon>
|
<el-icon v-show="checkoutPointList.includes(item.id)"><Check /></el-icon>
|
||||||
<div>{{ item.pointName }}</div>
|
<div>{{ item.pointName }}</div>
|
||||||
@@ -25,7 +25,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="绘制巡检路线" prop="routeName">
|
<el-form-item label="绘制巡检路线" prop="routeName">
|
||||||
<MapWrapper :click-or-draw="false" ref="MapWrapperRef"></MapWrapper>
|
<MapWrapper ref="MapWrapperRef" :click-or-draw="false"></MapWrapper>
|
||||||
<div class="tips flex flex-items-center justify-between">
|
<div class="tips flex flex-items-center justify-between">
|
||||||
<div>点击地图,绘制巡检路线;再次点击可继续绘制下一条(但只能保留一条);右击结束绘制</div>
|
<div>点击地图,绘制巡检路线;再次点击可继续绘制下一条(但只能保留一条);右击结束绘制</div>
|
||||||
<div>
|
<div>
|
||||||
@@ -51,7 +51,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script lang="ts" setup>
|
||||||
import { ref, nextTick } from 'vue';
|
import { ref, nextTick } from 'vue';
|
||||||
import { useRouter, useRoute } from 'vue-router';
|
import { useRouter, useRoute } from 'vue-router';
|
||||||
import PageHeader from '@/components/Pageheader/index.vue';
|
import PageHeader from '@/components/Pageheader/index.vue';
|
||||||
@@ -148,7 +148,15 @@ onMounted(async () => {
|
|||||||
// 获取巡检点列表
|
// 获取巡检点列表
|
||||||
if (!routeId.value) {
|
if (!routeId.value) {
|
||||||
listPoint({}).then((res) => {
|
listPoint({}).then((res) => {
|
||||||
pointsList.value = res.rows;
|
pointsList.value = res.rows
|
||||||
|
.map((item) => {
|
||||||
|
if (item.status === '0') {
|
||||||
|
return item;
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.filter((item) => item !== false);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
await nextTick(() => init());
|
await nextTick(() => init());
|
||||||
@@ -228,7 +236,7 @@ onUnmounted(() => {
|
|||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style lang="scss" scoped>
|
||||||
.AddBuildingBox {
|
.AddBuildingBox {
|
||||||
padding: 15px;
|
padding: 15px;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
|||||||
@@ -4,9 +4,9 @@
|
|||||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||||
<div v-show="showSearch" class="mb-[10px]">
|
<div v-show="showSearch" class="mb-[10px]">
|
||||||
<el-card shadow="hover">
|
<el-card shadow="hover">
|
||||||
<el-form ref="queryFormRef" label-width="120px" @submit.prevent="handleQuery" :model="queryParams" :inline="true">
|
<el-form ref="queryFormRef" :inline="true" :model="queryParams" label-position="left" label-width="120px" @submit.prevent="handleQuery">
|
||||||
<el-form-item label="巡检路线名称" prop="routeName">
|
<el-form-item label="巡检路线名称" prop="routeName">
|
||||||
<el-input maxlength="20" v-model="queryParams.routeName" placeholder="请输入巡检路线名称" clearable @keyup.enter="handleQuery" />
|
<el-input v-model="queryParams.routeName" clearable maxlength="20" placeholder="请输入巡检路线名称" @keyup.enter="handleQuery" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" @click="handleQuery">搜索</el-button>
|
<el-button type="primary" @click="handleQuery">搜索</el-button>
|
||||||
@@ -24,8 +24,8 @@
|
|||||||
:disable-delete="multiple"
|
:disable-delete="multiple"
|
||||||
:disable-edit="single"
|
:disable-edit="single"
|
||||||
:show-add="checkPermi(['inspection:route:add'])"
|
:show-add="checkPermi(['inspection:route:add'])"
|
||||||
:show-edit="checkPermi(['inspection:route:edit'])"
|
|
||||||
:show-delete="checkPermi(['inspection:route:remove'])"
|
:show-delete="checkPermi(['inspection:route:remove'])"
|
||||||
|
:show-edit="checkPermi(['inspection:route:edit'])"
|
||||||
@update:add="handleAdd"
|
@update:add="handleAdd"
|
||||||
@update:edit="handleUpdate()"
|
@update:edit="handleUpdate()"
|
||||||
@update:delete="handleDelete()"
|
@update:delete="handleDelete()"
|
||||||
@@ -33,13 +33,13 @@
|
|||||||
</el-row>
|
</el-row>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<el-table v-loading="loading" border :data="routeList" @selection-change="handleSelectionChange">
|
<el-table v-loading="loading" :data="routeList" border @selection-change="handleSelectionChange">
|
||||||
<el-table-column type="selection" width="55" align="center" />
|
<el-table-column align="center" type="selection" width="55" />
|
||||||
<el-table-column label="巡检路线名称" width="220" align="center" prop="routeName" />
|
<el-table-column align="center" label="巡检路线名称" prop="routeName" width="220" />
|
||||||
<!-- <el-table-column label="路线描述" align="center" prop="description" /> -->
|
<!-- <el-table-column label="路线描述" align="center" prop="description" /> -->
|
||||||
<el-table-column label="巡检点" align="center" prop="pointNames" show-overflow-tooltip />
|
<el-table-column align="center" label="巡检点" prop="pointNames" show-overflow-tooltip />
|
||||||
<!-- <el-table-column label="预计巡检时长(分钟)" width="140" align="center" prop="estimatedTime" /> -->
|
<!-- <el-table-column label="预计巡检时长(分钟)" width="140" align="center" prop="estimatedTime" /> -->
|
||||||
<el-table-column label="巡检路线状态" width="120" align="center" prop="routeStatus">
|
<el-table-column align="center" label="巡检路线状态" prop="routeStatus" width="120">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<!-- <dict-tag :options="com_inspection_route_status" :value="scope.row.routeStatus"></dict-tag> -->
|
<!-- <dict-tag :options="com_inspection_route_status" :value="scope.row.routeStatus"></dict-tag> -->
|
||||||
<el-switch
|
<el-switch
|
||||||
@@ -54,21 +54,23 @@
|
|||||||
<!-- <el-table-column label="起点纬度" width="120" align="center" prop="startLat" /> -->
|
<!-- <el-table-column label="起点纬度" width="120" align="center" prop="startLat" /> -->
|
||||||
<!-- <el-table-column label="终点经度" width="120" align="center" prop="endLng" /> -->
|
<!-- <el-table-column label="终点经度" width="120" align="center" prop="endLng" /> -->
|
||||||
<!-- <el-table-column label="终点纬度" width="120" align="center" prop="endLat" /> -->
|
<!-- <el-table-column label="终点纬度" width="120" align="center" prop="endLat" /> -->
|
||||||
|
<el-table-column align="center" label="添加人" prop="createByName" width="120" />
|
||||||
|
<el-table-column align="center" label="添加时间" prop="createTime" width="120" />
|
||||||
<!-- <el-table-column label="备注" align="center" prop="remark" /> -->
|
<!-- <el-table-column label="备注" align="center" prop="remark" /> -->
|
||||||
<el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width">
|
<el-table-column align="center" class-name="small-padding fixed-width" fixed="right" label="操作">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button link type="primary" @click="handleUpdate(scope.row)" v-has-permi="['inspection:route:edit']">修改</el-button>
|
<el-button v-has-permi="['inspection:route:edit']" link type="primary" @click="handleUpdate(scope.row)">修改</el-button>
|
||||||
<el-button link type="primary" @click="handleDelete(scope.row)" v-has-permi="['inspection:route:remove']">删除</el-button>
|
<el-button v-has-permi="['inspection:route:remove']" link type="primary" @click="handleDelete(scope.row)">删除</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</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" v-model:limit="queryParams.pageSize" v-model:page="queryParams.pageNum" :total="total" @pagination="getList" />
|
||||||
</el-card>
|
</el-card>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup name="Route" lang="ts">
|
<script lang="ts" name="Route" setup>
|
||||||
import { listRoute, delRoute, changeStatusRoute } from '@/api/system/InspectionRoute/index';
|
import { listRoute, delRoute, changeStatusRoute } from '@/api/system/InspectionRoute/index';
|
||||||
import { RouteVO, RouteQuery, RouteForm } from '@/api/system/InspectionRoute/type';
|
import { RouteVO, RouteQuery, RouteForm } from '@/api/system/InspectionRoute/type';
|
||||||
import { checkPermi } from '@/utils/permission';
|
import { checkPermi } from '@/utils/permission';
|
||||||
|
|||||||
@@ -4,17 +4,17 @@
|
|||||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||||
<div v-show="showSearch" class="mb-[10px]">
|
<div v-show="showSearch" class="mb-[10px]">
|
||||||
<el-card shadow="hover">
|
<el-card shadow="hover">
|
||||||
<el-form ref="queryFormRef" label-width="120px" :inline="true">
|
<el-form ref="queryFormRef" :inline="true" label-width="120px">
|
||||||
<el-form-item label="选择日期" prop="checkdata">
|
<el-form-item label="选择日期" prop="checkdata">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
|
v-model="checkdata"
|
||||||
|
end-placeholder="结束日期"
|
||||||
|
format="YYYY/MM/DD"
|
||||||
|
placeholder="选择日期"
|
||||||
range-separator="到"
|
range-separator="到"
|
||||||
start-placeholder="开始日期"
|
start-placeholder="开始日期"
|
||||||
end-placeholder="结束日期"
|
|
||||||
value-format="YYYY/MM/DD"
|
|
||||||
format="YYYY/MM/DD"
|
|
||||||
v-model="checkdata"
|
|
||||||
type="daterange"
|
type="daterange"
|
||||||
placeholder="选择日期"
|
value-format="YYYY/MM/DD"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
@@ -35,27 +35,27 @@
|
|||||||
</el-row>
|
</el-row>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<el-table v-loading="loading" border :data="routeList">
|
<el-table v-loading="loading" :data="routeList" border>
|
||||||
<el-table-column type="selection" width="55" align="center" />
|
<el-table-column align="center" type="selection" width="55" />
|
||||||
<el-table-column label="巡检人员" align="center" prop="roleName" show-overflow-tooltip />
|
<el-table-column align="center" label="巡检人员" prop="roleName" show-overflow-tooltip />
|
||||||
<el-table-column label="计划巡检任务" align="center" prop="totalTasks" />
|
<el-table-column align="center" label="计划巡检任务" prop="totalTasks" />
|
||||||
<el-table-column label="按时完成" align="center" prop="completedTasks">
|
<el-table-column align="center" label="按时完成" prop="completedTasks">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
{{ scope.row.completedTasks }}
|
{{ scope.row.completedTasks }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="超时完成" align="center" prop="outCompletedTasks" />
|
<el-table-column align="center" label="超时完成" prop="outCompletedTasks" />
|
||||||
<el-table-column label="超时未完成" align="center" prop="outUncompletedTasks"></el-table-column>
|
<el-table-column align="center" label="超时未完成" prop="outUncompletedTasks"></el-table-column>
|
||||||
<el-table-column label="进行中" align="center" prop="activeTask" />
|
<el-table-column align="center" label="进行中" prop="activeTask" />
|
||||||
<el-table-column label="未开始" align="center" prop="pendingTask" />
|
<el-table-column align="center" label="未开始" prop="pendingTask" />
|
||||||
<el-table-column label="完成率" align="center" prop="completionRateDisplay" />
|
<el-table-column align="center" label="完成率" prop="completionRateDisplay" />
|
||||||
</el-table>
|
</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" v-model:limit="queryParams.pageSize" v-model:page="queryParams.pageNum" :total="total" @pagination="getList" />
|
||||||
</el-card>
|
</el-card>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup name="Route" lang="ts">
|
<script lang="ts" name="Route" setup>
|
||||||
import { list_statapi } from '@/api/system/Inspection';
|
import { list_statapi } from '@/api/system/Inspection';
|
||||||
|
|
||||||
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
||||||
@@ -70,14 +70,14 @@ const data = reactive({
|
|||||||
queryParams: {
|
queryParams: {
|
||||||
pageNum: 1,
|
pageNum: 1,
|
||||||
pageSize: 10,
|
pageSize: 10,
|
||||||
taskTimeBegin: '',
|
queryDateBegin: '',
|
||||||
taskTimeEnd: ''
|
queryDateEnd: ''
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
const checkdata = ref([]);
|
const checkdata = ref([]);
|
||||||
const { queryParams } = toRefs(data);
|
const { queryParams } = toRefs(data);
|
||||||
/** 查询巡检路线列表 ╬╬╬*/
|
/** 查询巡检路线列表*/
|
||||||
const getList = async () => {
|
const getList = async () => {
|
||||||
loading.value = true;
|
loading.value = true;
|
||||||
list_statapi(queryParams.value)
|
list_statapi(queryParams.value)
|
||||||
@@ -92,8 +92,8 @@ const getList = async () => {
|
|||||||
|
|
||||||
/** 搜索按钮操作 */
|
/** 搜索按钮操作 */
|
||||||
const handleQuery = () => {
|
const handleQuery = () => {
|
||||||
queryParams.value.taskTimeBegin = checkdata.value[0];
|
queryParams.value.queryDateBegin = checkdata.value[0];
|
||||||
queryParams.value.taskTimeEnd = checkdata.value[1];
|
queryParams.value.queryDateEnd = checkdata.value[1];
|
||||||
queryParams.value.pageNum = 1;
|
queryParams.value.pageNum = 1;
|
||||||
getList();
|
getList();
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -4,24 +4,28 @@
|
|||||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||||
<div v-show="showSearch" class="mb-[10px]">
|
<div v-show="showSearch" class="mb-[10px]">
|
||||||
<el-card shadow="hover">
|
<el-card shadow="hover">
|
||||||
<el-form ref="queryFormRef" label-width="100px" @submit.prevent="handleQuery" :model="queryParams" :inline="true">
|
<el-form ref="queryFormRef" :inline="true" :model="queryParams" label-width="100px" @submit.prevent="handleQuery">
|
||||||
<el-form-item label="执行状态" prop="status">
|
<el-form-item label="执行状态" prop="status">
|
||||||
<el-select v-model="queryParams.status" placeholder="请选择执行状态" clearable>
|
<el-select v-model="queryParams.status" clearable placeholder="请选择执行状态">
|
||||||
<el-option v-for="(item, index) in com_inspection_task_status" :key="index" :value="item.value" :label="item.label"></el-option>
|
<el-option v-for="(item, index) in com_inspection_task_status" :key="index" :label="item.label" :value="item.value"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="巡检任务名称" prop="taskName">
|
<el-form-item label="巡检日期" prop="taskTime">
|
||||||
<el-input maxlength="20" v-model="queryParams.taskName" placeholder="请输入巡检任务名称" clearable @keyup.enter="handleQuery" />
|
|
||||||
</el-form-item>
|
|
||||||
<!-- <el-form-item label="实际开始时间" prop="taskTime">
|
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
clearable
|
v-model="taskTime"
|
||||||
v-model="queryParams.taskTime"
|
end-placeholder="结束日期"
|
||||||
type="date"
|
format="YYYY-MM-DD"
|
||||||
|
range-separator="到"
|
||||||
|
start-placeholder="开始日期"
|
||||||
|
type="daterange"
|
||||||
value-format="YYYY-MM-DD"
|
value-format="YYYY-MM-DD"
|
||||||
placeholder="请选择实际开始时间"
|
@clear="handleClear"
|
||||||
|
@update:model-value="handleDate"
|
||||||
/>
|
/>
|
||||||
</el-form-item> -->
|
</el-form-item>
|
||||||
|
<el-form-item label="巡检任务名称" prop="taskName">
|
||||||
|
<el-input v-model="queryParams.taskName" clearable maxlength="20" placeholder="请输入巡检任务名称" @keyup.enter="handleQuery" />
|
||||||
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" @click="handleQuery">搜索</el-button>
|
<el-button type="primary" @click="handleQuery">搜索</el-button>
|
||||||
<el-button @click="resetQuery">重置</el-button>
|
<el-button @click="resetQuery">重置</el-button>
|
||||||
@@ -38,8 +42,8 @@
|
|||||||
:disable-delete="multiple"
|
:disable-delete="multiple"
|
||||||
:disable-edit="single"
|
:disable-edit="single"
|
||||||
:show-add="checkPermi(['inspection:task:add'])"
|
:show-add="checkPermi(['inspection:task:add'])"
|
||||||
:show-edit="checkPermi(['inspection:task:edit'])"
|
|
||||||
:show-delete="checkPermi(['inspection:task:remove'])"
|
:show-delete="checkPermi(['inspection:task:remove'])"
|
||||||
|
:show-edit="checkPermi(['inspection:task:edit'])"
|
||||||
@update:add="handleAdd"
|
@update:add="handleAdd"
|
||||||
@update:edit="handleUpdate()"
|
@update:edit="handleUpdate()"
|
||||||
@update:delete="handleDelete()"
|
@update:delete="handleDelete()"
|
||||||
@@ -47,36 +51,36 @@
|
|||||||
</el-row>
|
</el-row>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<el-table v-loading="loading" border :data="taskList" @selection-change="handleSelectionChange">
|
<el-table v-loading="loading" :data="taskList" border @selection-change="handleSelectionChange">
|
||||||
<el-table-column type="selection" width="55" align="center" />
|
<el-table-column align="center" type="selection" width="55" />
|
||||||
<el-table-column label="巡检任务名称" align="center" prop="taskName" />
|
<el-table-column align="center" label="巡检任务名称" prop="taskName" />
|
||||||
<el-table-column label="巡检人员" align="center" prop="inspectorName" />
|
<el-table-column align="center" label="巡检人员" prop="inspectorName" />
|
||||||
<el-table-column label="起止日期" align="center" prop="taskTime" />
|
<el-table-column align="center" label="起止日期" prop="taskTime" />
|
||||||
<el-table-column label="状态" align="center" prop="status">
|
<el-table-column align="center" label="状态" prop="status">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<dict-tag :options="com_inspection_task_status" :value="scope.row.status"></dict-tag>
|
<dict-tag :options="com_inspection_task_status" :value="scope.row.status"></dict-tag>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="提醒时间" width="160" align="center" prop="remindTime">
|
<el-table-column align="center" label="提醒时间" prop="remindTime" width="160">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<dict-tag :options="com_inspection_remind_tiime" :value="scope.row.remindTime"></dict-tag>
|
<dict-tag :options="com_inspection_remind_tiime" :value="scope.row.remindTime"></dict-tag>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="关联巡检计划" align="center" prop="planName" />
|
<el-table-column align="center" label="关联巡检计划" prop="planName" />
|
||||||
<el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width">
|
<el-table-column align="center" class-name="small-padding fixed-width" fixed="right" label="操作">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button link type="primary" @click="handleUpdate(scope.row)" v-has-permi="['inspection:task:edit']">编辑</el-button>
|
<el-button v-has-permi="['inspection:task:edit']" link type="primary" @click="handleUpdate(scope.row)">编辑</el-button>
|
||||||
<el-button link type="primary" @click="handleDelete(scope.row)" v-has-permi="['inspection:task:remove']">删除</el-button>
|
<el-button v-has-permi="['inspection:task:remove']" link type="primary" @click="handleDelete(scope.row)">删除</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</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" v-model:limit="queryParams.pageSize" v-model:page="queryParams.pageNum" :total="total" @pagination="getList" />
|
||||||
</el-card>
|
</el-card>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup name="Task" lang="ts">
|
<script lang="ts" name="Task" setup>
|
||||||
import { listTask, delTask } from '@/api/system/InspectionTask';
|
import { listTask, delTask } from '@/api/system/InspectionTask';
|
||||||
import { TaskVO, TaskQuery, TaskForm } from '@/api/system/InspectionTask/type';
|
import { TaskVO, TaskQuery, TaskForm } from '@/api/system/InspectionTask/type';
|
||||||
import { checkPermi } from '@/utils/permission';
|
import { checkPermi } from '@/utils/permission';
|
||||||
@@ -106,7 +110,9 @@ const data = reactive<PageData<TaskForm, TaskQuery>>({
|
|||||||
pageNum: 1,
|
pageNum: 1,
|
||||||
pageSize: 10,
|
pageSize: 10,
|
||||||
taskName: undefined,
|
taskName: undefined,
|
||||||
status: undefined
|
status: undefined,
|
||||||
|
taskTimeBegin: '',
|
||||||
|
taskTimeEnd: ''
|
||||||
},
|
},
|
||||||
rules: {
|
rules: {
|
||||||
id: [{ required: true, message: '主键ID不能为空', trigger: 'blur' }],
|
id: [{ required: true, message: '主键ID不能为空', trigger: 'blur' }],
|
||||||
@@ -128,6 +134,16 @@ const getList = async () => {
|
|||||||
loading.value = false;
|
loading.value = false;
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
const taskTime = ref([]);
|
||||||
|
function handleDate(data: string[]) {
|
||||||
|
queryParams.value.taskTimeBegin = data[0];
|
||||||
|
queryParams.value.taskTimeEnd = data[1];
|
||||||
|
}
|
||||||
|
function handleClear() {
|
||||||
|
queryParams.value.taskTimeBegin = '';
|
||||||
|
queryParams.value.taskTimeEnd = '';
|
||||||
|
taskTime.value = [];
|
||||||
|
}
|
||||||
|
|
||||||
/** 搜索按钮操作 */
|
/** 搜索按钮操作 */
|
||||||
const handleQuery = () => {
|
const handleQuery = () => {
|
||||||
@@ -138,6 +154,9 @@ const handleQuery = () => {
|
|||||||
/** 重置按钮操作 */
|
/** 重置按钮操作 */
|
||||||
const resetQuery = () => {
|
const resetQuery = () => {
|
||||||
queryFormRef.value?.resetFields();
|
queryFormRef.value?.resetFields();
|
||||||
|
queryParams.value.taskTimeBegin = '';
|
||||||
|
queryParams.value.taskTimeEnd = '';
|
||||||
|
taskTime.value = [];
|
||||||
handleQuery();
|
handleQuery();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -4,12 +4,12 @@
|
|||||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||||
<div v-show="showSearch" class="mb-[10px]">
|
<div v-show="showSearch" class="mb-[10px]">
|
||||||
<el-card shadow="hover">
|
<el-card shadow="hover">
|
||||||
<el-form ref="queryFormRef" :model="queryParams" @submit.prevent="handleQuery" :inline="true">
|
<el-form ref="queryFormRef" :inline="true" :model="queryParams" @submit.prevent="handleQuery">
|
||||||
<el-form-item label="菜单名称" prop="menuName">
|
<el-form-item label="菜单名称" prop="menuName">
|
||||||
<el-input v-model="queryParams.menuName" placeholder="请输入菜单名称" clearable @keyup.enter="handleQuery" />
|
<el-input v-model="queryParams.menuName" clearable placeholder="请输入菜单名称" @keyup.enter="handleQuery" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="状态" prop="status">
|
<el-form-item label="状态" prop="status">
|
||||||
<el-select v-model="queryParams.status" placeholder="菜单状态" clearable>
|
<el-select v-model="queryParams.status" clearable placeholder="菜单状态">
|
||||||
<el-option v-for="dict in sys_normal_disable" :key="dict.value" :label="dict.label" :value="dict.value" />
|
<el-option v-for="dict in sys_normal_disable" :key="dict.value" :label="dict.label" :value="dict.value" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@@ -26,10 +26,10 @@
|
|||||||
<template #header>
|
<template #header>
|
||||||
<el-row :gutter="10">
|
<el-row :gutter="10">
|
||||||
<el-col :span="1.5">
|
<el-col :span="1.5">
|
||||||
<el-button v-has-permi="['system:menu:add']" type="primary" plain icon="Plus" @click="handleAdd()">新增</el-button>
|
<el-button v-has-permi="['system:menu:add']" icon="Plus" plain type="primary" @click="handleAdd()">新增</el-button>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="1.5">
|
<el-col :span="1.5">
|
||||||
<el-button v-has-permi="['system:menu:remove']" type="danger" plain icon="Delete" @click="handleCascadeDelete" :loading="deleteLoading"
|
<el-button v-has-permi="['system:menu:remove']" :loading="deleteLoading" icon="Delete" plain type="danger" @click="handleCascadeDelete"
|
||||||
>级联删除</el-button
|
>级联删除</el-button
|
||||||
>
|
>
|
||||||
</el-col>
|
</el-col>
|
||||||
@@ -40,29 +40,29 @@
|
|||||||
ref="menuTableRef"
|
ref="menuTableRef"
|
||||||
v-loading="loading"
|
v-loading="loading"
|
||||||
:data="menuList"
|
:data="menuList"
|
||||||
row-key="menuId"
|
|
||||||
border
|
|
||||||
:tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
|
|
||||||
:default-expand-all="false"
|
:default-expand-all="false"
|
||||||
lazy
|
|
||||||
:load="getChildrenList"
|
|
||||||
:expand-change="expandMenuHandle"
|
:expand-change="expandMenuHandle"
|
||||||
|
:load="getChildrenList"
|
||||||
|
:tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
|
||||||
|
border
|
||||||
|
lazy
|
||||||
|
row-key="menuId"
|
||||||
>
|
>
|
||||||
<el-table-column prop="menuName" label="菜单名称" :show-overflow-tooltip="true" width="160"></el-table-column>
|
<el-table-column :show-overflow-tooltip="true" label="菜单名称" prop="menuName" width="180"></el-table-column>
|
||||||
<el-table-column prop="icon" label="图标" align="center" width="100">
|
<el-table-column align="center" label="图标" prop="icon" width="100">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<svg-icon :icon-class="scope.row.icon" />
|
<svg-icon :icon-class="scope.row.icon" />
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="orderNum" label="排序" width="60"></el-table-column>
|
<el-table-column label="排序" prop="orderNum" width="60"></el-table-column>
|
||||||
<el-table-column prop="perms" label="权限标识" :show-overflow-tooltip="true"></el-table-column>
|
<el-table-column :show-overflow-tooltip="true" label="权限标识" prop="perms"></el-table-column>
|
||||||
<el-table-column prop="component" label="组件路径" :show-overflow-tooltip="true"></el-table-column>
|
<el-table-column :show-overflow-tooltip="true" label="组件路径" prop="component"></el-table-column>
|
||||||
<el-table-column prop="status" label="状态" width="80">
|
<el-table-column label="状态" prop="status" width="80">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<dict-tag :options="sys_normal_disable" :value="scope.row.status" />
|
<dict-tag :options="sys_normal_disable" :value="scope.row.status" />
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="创建时间" align="center" prop="createTime">
|
<el-table-column align="center" label="创建时间" prop="createTime">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span>{{ scope.row.createTime }}</span>
|
<span>{{ scope.row.createTime }}</span>
|
||||||
</template>
|
</template>
|
||||||
@@ -77,7 +77,7 @@
|
|||||||
</el-table>
|
</el-table>
|
||||||
</el-card>
|
</el-card>
|
||||||
|
|
||||||
<el-dialog v-model="dialog.visible" :title="dialog.title" destroy-on-close append-to-bod width="750px">
|
<el-dialog v-model="dialog.visible" :title="dialog.title" append-to-bod destroy-on-close width="750px">
|
||||||
<el-form ref="menuFormRef" :model="form" :rules="rules" label-width="100px">
|
<el-form ref="menuFormRef" :model="form" :rules="rules" label-width="100px">
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
@@ -86,9 +86,9 @@
|
|||||||
v-model="form.parentId"
|
v-model="form.parentId"
|
||||||
:data="menuOptions"
|
:data="menuOptions"
|
||||||
:props="{ value: 'menuId', label: 'menuName', children: 'children' } as any"
|
:props="{ value: 'menuId', label: 'menuName', children: 'children' } as any"
|
||||||
value-key="menuId"
|
|
||||||
placeholder="选择上级菜单"
|
|
||||||
check-strictly
|
check-strictly
|
||||||
|
placeholder="选择上级菜单"
|
||||||
|
value-key="menuId"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
@@ -114,7 +114,7 @@
|
|||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="显示排序" prop="orderNum">
|
<el-form-item label="显示排序" prop="orderNum">
|
||||||
<el-input-number v-model="form.orderNum" controls-position="right" :min="0" />
|
<el-input-number v-model="form.orderNum" :min="0" controls-position="right" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col v-if="form.menuType !== 'F'" :span="12">
|
<el-col v-if="form.menuType !== 'F'" :span="12">
|
||||||
@@ -166,7 +166,7 @@
|
|||||||
</el-col>
|
</el-col>
|
||||||
<el-col v-if="form.menuType !== 'M'" :span="12">
|
<el-col v-if="form.menuType !== 'M'" :span="12">
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-input v-model="form.perms" placeholder="请输入权限标识" maxlength="100" />
|
<el-input v-model="form.perms" maxlength="100" placeholder="请输入权限标识" />
|
||||||
<template #label>
|
<template #label>
|
||||||
<span>
|
<span>
|
||||||
<el-tooltip content="控制器中定义的权限字符,如:@SaCheckPermission('system:user:list')" placement="top">
|
<el-tooltip content="控制器中定义的权限字符,如:@SaCheckPermission('system:user:list')" placement="top">
|
||||||
@@ -181,7 +181,7 @@
|
|||||||
</el-col>
|
</el-col>
|
||||||
<el-col v-if="form.menuType === 'C'" :span="12">
|
<el-col v-if="form.menuType === 'C'" :span="12">
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-input v-model="form.queryParam" placeholder="请输入路由参数" maxlength="255" />
|
<el-input v-model="form.queryParam" maxlength="255" placeholder="请输入路由参数" />
|
||||||
<template #label>
|
<template #label>
|
||||||
<span>
|
<span>
|
||||||
<el-tooltip content='访问路由的默认传递参数,如:`{"id": 1, "name": "ry"}`' placement="top">
|
<el-tooltip content='访问路由的默认传递参数,如:`{"id": 1, "name": "ry"}`' placement="top">
|
||||||
@@ -273,21 +273,21 @@
|
|||||||
</template>
|
</template>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
|
||||||
<el-dialog v-model="deleteDialog.visible" :title="deleteDialog.title" destroy-on-close append-to-bod width="750px">
|
<el-dialog v-model="deleteDialog.visible" :title="deleteDialog.title" append-to-bod destroy-on-close width="750px">
|
||||||
<el-tree
|
<el-tree
|
||||||
ref="menuTreeRef"
|
ref="menuTreeRef"
|
||||||
class="tree-border"
|
|
||||||
:data="menuOptions"
|
|
||||||
show-checkbox
|
|
||||||
node-key="menuId"
|
|
||||||
:check-strictly="false"
|
:check-strictly="false"
|
||||||
empty-text="加载中,请稍候"
|
:data="menuOptions"
|
||||||
:default-expanded-keys="[0]"
|
:default-expanded-keys="[0]"
|
||||||
:props="{ value: 'menuId', label: 'menuName', children: 'children' }"
|
:props="{ value: 'menuId', label: 'menuName', children: 'children' }"
|
||||||
|
class="tree-border"
|
||||||
|
empty-text="加载中,请稍候"
|
||||||
|
node-key="menuId"
|
||||||
|
show-checkbox
|
||||||
/>
|
/>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<div class="dialog-footer">
|
<div class="dialog-footer">
|
||||||
<el-button type="primary" @click="submitDeleteForm" :loading="deleteLoading">确 定</el-button>
|
<el-button :loading="deleteLoading" type="primary" @click="submitDeleteForm">确 定</el-button>
|
||||||
<el-button @click="cancelCascade">取 消</el-button>
|
<el-button @click="cancelCascade">取 消</el-button>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@@ -295,7 +295,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup name="Menu" lang="ts">
|
<script lang="ts" name="Menu" setup>
|
||||||
import { addMenu, cascadeDelMenu, delMenu, getMenu, listMenu, updateMenu } from '@/api/system/menu';
|
import { addMenu, cascadeDelMenu, delMenu, getMenu, listMenu, updateMenu } from '@/api/system/menu';
|
||||||
import { MenuForm, MenuQuery, MenuVO } from '@/api/system/menu/types';
|
import { MenuForm, MenuQuery, MenuVO } from '@/api/system/menu/types';
|
||||||
import { MenuTypeEnum } from '@/enums/MenuTypeEnum';
|
import { MenuTypeEnum } from '@/enums/MenuTypeEnum';
|
||||||
@@ -529,7 +529,7 @@ onMounted(() => {
|
|||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style lang="scss" scoped>
|
||||||
.tree-border {
|
.tree-border {
|
||||||
height: 300px;
|
height: 300px;
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
|
|||||||
@@ -4,12 +4,12 @@
|
|||||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||||
<div v-show="showSearch" class="mb-[10px]">
|
<div v-show="showSearch" class="mb-[10px]">
|
||||||
<el-card shadow="hover">
|
<el-card shadow="hover">
|
||||||
<el-form ref="queryFormRef" :model="queryParams" @submit.prevent="handleQuery" :inline="true">
|
<el-form ref="queryFormRef" :inline="true" :model="queryParams" @submit.prevent="handleQuery">
|
||||||
<el-form-item label="公告标题" prop="noticeTitle">
|
<el-form-item label="公告标题" prop="noticeTitle">
|
||||||
<el-input v-model="queryParams.noticeTitle" placeholder="请输入公告标题" clearable @keyup.enter="handleQuery" />
|
<el-input v-model="queryParams.noticeTitle" clearable placeholder="请输入公告标题" @keyup.enter="handleQuery" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="类型" prop="noticeType">
|
<el-form-item label="类型" prop="noticeType">
|
||||||
<el-select v-model="queryParams.noticeType" placeholder="公告类型" clearable>
|
<el-select v-model="queryParams.noticeType" clearable placeholder="公告类型">
|
||||||
<el-option v-for="dict in sys_notice_type" :key="dict.value" :label="dict.label" :value="dict.value" />
|
<el-option v-for="dict in sys_notice_type" :key="dict.value" :label="dict.label" :value="dict.value" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@@ -22,15 +22,15 @@
|
|||||||
</div>
|
</div>
|
||||||
</transition>
|
</transition>
|
||||||
|
|
||||||
<el-card shadow="hover" class="flex-1">
|
<el-card class="flex-1" shadow="hover">
|
||||||
<template #header>
|
<template #header>
|
||||||
<el-row :gutter="10" class="mb8">
|
<el-row :gutter="10" class="mb8">
|
||||||
<right-toolbar
|
<right-toolbar
|
||||||
:disable-delete="multiple"
|
:disable-delete="multiple"
|
||||||
:disable-edit="single"
|
:disable-edit="single"
|
||||||
:show-add="checkPermi(['system:notice:add'])"
|
:show-add="checkPermi(['system:notice:add'])"
|
||||||
:show-edit="false"
|
:show-delete="checkPermi(['system:notice:remove'])"
|
||||||
:show-delete="false"
|
:show-edit="checkPermi(['system:notice:edit'])"
|
||||||
@update:add="handleAdd"
|
@update:add="handleAdd"
|
||||||
@update:edit="handleUpdate()"
|
@update:edit="handleUpdate()"
|
||||||
@update:delete="handleDelete()"
|
@update:delete="handleDelete()"
|
||||||
@@ -39,47 +39,47 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<el-table
|
<el-table
|
||||||
:default-sort="{ prop: 'createTime', order: 'descending' }"
|
|
||||||
v-loading="loading"
|
v-loading="loading"
|
||||||
border
|
|
||||||
:data="noticeList"
|
:data="noticeList"
|
||||||
|
:default-sort="{ prop: 'createTime', order: 'descending' }"
|
||||||
|
border
|
||||||
@selection-change="handleSelectionChange"
|
@selection-change="handleSelectionChange"
|
||||||
>
|
>
|
||||||
<el-table-column type="selection" width="55" align="center" />
|
<el-table-column align="center" type="selection" width="55" />
|
||||||
<el-table-column v-if="false" label="序号" align="center" prop="noticeId" width="100" />
|
<el-table-column v-if="false" align="center" label="序号" prop="noticeId" width="100" />
|
||||||
<el-table-column label="公告标题" align="center" prop="noticeTitle" width="300" :show-overflow-tooltip="true" />
|
<el-table-column :show-overflow-tooltip="true" align="center" label="公告标题" prop="noticeTitle" width="300" />
|
||||||
<el-table-column label="内容" align="center" prop="noticeContent">
|
<el-table-column align="center" label="内容" prop="noticeContent">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<div v-html="scope.row.noticeContent" class="noticeBox"></div>
|
<div class="noticeBox" v-html="scope.row.noticeContent"></div>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="公告类型" align="center" prop="noticeType" width="100">
|
<el-table-column align="center" label="公告类型" prop="noticeType" width="100">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<dict-tag :options="sys_notice_type" :value="scope.row.noticeType" />
|
<dict-tag :options="sys_notice_type" :value="scope.row.noticeType" />
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="状态" align="center" prop="status" width="100">
|
<el-table-column align="center" label="状态" prop="status" width="100">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<dict-tag :options="sys_notice_status" :value="scope.row.status" />
|
<dict-tag :options="sys_notice_status" :value="scope.row.status" />
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="创建时间" sortable align="center" prop="createTime">
|
<el-table-column align="center" label="创建时间" prop="createTime" sortable>
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span>{{ scope.row.createTime }}</span>
|
<span>{{ scope.row.createTime }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="操作" align="center">
|
<el-table-column align="center" label="操作">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button v-has-permi="['system:notice:edit']" link type="primary" icon="Edit" @click="handleUpdate(scope.row)">修改</el-button>
|
<el-button v-has-permi="['system:notice:edit']" icon="Edit" link type="primary" @click="handleUpdate(scope.row)">修改</el-button>
|
||||||
<el-button v-has-permi="['system:notice:remove']" link type="primary" icon="Delete" @click="handleDelete(scope.row)">删除</el-button>
|
<el-button v-has-permi="['system:notice:remove']" icon="Delete" link type="primary" @click="handleDelete(scope.row)">删除</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
|
|
||||||
<pagination v-show="total > 0" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" :total="total" @pagination="getList" />
|
<pagination v-show="total > 0" v-model:limit="queryParams.pageSize" v-model:page="queryParams.pageNum" :total="total" @pagination="getList" />
|
||||||
</el-card>
|
</el-card>
|
||||||
<!-- 添加或修改公告对话框 -->
|
<!-- 添加或修改公告对话框 -->
|
||||||
<el-dialog v-model="dialog.visible" :title="dialog.title" width="780px" append-to-body>
|
<el-dialog v-model="dialog.visible" :title="dialog.title" append-to-body width="780px">
|
||||||
<el-form ref="noticeFormRef" :model="form" :rules="rules" label-width="80px">
|
<el-form ref="noticeFormRef" :model="form" :rules="rules" label-width="80px">
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
@@ -118,7 +118,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup name="Notice" lang="ts">
|
<script lang="ts" name="Notice" setup>
|
||||||
import { listNotice, getNotice, delNotice, addNotice, updateNotice } from '@/api/system/notice';
|
import { listNotice, getNotice, delNotice, addNotice, updateNotice } from '@/api/system/notice';
|
||||||
import { NoticeForm, NoticeQuery, NoticeVO } from '@/api/system/notice/types';
|
import { NoticeForm, NoticeQuery, NoticeVO } from '@/api/system/notice/types';
|
||||||
import { checkPermi } from '@/utils/permission';
|
import { checkPermi } from '@/utils/permission';
|
||||||
|
|||||||
@@ -2,10 +2,10 @@
|
|||||||
<div class="p-2 h-full flex flex-col">
|
<div class="p-2 h-full flex flex-col">
|
||||||
<pageHeader></pageHeader>
|
<pageHeader></pageHeader>
|
||||||
<el-card shadow="hover">
|
<el-card shadow="hover">
|
||||||
<el-form ref="queryFormRef" label-width="140" :rules="formRules" :model="queryParams" @submit.prevent="handleQuery" :inline="true">
|
<el-form ref="queryFormRef" :inline="true" :model="queryParams" :rules="formRules" label-width="140" @submit.prevent="handleQuery">
|
||||||
<div>
|
<div>
|
||||||
<el-form-item label="区域(多选)" prop="villageIds">
|
<el-form-item label="小区(多选)" prop="villageIds">
|
||||||
<el-select v-model="queryParams.villageIds" :multiple="true" placeholder="请选择区域">
|
<el-select v-model="queryParams.villageIds" :multiple="true" placeholder="请选择小区">
|
||||||
<el-option v-for="item in villageList" :key="item.villageId" :label="item.villageName" :value="item.villageId" />
|
<el-option v-for="item in villageList" :key="item.villageId" :label="item.villageName" :value="item.villageId" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@@ -13,7 +13,7 @@
|
|||||||
<el-input v-model.trim="queryParams.lessee" placeholder="请输入承租方" />
|
<el-input v-model.trim="queryParams.lessee" placeholder="请输入承租方" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="电话" prop="phone">
|
<el-form-item label="电话" prop="phone">
|
||||||
<el-input type="tel" v-model.trim="queryParams.phone" placeholder="请输入电话" />
|
<el-input v-model.trim="queryParams.phone" placeholder="请输入电话" type="tel" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="房号" prop="roomNumber">
|
<el-form-item label="房号" prop="roomNumber">
|
||||||
<el-input v-model.trim="queryParams.roomNumber" placeholder="请输入房号" />
|
<el-input v-model.trim="queryParams.roomNumber" placeholder="请输入房号" />
|
||||||
@@ -28,37 +28,37 @@
|
|||||||
<el-input v-model.trim="queryParams.areaSize" placeholder="请输入面积区间" />
|
<el-input v-model.trim="queryParams.areaSize" placeholder="请输入面积区间" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="收费模式(多选)" prop="chargeModes" style="margin-bottom: 0">
|
<el-form-item label="收费模式(多选)" prop="chargeModes" style="margin-bottom: 0">
|
||||||
<el-select v-model="queryParams.chargeModes" placeholder="请选择收费模式" :multiple="true">
|
<el-select v-model="queryParams.chargeModes" :multiple="true" placeholder="请选择收费模式">
|
||||||
<el-option v-for="item in com_house_rental_pricing_model" :key="item.value" :label="item.label" :value="item.value" />
|
<el-option v-for="item in com_house_rental_pricing_model" :key="item.value" :label="item.label" :value="item.value" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="收费标准(多选)" prop="chargeStandards" style="margin-bottom: 0">
|
<el-form-item label="收费标准(多选)" prop="chargeStandards" style="margin-bottom: 0">
|
||||||
<el-select v-model="queryParams.chargeStandards" placeholder="请选择收费标准" :multiple="true">
|
<el-select v-model="queryParams.chargeStandards" :multiple="true" placeholder="请选择收费标准">
|
||||||
<el-option v-for="item in com_house_rental_pricing" :key="item.value" :label="item.label" :value="item.value" />
|
<el-option v-for="item in com_house_rental_pricing" :key="item.value" :label="item.label" :value="item.value" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</div>
|
</div>
|
||||||
<div class="line" v-if="queryParams.chargeTypeFilters.length > 0"></div>
|
<div v-if="queryParams.chargeTypeFilters.length > 0" class="line"></div>
|
||||||
|
|
||||||
<el-scrollbar>
|
<el-scrollbar>
|
||||||
<div style="width: fit-content">
|
<div style="width: fit-content">
|
||||||
<!-- 搜索条件: 应收/已收/未收 ▐╬╬-->
|
<!-- 搜索条件: 应收/已收/未收 ▐╬╬-->
|
||||||
<div class="queryBox_over">
|
<div class="queryBox_over">
|
||||||
<el-form-item
|
<el-form-item
|
||||||
:label="`${item.chargeTypeName}(应收)`"
|
|
||||||
:prop="`chargeTypeFilters[${index}].receivable`"
|
|
||||||
v-for="(item, index) in queryParams.chargeTypeFilters"
|
v-for="(item, index) in queryParams.chargeTypeFilters"
|
||||||
:key="index"
|
:key="index"
|
||||||
|
:label="`${item.chargeTypeName}(应收)`"
|
||||||
|
:prop="`chargeTypeFilters[${index}].receivable`"
|
||||||
>
|
>
|
||||||
<el-input v-model.trim="queryParams.chargeTypeFilters[index].receivable" placeholder="区间搜索 示例:100-2000" />
|
<el-input v-model.trim="queryParams.chargeTypeFilters[index].receivable" placeholder="区间搜索 示例:100-2000" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</div>
|
</div>
|
||||||
<div class="queryBox_over">
|
<div class="queryBox_over">
|
||||||
<el-form-item
|
<el-form-item
|
||||||
:label="`${item.chargeTypeName}(已收)`"
|
|
||||||
:prop="`chargeTypeFilters[${index}].received`"
|
|
||||||
v-for="(item, index) in queryParams.chargeTypeFilters"
|
v-for="(item, index) in queryParams.chargeTypeFilters"
|
||||||
:key="index"
|
:key="index"
|
||||||
|
:label="`${item.chargeTypeName}(已收)`"
|
||||||
|
:prop="`chargeTypeFilters[${index}].received`"
|
||||||
>
|
>
|
||||||
<el-input v-model.trim="queryParams.chargeTypeFilters[index].received" placeholder="区间搜索 示例:100-2000" />
|
<el-input v-model.trim="queryParams.chargeTypeFilters[index].received" placeholder="区间搜索 示例:100-2000" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@@ -66,10 +66,10 @@
|
|||||||
<div class="queryBox_over">
|
<div class="queryBox_over">
|
||||||
<el-form-item
|
<el-form-item
|
||||||
v-for="(item, index) in [...queryParams.chargeTypeFilters]"
|
v-for="(item, index) in [...queryParams.chargeTypeFilters]"
|
||||||
style="margin-bottom: 0"
|
|
||||||
:label="`${item.chargeTypeName}(未收)`"
|
|
||||||
:key="index"
|
:key="index"
|
||||||
|
:label="`${item.chargeTypeName}(未收)`"
|
||||||
:prop="`chargeTypeFilters[${index}].uncollected`"
|
:prop="`chargeTypeFilters[${index}].uncollected`"
|
||||||
|
style="margin-bottom: 0"
|
||||||
>
|
>
|
||||||
<el-input v-model.trim="queryParams.chargeTypeFilters[index].uncollected" placeholder="区间搜索 示例:100-2000" />
|
<el-input v-model.trim="queryParams.chargeTypeFilters[index].uncollected" placeholder="区间搜索 示例:100-2000" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@@ -83,29 +83,29 @@
|
|||||||
<el-form-item label="租赁起始日期" prop="leaseStartDate">
|
<el-form-item label="租赁起始日期" prop="leaseStartDate">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="leaseStartDate"
|
v-model="leaseStartDate"
|
||||||
type="daterange"
|
end-placeholder="结束日期"
|
||||||
|
format="YYYY-MM-DD"
|
||||||
|
placeholder="请选择"
|
||||||
range-separator="至"
|
range-separator="至"
|
||||||
start-placeholder="开始日期"
|
start-placeholder="开始日期"
|
||||||
end-placeholder="结束日期"
|
type="daterange"
|
||||||
|
value-format="YYYY-MM-DD"
|
||||||
@clear="handleClear('leaseStartDate')"
|
@clear="handleClear('leaseStartDate')"
|
||||||
@update:model-value="(val: string[]) => handleUpdateLeaseDate('leaseStartDate', val)"
|
@update:model-value="(val: string[]) => handleUpdateLeaseDate('leaseStartDate', val)"
|
||||||
format="YYYY-MM-DD"
|
|
||||||
value-format="YYYY-MM-DD"
|
|
||||||
placeholder="请选择"
|
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="租赁终止日期" prop="leaseEndDate">
|
<el-form-item label="租赁终止日期" prop="leaseEndDate">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="leaseEndDate"
|
v-model="leaseEndDate"
|
||||||
type="daterange"
|
|
||||||
range-separator="至"
|
|
||||||
start-placeholder="开始日期"
|
|
||||||
end-placeholder="结束日期"
|
end-placeholder="结束日期"
|
||||||
format="YYYY-MM-DD"
|
format="YYYY-MM-DD"
|
||||||
|
placeholder="请选择"
|
||||||
|
range-separator="至"
|
||||||
|
start-placeholder="开始日期"
|
||||||
|
type="daterange"
|
||||||
value-format="YYYY-MM-DD"
|
value-format="YYYY-MM-DD"
|
||||||
@clear="handleClear('leaseEndDate')"
|
@clear="handleClear('leaseEndDate')"
|
||||||
@update:model-value="(val: string[]) => handleUpdateLeaseDate('leaseEndDate', val)"
|
@update:model-value="(val: string[]) => handleUpdateLeaseDate('leaseEndDate', val)"
|
||||||
placeholder="请选择"
|
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</div>
|
</div>
|
||||||
@@ -113,11 +113,11 @@
|
|||||||
<el-form-item label="">
|
<el-form-item label="">
|
||||||
<el-button type="primary" @click="handleQuery">查询</el-button>
|
<el-button type="primary" @click="handleQuery">查询</el-button>
|
||||||
<el-button @click="resetQuery">重置</el-button>
|
<el-button @click="resetQuery">重置</el-button>
|
||||||
<div class="arrowBox" style="margin-left: 10px" v-if="showSearch" @click="ChangeShowSearch(false)">
|
<div v-if="showSearch" class="arrowBox" style="margin-left: 10px" @click="ChangeShowSearch(false)">
|
||||||
<span>收起</span>
|
<span>收起</span>
|
||||||
<el-icon style="margin-left: 5px"><ArrowUpBold /></el-icon>
|
<el-icon style="margin-left: 5px"><ArrowUpBold /></el-icon>
|
||||||
</div>
|
</div>
|
||||||
<div class="arrowBox" style="margin-left: 10px" v-else @click="ChangeShowSearch(true)">
|
<div v-else class="arrowBox" style="margin-left: 10px" @click="ChangeShowSearch(true)">
|
||||||
<span>展开</span>
|
<span>展开</span>
|
||||||
<el-icon style="margin-left: 5px"><ArrowDownBold /></el-icon>
|
<el-icon style="margin-left: 5px"><ArrowDownBold /></el-icon>
|
||||||
</div>
|
</div>
|
||||||
@@ -131,11 +131,11 @@
|
|||||||
<el-form-item label="">
|
<el-form-item label="">
|
||||||
<el-button type="primary" @click="handleQuery">查询</el-button>
|
<el-button type="primary" @click="handleQuery">查询</el-button>
|
||||||
<el-button @click="resetQuery">重置</el-button>
|
<el-button @click="resetQuery">重置</el-button>
|
||||||
<div class="arrowBox" style="margin-left: 10px" v-if="showSearch" @click="ChangeShowSearch(false)">
|
<div v-if="showSearch" class="arrowBox" style="margin-left: 10px" @click="ChangeShowSearch(false)">
|
||||||
<span>收起</span>
|
<span>收起</span>
|
||||||
<el-icon style="margin-left: 5px"><ArrowUpBold /></el-icon>
|
<el-icon style="margin-left: 5px"><ArrowUpBold /></el-icon>
|
||||||
</div>
|
</div>
|
||||||
<div class="arrowBox" style="margin-left: 10px" v-else @click="ChangeShowSearch(true)">
|
<div v-else class="arrowBox" style="margin-left: 10px" @click="ChangeShowSearch(true)">
|
||||||
<span>展开</span>
|
<span>展开</span>
|
||||||
<el-icon style="margin-left: 5px"><ArrowDownBold /></el-icon>
|
<el-icon style="margin-left: 5px"><ArrowDownBold /></el-icon>
|
||||||
</div>
|
</div>
|
||||||
@@ -143,7 +143,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</el-form>
|
</el-form>
|
||||||
</el-card>
|
</el-card>
|
||||||
<el-card shadow="never" class="flex-1" style="margin-top: 5px">
|
<el-card class="flex-1" shadow="never" style="margin-top: 5px">
|
||||||
<template #header>
|
<template #header>
|
||||||
<el-row :gutter="10" class="mb8">
|
<el-row :gutter="10" class="mb8">
|
||||||
<el-col :span="5">
|
<el-col :span="5">
|
||||||
@@ -155,17 +155,17 @@
|
|||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
</template>
|
</template>
|
||||||
<el-table v-loading="loading" border :data="ArrearsDetailList">
|
<el-table v-loading="loading" :data="ArrearsDetailList" border>
|
||||||
<el-table-column label="区域" align="center" prop="area" />
|
<el-table-column align="center" label="区域" prop="area" />
|
||||||
<el-table-column label="承租方" align="center" prop="lessee" />
|
<el-table-column align="center" label="承租方" prop="lessee" />
|
||||||
<el-table-column label="电话" width="120" align="center" prop="phone" />
|
<el-table-column align="center" label="电话" prop="phone" width="120" />
|
||||||
<el-table-column label="房号" align="center" prop="roomNumber" />
|
<el-table-column align="center" label="房号" prop="roomNumber" />
|
||||||
<el-table-column label="面积" width="80" align="center" prop="areaSize" />
|
<el-table-column align="center" label="面积" prop="areaSize" width="80" />
|
||||||
<el-table-column label="收费模式" align="center" prop="chargeMode" />
|
<el-table-column align="center" label="收费模式" prop="chargeMode" />
|
||||||
<el-table-column label="收费标准" align="center" prop="chargeStandard" />
|
<el-table-column align="center" label="收费标准" prop="chargeStandard" />
|
||||||
<el-table-column label="租赁起始日" align="center" prop="leaseStartDate" />
|
<el-table-column align="center" label="租赁起始日" prop="leaseStartDate" />
|
||||||
<el-table-column label="租赁终止日" align="center" prop="leaseEndDate" />
|
<el-table-column align="center" label="租赁终止日" prop="leaseEndDate" />
|
||||||
<el-table-column label="应收项目" align="center">
|
<el-table-column align="center" label="应收项目">
|
||||||
<template #default>
|
<template #default>
|
||||||
<el-table-column v-for="(item, index) in dynamicColumns" :key="index" :label="item.chargeTypeName" align="center" prop="totalAmount">
|
<el-table-column v-for="(item, index) in dynamicColumns" :key="index" :label="item.chargeTypeName" align="center" prop="totalAmount">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
@@ -174,7 +174,7 @@
|
|||||||
</el-table-column>
|
</el-table-column>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="已收项目" align="center">
|
<el-table-column align="center" label="已收项目">
|
||||||
<template #default>
|
<template #default>
|
||||||
<el-table-column v-for="(item, index) in dynamicColumns" :key="index" :label="item.chargeTypeName" align="center" prop="totalAmount">
|
<el-table-column v-for="(item, index) in dynamicColumns" :key="index" :label="item.chargeTypeName" align="center" prop="totalAmount">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
@@ -183,7 +183,7 @@
|
|||||||
</el-table-column>
|
</el-table-column>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="未收项目" align="center">
|
<el-table-column align="center" label="未收项目">
|
||||||
<template #default>
|
<template #default>
|
||||||
<el-table-column v-for="(item, index) in dynamicColumns" :key="index" :label="item.chargeTypeName" align="center" prop="totalAmount">
|
<el-table-column v-for="(item, index) in dynamicColumns" :key="index" :label="item.chargeTypeName" align="center" prop="totalAmount">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
@@ -193,11 +193,11 @@
|
|||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</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" v-model:limit="queryParams.pageSize" v-model:page="queryParams.pageNum" :total="total" @pagination="getList" />
|
||||||
</el-card>
|
</el-card>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script setup name="Arrears" lang="ts">
|
<script lang="ts" name="Arrears" setup>
|
||||||
import pagination from '@/components/Pagination/index.vue';
|
import pagination from '@/components/Pagination/index.vue';
|
||||||
import pageHeader from '@/components/Pageheader/index.vue';
|
import pageHeader from '@/components/Pageheader/index.vue';
|
||||||
import { getCommunitylistAPI } from '@/api/system/community';
|
import { getCommunitylistAPI } from '@/api/system/community';
|
||||||
|
|||||||
@@ -4,10 +4,10 @@
|
|||||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||||
<div v-show="showSearch" class="mb-[10px]">
|
<div v-show="showSearch" class="mb-[10px]">
|
||||||
<el-card shadow="hover">
|
<el-card shadow="hover">
|
||||||
<el-form ref="queryFormRef" :model="queryParams" @submit.prevent="handleQuery" :inline="true">
|
<el-form ref="queryFormRef" :inline="true" :model="queryParams" @submit.prevent="handleQuery">
|
||||||
<div class="flex justify-between">
|
<div class="flex justify-between">
|
||||||
<div>
|
<div>
|
||||||
<el-form-item label="区域" prop="villageId">
|
<el-form-item label="小区" prop="villageId">
|
||||||
<el-select v-model="queryParams.villageId" placeholder="请选择">
|
<el-select v-model="queryParams.villageId" placeholder="请选择">
|
||||||
<el-option v-for="item in villageList" :key="item.villageId" :label="item.villageName" :value="item.villageId" />
|
<el-option v-for="item in villageList" :key="item.villageId" :label="item.villageName" :value="item.villageId" />
|
||||||
</el-select>
|
</el-select>
|
||||||
@@ -20,13 +20,13 @@
|
|||||||
<el-form-item label="查询日期">
|
<el-form-item label="查询日期">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="queryTime"
|
v-model="queryTime"
|
||||||
|
end-placeholder="结束日期"
|
||||||
|
format="YYYY-MM"
|
||||||
range-separator="至"
|
range-separator="至"
|
||||||
start-placeholder="开始日期"
|
start-placeholder="开始日期"
|
||||||
end-placeholder="结束日期"
|
|
||||||
@update:model-value="handleQueryTime"
|
|
||||||
format="YYYY-MM"
|
|
||||||
type="monthrange"
|
type="monthrange"
|
||||||
value-format="YYYY-MM"
|
value-format="YYYY-MM"
|
||||||
|
@update:model-value="handleQueryTime"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</div>
|
</div>
|
||||||
@@ -40,7 +40,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</transition>
|
</transition>
|
||||||
|
|
||||||
<el-card shadow="never" class="flex-1">
|
<el-card class="flex-1" shadow="never">
|
||||||
<template #header>
|
<template #header>
|
||||||
<el-row :gutter="10" class="mb8">
|
<el-row :gutter="10" class="mb8">
|
||||||
<el-col :span="5">
|
<el-col :span="5">
|
||||||
@@ -51,7 +51,7 @@
|
|||||||
</el-row>
|
</el-row>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<el-table v-loading="loading" border :data="chargeTrendList">
|
<el-table v-loading="loading" :data="chargeTrendList" border>
|
||||||
<el-table-column v-for="(item, index) in rows" :key="index" :label="item" align="center">
|
<el-table-column v-for="(item, index) in rows" :key="index" :label="item" align="center">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span>{{ scope.row[item] }}</span>
|
<span>{{ scope.row[item] }}</span>
|
||||||
@@ -61,11 +61,11 @@
|
|||||||
<div class="echartsBox" style="flex: 1">
|
<div class="echartsBox" style="flex: 1">
|
||||||
<Echarts :options="chartConfig" />
|
<Echarts :options="chartConfig" />
|
||||||
</div>
|
</div>
|
||||||
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" />
|
<pagination v-show="total > 0" v-model:limit="queryParams.pageSize" v-model:page="queryParams.pageNum" :total="total" @pagination="getList" />
|
||||||
</el-card>
|
</el-card>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script setup name="Arrears" lang="ts">
|
<script lang="ts" name="Arrears" setup>
|
||||||
import pagination from '@/components/Pagination/index.vue';
|
import pagination from '@/components/Pagination/index.vue';
|
||||||
import pageHeader from '@/components/Pageheader/index.vue';
|
import pageHeader from '@/components/Pageheader/index.vue';
|
||||||
import { getArrearsDetails } from '@/api/system/report/arrears/arrears';
|
import { getArrearsDetails } from '@/api/system/report/arrears/arrears';
|
||||||
|
|||||||
@@ -4,10 +4,10 @@
|
|||||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||||
<div v-show="showSearch" class="mb-[10px]">
|
<div v-show="showSearch" class="mb-[10px]">
|
||||||
<el-card shadow="hover">
|
<el-card shadow="hover">
|
||||||
<el-form ref="queryFormRef" :model="queryParams" @submit.prevent="handleQuery" :inline="true">
|
<el-form ref="queryFormRef" :inline="true" :model="queryParams" @submit.prevent="handleQuery">
|
||||||
<div class="flex justify-between">
|
<div class="flex justify-between">
|
||||||
<div>
|
<div>
|
||||||
<el-form-item label="项目" prop="chargeItemId">
|
<el-form-item label="小区" prop="chargeItemId">
|
||||||
<el-select v-model="queryParams.villageId" placeholder="请选择">
|
<el-select v-model="queryParams.villageId" placeholder="请选择">
|
||||||
<el-option v-for="item in villageList" :key="item.villageId" :label="item.villageName" :value="item.villageId" />
|
<el-option v-for="item in villageList" :key="item.villageId" :label="item.villageName" :value="item.villageId" />
|
||||||
</el-select>
|
</el-select>
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</transition>
|
</transition>
|
||||||
|
|
||||||
<el-card shadow="never" class="flex-1">
|
<el-card class="flex-1" shadow="never">
|
||||||
<template #header>
|
<template #header>
|
||||||
<el-row :gutter="10" class="mb8">
|
<el-row :gutter="10" class="mb8">
|
||||||
<el-col :span="5">
|
<el-col :span="5">
|
||||||
@@ -46,10 +46,10 @@
|
|||||||
</el-row>
|
</el-row>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<el-table v-loading="loading" border :data="ArrearsDetailList">
|
<el-table v-loading="loading" :data="ArrearsDetailList" border>
|
||||||
<el-table-column label="小区名称" align="center" prop="name" />
|
<el-table-column align="center" label="小区名称" prop="name" />
|
||||||
<el-table-column label="房屋类型" align="center" prop="name" />
|
<el-table-column align="center" label="房屋类型" prop="name" />
|
||||||
<el-table-column label="收费项目" align="center" prop="name">
|
<el-table-column align="center" label="收费项目" prop="name">
|
||||||
<template #default>
|
<template #default>
|
||||||
<template v-for="(item, index) in rowChargeTypesList" :key="index">
|
<template v-for="(item, index) in rowChargeTypesList" :key="index">
|
||||||
<el-table-column :label="item" align="center">
|
<el-table-column :label="item" align="center">
|
||||||
@@ -60,14 +60,14 @@
|
|||||||
</template>
|
</template>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="合计" align="center" prop="total" />
|
<el-table-column align="center" label="合计" prop="total" />
|
||||||
</el-table>
|
</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" v-model:limit="queryParams.pageSize" v-model:page="queryParams.pageNum" :total="total" @pagination="getList" />
|
||||||
</el-card>
|
</el-card>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
账龄
|
账龄
|
||||||
<script setup lang="ts">
|
<script lang="ts" setup>
|
||||||
import pagination from '@/components/Pagination/index.vue';
|
import pagination from '@/components/Pagination/index.vue';
|
||||||
import pageHeader from '@/components/Pageheader/index.vue';
|
import pageHeader from '@/components/Pageheader/index.vue';
|
||||||
import { getCommunitylistAPI } from '@/api/system/community';
|
import { getCommunitylistAPI } from '@/api/system/community';
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||||
<div v-show="showSearch" class="mb-[10px]">
|
<div v-show="showSearch" class="mb-[10px]">
|
||||||
<el-card shadow="hover">
|
<el-card shadow="hover">
|
||||||
<el-form ref="queryFormRef" :model="queryParams" @submit.prevent="handleQuery" :inline="true">
|
<el-form ref="queryFormRef" :inline="true" :model="queryParams" @submit.prevent="handleQuery">
|
||||||
<el-form-item label="营业日期" prop="dateScope">
|
<el-form-item label="营业日期" prop="dateScope">
|
||||||
<el-select v-model="queryParams.dateScope" placeholder="请选择">
|
<el-select v-model="queryParams.dateScope" placeholder="请选择">
|
||||||
<el-option v-for="item in [...com_business_date]" :key="item.value" :label="item.label" :value="item.value" />
|
<el-option v-for="item in [...com_business_date]" :key="item.value" :label="item.label" :value="item.value" />
|
||||||
@@ -15,7 +15,7 @@
|
|||||||
<el-option v-for="item in villageList" :key="item.villageId" :label="item.villageName" :value="item.villageId" />
|
<el-option v-for="item in villageList" :key="item.villageId" :label="item.villageName" :value="item.villageId" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="小区" prop="villageId">
|
<el-form-item label="">
|
||||||
<el-button type="primary" @click="handleQuery">搜索</el-button>
|
<el-button type="primary" @click="handleQuery">搜索</el-button>
|
||||||
<el-button @click="resetQuery">重置</el-button>
|
<el-button @click="resetQuery">重置</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@@ -23,11 +23,11 @@
|
|||||||
</el-card>
|
</el-card>
|
||||||
</div>
|
</div>
|
||||||
</transition>
|
</transition>
|
||||||
<el-card shadow="never" class="flex-1">
|
<el-card class="flex-1" shadow="never">
|
||||||
<template #header>
|
<template #header>
|
||||||
<el-row :gutter="10" class="mb8">
|
<el-row :gutter="10" class="mb8">
|
||||||
<el-col :span="4">
|
<el-col :span="4">
|
||||||
<el-tabs @tab-change="handleTabClick" v-model="activeName" class="demo-tabs">
|
<el-tabs v-model="activeName" class="demo-tabs" @tab-change="handleTabClick">
|
||||||
<el-tab-pane label="按小区统计" name="first"> </el-tab-pane>
|
<el-tab-pane label="按小区统计" name="first"> </el-tab-pane>
|
||||||
<el-tab-pane label="按收费项目统计" name="fourth"></el-tab-pane>
|
<el-tab-pane label="按收费项目统计" name="fourth"></el-tab-pane>
|
||||||
</el-tabs>
|
</el-tabs>
|
||||||
@@ -38,22 +38,22 @@
|
|||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
</template>
|
</template>
|
||||||
<el-table v-loading="loading" border :data="AgingList">
|
<el-table v-loading="loading" :data="AgingList" border>
|
||||||
<el-table-column v-if="activeName === 'first'" label="小区名称" align="center" prop="villageName" />
|
<el-table-column v-if="activeName === 'first'" align="center" label="小区名称" prop="villageName" />
|
||||||
<el-table-column v-else label="收费项目" align="center" prop="chargeItemName" />
|
<el-table-column v-else align="center" label="收费项目" prop="chargeItemName" />
|
||||||
<el-table-column v-for="(item, index) in rows" :key="index" :label="item.payTypeName" align="center">
|
<el-table-column v-for="(item, index) in rows" :key="index" :label="item.payTypeName" align="center">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
{{ scope.row.payAmounts[item.payType] }}
|
{{ scope.row.payAmounts[item.payType] }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="合计" align="center" prop="totalAmount" />
|
<el-table-column align="center" label="合计" prop="totalAmount" />
|
||||||
</el-table>
|
</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" v-model:limit="queryParams.pageSize" v-model:page="queryParams.pageNum" :total="total" @pagination="getList" />
|
||||||
</el-card>
|
</el-card>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup name="Arrears" lang="ts">
|
<script lang="ts" name="Arrears" setup>
|
||||||
import pagination from '@/components/Pagination/index.vue';
|
import pagination from '@/components/Pagination/index.vue';
|
||||||
import pageHeader from '@/components/Pageheader/index.vue';
|
import pageHeader from '@/components/Pageheader/index.vue';
|
||||||
import { getCommunitylistAPI } from '@/api/system/community';
|
import { getCommunitylistAPI } from '@/api/system/community';
|
||||||
@@ -111,7 +111,7 @@ const getList = async () => {
|
|||||||
rows.value = res.payTypes;
|
rows.value = res.payTypes;
|
||||||
if (res.rows.length > 0) {
|
if (res.rows.length > 0) {
|
||||||
AgingList.value = [...res.rows, res.summary];
|
AgingList.value = [...res.rows, res.summary];
|
||||||
}else{
|
} else {
|
||||||
AgingList.value = [];
|
AgingList.value = [];
|
||||||
}
|
}
|
||||||
total.value = res.total;
|
total.value = res.total;
|
||||||
@@ -163,7 +163,7 @@ const exportData = () => {
|
|||||||
proxy?.download(
|
proxy?.download(
|
||||||
'/businessDailyReport/village/export',
|
'/businessDailyReport/village/export',
|
||||||
{
|
{
|
||||||
...search,
|
...search
|
||||||
// pageNum: undefined,
|
// pageNum: undefined,
|
||||||
// pageSize: undefined
|
// pageSize: undefined
|
||||||
},
|
},
|
||||||
@@ -173,7 +173,7 @@ const exportData = () => {
|
|||||||
proxy?.download(
|
proxy?.download(
|
||||||
'/businessDailyReport/chargeItem/export',
|
'/businessDailyReport/chargeItem/export',
|
||||||
{
|
{
|
||||||
...search,
|
...search
|
||||||
// pageNum: undefined,
|
// pageNum: undefined,
|
||||||
// pageSize: undefined
|
// pageSize: undefined
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -4,10 +4,10 @@
|
|||||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||||
<div v-show="showSearch" class="mb-[10px]">
|
<div v-show="showSearch" class="mb-[10px]">
|
||||||
<el-card shadow="hover">
|
<el-card shadow="hover">
|
||||||
<el-form ref="queryFormRef" :model="queryParams" @submit.prevent="handleQuery" :inline="true">
|
<el-form ref="queryFormRef" :inline="true" :model="queryParams" @submit.prevent="handleQuery">
|
||||||
<div class="flex justify-between">
|
<div class="flex justify-between">
|
||||||
<div>
|
<div>
|
||||||
<el-form-item label="区域" prop="villageId">
|
<el-form-item label="小区" prop="villageId">
|
||||||
<el-select v-model="queryParams.villageId" placeholder="请选择">
|
<el-select v-model="queryParams.villageId" placeholder="请选择">
|
||||||
<el-option v-for="item in villageList" :key="item.villageId" :label="item.villageName" :value="item.villageId" />
|
<el-option v-for="item in villageList" :key="item.villageId" :label="item.villageName" :value="item.villageId" />
|
||||||
</el-select>
|
</el-select>
|
||||||
@@ -20,14 +20,14 @@
|
|||||||
<el-form-item label="查询日期">
|
<el-form-item label="查询日期">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="queryTime"
|
v-model="queryTime"
|
||||||
|
end-placeholder="结束日期"
|
||||||
|
format="YYYY-MM"
|
||||||
|
placeholder="请选择日期"
|
||||||
range-separator="至"
|
range-separator="至"
|
||||||
start-placeholder="开始日期"
|
start-placeholder="开始日期"
|
||||||
end-placeholder="结束日期"
|
|
||||||
@update:model-value="handleQueryTime"
|
|
||||||
format="YYYY-MM"
|
|
||||||
type="monthrange"
|
type="monthrange"
|
||||||
value-format="YYYY-MM"
|
value-format="YYYY-MM"
|
||||||
placeholder="请选择日期"
|
@update:model-value="handleQueryTime"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</div>
|
</div>
|
||||||
@@ -41,7 +41,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</transition>
|
</transition>
|
||||||
|
|
||||||
<el-card shadow="never" class="flex-1">
|
<el-card class="flex-1" shadow="never">
|
||||||
<template #header>
|
<template #header>
|
||||||
<el-row :gutter="10" class="mb8">
|
<el-row :gutter="10" class="mb8">
|
||||||
<el-col :span="5">
|
<el-col :span="5">
|
||||||
@@ -52,7 +52,7 @@
|
|||||||
</el-row>
|
</el-row>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<el-table v-loading="loading" border :data="chargeTrendList">
|
<el-table v-loading="loading" :data="chargeTrendList" border>
|
||||||
<el-table-column v-for="(item, index) in rows" :key="index" :label="item" align="center">
|
<el-table-column v-for="(item, index) in rows" :key="index" :label="item" align="center">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span>{{ scope.row[item] }}</span>
|
<span>{{ scope.row[item] }}</span>
|
||||||
@@ -62,12 +62,12 @@
|
|||||||
<div class="echartsBox" style="flex: 1">
|
<div class="echartsBox" style="flex: 1">
|
||||||
<Echarts :options="chartConfig" />
|
<Echarts :options="chartConfig" />
|
||||||
</div>
|
</div>
|
||||||
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" />
|
<pagination v-show="total > 0" v-model:limit="queryParams.pageSize" v-model:page="queryParams.pageNum" :total="total" @pagination="getList" />
|
||||||
</el-card>
|
</el-card>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
账龄
|
账龄
|
||||||
<script setup name="Arrears" lang="ts">
|
<script lang="ts" name="Arrears" setup>
|
||||||
import pagination from '@/components/Pagination/index.vue';
|
import pagination from '@/components/Pagination/index.vue';
|
||||||
import pageHeader from '@/components/Pageheader/index.vue';
|
import pageHeader from '@/components/Pageheader/index.vue';
|
||||||
import { getCommunitylistAPI } from '@/api/system/community';
|
import { getCommunitylistAPI } from '@/api/system/community';
|
||||||
|
|||||||
@@ -4,23 +4,23 @@
|
|||||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||||
<div v-show="showSearch" class="mb-[10px]">
|
<div v-show="showSearch" class="mb-[10px]">
|
||||||
<el-card shadow="hover">
|
<el-card shadow="hover">
|
||||||
<el-form ref="queryFormRef" :model="queryParams" @submit.prevent="handleQuery" :inline="true">
|
<el-form ref="queryFormRef" :inline="true" :model="queryParams" @submit.prevent="handleQuery">
|
||||||
<div class="flex justify-between">
|
<div class="flex justify-between">
|
||||||
<div>
|
<div>
|
||||||
<el-form-item label="应收账期" prop="villageId">
|
<el-form-item label="应收账期" prop="villageId">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="queryTime"
|
v-model="queryTime"
|
||||||
type="daterange"
|
|
||||||
@update:model-value="handleQueryTime"
|
|
||||||
range-separator="至"
|
|
||||||
start-placeholder="开始日期"
|
|
||||||
end-placeholder="结束日期"
|
end-placeholder="结束日期"
|
||||||
format="YYYY-MM-DD"
|
format="YYYY-MM-DD"
|
||||||
|
range-separator="至"
|
||||||
|
start-placeholder="开始日期"
|
||||||
|
type="daterange"
|
||||||
value-format="YYYY-MM-DD"
|
value-format="YYYY-MM-DD"
|
||||||
|
@update:model-value="handleQueryTime"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="区域" prop="chargeItemId">
|
<el-form-item label="小区" prop="chargeItemId">
|
||||||
<el-select @change="handleVillageChange" v-model="queryParams.villageId" placeholder="请选择">
|
<el-select v-model="queryParams.villageId" placeholder="请选择" @change="handleVillageChange">
|
||||||
<el-option v-for="item in villageList" :key="item.villageId" :label="item.villageName" :value="item.villageId" />
|
<el-option v-for="item in villageList" :key="item.villageId" :label="item.villageName" :value="item.villageId" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@@ -34,7 +34,7 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<el-button type="primary" :loading="loading" @click="handleQuery">查询</el-button>
|
<el-button :loading="loading" type="primary" @click="handleQuery">查询</el-button>
|
||||||
<el-button @click="resetQuery">重置</el-button>
|
<el-button @click="resetQuery">重置</el-button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -43,7 +43,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</transition>
|
</transition>
|
||||||
|
|
||||||
<el-card shadow="never" class="flex-1">
|
<el-card class="flex-1" shadow="never">
|
||||||
<template #header>
|
<template #header>
|
||||||
<el-row :gutter="10" class="mb8">
|
<el-row :gutter="10" class="mb8">
|
||||||
<el-col :span="5">
|
<el-col :span="5">
|
||||||
@@ -57,15 +57,15 @@
|
|||||||
</el-row>
|
</el-row>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<el-table :span-method="mergeSpanMethod" v-loading="loading" border :data="ArrearsDetailList">
|
<el-table v-loading="loading" :data="ArrearsDetailList" :span-method="mergeSpanMethod" border>
|
||||||
<el-table-column label="序号" width="80" align="center" prop="serialNumber" />
|
<el-table-column align="center" label="序号" prop="serialNumber" width="80" />
|
||||||
<el-table-column label="区域" align="center" prop="area" />
|
<el-table-column align="center" label="区域" prop="area" />
|
||||||
<el-table-column label="楼栋-单元-房号" align="center" prop="houseNo" />
|
<el-table-column align="center" label="楼栋-单元-房号" prop="houseNo" />
|
||||||
<el-table-column label="客户" align="center" prop="customerName" />
|
<el-table-column align="center" label="客户" prop="customerName" />
|
||||||
<el-table-column label="联系电话" align="center" prop="phone" />
|
<el-table-column align="center" label="联系电话" prop="phone" />
|
||||||
<el-table-column label="欠费月数" width="80" align="center" prop="arrearsMonths" />
|
<el-table-column align="center" label="欠费月数" prop="arrearsMonths" width="80" />
|
||||||
<el-table-column label="应收账期" align="center" prop="billPeriod" />
|
<el-table-column align="center" label="应收账期" prop="billPeriod" />
|
||||||
<el-table-column label="欠费项目" align="center">
|
<el-table-column align="center" label="欠费项目">
|
||||||
<template #default>
|
<template #default>
|
||||||
<template v-for="item in dynamicColumns" :key="item">
|
<template v-for="item in dynamicColumns" :key="item">
|
||||||
<el-table-column :label="item" align="center">
|
<el-table-column :label="item" align="center">
|
||||||
@@ -74,7 +74,7 @@
|
|||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</template>
|
</template>
|
||||||
<el-table-column label="金额合计" align="center" prop="totalAmount">
|
<el-table-column align="center" label="金额合计" prop="totalAmount">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span style="color: red">{{ scope.row.totalAmount }}</span>
|
<span style="color: red">{{ scope.row.totalAmount }}</span>
|
||||||
</template>
|
</template>
|
||||||
@@ -82,11 +82,11 @@
|
|||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</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" v-model:limit="queryParams.pageSize" v-model:page="queryParams.pageNum" :total="total" @pagination="getList" />
|
||||||
</el-card>
|
</el-card>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script setup name="Arrears" lang="ts">
|
<script lang="ts" name="Arrears" setup>
|
||||||
import pagination from '@/components/Pagination/index.vue';
|
import pagination from '@/components/Pagination/index.vue';
|
||||||
import pageHeader from '@/components/Pageheader/index.vue';
|
import pageHeader from '@/components/Pageheader/index.vue';
|
||||||
import { getArrearsDetails } from '@/api/system/report/arrears/arrears';
|
import { getArrearsDetails } from '@/api/system/report/arrears/arrears';
|
||||||
|
|||||||
@@ -4,10 +4,10 @@
|
|||||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||||
<div v-show="showSearch" class="mb-[10px]">
|
<div v-show="showSearch" class="mb-[10px]">
|
||||||
<el-card shadow="hover">
|
<el-card shadow="hover">
|
||||||
<el-form ref="queryFormRef" :model="queryParams" @submit.prevent="handleQuery" :inline="true">
|
<el-form ref="queryFormRef" :inline="true" :model="queryParams" @submit.prevent="handleQuery">
|
||||||
<div class="flex justify-between">
|
<div class="flex justify-between">
|
||||||
<div>
|
<div>
|
||||||
<el-form-item label="项目" prop="chargeItemId">
|
<el-form-item label="小区" prop="chargeItemId">
|
||||||
<el-select v-model="queryParams.villageId" placeholder="请选择">
|
<el-select v-model="queryParams.villageId" placeholder="请选择">
|
||||||
<el-option v-for="item in villageList" :key="item.villageId" :label="item.villageName" :value="item.villageId" />
|
<el-option v-for="item in villageList" :key="item.villageId" :label="item.villageName" :value="item.villageId" />
|
||||||
</el-select>
|
</el-select>
|
||||||
@@ -20,13 +20,13 @@
|
|||||||
<el-form-item label="查询日期" prop="villageId">
|
<el-form-item label="查询日期" prop="villageId">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="queryTime"
|
v-model="queryTime"
|
||||||
type="daterange"
|
|
||||||
@update:model-value="handleQueryTime"
|
|
||||||
range-separator="至"
|
|
||||||
start-placeholder="开始日期"
|
|
||||||
end-placeholder="结束日期"
|
end-placeholder="结束日期"
|
||||||
format="YYYY-MM-DD"
|
format="YYYY-MM-DD"
|
||||||
|
range-separator="至"
|
||||||
|
start-placeholder="开始日期"
|
||||||
|
type="daterange"
|
||||||
value-format="YYYY-MM-DD"
|
value-format="YYYY-MM-DD"
|
||||||
|
@update:model-value="handleQueryTime"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</div>
|
</div>
|
||||||
@@ -40,7 +40,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</transition>
|
</transition>
|
||||||
|
|
||||||
<el-card shadow="never" class="flex-1">
|
<el-card class="flex-1" shadow="never">
|
||||||
<template #header>
|
<template #header>
|
||||||
<el-row :gutter="10" class="mb8">
|
<el-row :gutter="10" class="mb8">
|
||||||
<el-col :span="5">
|
<el-col :span="5">
|
||||||
@@ -53,9 +53,9 @@
|
|||||||
</el-row>
|
</el-row>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<el-table v-loading="loading" border :data="ArrearsDetailList">
|
<el-table v-loading="loading" :data="ArrearsDetailList" border>
|
||||||
<el-table-column label="收费所属期" align="center" prop="name" />
|
<el-table-column align="center" label="收费所属期" prop="name" />
|
||||||
<el-table-column label="序号" align="center" prop="sequence" />
|
<el-table-column align="center" label="序号" prop="sequence" />
|
||||||
<template v-for="item in rowChargeTypesList" :key="item">
|
<template v-for="item in rowChargeTypesList" :key="item">
|
||||||
{{ item }}
|
{{ item }}
|
||||||
<el-table-column :label="item" align="center">
|
<el-table-column :label="item" align="center">
|
||||||
@@ -64,14 +64,14 @@
|
|||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</template>
|
</template>
|
||||||
<el-table-column label="合计" align="center" prop="total" />
|
<el-table-column align="center" label="合计" prop="total" />
|
||||||
</el-table>
|
</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" v-model:limit="queryParams.pageSize" v-model:page="queryParams.pageNum" :total="total" @pagination="getList" />
|
||||||
</el-card>
|
</el-card>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
账龄
|
账龄
|
||||||
<script setup lang="ts">
|
<script lang="ts" setup>
|
||||||
import pagination from '@/components/Pagination/index.vue';
|
import pagination from '@/components/Pagination/index.vue';
|
||||||
import pageHeader from '@/components/Pageheader/index.vue';
|
import pageHeader from '@/components/Pageheader/index.vue';
|
||||||
import { getCommunitylistAPI } from '@/api/system/community';
|
import { getCommunitylistAPI } from '@/api/system/community';
|
||||||
|
|||||||
@@ -4,10 +4,10 @@
|
|||||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||||
<div v-show="showSearch" class="mb-[10px]">
|
<div v-show="showSearch" class="mb-[10px]">
|
||||||
<el-card shadow="hover">
|
<el-card shadow="hover">
|
||||||
<el-form ref="queryFormRef" :model="queryParams" @submit.prevent="handleQuery" :inline="true">
|
<el-form ref="queryFormRef" :inline="true" :model="queryParams" @submit.prevent="handleQuery">
|
||||||
<div class="flex justify-between">
|
<div class="flex justify-between">
|
||||||
<div>
|
<div>
|
||||||
<el-form-item label="项目" prop="chargeItemId">
|
<el-form-item label="小区" prop="chargeItemId">
|
||||||
<el-select v-model="queryParams.villageId" placeholder="请选择">
|
<el-select v-model="queryParams.villageId" placeholder="请选择">
|
||||||
<el-option v-for="item in villageList" :key="item.villageId" :label="item.villageName" :value="item.villageId" />
|
<el-option v-for="item in villageList" :key="item.villageId" :label="item.villageName" :value="item.villageId" />
|
||||||
</el-select>
|
</el-select>
|
||||||
@@ -20,13 +20,13 @@
|
|||||||
<el-form-item label="查询日期" prop="villageId">
|
<el-form-item label="查询日期" prop="villageId">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="queryTime"
|
v-model="queryTime"
|
||||||
type="daterange"
|
|
||||||
@update:model-value="handleQueryTime"
|
|
||||||
range-separator="至"
|
|
||||||
start-placeholder="开始日期"
|
|
||||||
end-placeholder="结束日期"
|
end-placeholder="结束日期"
|
||||||
format="YYYY-MM-DD"
|
format="YYYY-MM-DD"
|
||||||
|
range-separator="至"
|
||||||
|
start-placeholder="开始日期"
|
||||||
|
type="daterange"
|
||||||
value-format="YYYY-MM-DD"
|
value-format="YYYY-MM-DD"
|
||||||
|
@update:model-value="handleQueryTime"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</div>
|
</div>
|
||||||
@@ -40,7 +40,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</transition>
|
</transition>
|
||||||
|
|
||||||
<el-card shadow="never" class="flex-1">
|
<el-card class="flex-1" shadow="never">
|
||||||
<template #header>
|
<template #header>
|
||||||
<el-row :gutter="10" class="mb8">
|
<el-row :gutter="10" class="mb8">
|
||||||
<el-col :span="5">
|
<el-col :span="5">
|
||||||
@@ -53,9 +53,9 @@
|
|||||||
</el-row>
|
</el-row>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<el-table v-loading="loading" border :data="ArrearsDetailList">
|
<el-table v-loading="loading" :data="ArrearsDetailList" border>
|
||||||
<el-table-column label="收费所属期" align="center" prop="name" />
|
<el-table-column align="center" label="收费所属期" prop="name" />
|
||||||
<el-table-column label="序号" align="center" prop="sequence" />
|
<el-table-column align="center" label="序号" prop="sequence" />
|
||||||
<template v-for="item in rowChargeTypesList" :key="item">
|
<template v-for="item in rowChargeTypesList" :key="item">
|
||||||
{{ item }}
|
{{ item }}
|
||||||
<el-table-column :label="item" align="center">
|
<el-table-column :label="item" align="center">
|
||||||
@@ -64,14 +64,14 @@
|
|||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</template>
|
</template>
|
||||||
<el-table-column label="合计" align="center" prop="total" />
|
<el-table-column align="center" label="合计" prop="total" />
|
||||||
</el-table>
|
</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" v-model:limit="queryParams.pageSize" v-model:page="queryParams.pageNum" :total="total" @pagination="getList" />
|
||||||
</el-card>
|
</el-card>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
账龄
|
账龄
|
||||||
<script setup lang="ts">
|
<script lang="ts" setup>
|
||||||
import pagination from '@/components/Pagination/index.vue';
|
import pagination from '@/components/Pagination/index.vue';
|
||||||
import pageHeader from '@/components/Pageheader/index.vue';
|
import pageHeader from '@/components/Pageheader/index.vue';
|
||||||
import { getCommunitylistAPI } from '@/api/system/community';
|
import { getCommunitylistAPI } from '@/api/system/community';
|
||||||
|
|||||||
@@ -4,10 +4,10 @@
|
|||||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||||
<div v-show="showSearch" class="mb-[10px]">
|
<div v-show="showSearch" class="mb-[10px]">
|
||||||
<el-card shadow="hover">
|
<el-card shadow="hover">
|
||||||
<el-form ref="queryFormRef" :model="queryParams" @submit.prevent="handleQuery" :inline="true">
|
<el-form ref="queryFormRef" :inline="true" :model="queryParams" @submit.prevent="handleQuery">
|
||||||
<div class="flex justify-between">
|
<div class="flex justify-between">
|
||||||
<div>
|
<div>
|
||||||
<el-form-item label="项目" prop="chargeItemId">
|
<el-form-item label="小区" prop="chargeItemId">
|
||||||
<el-select v-model="queryParams.villageId" placeholder="请选择">
|
<el-select v-model="queryParams.villageId" placeholder="请选择">
|
||||||
<el-option v-for="item in villageList" :key="item.villageId" :label="item.villageName" :value="item.villageId" />
|
<el-option v-for="item in villageList" :key="item.villageId" :label="item.villageName" :value="item.villageId" />
|
||||||
</el-select>
|
</el-select>
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</transition>
|
</transition>
|
||||||
|
|
||||||
<el-card shadow="never" class="flex-1">
|
<el-card class="flex-1" shadow="never">
|
||||||
<template #header>
|
<template #header>
|
||||||
<el-row :gutter="10" class="mb8">
|
<el-row :gutter="10" class="mb8">
|
||||||
<el-col :span="5">
|
<el-col :span="5">
|
||||||
@@ -46,26 +46,26 @@
|
|||||||
</el-row>
|
</el-row>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<el-table v-loading="loading" border :data="ArrearsDetailList">
|
<el-table v-loading="loading" :data="ArrearsDetailList" border>
|
||||||
<el-table-column label="小区名称" align="center" prop="villageName" />
|
<el-table-column align="center" label="小区名称" prop="villageName" />
|
||||||
<el-table-column label="房屋类型" align="center" prop="houseTypeName" />
|
<el-table-column align="center" label="房屋类型" prop="houseTypeName" />
|
||||||
<el-table-column label="收费项目" align="center" prop="chargeItemAmounts">
|
<el-table-column align="center" label="收费项目" prop="chargeItemAmounts">
|
||||||
<template #default>
|
<template #default>
|
||||||
<el-table-column :label="item.chargeItemName" align="center" v-for="item in rowChargeTypesList" :key="item">
|
<el-table-column v-for="item in rowChargeTypesList" :key="item" :label="item.chargeItemName" align="center">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
{{ scope.row.chargeItemAmounts[item.chargeItemName] }}
|
{{ scope.row.chargeItemAmounts[item.chargeItemName] }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="合计" align="center" prop="totalAmount" />
|
<el-table-column align="center" label="合计" prop="totalAmount" />
|
||||||
</el-table>
|
</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" v-model:limit="queryParams.pageSize" v-model:page="queryParams.pageNum" :total="total" @pagination="getList" />
|
||||||
</el-card>
|
</el-card>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
账龄
|
账龄
|
||||||
<script setup lang="ts">
|
<script lang="ts" setup>
|
||||||
import pagination from '@/components/Pagination/index.vue';
|
import pagination from '@/components/Pagination/index.vue';
|
||||||
import pageHeader from '@/components/Pageheader/index.vue';
|
import pageHeader from '@/components/Pageheader/index.vue';
|
||||||
import { getCommunitylistAPI } from '@/api/system/community';
|
import { getCommunitylistAPI } from '@/api/system/community';
|
||||||
|
|||||||
@@ -4,10 +4,10 @@
|
|||||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||||
<div v-show="showSearch" class="mb-[10px]">
|
<div v-show="showSearch" class="mb-[10px]">
|
||||||
<el-card shadow="hover">
|
<el-card shadow="hover">
|
||||||
<el-form ref="queryFormRef" :model="queryParams" @submit.prevent="handleQuery" :inline="true">
|
<el-form ref="queryFormRef" :inline="true" :model="queryParams" @submit.prevent="handleQuery">
|
||||||
<div class="flex justify-between">
|
<div class="flex justify-between">
|
||||||
<div>
|
<div>
|
||||||
<el-form-item label="项目" prop="chargeItemId">
|
<el-form-item label="小区" prop="chargeItemId">
|
||||||
<el-select v-model="queryParams.villageId" placeholder="请选择">
|
<el-select v-model="queryParams.villageId" placeholder="请选择">
|
||||||
<el-option v-for="item in villageList" :key="item.villageId" :label="item.villageName" :value="item.villageId" />
|
<el-option v-for="item in villageList" :key="item.villageId" :label="item.villageName" :value="item.villageId" />
|
||||||
</el-select>
|
</el-select>
|
||||||
@@ -31,7 +31,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</transition>
|
</transition>
|
||||||
|
|
||||||
<el-card shadow="never" class="flex-1">
|
<el-card class="flex-1" shadow="never">
|
||||||
<template #header>
|
<template #header>
|
||||||
<el-row :gutter="10" class="mb8">
|
<el-row :gutter="10" class="mb8">
|
||||||
<el-col :span="5">
|
<el-col :span="5">
|
||||||
@@ -44,30 +44,30 @@
|
|||||||
</el-row>
|
</el-row>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<el-table v-loading="loading" border :data="ArrearsDetailList">
|
<el-table v-loading="loading" :data="ArrearsDetailList" border>
|
||||||
<el-table-column label="区域" align="center" prop="villageName" />
|
<el-table-column align="center" label="区域" prop="villageName" />
|
||||||
<el-table-column label="房屋类型" align="center" prop="houseTypeName" />
|
<el-table-column align="center" label="房屋类型" prop="houseTypeName" />
|
||||||
<el-table-column label="户号" align="center" prop="houseNo" />
|
<el-table-column align="center" label="户号" prop="houseNo" />
|
||||||
<el-table-column label="客户" align="center" prop="customerName" />
|
<el-table-column align="center" label="客户" prop="customerName" />
|
||||||
<el-table-column label="预收账期" align="center" prop="prepaidPeriod" />
|
<el-table-column align="center" label="预收账期" prop="prepaidPeriod" />
|
||||||
<el-table-column label="预收月份" align="center" prop="prepaidMonths" />
|
<el-table-column align="center" label="预收月份" prop="prepaidMonths" />
|
||||||
<el-table-column label="收费项目" align="center" prop="chargeItemAmounts">
|
<el-table-column align="center" label="收费项目" prop="chargeItemAmounts">
|
||||||
<template #default>
|
<template #default>
|
||||||
<el-table-column :label="item.chargeItemName" align="center" v-for="item in rowChargeTypesList" :key="item">
|
<el-table-column v-for="item in rowChargeTypesList" :key="item" :label="item.chargeItemName" align="center">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
{{ scope.row.chargeItemAmounts[item.chargeItemName] }}
|
{{ scope.row.chargeItemAmounts[item.chargeItemName] }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="合计" align="center" prop="totalAmount" />
|
<el-table-column align="center" label="合计" prop="totalAmount" />
|
||||||
</el-table>
|
</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" v-model:limit="queryParams.pageSize" v-model:page="queryParams.pageNum" :total="total" @pagination="getList" />
|
||||||
</el-card>
|
</el-card>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script lang="ts" setup>
|
||||||
import pagination from '@/components/Pagination/index.vue';
|
import pagination from '@/components/Pagination/index.vue';
|
||||||
import pageHeader from '@/components/Pageheader/index.vue';
|
import pageHeader from '@/components/Pageheader/index.vue';
|
||||||
import { getCommunitylistAPI } from '@/api/system/community';
|
import { getCommunitylistAPI } from '@/api/system/community';
|
||||||
|
|||||||
@@ -4,15 +4,15 @@
|
|||||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||||
<div v-show="showSearch" class="mb-[10px]">
|
<div v-show="showSearch" class="mb-[10px]">
|
||||||
<el-card shadow="hover">
|
<el-card shadow="hover">
|
||||||
<el-form ref="queryFormRef" :model="queryParams" @submit.prevent="handleQuery" :inline="true">
|
<el-form ref="queryFormRef" :inline="true" :model="queryParams" @submit.prevent="handleQuery">
|
||||||
<el-form-item label="品牌名称" prop="brand">
|
<el-form-item label="品牌名称" prop="brand">
|
||||||
<el-input maxlength="20" v-model="queryParams.brand" placeholder="请输入品牌" clearable @keyup.enter="handleQuery" />
|
<el-input v-model="queryParams.brand" clearable maxlength="20" placeholder="请输入品牌" @keyup.enter="handleQuery" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="型号名称" prop="model">
|
<el-form-item label="型号名称" prop="model">
|
||||||
<el-input maxlength="20" v-model="queryParams.model" placeholder="请输入型号" clearable @keyup.enter="handleQuery" />
|
<el-input v-model="queryParams.model" clearable maxlength="20" placeholder="请输入型号" @keyup.enter="handleQuery" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="物料名称" prop="materialName">
|
<el-form-item label="物料名称" prop="materialName">
|
||||||
<el-input maxlength="20" v-model="queryParams.materialName" placeholder="请输入物料名称" clearable @keyup.enter="handleQuery" />
|
<el-input v-model="queryParams.materialName" clearable maxlength="20" placeholder="请输入物料名称" @keyup.enter="handleQuery" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" @click="handleQuery">搜索</el-button>
|
<el-button type="primary" @click="handleQuery">搜索</el-button>
|
||||||
@@ -30,8 +30,8 @@
|
|||||||
:disable-delete="multiple"
|
:disable-delete="multiple"
|
||||||
:disable-edit="single"
|
:disable-edit="single"
|
||||||
:show-add="false"
|
:show-add="false"
|
||||||
:show-edit="false"
|
|
||||||
:show-delete="false"
|
:show-delete="false"
|
||||||
|
:show-edit="false"
|
||||||
@update:add="handleAdd"
|
@update:add="handleAdd"
|
||||||
@update:edit="handleUpdate()"
|
@update:edit="handleUpdate()"
|
||||||
@update:delete="handleDelete()"
|
@update:delete="handleDelete()"
|
||||||
@@ -39,28 +39,28 @@
|
|||||||
</el-row>
|
</el-row>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<el-table v-loading="loading" border :data="materialList" @selection-change="handleSelectionChange">
|
<el-table v-loading="loading" :data="materialList" border @selection-change="handleSelectionChange">
|
||||||
<el-table-column type="selection" width="55" align="center" />
|
<el-table-column align="center" type="selection" width="55" />
|
||||||
<el-table-column label="物料名称" align="center" prop="materialName" />
|
<el-table-column align="center" label="物料名称" prop="materialName" />
|
||||||
<el-table-column label="品牌" align="center" prop="brand" />
|
<el-table-column align="center" label="品牌" prop="brand" />
|
||||||
<el-table-column label="规格型号" align="center" prop="model" />
|
<el-table-column align="center" label="规格型号" prop="model" />
|
||||||
<el-table-column label="单位" width="60" align="center" prop="unit" />
|
<el-table-column align="center" label="单位" prop="unit" width="60" />
|
||||||
<el-table-column label="成本" width="100" align="center" prop="costPrice" />
|
<!-- <el-table-column label="成本" width="100" align="center" prop="costPrice" />-->
|
||||||
<el-table-column label="当前库存" width="80" align="center" prop="totalStockNum" />
|
<el-table-column align="center" label="当前库存" prop="totalStockNum" width="80" />
|
||||||
<el-table-column label="备注" show-overflow-tooltip align="center" prop="remark" />
|
<el-table-column align="center" label="备注" prop="remark" show-overflow-tooltip />
|
||||||
<el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width">
|
<el-table-column align="center" class-name="small-padding fixed-width" fixed="right" label="操作">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button link type="primary" @click="handleUpdate(scope.row)">查看</el-button>
|
<el-button link type="primary" @click="handleUpdate(scope.row)">查看</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</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" v-model:limit="queryParams.pageSize" v-model:page="queryParams.pageNum" :total="total" @pagination="getList" />
|
||||||
</el-card>
|
</el-card>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup name="Material" lang="ts">
|
<script lang="ts" name="Material" setup>
|
||||||
import pageHeader from '@/components/Pageheader/index.vue';
|
import pageHeader from '@/components/Pageheader/index.vue';
|
||||||
import Pagination from '@/components/Pagination/index.vue';
|
import Pagination from '@/components/Pagination/index.vue';
|
||||||
import RightToolbar from '@/components/RightToolbar/index.vue';
|
import RightToolbar from '@/components/RightToolbar/index.vue';
|
||||||
|
|||||||
@@ -3,10 +3,10 @@
|
|||||||
<pageHeader></pageHeader>
|
<pageHeader></pageHeader>
|
||||||
<div class="mainbody">
|
<div class="mainbody">
|
||||||
<div class="actionsbox">
|
<div class="actionsbox">
|
||||||
<el-button @click="handlePrint" icon="Printer" type="primary">打印</el-button>
|
<el-button icon="Printer" type="primary" @click="handlePrint">打印</el-button>
|
||||||
<el-button @click="cancelForm">返回</el-button>
|
<el-button @click="cancelForm">返回</el-button>
|
||||||
</div>
|
</div>
|
||||||
<div class="formBody" id="print-area">
|
<div id="print-area" class="formBody">
|
||||||
<div class="navtitle">出库单</div>
|
<div class="navtitle">出库单</div>
|
||||||
<p>单号:{{ form.outNo }}</p>
|
<p>单号:{{ form.outNo }}</p>
|
||||||
<p>制单日期:{{ form.outDate }}</p>
|
<p>制单日期:{{ form.outDate }}</p>
|
||||||
@@ -45,17 +45,18 @@
|
|||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<div class="foorter">
|
<div class="foorter">
|
||||||
<div>制单人:{{ form.leader }}</div>
|
<div>领用人:{{ form.leader }}</div>
|
||||||
<div>仓库:{{ form.warehouseName }}</div>
|
<div>出库仓库:{{ form.warehouseName }}</div>
|
||||||
|
<div>负责人签字:</div>
|
||||||
<div>日期: {{ form.createTime }}</div>
|
<div>日期: {{ form.createTime }}</div>
|
||||||
<div>备注: {{ form.remark }}</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
<div>备注: {{ form.remark }}</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script lang="ts" setup>
|
||||||
import pageHeader from '@/components/Pageheader/index.vue';
|
import pageHeader from '@/components/Pageheader/index.vue';
|
||||||
import { ref } from 'vue';
|
import { ref } from 'vue';
|
||||||
import { printVueDiv } from '@/utils/print';
|
import { printVueDiv } from '@/utils/print';
|
||||||
@@ -110,7 +111,7 @@ const cancelForm = () => {
|
|||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style lang="scss" scoped>
|
||||||
.mainbody {
|
.mainbody {
|
||||||
padding: 30px;
|
padding: 30px;
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
@@ -161,7 +162,6 @@ const cancelForm = () => {
|
|||||||
.foorter {
|
.foorter {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: repeat(3, 1fr);
|
grid-template-columns: repeat(3, 1fr);
|
||||||
width: 85%;
|
|
||||||
gap: 30px;
|
gap: 30px;
|
||||||
margin: 30px auto 0;
|
margin: 30px auto 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="AddBuildingBox">
|
<div class="AddBuildingBox">
|
||||||
<PageHeader></PageHeader>
|
<PageHeader></PageHeader>
|
||||||
<el-form class="formBody" label-position="right" ref="formRef" :model="form" :rules="rules" label-width="130px">
|
<el-form ref="formRef" :model="form" :rules="rules" class="formBody" label-position="right" label-width="130px">
|
||||||
<div class="AddBuildingBody formbox">
|
<div class="AddBuildingBody formbox">
|
||||||
<div class="title">
|
<div class="title">
|
||||||
<span>基本信息</span>
|
<span>基本信息</span>
|
||||||
@@ -13,12 +13,12 @@
|
|||||||
<div class="addBuildingFormBody">
|
<div class="addBuildingFormBody">
|
||||||
<el-form-item label="出库日期" prop="outDate">
|
<el-form-item label="出库日期" prop="outDate">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
format="YYYY-MM-DD"
|
|
||||||
value-format="YYYY-MM-DD"
|
|
||||||
style="width: 100%"
|
|
||||||
v-model="form.outDate"
|
v-model="form.outDate"
|
||||||
type="date"
|
format="YYYY-MM-DD"
|
||||||
placeholder="请选择出库日期"
|
placeholder="请选择出库日期"
|
||||||
|
style="width: 100%"
|
||||||
|
type="date"
|
||||||
|
value-format="YYYY-MM-DD"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="供应商" prop="supplierId">
|
<el-form-item label="供应商" prop="supplierId">
|
||||||
@@ -37,47 +37,47 @@
|
|||||||
<!-- </el-radio-group>-->
|
<!-- </el-radio-group>-->
|
||||||
<!-- </el-form-item>-->
|
<!-- </el-form-item>-->
|
||||||
<el-form-item label="领用人" prop="leader">
|
<el-form-item label="领用人" prop="leader">
|
||||||
<el-input maxlength="20" v-model.trim="form.leader" placeholder="请输入领用人" />
|
<el-input v-model.trim="form.leader" maxlength="20" placeholder="请输入领用人" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="备注" prop="remark">
|
<el-form-item label="备注" prop="remark">
|
||||||
<el-input type="textarea" maxlength="200" show-word-limit :rows="5" v-model.trim="form.remark" placeholder="请输入备注" />
|
<el-input v-model.trim="form.remark" :rows="5" maxlength="200" placeholder="请输入备注" show-word-limit type="textarea" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="AddBuildingBody">
|
<div class="AddBuildingBody">
|
||||||
<div style="margin-bottom: 20px">
|
<div style="margin-bottom: 20px">
|
||||||
<span>详细出库列表</span>
|
<span>详细出库列表</span>
|
||||||
<material :userid="itemsid" returnvalue="*" @change="handleChangeitem" :is-multiple="true" ref="materialRef">
|
<material ref="materialRef" :is-multiple="true" :userid="itemsid" returnvalue="*" @change="handleChangeitem">
|
||||||
<template #default>
|
<template #default>
|
||||||
<el-button @click="() => materialRef.open()" style="margin-left: 20px" icon="Plus" type="primary">添加</el-button>
|
<el-button icon="Plus" style="margin-left: 20px" type="primary" @click="() => materialRef.open()">添加</el-button>
|
||||||
</template>
|
</template>
|
||||||
</material>
|
</material>
|
||||||
</div>
|
</div>
|
||||||
<div class="addBuildingFormBody">
|
<div class="addBuildingFormBody">
|
||||||
<el-table :data="form.items">
|
<el-table :data="form.items">
|
||||||
<el-table-column label="物料名称" align="center" prop="materialName" />
|
<el-table-column align="center" label="物料名称" prop="materialName" />
|
||||||
<el-table-column label="品牌" align="center" prop="brand" />
|
<el-table-column align="center" label="品牌" prop="brand" />
|
||||||
<el-table-column label="规格型号" align="center" prop="model" />
|
<el-table-column align="center" label="规格型号" prop="model" />
|
||||||
<el-table-column label="单位" align="center" prop="unit" />
|
<el-table-column align="center" label="单位" prop="unit" />
|
||||||
<el-table-column label="出库价" align="center">
|
<el-table-column align="center" label="出库价">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<!-- <el-input v-model.trim.number="scope.row.outPrice"></el-input> -->
|
<!-- <el-input v-model.trim.number="scope.row.outPrice"></el-input> -->
|
||||||
<el-input-number :min="0" :max="9999999" maxlength="7" v-model.trim.number="scope.row.outPrice" placeholder="价格" />
|
<el-input-number v-model.trim.number="scope.row.outPrice" :max="9999999" :min="0" maxlength="7" placeholder="价格" />
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="数量" align="center" prop="inNo">
|
<el-table-column align="center" label="数量" prop="inNo">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-input-number :max="9999999" maxlength="7" v-model.trim.number="scope.row.outNum" :min="0" placeholder="个数" />
|
<el-input-number v-model.trim.number="scope.row.outNum" :max="9999999" :min="0" maxlength="7" placeholder="个数" />
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="备注" align="center" prop="remark">
|
<el-table-column align="center" label="备注" prop="remark">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
{{ scope.row.remark ? scope.row.remark : '-------' }}
|
{{ scope.row.remark ? scope.row.remark : '-------' }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="操作" align="center">
|
<el-table-column align="center" label="操作">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button type="primary" link @click="handleDeleteRow(scope.row.id)">删除</el-button>
|
<el-button link type="primary" @click="handleDeleteRow(scope.row.id)">删除</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
@@ -87,7 +87,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script lang="ts" setup>
|
||||||
import { ref } from 'vue';
|
import { ref } from 'vue';
|
||||||
import material from '@/components/Holder/material.vue';
|
import material from '@/components/Holder/material.vue';
|
||||||
import PageHeader from '@/components/Pageheader/index.vue';
|
import PageHeader from '@/components/Pageheader/index.vue';
|
||||||
@@ -97,7 +97,7 @@ import { MaterialVO } from '@/api/system/Tmaterial/type';
|
|||||||
import { addStockOut, getStockOut, updateStockOut } from '@/api/system/TissueOut';
|
import { addStockOut, getStockOut, updateStockOut } from '@/api/system/TissueOut';
|
||||||
interface tableType extends MaterialVO {
|
interface tableType extends MaterialVO {
|
||||||
costPrice?: number; // 成本价
|
costPrice?: number; // 成本价
|
||||||
inNum?: number; // 成本价
|
outNum?: number; // 成本价
|
||||||
}
|
}
|
||||||
|
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
@@ -192,10 +192,19 @@ function handleDeleteRow(id: string) {
|
|||||||
// !== 提交 =============================================================================
|
// !== 提交 =============================================================================
|
||||||
// 提交
|
// 提交
|
||||||
const submitForm = () => {
|
const submitForm = () => {
|
||||||
// if (form.value.items.length <= 0) {
|
if (form.value.items.length <= 0) {
|
||||||
// ElMessage.error('请添加出库物料');
|
ElMessage.error('请添加出库物料');
|
||||||
// return;
|
return;
|
||||||
// }
|
}
|
||||||
|
const bol = form.value.items.every((item) => {
|
||||||
|
return item.costPrice !== 0 && item.costPrice !== null && item.outNum !== 0 && item.outNum !== null;
|
||||||
|
});
|
||||||
|
console.log(bol);
|
||||||
|
if (!bol) {
|
||||||
|
ElMessage.warning('出库数量,出库价格 不能未空或者0');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
formRef.value?.validate(async (valid: boolean) => {
|
formRef.value?.validate(async (valid: boolean) => {
|
||||||
if (valid) {
|
if (valid) {
|
||||||
if (userid.value) {
|
if (userid.value) {
|
||||||
@@ -218,7 +227,7 @@ const cancelForm = () => {
|
|||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style lang="scss" scoped>
|
||||||
.AddBuildingBox {
|
.AddBuildingBox {
|
||||||
padding: 15px;
|
padding: 15px;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
|||||||
@@ -4,9 +4,9 @@
|
|||||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||||
<div v-show="showSearch" class="mb-[10px]">
|
<div v-show="showSearch" class="mb-[10px]">
|
||||||
<el-card shadow="hover">
|
<el-card shadow="hover">
|
||||||
<el-form ref="queryFormRef" :model="queryParams" @submit.prevent="handleQuery" :inline="true">
|
<el-form ref="queryFormRef" :inline="true" :model="queryParams" @submit.prevent="handleQuery">
|
||||||
<el-form-item label="出库单号" prop="outNo">
|
<el-form-item label="出库单号" prop="outNo">
|
||||||
<el-input maxlength="20" v-model="queryParams.outNo" placeholder="请输入出库单号" clearable @keyup.enter="handleQuery" />
|
<el-input v-model="queryParams.outNo" clearable maxlength="20" placeholder="请输入出库单号" @keyup.enter="handleQuery" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" @click="handleQuery">搜索</el-button>
|
<el-button type="primary" @click="handleQuery">搜索</el-button>
|
||||||
@@ -24,40 +24,40 @@
|
|||||||
:disable-delete="multiple"
|
:disable-delete="multiple"
|
||||||
:disable-edit="single"
|
:disable-edit="single"
|
||||||
:show-add="checkPermi(['system:stockOut:add'])"
|
:show-add="checkPermi(['system:stockOut:add'])"
|
||||||
:show-edit="false"
|
|
||||||
:show-delete="checkPermi(['system:stockOut:remove'])"
|
:show-delete="checkPermi(['system:stockOut:remove'])"
|
||||||
|
:show-edit="false"
|
||||||
@update:add="handleAdd"
|
@update:add="handleAdd"
|
||||||
@update:delete="handleDelete()"
|
@update:delete="handleDelete()"
|
||||||
></right-toolbar>
|
></right-toolbar>
|
||||||
</el-row>
|
</el-row>
|
||||||
</template>
|
</template>
|
||||||
<el-table v-loading="loading" border :data="stockOutList" @selection-change="handleSelectionChange">
|
<el-table v-loading="loading" :data="stockOutList" border @selection-change="handleSelectionChange">
|
||||||
<el-table-column type="selection" flexd width="55" align="center" />
|
<el-table-column align="center" flexd type="selection" width="55" />
|
||||||
<el-table-column label="出库单号" flexd align="center" prop="outNo" />
|
<el-table-column align="center" flexd label="出库单号" prop="outNo" />
|
||||||
<el-table-column label="出库日期" width="100" align="center" prop="outDate" />
|
<el-table-column align="center" label="操作状态" prop="operateStatus" width="80">
|
||||||
<el-table-column label="领用人" align="center" prop="supplierName" />
|
|
||||||
<el-table-column label="出库仓库" align="center" prop="warehouseName" />
|
|
||||||
<el-table-column label="操作状态" width="80" align="center" prop="operateStatus">
|
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<dict-tag :options="com_stock_out_status" :value="scope.row.operateStatus"></dict-tag>
|
<dict-tag :options="com_stock_out_status" :value="scope.row.operateStatus"></dict-tag>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="负责人" show-overflow-tooltip align="center" prop="leader" />
|
<el-table-column align="center" label="仓库名称" prop="warehouseName" />
|
||||||
<el-table-column label="备注" show-overflow-tooltip align="center" prop="remark" />
|
<el-table-column align="center" label="仓库归属" prop="villageName" />
|
||||||
<el-table-column label="操作" width="180" align="center" fixed="right" class-name="small-padding fixed-width">
|
<el-table-column align="center" label="出库日期" prop="outDate" width="100" />
|
||||||
|
<el-table-column align="center" label="供应商" prop="supplierName" />
|
||||||
|
<el-table-column align="center" label="备注" prop="remark" show-overflow-tooltip />
|
||||||
|
<el-table-column align="center" class-name="small-padding fixed-width" fixed="right" label="操作" width="180">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button link type="primary" @click="handleMain(scope.row)" v-has-permi="['system:stockOut:query']">查看清单</el-button>
|
<el-button v-has-permi="['system:stockOut:query']" link type="primary" @click="handleMain(scope.row)">查看清单</el-button>
|
||||||
<el-button link type="primary" @click="handleDelete(scope.row)" v-has-permi="['system:stockOut:remove']">删除</el-button>
|
<el-button v-has-permi="['system:stockOut:remove']" link type="primary" @click="handleDelete(scope.row)">删除</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</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" v-model:limit="queryParams.pageSize" v-model:page="queryParams.pageNum" :total="total" @pagination="getList" />
|
||||||
</el-card>
|
</el-card>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup name="StockOut" lang="ts">
|
<script lang="ts" name="StockOut" setup>
|
||||||
import { listStockOut, delStockOut } from '@/api/system/TissueOut';
|
import { listStockOut, delStockOut } from '@/api/system/TissueOut';
|
||||||
import { StockOutVO, StockOutQuery, StockOutForm } from '@/api/system/TissueOut/type';
|
import { StockOutVO, StockOutQuery, StockOutForm } from '@/api/system/TissueOut/type';
|
||||||
import { checkPermi } from '@/utils/permission';
|
import { checkPermi } from '@/utils/permission';
|
||||||
|
|||||||
@@ -4,9 +4,9 @@
|
|||||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||||
<div v-show="showSearch" class="mb-[10px]">
|
<div v-show="showSearch" class="mb-[10px]">
|
||||||
<el-card shadow="hover">
|
<el-card shadow="hover">
|
||||||
<el-form ref="queryFormRef" :model="queryParams" @submit.prevent="handleQuery" :inline="true">
|
<el-form ref="queryFormRef" :inline="true" :model="queryParams" @submit.prevent="handleQuery">
|
||||||
<el-form-item label="物料名称" prop="materialName">
|
<el-form-item label="物料名称" prop="materialName">
|
||||||
<el-input maxlength="20" v-model="queryParams.materialName" placeholder="请输入物料名称" clearable @keyup.enter="handleQuery" />
|
<el-input v-model="queryParams.materialName" clearable maxlength="20" placeholder="请输入物料名称" @keyup.enter="handleQuery" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" @click="handleQuery">搜索</el-button>
|
<el-button type="primary" @click="handleQuery">搜索</el-button>
|
||||||
@@ -24,8 +24,8 @@
|
|||||||
:disable-delete="multiple"
|
:disable-delete="multiple"
|
||||||
:disable-edit="single"
|
:disable-edit="single"
|
||||||
:show-add="checkPermi(['warehouse:material:add'])"
|
:show-add="checkPermi(['warehouse:material:add'])"
|
||||||
:show-edit="checkPermi(['warehouse:material:edit'])"
|
|
||||||
:show-delete="checkPermi(['warehouse:material:remove'])"
|
:show-delete="checkPermi(['warehouse:material:remove'])"
|
||||||
|
:show-edit="checkPermi(['warehouse:material:edit'])"
|
||||||
@update:add="handleAdd"
|
@update:add="handleAdd"
|
||||||
@update:edit="handleUpdate()"
|
@update:edit="handleUpdate()"
|
||||||
@update:delete="handleDelete()"
|
@update:delete="handleDelete()"
|
||||||
@@ -33,25 +33,26 @@
|
|||||||
</el-row>
|
</el-row>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<el-table v-loading="loading" border :data="materialList" @selection-change="handleSelectionChange">
|
<el-table v-loading="loading" :data="materialList" border @selection-change="handleSelectionChange">
|
||||||
<el-table-column type="selection" width="55" align="center" />
|
<el-table-column align="center" type="selection" width="55" />
|
||||||
<el-table-column label="物料名称" align="center" prop="materialName" />
|
<el-table-column align="center" label="物料名称" prop="materialName" />
|
||||||
<el-table-column label="品牌" align="center" prop="brand" />
|
<el-table-column align="center" label="品牌" prop="brand" />
|
||||||
<el-table-column label="规格型号" align="center" prop="model" />
|
<el-table-column align="center" label="规格型号" prop="model" />
|
||||||
<el-table-column label="计量单位" align="center" prop="unit" />
|
<el-table-column align="center" label="计量单位" prop="unit" />
|
||||||
<el-table-column label="备注" show-overflow-tooltip align="center" prop="remark" />
|
<el-table-column align="center" label="所属小区" prop="villageName" />
|
||||||
<el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width">
|
<el-table-column align="center" label="备注" prop="remark" show-overflow-tooltip />
|
||||||
|
<el-table-column align="center" class-name="small-padding fixed-width" fixed="right" label="操作">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button link type="primary" @click="handleUpdate(scope.row)" v-has-permi="['warehouse:material:edit']">编辑</el-button>
|
<el-button v-has-permi="['warehouse:material:edit']" link type="primary" @click="handleUpdate(scope.row)">编辑</el-button>
|
||||||
<el-button link type="primary" @click="handleDelete(scope.row)" v-has-permi="['warehouse:material:remove']">删除</el-button>
|
<el-button v-has-permi="['warehouse:material:remove']" link type="primary" @click="handleDelete(scope.row)">删除</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</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" v-model:limit="queryParams.pageSize" v-model:page="queryParams.pageNum" :total="total" @pagination="getList" />
|
||||||
</el-card>
|
</el-card>
|
||||||
<!-- 添加或修改物料对话框 -->
|
<!-- 添加或修改物料对话框 -->
|
||||||
<el-dialog :title="dialog.title" v-model="dialog.visible" width="500px" append-to-body>
|
<el-dialog v-model="dialog.visible" :title="dialog.title" append-to-body width="500px">
|
||||||
<el-form ref="materialFormRef" :model="form" :rules="rules" label-width="80px">
|
<el-form ref="materialFormRef" :model="form" :rules="rules" label-width="80px">
|
||||||
<el-form-item label="物料名称*" prop="materialName">
|
<el-form-item label="物料名称*" prop="materialName">
|
||||||
<el-input v-model="form.materialName" placeholder="请输入物料名称*" />
|
<el-input v-model="form.materialName" placeholder="请输入物料名称*" />
|
||||||
@@ -66,7 +67,7 @@
|
|||||||
<el-input v-model="form.unit" placeholder="请输入计量单位" />
|
<el-input v-model="form.unit" placeholder="请输入计量单位" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="备注" prop="remark">
|
<el-form-item label="备注" prop="remark">
|
||||||
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
|
<el-input v-model="form.remark" placeholder="请输入内容" type="textarea" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
@@ -79,7 +80,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup name="Material" lang="ts">
|
<script lang="ts" name="Material" setup>
|
||||||
import { listMaterial, delMaterial, addMaterial, updateMaterial } from '@/api/system/Tmaterial';
|
import { listMaterial, delMaterial, addMaterial, updateMaterial } from '@/api/system/Tmaterial';
|
||||||
import { MaterialVO, MaterialQuery, MaterialForm } from '@/api/system/Tmaterial/type';
|
import { MaterialVO, MaterialQuery, MaterialForm } from '@/api/system/Tmaterial/type';
|
||||||
import { checkPermi } from '@/utils/permission';
|
import { checkPermi } from '@/utils/permission';
|
||||||
|
|||||||
@@ -3,10 +3,10 @@
|
|||||||
<pageHeader></pageHeader>
|
<pageHeader></pageHeader>
|
||||||
<div class="mainbody">
|
<div class="mainbody">
|
||||||
<div class="actionsbox">
|
<div class="actionsbox">
|
||||||
<el-button @click="handlePrint" icon="Printer" type="primary">打印</el-button>
|
<el-button icon="Printer" type="primary" @click="handlePrint">打印</el-button>
|
||||||
<el-button @click="cancelForm">返回</el-button>
|
<el-button @click="cancelForm">返回</el-button>
|
||||||
</div>
|
</div>
|
||||||
<div class="formBody" id="print-area">
|
<div id="print-area" class="formBody">
|
||||||
<div class="navtitle">入库单</div>
|
<div class="navtitle">入库单</div>
|
||||||
<p>单号:{{ form.inNo }}</p>
|
<p>单号:{{ form.inNo }}</p>
|
||||||
<p>制单日期:{{ form.inDate }}</p>
|
<p>制单日期:{{ form.inDate }}</p>
|
||||||
@@ -45,8 +45,9 @@
|
|||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<div class="foorter">
|
<div class="foorter">
|
||||||
<div>制单人:{{ form.leader }}</div>
|
<div>入库人:{{ form.leader }}</div>
|
||||||
<div>仓库:{{ form.warehouseName }}</div>
|
<div>入库仓库:{{ form.warehouseName }}</div>
|
||||||
|
<div>负责人签字:</div>
|
||||||
<div>日期: {{ form.createTime }}</div>
|
<div>日期: {{ form.createTime }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="formark">备注: {{ form.remark }}</div>
|
<div class="formark">备注: {{ form.remark }}</div>
|
||||||
@@ -55,7 +56,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script lang="ts" setup>
|
||||||
import pageHeader from '@/components/Pageheader/index.vue';
|
import pageHeader from '@/components/Pageheader/index.vue';
|
||||||
import { getStockIn } from '@/api/system/TPurchaseIn';
|
import { getStockIn } from '@/api/system/TPurchaseIn';
|
||||||
import { ref } from 'vue';
|
import { ref } from 'vue';
|
||||||
@@ -110,7 +111,7 @@ const cancelForm = () => {
|
|||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style lang="scss" scoped>
|
||||||
.mainbody {
|
.mainbody {
|
||||||
padding: 30px;
|
padding: 30px;
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="AddBuildingBox">
|
<div class="AddBuildingBox">
|
||||||
<PageHeader></PageHeader>
|
<PageHeader></PageHeader>
|
||||||
<el-form class="formBody" label-position="right" ref="formRef" :model="form" :rules="rules" label-width="130px">
|
<el-form ref="formRef" :model="form" :rules="rules" class="formBody" label-position="right" label-width="130px">
|
||||||
<div class="AddBuildingBody formbox">
|
<div class="AddBuildingBody formbox">
|
||||||
<div class="title">
|
<div class="title">
|
||||||
<span>基本信息</span>
|
<span>基本信息</span>
|
||||||
@@ -13,12 +13,12 @@
|
|||||||
<div class="addBuildingFormBody">
|
<div class="addBuildingFormBody">
|
||||||
<el-form-item label="入库日期" prop="inDate">
|
<el-form-item label="入库日期" prop="inDate">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
format="YYYY-MM-DD"
|
|
||||||
value-format="YYYY-MM-DD"
|
|
||||||
style="width: 100%"
|
|
||||||
v-model="form.inDate"
|
v-model="form.inDate"
|
||||||
type="date"
|
format="YYYY-MM-DD"
|
||||||
placeholder="请选择入库日期"
|
placeholder="请选择入库日期"
|
||||||
|
style="width: 100%"
|
||||||
|
type="date"
|
||||||
|
value-format="YYYY-MM-DD"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="供应商" prop="supplierId">
|
<el-form-item label="供应商" prop="supplierId">
|
||||||
@@ -36,53 +36,53 @@
|
|||||||
<!-- <el-radio v-for="(item, index) in com_stock_in_status" :key="index" :value="item.value">{{ item.label }}</el-radio>-->
|
<!-- <el-radio v-for="(item, index) in com_stock_in_status" :key="index" :value="item.value">{{ item.label }}</el-radio>-->
|
||||||
<!-- </el-radio-group>-->
|
<!-- </el-radio-group>-->
|
||||||
<!-- </el-form-item>-->
|
<!-- </el-form-item>-->
|
||||||
<el-form-item label="制单人" prop="leader">
|
<el-form-item label="入库人" prop="leader">
|
||||||
<el-input maxlength="20" v-model.trim="form.leader" placeholder="请输入制单人" />
|
<el-input v-model.trim="form.leader" maxlength="20" placeholder="请输入入库人" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="备注" prop="remark">
|
<el-form-item label="备注" prop="remark">
|
||||||
<el-input maxlength="200" show-word-limit type="textarea" :rows="5" v-model.trim="form.remark" placeholder="请输入备注" />
|
<el-input v-model.trim="form.remark" :rows="5" maxlength="200" placeholder="请输入备注" show-word-limit type="textarea" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="AddBuildingBody">
|
<div class="AddBuildingBody">
|
||||||
<div style="margin-bottom: 20px">
|
<div style="margin-bottom: 20px">
|
||||||
<span>详细入库列表</span>
|
<span>详细入库列表</span>
|
||||||
<material :userid="itemsid" returnvalue="*" @change="handleChangeitem" :is-multiple="true" ref="materialRef">
|
<material ref="materialRef" :is-multiple="true" :userid="itemsid" returnvalue="*" @change="handleChangeitem">
|
||||||
<template #default>
|
<template #default>
|
||||||
<el-button @click="() => materialRef.open()" style="margin-left: 20px" icon="Plus" type="primary">添加</el-button>
|
<el-button icon="Plus" style="margin-left: 20px" type="primary" @click="() => materialRef.open()">添加</el-button>
|
||||||
</template>
|
</template>
|
||||||
</material>
|
</material>
|
||||||
</div>
|
</div>
|
||||||
<div class="addBuildingFormBody">
|
<div class="addBuildingFormBody">
|
||||||
<el-table :data="form.items">
|
<el-table :data="form.items">
|
||||||
<el-table-column label="物料名称" align="center" prop="materialName" />
|
<el-table-column align="center" label="物料名称" prop="materialName" />
|
||||||
<el-table-column label="品牌" align="center" prop="brand" />
|
<el-table-column align="center" label="品牌" prop="brand" />
|
||||||
<el-table-column label="规格型号" align="center" prop="model" />
|
<el-table-column align="center" label="规格型号" prop="model" />
|
||||||
<el-table-column label="单位" align="center" prop="unit" />
|
<el-table-column align="center" label="单位" prop="unit" />
|
||||||
<el-table-column label="成本价" align="center" prop="inNo">
|
<el-table-column align="center" label="成本价" prop="inNo">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-input-number
|
<el-input-number
|
||||||
maxlength="7"
|
|
||||||
:min="1"
|
|
||||||
:max="9999999"
|
|
||||||
v-model.trim.number="scope.row.costPrice"
|
v-model.trim.number="scope.row.costPrice"
|
||||||
|
:max="9999999"
|
||||||
|
:min="1"
|
||||||
|
maxlength="7"
|
||||||
placeholder="请输入"
|
placeholder="请输入"
|
||||||
></el-input-number>
|
></el-input-number>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="数量" align="center" prop="inNo">
|
<el-table-column align="center" label="数量" prop="inNo">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-input-number maxlength="7" :min="1" :max="9999999" v-model.trim.number="scope.row.inNum" placeholder="请输入"></el-input-number>
|
<el-input-number v-model.trim.number="scope.row.inNum" :max="9999999" :min="1" maxlength="7" placeholder="请输入"></el-input-number>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="备注" align="center" prop="remark">
|
<el-table-column align="center" label="备注" prop="remark">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
{{ scope.row.remark ? scope.row.remark : '-------' }}
|
{{ scope.row.remark ? scope.row.remark : '-------' }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="操作" align="center">
|
<el-table-column align="center" label="操作">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button type="primary" link @click="handleDeleteRow(scope.row.id)">删除</el-button>
|
<el-button link type="primary" @click="handleDeleteRow(scope.row.id)">删除</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
@@ -92,7 +92,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script lang="ts" setup>
|
||||||
import { ref } from 'vue';
|
import { ref } from 'vue';
|
||||||
import material from '@/components/Holder/material.vue';
|
import material from '@/components/Holder/material.vue';
|
||||||
import PageHeader from '@/components/Pageheader/index.vue';
|
import PageHeader from '@/components/Pageheader/index.vue';
|
||||||
@@ -200,6 +200,13 @@ const submitForm = () => {
|
|||||||
ElMessage.error('请添加入库物料');
|
ElMessage.error('请添加入库物料');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
const bol = form.value.items.every((item) => {
|
||||||
|
return item.costPrice !== 0 && item.costPrice !== null && item.inNum !== 0 && item.inNum !== null;
|
||||||
|
});
|
||||||
|
if (!bol) {
|
||||||
|
ElMessage.warning('入库数量,入库价格 不能未空或者0');
|
||||||
|
return;
|
||||||
|
}
|
||||||
formRef.value?.validate(async (valid: boolean) => {
|
formRef.value?.validate(async (valid: boolean) => {
|
||||||
if (valid) {
|
if (valid) {
|
||||||
// form.value.items = form.value.items.map((itme) => {
|
// form.value.items = form.value.items.map((itme) => {
|
||||||
@@ -229,7 +236,7 @@ const cancelForm = () => {
|
|||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style lang="scss" scoped>
|
||||||
.AddBuildingBox {
|
.AddBuildingBox {
|
||||||
padding: 15px;
|
padding: 15px;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
|||||||
@@ -4,9 +4,9 @@
|
|||||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||||
<div v-show="showSearch" class="mb-[10px]">
|
<div v-show="showSearch" class="mb-[10px]">
|
||||||
<el-card shadow="hover">
|
<el-card shadow="hover">
|
||||||
<el-form ref="queryFormRef" :model="queryParams" @submit.prevent="handleQuery" :inline="true">
|
<el-form ref="queryFormRef" :inline="true" :model="queryParams" @submit.prevent="handleQuery">
|
||||||
<el-form-item label="入库单号" prop="inNo">
|
<el-form-item label="入库单号" prop="inNo">
|
||||||
<el-input maxlength="20" v-model="queryParams.inNo" placeholder="请输入入库单号" clearable @keyup.enter="handleQuery" />
|
<el-input v-model="queryParams.inNo" clearable maxlength="20" placeholder="请输入入库单号" @keyup.enter="handleQuery" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" @click="handleQuery">搜索</el-button>
|
<el-button type="primary" @click="handleQuery">搜索</el-button>
|
||||||
@@ -27,8 +27,8 @@
|
|||||||
:disable-delete="multiple"
|
:disable-delete="multiple"
|
||||||
:disable-edit="single"
|
:disable-edit="single"
|
||||||
:show-add="checkPermi(['system:stockIn:add'])"
|
:show-add="checkPermi(['system:stockIn:add'])"
|
||||||
:show-edit="checkPermi(['system:stockIn:edit'])"
|
|
||||||
:show-delete="checkPermi(['system:stockIn:remove'])"
|
:show-delete="checkPermi(['system:stockIn:remove'])"
|
||||||
|
:show-edit="checkPermi(['system:stockIn:edit'])"
|
||||||
@update:add="handleAdd"
|
@update:add="handleAdd"
|
||||||
@update:edit="handleUpdate()"
|
@update:edit="handleUpdate()"
|
||||||
@update:delete="handleDelete()"
|
@update:delete="handleDelete()"
|
||||||
@@ -36,33 +36,36 @@
|
|||||||
</el-row>
|
</el-row>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<el-table v-loading="loading" border :data="stockInList" @selection-change="handleSelectionChange">
|
<el-table v-loading="loading" :data="stockInList" border @selection-change="handleSelectionChange">
|
||||||
<el-table-column type="selection" flexd width="55" align="center" />
|
<el-table-column align="center" flexd type="selection" width="55" />
|
||||||
<el-table-column label="入库单号" flexd align="center" prop="inNo" />
|
<el-table-column align="center" flexd label="入库单号" prop="inNo" />
|
||||||
<el-table-column label="入库日期" width="100" align="center" prop="inDate" />
|
|
||||||
<el-table-column label="供应商" align="center" prop="supplierName" />
|
<el-table-column align="center" label="操作状态" prop="operateStatus" width="80">
|
||||||
<el-table-column label="入库仓库" align="center" prop="warehouseName" />
|
|
||||||
<el-table-column label="操作状态" width="80" align="center" prop="operateStatus">
|
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<dict-tag :options="com_stock_in_status" :value="scope.row.operateStatus"></dict-tag>
|
<dict-tag :options="com_stock_in_status" :value="scope.row.operateStatus"></dict-tag>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="制单人" align="center" prop="leader" />
|
<el-table-column align="center" label="制单人" prop="leader" />
|
||||||
<el-table-column label="备注" show-overflow-tooltip align="center" prop="remark" />
|
<el-table-column align="center" label="入库日期" prop="inDate" width="100" />
|
||||||
<el-table-column label="操作" width="200" align="center" fixed="right" class-name="small-padding fixed-width">
|
<el-table-column align="center" label="供应商" prop="supplierName" />
|
||||||
|
<el-table-column align="center" label="入库仓库" prop="warehouseName" />
|
||||||
|
<el-table-column align="center" label="所属小区" prop="villageName" />
|
||||||
|
|
||||||
|
<el-table-column align="center" label="备注" prop="remark" show-overflow-tooltip />
|
||||||
|
<el-table-column align="center" class-name="small-padding fixed-width" fixed="right" label="操作" width="200">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button link type="primary" @click="handleMain(scope.row)" v-has-permi="['system:stockIn:query']">查看清单</el-button>
|
<el-button v-has-permi="['system:stockIn:query']" link type="primary" @click="handleMain(scope.row)">查看清单</el-button>
|
||||||
<el-button link type="primary" @click="handleUpdate(scope.row)" v-has-permi="['system:stockIn:edit']">编辑</el-button>
|
<el-button v-has-permi="['system:stockIn:edit']" link type="primary" @click="handleUpdate(scope.row)">编辑</el-button>
|
||||||
<el-button link type="primary" @click="handleDelete(scope.row)" v-has-permi="['system:stockIn:remove']">删除</el-button>
|
<el-button v-has-permi="['system:stockIn:remove']" link type="primary" @click="handleDelete(scope.row)">删除</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</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" v-model:limit="queryParams.pageSize" v-model:page="queryParams.pageNum" :total="total" @pagination="getList" />
|
||||||
</el-card>
|
</el-card>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup name="StockIn" lang="ts">
|
<script lang="ts" name="StockIn" setup>
|
||||||
import { listStockIn, delStockIn, addStockIn, updateStockIn } from '@/api/system/TPurchaseIn';
|
import { listStockIn, delStockIn, addStockIn, updateStockIn } from '@/api/system/TPurchaseIn';
|
||||||
import { StockInVO, StockInQuery, StockInForm } from '@/api/system/TPurchaseIn/type';
|
import { StockInVO, StockInQuery, StockInForm } from '@/api/system/TPurchaseIn/type';
|
||||||
import { checkPermi } from '@/utils/permission';
|
import { checkPermi } from '@/utils/permission';
|
||||||
|
|||||||
@@ -4,9 +4,9 @@
|
|||||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||||
<div v-show="showSearch" class="mb-[10px]">
|
<div v-show="showSearch" class="mb-[10px]">
|
||||||
<el-card shadow="hover">
|
<el-card shadow="hover">
|
||||||
<el-form ref="queryFormRef" label-width="100px" @submit.prevent="handleQuery" :model="queryParams" :inline="true">
|
<el-form ref="queryFormRef" :inline="true" :model="queryParams" label-width="100px" @submit.prevent="handleQuery">
|
||||||
<el-form-item label="供应商名称" prop="supplierName">
|
<el-form-item label="供应商名称" prop="supplierName">
|
||||||
<el-input maxlength="20" v-model="queryParams.supplierName" placeholder="请输入供应商名称" clearable @keyup.enter="handleQuery" />
|
<el-input v-model="queryParams.supplierName" clearable maxlength="20" placeholder="请输入供应商名称" @keyup.enter="handleQuery" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" @click="handleQuery">搜索</el-button>
|
<el-button type="primary" @click="handleQuery">搜索</el-button>
|
||||||
@@ -24,8 +24,8 @@
|
|||||||
:disable-delete="multiple"
|
:disable-delete="multiple"
|
||||||
:disable-edit="single"
|
:disable-edit="single"
|
||||||
:show-add="checkPermi(['warehouse:supplier:add'])"
|
:show-add="checkPermi(['warehouse:supplier:add'])"
|
||||||
:show-edit="checkPermi(['warehouse:supplier:edit'])"
|
|
||||||
:show-delete="checkPermi(['warehouse:supplier:remove'])"
|
:show-delete="checkPermi(['warehouse:supplier:remove'])"
|
||||||
|
:show-edit="checkPermi(['warehouse:supplier:edit'])"
|
||||||
@update:add="handleAdd"
|
@update:add="handleAdd"
|
||||||
@update:edit="handleUpdate()"
|
@update:edit="handleUpdate()"
|
||||||
@update:delete="handleDelete()"
|
@update:delete="handleDelete()"
|
||||||
@@ -33,26 +33,27 @@
|
|||||||
</el-row>
|
</el-row>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<el-table v-loading="loading" border :data="supplierList" @selection-change="handleSelectionChange">
|
<el-table v-loading="loading" :data="supplierList" border @selection-change="handleSelectionChange">
|
||||||
<el-table-column type="selection" width="55" align="center" />
|
<el-table-column align="center" type="selection" width="55" />
|
||||||
<el-table-column label="供应商名称" align="center" prop="supplierName" />
|
<el-table-column align="center" label="供应商名称" prop="supplierName" />
|
||||||
<el-table-column label="联系人" align="center" prop="contactPerson" />
|
<el-table-column align="center" label="联系人" prop="contactPerson" />
|
||||||
<el-table-column label="联系电话" align="center" prop="contactPhone" />
|
<el-table-column align="center" label="联系电话" prop="contactPhone" />
|
||||||
<el-table-column label="邮箱" align="center" prop="email" />
|
<el-table-column align="center" label="邮箱" prop="email" />
|
||||||
<el-table-column label="地址" align="center" prop="address" />
|
<el-table-column align="center" label="地址" prop="address" />
|
||||||
<el-table-column label="备注" show-overflow-tooltip align="center" prop="remark" />
|
<el-table-column align="center" label="所属小区" prop="villageName" />
|
||||||
<el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width">
|
<el-table-column align="center" label="备注" prop="remark" show-overflow-tooltip />
|
||||||
|
<el-table-column align="center" class-name="small-padding fixed-width" fixed="right" label="操作">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button link type="primary" @click="handleUpdate(scope.row)" v-has-permi="['warehouse:supplier:edit']">编辑</el-button>
|
<el-button v-has-permi="['warehouse:supplier:edit']" link type="primary" @click="handleUpdate(scope.row)">编辑</el-button>
|
||||||
<el-button link type="primary" @click="handleDelete(scope.row)" v-has-permi="['warehouse:supplier:remove']">删除</el-button>
|
<el-button v-has-permi="['warehouse:supplier:remove']" link type="primary" @click="handleDelete(scope.row)">删除</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</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" v-model:limit="queryParams.pageSize" v-model:page="queryParams.pageNum" :total="total" @pagination="getList" />
|
||||||
</el-card>
|
</el-card>
|
||||||
<!-- 添加或修改供应商对话框 -->
|
<!-- 添加或修改供应商对话框 -->
|
||||||
<el-dialog :title="dialog.title" v-model="dialog.visible" width="500px" append-to-body>
|
<el-dialog v-model="dialog.visible" :title="dialog.title" append-to-body width="500px">
|
||||||
<el-form ref="supplierFormRef" :model="form" :rules="rules" label-width="80px">
|
<el-form ref="supplierFormRef" :model="form" :rules="rules" label-width="80px">
|
||||||
<el-form-item label="供应商名称*" prop="supplierName">
|
<el-form-item label="供应商名称*" prop="supplierName">
|
||||||
<el-input v-model="form.supplierName" placeholder="请输入供应商名称*" />
|
<el-input v-model="form.supplierName" placeholder="请输入供应商名称*" />
|
||||||
@@ -70,7 +71,7 @@
|
|||||||
<el-input v-model="form.address" placeholder="请输入地址" />
|
<el-input v-model="form.address" placeholder="请输入地址" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="备注" prop="remark">
|
<el-form-item label="备注" prop="remark">
|
||||||
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
|
<el-input v-model="form.remark" placeholder="请输入内容" type="textarea" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
@@ -83,7 +84,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup name="Supplier" lang="ts">
|
<script lang="ts" name="Supplier" setup>
|
||||||
import { listSupplier, delSupplier, addSupplier, updateSupplier } from '@/api/system/Tsupplier';
|
import { listSupplier, delSupplier, addSupplier, updateSupplier } from '@/api/system/Tsupplier';
|
||||||
import { SupplierVO, SupplierQuery, SupplierForm } from '@/api/system/Tsupplier/type';
|
import { SupplierVO, SupplierQuery, SupplierForm } from '@/api/system/Tsupplier/type';
|
||||||
import { checkPermi } from '@/utils/permission';
|
import { checkPermi } from '@/utils/permission';
|
||||||
|
|||||||
@@ -4,26 +4,26 @@
|
|||||||
<div class="AddBuildingBody">
|
<div class="AddBuildingBody">
|
||||||
<div class="title">基本信息</div>
|
<div class="title">基本信息</div>
|
||||||
<div class="addBuildingFormBody">
|
<div class="addBuildingFormBody">
|
||||||
<el-form class="formBody" label-position="right" ref="formRef" :model="form" :rules="rules" label-width="130px">
|
<el-form ref="formRef" :model="form" :rules="rules" class="formBody" label-position="right" label-width="130px">
|
||||||
<el-form-item label="仓库名称" prop="warehouseName">
|
<el-form-item label="仓库名称" prop="warehouseName">
|
||||||
<el-input maxlength="20" v-model.trim="form.warehouseName" placeholder="请输入仓库名称" />
|
<el-input v-model.trim="form.warehouseName" maxlength="20" placeholder="请输入仓库名称" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="归属小区" prop="villageId">
|
<el-form-item label="仓库归属" prop="villageId">
|
||||||
<el-select v-model="form.villageId" placeholder="请选择归属小区">
|
<el-select v-model="form.villageId" placeholder="请选择归属小区">
|
||||||
<el-option v-for="(item, index) in communityList" :key="index" :label="item.villageName" :value="item.villageId" />
|
<el-option v-for="(item, index) in communityList" :key="index" :label="item.villageName" :value="item.villageId" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="联系人" prop="contactPerson">
|
<el-form-item label="联系人" prop="contactPerson">
|
||||||
<el-input maxlength="20" v-model.trim="form.contactPerson" placeholder="请输入联系人" />
|
<el-input v-model.trim="form.contactPerson" maxlength="20" placeholder="请输入联系人" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="联系电话" prop="contactPhone">
|
<el-form-item label="联系电话" prop="contactPhone">
|
||||||
<el-input maxlength="11" v-model.trim="form.contactPhone" placeholder="请输入联系电话" />
|
<el-input v-model.trim="form.contactPhone" maxlength="11" placeholder="请输入联系电话" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="地址" prop="address">
|
<el-form-item label="地址" prop="address">
|
||||||
<el-input type="textarea" maxlength="100" show-word-limit :rows="2" v-model.trim="form.address" placeholder="请输入地址" />
|
<el-input v-model.trim="form.address" :rows="2" maxlength="100" placeholder="请输入地址" show-word-limit type="textarea" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="备注" prop="remark">
|
<el-form-item label="备注" prop="remark">
|
||||||
<el-input type="textarea" maxlength="200" show-word-limit :rows="5" v-model.trim="form.remark" placeholder="请输入备注" />
|
<el-input v-model.trim="form.remark" :rows="5" maxlength="200" placeholder="请输入备注" show-word-limit type="textarea" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item style="margin-top: 30px">
|
<el-form-item style="margin-top: 30px">
|
||||||
<el-button type="primary" @click="submitForm">提交</el-button>
|
<el-button type="primary" @click="submitForm">提交</el-button>
|
||||||
@@ -35,7 +35,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script lang="ts" setup>
|
||||||
import { ref } from 'vue';
|
import { ref } from 'vue';
|
||||||
import PageHeader from '@/components/Pageheader/index.vue';
|
import PageHeader from '@/components/Pageheader/index.vue';
|
||||||
import { getCommunitylistAPI } from '@/api/system/community';
|
import { getCommunitylistAPI } from '@/api/system/community';
|
||||||
@@ -125,7 +125,7 @@ const cancelForm = () => {
|
|||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style lang="scss" scoped>
|
||||||
.AddBuildingBox {
|
.AddBuildingBox {
|
||||||
padding: 15px;
|
padding: 15px;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
|||||||
@@ -4,9 +4,9 @@
|
|||||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||||
<div v-show="showSearch" class="mb-[10px]">
|
<div v-show="showSearch" class="mb-[10px]">
|
||||||
<el-card shadow="hover">
|
<el-card shadow="hover">
|
||||||
<el-form ref="queryFormRef" label-width="100px" @submit.prevent="handleQuery" :model="queryParams" :inline="true">
|
<el-form ref="queryFormRef" :inline="true" :model="queryParams" label-width="100px" @submit.prevent="handleQuery">
|
||||||
<el-form-item label="仓库名称" prop="warehouseName">
|
<el-form-item label="仓库名称" prop="warehouseName">
|
||||||
<el-input maxlength="20" v-model="queryParams.warehouseName" placeholder="请输入仓库名称" clearable @keyup.enter="handleQuery" />
|
<el-input v-model="queryParams.warehouseName" clearable maxlength="20" placeholder="请输入仓库名称" @keyup.enter="handleQuery" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" @click="handleQuery">搜索</el-button>
|
<el-button type="primary" @click="handleQuery">搜索</el-button>
|
||||||
@@ -20,20 +20,12 @@
|
|||||||
<el-card class="flex-1" shadow="never">
|
<el-card class="flex-1" shadow="never">
|
||||||
<template #header>
|
<template #header>
|
||||||
<el-row :gutter="10" class="mb8">
|
<el-row :gutter="10" class="mb8">
|
||||||
<!-- <el-col :span="1.5">
|
|
||||||
<el-button type="primary" plain icon="Plus" @click="handleAdd" v-has-permi="['system:warehouse:add']">新增</el-button>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="1.5">
|
|
||||||
<el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()" v-has-permi="['system:warehouse:remove']"
|
|
||||||
>删除</el-button
|
|
||||||
>
|
|
||||||
</el-col> -->
|
|
||||||
<right-toolbar
|
<right-toolbar
|
||||||
:disable-delete="multiple"
|
:disable-delete="multiple"
|
||||||
:disable-edit="single"
|
:disable-edit="single"
|
||||||
:show-add="checkPermi(['warehouse:warehouse:add'])"
|
:show-add="checkPermi(['warehouse:warehouse:add'])"
|
||||||
:show-edit="checkPermi(['warehouse:warehouse:edit'])"
|
|
||||||
:show-delete="checkPermi(['warehouse:warehouse:remove'])"
|
:show-delete="checkPermi(['warehouse:warehouse:remove'])"
|
||||||
|
:show-edit="checkPermi(['warehouse:warehouse:edit'])"
|
||||||
@update:add="handleAdd"
|
@update:add="handleAdd"
|
||||||
@update:edit="handleUpdate()"
|
@update:edit="handleUpdate()"
|
||||||
@update:delete="handleDelete()"
|
@update:delete="handleDelete()"
|
||||||
@@ -41,36 +33,37 @@
|
|||||||
</el-row>
|
</el-row>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<el-table v-loading="loading" border :data="warehouseList" @selection-change="handleSelectionChange">
|
<el-table v-loading="loading" :data="warehouseList" border @selection-change="handleSelectionChange">
|
||||||
<el-table-column type="selection" align="center" />
|
<el-table-column align="center" type="selection" />
|
||||||
<!-- <el-table-column label="隶属小区" align="center" prop="villageName" />-->
|
<el-table-column align="center" label="仓库名称" prop="warehouseName" />
|
||||||
<el-table-column label="仓库名称" align="center" prop="warehouseName" />
|
<el-table-column align="center" label="仓库归属" prop="villageName" />
|
||||||
<el-table-column label="联系人" width="100" align="center" prop="contactPerson" />
|
<el-table-column align="center" label="状态" prop="status" width="150">
|
||||||
<el-table-column label="联系电话" width="120" align="center" prop="contactPhone" />
|
|
||||||
<el-table-column label="地址" align="center" prop="address" />
|
|
||||||
<el-table-column label="状态" width="150" align="center" prop="status">
|
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-switch
|
<el-switch
|
||||||
@change="(val: string) => handleChangeSwitch(val, scope.row)"
|
|
||||||
v-model="scope.row.status"
|
v-model="scope.row.status"
|
||||||
active-value="0"
|
active-value="0"
|
||||||
inactive-value="1"
|
inactive-value="1"
|
||||||
|
@change="(val: string) => handleChangeSwitch(val, scope.row)"
|
||||||
></el-switch>
|
></el-switch>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="备注" width="80" align="center" prop="remark" show-overflow-tooltip />
|
<el-table-column align="center" label="联系人" prop="contactPerson" width="100" />
|
||||||
<el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width">
|
<el-table-column align="center" label="联系电话" prop="contactPhone" width="120" />
|
||||||
|
<el-table-column align="center" label="地址" prop="address" />
|
||||||
|
<el-table-column align="center" label="所属小区" prop="villageName" />
|
||||||
|
<el-table-column align="center" label="备注" prop="remark" show-overflow-tooltip width="80" />
|
||||||
|
<el-table-column align="center" class-name="small-padding fixed-width" fixed="right" label="操作">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button link type="primary" @click="handleUpdate(scope.row)" v-has-permi="['warehouse:warehouse:edit']">编辑</el-button>
|
<el-button v-has-permi="['warehouse:warehouse:edit']" link type="primary" @click="handleUpdate(scope.row)">编辑</el-button>
|
||||||
<el-button link type="primary" @click="handleDelete(scope.row)" v-has-permi="['warehouse:warehouse:remove']">删除</el-button>
|
<el-button v-has-permi="['warehouse:warehouse:remove']" link type="primary" @click="handleDelete(scope.row)">删除</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</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" v-model:limit="queryParams.pageSize" v-model:page="queryParams.pageNum" :total="total" @pagination="getList" />
|
||||||
</el-card>
|
</el-card>
|
||||||
<!-- 添加或修改仓库对话框 -->
|
<!-- 添加或修改仓库对话框 -->
|
||||||
<el-dialog :title="dialog.title" v-model="dialog.visible" width="500px" append-to-body>
|
<el-dialog v-model="dialog.visible" :title="dialog.title" append-to-body width="500px">
|
||||||
<el-form ref="warehouseFormRef" :model="form" :rules="rules" label-width="80px">
|
<el-form ref="warehouseFormRef" :model="form" :rules="rules" label-width="80px">
|
||||||
<el-form-item label="仓库名称" prop="warehouseName">
|
<el-form-item label="仓库名称" prop="warehouseName">
|
||||||
<el-input v-model="form.warehouseName" placeholder="请输入仓库名称*" />
|
<el-input v-model="form.warehouseName" placeholder="请输入仓库名称*" />
|
||||||
@@ -88,7 +81,7 @@
|
|||||||
<el-input v-model="form.address" placeholder="请输入地址" />
|
<el-input v-model="form.address" placeholder="请输入地址" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="备注" prop="remark">
|
<el-form-item label="备注" prop="remark">
|
||||||
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
|
<el-input v-model="form.remark" placeholder="请输入内容" type="textarea" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
@@ -101,7 +94,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup name="Warehouse" lang="ts">
|
<script lang="ts" name="Warehouse" setup>
|
||||||
import { listWarehouse, delWarehouse, addWarehouse, updateWarehouse } from '@/api/system/Twarehouse';
|
import { listWarehouse, delWarehouse, addWarehouse, updateWarehouse } from '@/api/system/Twarehouse';
|
||||||
import { WarehouseVO, WarehouseQuery, WarehouseForm } from '@/api/system/Twarehouse/type';
|
import { WarehouseVO, WarehouseQuery, WarehouseForm } from '@/api/system/Twarehouse/type';
|
||||||
import { checkPermi } from '@/utils/permission';
|
import { checkPermi } from '@/utils/permission';
|
||||||
|
|||||||
@@ -17,11 +17,11 @@
|
|||||||
<div class="tabbox1 flex flex-col flex-1 h-full">
|
<div class="tabbox1 flex flex-col flex-1 h-full">
|
||||||
<div class="tabsbox flex flex-col flex-1">
|
<div class="tabsbox flex flex-col flex-1">
|
||||||
<div
|
<div
|
||||||
class="topbox"
|
|
||||||
:class="{
|
:class="{
|
||||||
quickbg: sideActive === 1,
|
quickbg: sideActive === 1,
|
||||||
todobg: sideActive === 2
|
todobg: sideActive === 2
|
||||||
}"
|
}"
|
||||||
|
class="topbox"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
:class="{
|
:class="{
|
||||||
@@ -105,7 +105,7 @@ function getVillageInfo() {
|
|||||||
list.value[2].value = res.totalParking ?? 0;
|
list.value[2].value = res.totalParking ?? 0;
|
||||||
list.value[3].value = res.totalDevice ?? 0;
|
list.value[3].value = res.totalDevice ?? 0;
|
||||||
list.value[4].value = res.totalComplaint ?? 0;
|
list.value[4].value = res.totalComplaint ?? 0;
|
||||||
list.value[5].value = res.totalMaterial ?? 0;
|
// list.value[5].value = res.totalMaterial ?? 0;
|
||||||
});
|
});
|
||||||
getVillageByIdAPI(id).then((res) => {
|
getVillageByIdAPI(id).then((res) => {
|
||||||
villageinfo.value = {
|
villageinfo.value = {
|
||||||
@@ -146,7 +146,7 @@ enum SideList {
|
|||||||
// ! 创建办事记录
|
// ! 创建办事记录
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style lang="scss" scoped>
|
||||||
.scale-container {
|
.scale-container {
|
||||||
background-color: #eaf2ff;
|
background-color: #eaf2ff;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
|||||||
Reference in New Issue
Block a user