退租管理页面功能完善

This commit is contained in:
BianLzhaoMin 2024-12-04 16:40:54 +08:00
parent 02145d5b8e
commit d8d997c167
10 changed files with 724 additions and 651 deletions

9
components.d.ts vendored
View File

@ -9,6 +9,8 @@ declare module 'vue' {
export interface GlobalComponents {
Breadcrumb: typeof import('./src/components/Breadcrumb/index.vue')['default']
ElBadge: typeof import('element-plus/es')['ElBadge']
ElBreadcrumb: typeof import('element-plus/es')['ElBreadcrumb']
ElBreadcrumbItem: typeof import('element-plus/es')['ElBreadcrumbItem']
ElButton: typeof import('element-plus/es')['ElButton']
ElCarousel: typeof import('element-plus/es')['ElCarousel']
ElCarouselItem: typeof import('element-plus/es')['ElCarouselItem']
@ -16,11 +18,13 @@ declare module 'vue' {
ElCheckbox: typeof import('element-plus/es')['ElCheckbox']
ElCol: typeof import('element-plus/es')['ElCol']
ElConfigProvider: typeof import('element-plus/es')['ElConfigProvider']
ElCountdown: typeof import('element-plus/es')['ElCountdown']
ElDatePicker: typeof import('element-plus/es')['ElDatePicker']
ElDialog: typeof import('element-plus/es')['ElDialog']
ElEmpty: typeof import('element-plus/es')['ElEmpty']
ElForm: typeof import('element-plus/es')['ElForm']
ElFormItem: typeof import('element-plus/es')['ElFormItem']
ElHeader: typeof import('element-plus/es')['ElHeader']
ElIcon: typeof import('element-plus/es')['ElIcon']
ElImage: typeof import('element-plus/es')['ElImage']
ElInput: typeof import('element-plus/es')['ElInput']
@ -28,11 +32,16 @@ declare module 'vue' {
ElMenu: typeof import('element-plus/es')['ElMenu']
ElMenuItem: typeof import('element-plus/es')['ElMenuItem']
ElOption: typeof import('element-plus/es')['ElOption']
ElPageHeader: typeof import('element-plus/es')['ElPageHeader']
ElPagination: typeof import('element-plus/es')['ElPagination']
ElPopconfirm: typeof import('element-plus/es')['ElPopconfirm']
ElProgress: typeof import('element-plus/es')['ElProgress']
ElRadioButton: typeof import('element-plus/es')['ElRadioButton']
ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup']
ElRow: typeof import('element-plus/es')['ElRow']
ElSelect: typeof import('element-plus/es')['ElSelect']
ElStep: typeof import('element-plus/es')['ElStep']
ElSteps: typeof import('element-plus/es')['ElSteps']
ElTable: typeof import('element-plus/es')['ElTable']
ElTableColumn: typeof import('element-plus/es')['ElTableColumn']
ElTag: typeof import('element-plus/es')['ElTag']

4
env/.env.dev vendored
View File

@ -7,9 +7,9 @@ VITE_API_URL = '/proxyApi'
# 开发环境接口地址
# VITE_proxyTarget = 'http://10.40.92.74:8080' #盛旭
# VITE_proxyTarget = 'http://192.168.2.246:28080' # 马帅
VITE_proxyTarget = 'http://192.168.2.246:28080' # 马帅
# VITE_proxyTarget = 'http://192.168.2.123:28080' # 梁超
VITE_proxyTarget = 'http://192.168.0.244:28580' # 测试服务
# VITE_proxyTarget = 'http://192.168.0.244:28580' # 测试服务
# VITE_proxyTarget = 'http://192.168.2.129:18080' # 马帅
# VITE_proxyTarget = 'http://10.40.92.185:9206' # 赵福海 ( 设备类型)

View File

@ -100,6 +100,11 @@ const props = defineProps({
type: Number || String,
default: 10,
},
currentIndex: {
// M
type: Number,
default: 0,
},
disabledFlag: {
//
type: Boolean,
@ -185,7 +190,7 @@ const successUpload = (response: any, file: any) => {
}
Object.assign(fileInfo, response.data)
fileListNew.value.push(fileInfo)
emit('onFileChange', fileListNew.value)
emit('onFileChange', fileListNew.value, props.currentIndex)
// console.log(fileListNew.value, '-----------3333333333333')
} else {
@ -242,7 +247,7 @@ const handleExceed = (files: any, fileList: any) => {
//
const removeFile = (file: any, data: any) => {
fileListNew.value = fileListNew.value.filter((e: any) => e.uid != file.uid)
emit('onFileChange', fileListNew.value)
emit('onFileChange', fileListNew.value, props.currentIndex)
}
//
const preview = (data: any) => {

View File

@ -5,10 +5,30 @@ import { post, get, put } from 'http/index'
*/
/**
*
* @param data 退
* @returns
*/
export const getRentTerminationListApi = (data: any = {}) => {
return get(`/material-mall/lease-repair/list`, data)
}
/**
* @param orderId 退 ID
* @returns
*/
export const getOrderDetailsByIdApi = (orderId: any) => {
return get(`/material-mall/order/getOrderDetailsById`, { orderId })
}
/**
* @param data 退 退 data参数
* @returns
*/
export const setAddLeaseRepairApi = (data: any) => {
return post(`/material-mall/lease-repair/add`, data)
}
/**
* @param orderId 退 ID
* @returns
*/
export const getOverhaulApi = (orderId: any) => {
return get(`/material-mall/lease-repair/getById`, { orderId })
}

View File

@ -4,15 +4,16 @@
{{ displayDate }}
</el-button>
<el-date-picker
v-model="selectedDate"
:type="pickerType"
:placeholder="placeholder"
:format="format"
:value-format="valueFormat"
:style="{ visibility: 'hidden' }"
@change="handleDateChange"
style="margin-top: -100px"
ref="datePicker"
:format="format"
:type="pickerType"
v-model="selectedDate"
style="margin-top: -100px"
:placeholder="placeholder"
@change="handleDateChange"
:value-format="valueFormat"
:disabled-date="disabledDate"
:style="{ visibility: 'hidden' }"
/>
</div>
</template>
@ -20,6 +21,11 @@
<script setup>
import { ref, computed, watch, nextTick } from 'vue'
import { ElDatePicker, ElButton } from 'element-plus'
const disabledDate = (date) => {
const today = new Date()
//
return date.getTime() < today.getTime()
}
const props = defineProps({
modelValue: {
@ -76,11 +82,6 @@ const handleDateChange = (value) => {
showPicker.value = false
}
// const onVisibleChange = () => {
// console.log('')
// showPicker.value = false
// }
watch(
showPicker,
(newValue) => {
@ -111,7 +112,6 @@ watch(
}
.date-picker-button {
/* min-width: 120px; */
background-color: #1abc9c;
color: #fff;
height: 30px;

View File

@ -227,7 +227,6 @@ import { useRoute, useRouter } from 'vue-router'
import { useStore } from '../../store/user'
const userStore = useStore()
const router = useRouter()
const protocolChecked = ref<boolean>(false)
const allKey = ref(0)
const cardList = ref<any>([])

View File

@ -403,7 +403,7 @@ import { ElMessage, ElMessageBox } from 'element-plus'
import { mainStore } from '@/store/main'
import { getBookCarDetailsApi } from 'http/api/home/index'
const router = useRouter()
const router: any = useRouter()
const route: any = useRoute()
const store = mainStore()
const ruleFormRef = ref()
@ -425,18 +425,21 @@ const viewImgUrl = computed(() => {
if (router.options.history.state.back) {
backPath.value = router.options.history.state.back
console.log(router.options.history.state.back, 'router.options.history.state.back')
const previousRoute: any = []
if (router.options.history.state.back === '/home') {
backName.value = '首页'
}
router.options.routes.forEach((route: any) => {
if (route.path === router.options.history.state.back) {
if (router.options.history.state.back.indexOf(router.path) != -1) {
previousRoute.push(route)
} else {
if (route.children && route.children.length > 0) {
route.children.forEach((r: any) => {
if (r.path === router.options.history.state.back) {
console.log(r.path, 'route.path ')
if (router.options.history.state.back.indexOf(r.path) != -1) {
previousRoute.push(r)
}
})

File diff suppressed because it is too large Load Diff

View File

@ -12,7 +12,7 @@
<el-form-item prop="leaseName">
<el-input
style="width: 100%"
placeholder="请输入需求名称"
placeholder="请输入订单编号"
v-model="searchParams.leaseName"
clearable
/>
@ -100,13 +100,14 @@
}"
>
<el-table-column align="center" label="序号" type="index" width="80" />
<el-table-column align="center" prop="leaseCode" label="需求编号" />
<el-table-column align="center" prop="leaseName" label="需求名称" />
<el-table-column align="center" prop="areaName" label="项目所在地" />
<el-table-column align="center" prop="publishUser" label="发布人" />
<el-table-column align="center" prop="orderUser" label="操作人" />
<el-table-column align="center" prop="endTime" label="需求截止日期" />
<el-table-column align="center" prop="orderTime" label="接单时间" />
<el-table-column align="center" prop="leaseCode" label="订单编号" />
<el-table-column align="center" prop="leaseName" label="承租人" />
<el-table-column align="center" prop="areaName" label="承租单位" />
<el-table-column align="center" prop="publishUser" label="联系电话" />
<el-table-column align="center" prop="orderUser" label="下单时间" />
<el-table-column align="center" prop="endTime" label="订单状态" />
<el-table-column align="center" prop="orderTime" label="租赁金额(元)" />
<el-table-column align="center" prop="orderTime" label="总金额(元)" />
<!-- <el-table-column align="center" prop="leaseStatusName" label="需求状态" />
<el-table-column align="center" label="操作" :width="220">
<template #default="{ row }">
@ -160,9 +161,11 @@
/> -->
<PagingComponent
@getList="getLeaseListData"
@getListChange="getLeaseListData"
:pageSize="searchParams.pageSize"
:pageNumber="searchParams.pageNum"
:size="searchParams.pageSize"
:page="searchParams.pageNum"
:total="total"
/>

View File

@ -10,20 +10,20 @@
<el-col :span="4">
<el-form-item prop="leaseName">
<el-input
clearable
style="width: 100%"
placeholder="请输入需求名称"
v-model="searchParams.leaseName"
clearable
/>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item prop="leaseCode">
<el-input
clearable
style="width: 100%"
placeholder="请输入需求编号"
v-model="searchParams.leaseCode"
clearable
/>
</el-form-item>
</el-col>
@ -44,9 +44,9 @@
<el-col :span="6">
<el-form-item>
<el-date-picker
style="width: 100%"
v-model="endTime"
type="daterange"
style="width: 100%"
range-separator="-"
value-format="YYYY-MM-DD"
start-placeholder="截止开始日期"
@ -57,9 +57,9 @@
<el-col :span="6">
<el-form-item>
<el-date-picker
v-model="releaseTime"
style="width: 100%"
type="daterange"
style="width: 100%"
v-model="releaseTime"
range-separator="-"
value-format="YYYY-MM-DD"
start-placeholder="发布开始日期"
@ -77,9 +77,9 @@
<el-button
@click="
() => {
addOrEditDialogVisible = true
isRepublish = true
dialogTitle = '新增'
addOrEditDialogVisible = true
}
"
type="primary"
@ -95,8 +95,8 @@
:data="leaseList"
show-overflow-tooltip
:header-cell-style="{
background: '#00a288',
color: '#fff',
background: '#00a288',
}"
>
<el-table-column align="center" label="序号" type="index" width="80" />
@ -121,19 +121,18 @@
<el-table-column align="center" label="操作" :width="220">
<template #default="{ row }">
<el-button
text
size="small"
type="primary"
class="primary-lease"
v-if="row.leaseStatus === 2"
@click="onRepublish(row.id, false)"
>
重新发布
</el-button>
<el-button
text
size="small"
class="primary-lease"
type="primary"
class="primary-lease"
v-if="row.leaseStatus === 2 || row.leaseStatus === 0"
@click="onRepublish(row.id, true, row.leaseStatus)"
>
@ -148,7 +147,7 @@
v-if="row.leaseStatus != 1"
>
<template #reference>
<el-button size="small" text type="primary" class="primary-lease">
<el-button size="small" type="primary" class="primary-lease">
删除
</el-button>
</template>
@ -170,47 +169,23 @@
</el-table-column>
</el-table>
<!-- <el-pagination
size="small"
background
layout="prev, pager, next"
:page-size="searchParams.pageSize"
:total="total"
class="mt-4"
@current-change="onCurrentChange"
v-if="total > 0"
/> -->
<!-- <el-pagination
style="text-align: right"
background
small="small"
:total="total"
:page-sizes="[10, 20, 50, 100]"
v-model:page-size="searchParams.pageSize"
v-model:current-page="searchParams.pageNum"
layout="total, prev, pager, next,sizes"
@size-change="getLeaseListData"
@current-change="getLeaseListData"
/> -->
<PagingComponent
@getListChange="getLeaseListData"
v-model:page-size="searchParams.pageSize"
v-model:page-num="searchParams.pageNum"
:total="total"
:size="searchParams.pageSize"
:page="searchParams.pageNum"
:total="total"
@getListChange="getLeaseListData"
v-model:page-num="searchParams.pageNum"
v-model:page-size="searchParams.pageSize"
/>
<!-- 新增修改对话框 -->
<el-dialog
:title="dialogTitle"
width="60%"
align-center
destroy-on-close
v-model="addOrEditDialogVisible"
@close="onClose"
destroy-on-close
:title="dialogTitle"
v-model="addOrEditDialogVisible"
>
<el-form
label-width="auto"
@ -246,7 +221,7 @@
</el-form-item>
</el-col>
<el-col :span="12">
<!-- <el-form-item label="租赁公司" prop="companyId">
<el-form-item label="租赁公司" prop="companyId">
<el-select
clearable
style="width: 100%"
@ -254,26 +229,10 @@
v-model="addOrEditForm.companyId"
>
<el-option
v-for="item in companyOptions"
:key="item.companyId"
:label="item.companyName"
:value="item.companyId"
/>
</el-select>
</el-form-item> -->
<el-form-item label="项目所在地" prop="areaId">
<el-select
clearable
style="width: 100%"
placeholder="请选择项目所在地"
v-model="addOrEditForm.areaId"
>
<el-option
v-for="item in areaList"
:key="item.areaId"
:label="item.areaName"
:value="item.areaId"
:label="item.companyName"
v-for="item in companyOptions"
/>
</el-select>
</el-form-item>
@ -307,8 +266,8 @@
clearable
:max="9999"
style="width: 100%"
v-model="addOrEditForm.leaseDay"
placeholder="请输入预估租期"
v-model="addOrEditForm.leaseDay"
/>
</el-form-item>
</el-col>
@ -319,8 +278,8 @@
:min="1"
:max="9999"
style="width: 100%"
v-model="addOrEditForm.leaseNum"
placeholder="请输入预估数量"
v-model="addOrEditForm.leaseNum"
/>
</el-form-item>
</el-col>
@ -333,12 +292,29 @@
type="date"
style="width: 100%"
value-format="YYYY-MM-DD"
:disabled-date="disabledDate"
v-model="addOrEditForm.endTime"
placeholder="请选择需求截止日期"
:disabled-date="disabledDate"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="项目所在地" prop="areaId">
<el-select
clearable
style="width: 100%"
placeholder="请选择项目所在地"
v-model="addOrEditForm.areaId"
>
<el-option
:key="item.areaId"
:value="item.areaId"
:label="item.areaName"
v-for="item in areaList"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="24">
@ -367,17 +343,17 @@
</div>
<UploadComponentNew
:maxSize="2"
:minLimit="minLimit"
:max-limit="4"
width="120px"
height="120px"
:autoUpload="true"
:multiple="true"
:fileListN="addOrEditForm.fileInfoList"
listType="picture-card"
:acceptTypeList="['.jpg', '.png']"
:autoUpload="true"
:minLimit="minLimit"
:actionUrl="uploadUrl"
listType="picture-card"
@onFileChange="onFileChange"
:acceptTypeList="['.jpg', '.png']"
:fileListN="addOrEditForm.fileInfoList"
>
<template v-slot:default>
<el-icon size="48" color="#aaa"><Plus /></el-icon>
@ -420,8 +396,8 @@
</template>
<script setup lang="ts">
import UploadComponentNew from 'components/uploadComponentNew/index.vue'
import PagingComponent from 'components/PagingComponent/index.vue'
import UploadComponentNew from 'components/uploadComponentNew/index.vue'
import { getCompanyListApi, getGoodsClassListApi, getAreaApi } from 'http/api/home'
import {
addLeaseInfoApi,
@ -433,22 +409,22 @@ import {
import { InfoFilled } from '@element-plus/icons-vue'
import { ElMessage } from 'element-plus'
import { useRouter } from 'vue-router'
const uploadUrl = import.meta.env.VITE_API_URL + '/file/upload'
const addOrEditDialogVisible = ref(false)
const companyOptions = ref<any>([])
const classOptions = ref<any>([])
const addOrEditFormRef = ref<any>(null)
const searchFormRef = ref<any>(null)
const leaseList = ref<any>([])
const isRepublish = ref(true)
const isSave = ref(false)
const total = ref(0)
const endTime = ref([])
const areaList = ref<any>([])
const releaseTime = ref([])
const dialogTitle = ref('新增')
const fileListTemp = ref<any>([])
const isSave = ref(false)
const router = useRouter()
const releaseTime = ref([])
const isRepublish = ref(true)
const areaList = ref<any>([])
const leaseList = ref<any>([])
const dialogTitle = ref('新增')
const classOptions = ref<any>([])
const fileListTemp = ref<any>([])
const companyOptions = ref<any>([])
const searchFormRef = ref<any>(null)
const addOrEditFormRef = ref<any>(null)
const addOrEditDialogVisible = ref(false)
const uploadUrl = import.meta.env.VITE_API_URL + '/file/upload'
const searchParams = reactive({
leaseName: '',
@ -493,10 +469,15 @@ const addOrEditFormTemp = ref<any>({
})
const addOrEditFormRules = reactive({
person: [{ required: true, message: '请输入联系人', trigger: 'blur' }],
leaseDay: [{ required: true, message: '请输入预估租期', trigger: 'blur' }],
leaseNum: [{ required: true, message: '请输入预估数量', trigger: 'blur' }],
leaseName: [{ required: true, message: '请输入需求名称', trigger: 'blur' }],
typeIds: [{ required: true, message: '请选择装备类目', trigger: 'change' }],
areaId: [{ required: true, message: '请选择项目所在地', trigger: 'change' }],
companyId: [{ required: true, message: '请选择租赁公司', trigger: 'change' }],
person: [{ required: true, message: '请输入联系人', trigger: 'blur' }],
fileInfoList: [{ required: true, message: '请上传参考图片', trigger: 'blur' }],
endTime: [{ required: true, message: '请选择需求截止日期', trigger: 'change' }],
personPhone: [
{ required: true, message: '请输入联系电话', trigger: 'blur' },
{
@ -505,11 +486,6 @@ const addOrEditFormRules = reactive({
trigger: 'blur',
},
],
leaseDay: [{ required: true, message: '请输入预估租期', trigger: 'blur' }],
leaseNum: [{ required: true, message: '请输入预估数量', trigger: 'blur' }],
endTime: [{ required: true, message: '请选择需求截止日期', trigger: 'change' }],
fileInfoList: [{ required: true, message: '请上传参考图片', trigger: 'blur' }],
areaId: [{ required: true, message: '请选择项目所在地', trigger: 'change' }],
})
const disabledDate = (date: any) => {