页面搭建二期

This commit is contained in:
13218645326 2023-12-05 15:13:45 +08:00
parent 0c01172371
commit b7da446f3b
9 changed files with 743 additions and 20 deletions

2
components.d.ts vendored
View File

@ -14,11 +14,13 @@ declare module 'vue' {
ElConfigProvider: typeof import('element-plus/es')['ElConfigProvider']
ElDatePicker: typeof import('element-plus/es')['ElDatePicker']
ElDialog: typeof import('element-plus/es')['ElDialog']
ElDivider: typeof import('element-plus/es')['ElDivider']
ElForm: typeof import('element-plus/es')['ElForm']
'ElForm-': typeof import('element-plus/es')['ElForm-']
ElFormItem: typeof import('element-plus/es')['ElFormItem']
ElIcon: typeof import('element-plus/es')['ElIcon']
ElInput: typeof import('element-plus/es')['ElInput']
ElLine: typeof import('element-plus/es')['ElLine']
ElMenu: typeof import('element-plus/es')['ElMenu']
ElMenuItem: typeof import('element-plus/es')['ElMenuItem']
ElMenuItemGroup: typeof import('element-plus/es')['ElMenuItemGroup']

View File

@ -126,12 +126,32 @@ const routes: Array<RouteRecordRaw> = [
keepAlive: true,
AuthFlag: true
}
},
{
path: 'orderManagement',
name: 'orderManagement',
component: () => import('views/enterpriseEquipmentManage/iotEquipmentManagement/index.vue'),
meta: {
title: 'iot设备管理',
keepAlive: true,
AuthFlag: true
}
},
{
name: "orderManagement",
path: 'orderManagement',
component: () => import('views/orderManagement/index.vue'),
meta: {
title: '订单管理',
keepAlive: true,
AuthFlag: true
},
children: []
}
]
},
]

View File

@ -137,7 +137,17 @@ export const list: any = [
}
}
]
},
{
name: "orderManagement",
path: 'orderManagement',
component: 'views/orderManagement/index.vue',
meta: {
title: '订单管理',
keepAlive: true,
AuthFlag: true
},
children: []
}
]

View File

@ -0,0 +1,103 @@
<template>
<el-dialog v-model="addShow" :title="title" width="30%" draggable :close-on-click-modal="false">
<el-form :model="form" ref="ruleFormRef" label-width="120px" :rules="formRules" style="padding: 0 80px 0px 0;" :readonly="readOnlyFlag">
<el-form-item label="iot设备名称" prop="deviceName">
<el-input v-model.trim="form.deviceName" placeholder="请输入iot设备名称" clearable maxlength="30" />
</el-form-item>
<el-form-item label="规格型号:" prop="mode">
<el-input v-model.trim="form.mode" placeholder="请输入规格型号" clearable maxlength="30" />
</el-form-item>
<el-form-item label="接入协议:" prop="aggreement">
<el-input v-model.trim="form.aggreement" placeholder="请输入接入协议" clearable maxlength="30" />
</el-form-item>
</el-form>
<template #footer>
<span class="dialog-footer">
<el-button @click="cancelFn">取消</el-button>
<el-button type="primary" @click="publishFn">
保存
</el-button>
</span>
</template>
</el-dialog>
</template>
<script lang="ts" setup>
import type { FormInstance, FormRules } from 'element-plus'
import { ElMessage } from 'element-plus'
const emits = defineEmits(['send'])
const addShow = ref(false)
let title = ref("新增")
const ruleFormRef: any = ref()
const form = reactive({
deviceName: '',
mode: '',
aggreement: ''
})
// const validatorLink = (rule: any, value: any, callback: any) => {
// if (linkReg.test(value)) {
// callback()
// } else {
// callback(new Error(""))
// }
// }
const formRules = reactive<FormRules<any>>({
deviceName: [
{ required: true, message: '请输入iot设备名称', trigger: 'blur' },
],
mode: [
{ required: true, message: '请输入规格型号', trigger: 'blur' },
], aggreement: [
{ required: true, message: '请输入接入协议', trigger: 'blur' },
]
})
const publishFn = () => {
if (!ruleFormRef) return
ruleFormRef.value.validate((valid: any) => {
if (valid) {
console.log('submit!')
} else {
console.log('error submit!')
return false
}
})
}
const cancelFn = (formEl: FormInstance | undefined) => {
if (!ruleFormRef) return
ruleFormRef.value.resetFields()
addShow.value = false
}
const open = (val: any) => {
title.value = "新增"
addShow.value = true
}
const edit = () => {
title.value = "编辑"
addShow.value = true
}
const readOnlyFlag = ref(false)
const show = (val:any) => {
title.value = val.title
readOnlyFlag.value= true
addShow.value = true
}
defineExpose({
open,
edit,
show
})
</script>
<style scoped lang="scss"></style>

View File

@ -0,0 +1,58 @@
<template>
<el-card shadow="always" class="search_header_top_row1">
<el-form :inline="true" :model="filterForm" class="demo-form-inline">
<el-form-item label="关键字">
<el-input v-model="filterForm.keyword" placeholder="请输入设备名称" clearable />
</el-form-item>
<el-form-item label="编码">
<el-input v-model="filterForm.code" placeholder="请输入规格型号" clearable />
</el-form-item>
<el-form-item >
<el-button type="primary" @click="serachFn">查询</el-button>
<el-button type="plain" @click="resetFn">重置</el-button>
</el-form-item>
</el-form>
<div>
<el-button type="primary" @click="addFn">新增</el-button>
<el-button type="primary" @click="exportFn">导出</el-button>
</div>
</el-card>
</template>
<script lang="ts" setup>
const emits = defineEmits(['search','reset','export','add'])
const filterForm = reactive({
keyword: '',
code:'',
equipment:"",
compnayName:'',
equipmentType:''
})
const serachFn = () => {
emits('search',filterForm)
}
const resetFn=()=>{
emits('reset')
}
const exportFn =()=>{
emits('export')
}
const addFn =()=>{
emits('add')
}
</script>
<style scoped lang="scss"></style>

View File

@ -1,25 +1,193 @@
<template>
<el-tree
:data="dataSource"
show-checkbox
node-key="id"
default-expand-all
:expand-on-click-node="false"
>
<template #default="{ node, data }">
<span class="custom-tree-node">
<span>{{ node.label }}</span>
<span>
<a @click="append(data)"> Append </a>
<a style="margin-left: 8px" @click="remove(node, data)"> Delete </a>
</span>
</span>
</template>
</el-tree>
<headerTop @search="searchFn" @reset="resetFn" @add="addFn" @export="exportFn" ></headerTop>
<addCom ref="addComRef"></addCom>
<el-card shadow="always" class="content_body_row">
<el-table :data="tableListInfo.list" border style="width: 100%" show-overflow-tooltip
:max-height="'calc(100vh - 72px - 48px - 65px - 12px - 60px - 88px)'"
:height="'calc(100vh - 72px - 48px - 65px - 12px - 60px - 88px)'">
<el-table-column type="index" width="72" label="序号" />
<el-table-column prop="v_company" label="企业名称" min-width="150" />
<el-table-column prop="v_code" label="编码" min-width="220">
</el-table-column>
<el-table-column prop="v_mnoney" label="租赁范围" min-width="220">
</el-table-column>
<el-table-column prop="v_equipmentType" label="装备类型" min-width="220">
</el-table-column>
<el-table-column prop="v_equipmentCount" label="装备数量" min-width="220">
</el-table-column>
<el-table-column prop="v_equipmentName" label="装备名称" min-width="220">
</el-table-column>
<el-table-column prop="v_money" label="租金" min-width="220">
</el-table-column>
<el-table-column label="状态" min-width="220">
<template #default="scope">
<div class="todo_status_c" v-if="scope.row.v_status=='1'">
待审批
</div>
<div class="pass_status_c" v-else-if="scope.row.v_status=='2'">
已通过
</div>
<div class="reject_status_c" v-else-if="scope.row.v_status=='3'">
已驳回
</div>
</template>
</el-table-column>
<el-table-column label="操作" align="center" width="200">
<template #default="scope">
<el-button type="primary" size="small" @click.prevent="auditFn(scope.row)">
审批
</el-button>
<el-button type="primary" size="small" @click.prevent="showFn(scope.row)">
查看
</el-button>
<el-button type="danger" size="small" @click.prevent="deleteRowFn(scope.row)">
下架
</el-button>
</template>
</el-table-column>
</el-table>
<div class="paination_out">
<Pagination :currentPage="paginationInfo.currentPage" :pageSize="paginationInfo.pageSize" @sendPage="getPageFn">
</Pagination>
</div>
</el-card>
</template>
<script lang="ts" setup>
import headerTop from "./com/headerTop.vue"
import addCom from "./com/addCom.vue"
import { ElConfirmBeforeOpert } from "utils/elementCom"
const addComRef = ref()
const paginationInfo = reactive({
currentPage: 1,
pageSize: 15
})
const tableData = [
{
v_id: '1',
v_company: '2016-05-03',
v_code: 'Tom',
v_mnoney: 'California',
v_equipmentType: 'Los Angeles',
v_equipmentCount: 'No. 189, Grove St, Los Angeles',
v_equipmentName: 'CA 90036',
v_money:'255',
v_status: '1',
},
{
v_id: '2',
v_company: '2016-05-03',
v_code: 'Tom',
v_mnoney: 'California',
v_equipmentType: 'Los Angeles',
v_equipmentCount: 'No. 189, Grove St, LosNo. 189, Grove St, Los Angeles Angeles',
v_equipmentName: 'CA 90036',
v_money:'255',
v_status: '1',
},
{
v_id: '3',
v_company: '2016-05-03',
v_code: 'Tom',
v_mnoney: 'California',
v_equipmentType: 'Los Angeles',
v_equipmentCount: 'No. 189, Grove St, Los Angeles',
v_equipmentName: 'CA 90036',
v_money:'255',
v_status: '1',
},
{
v_id: '4',
v_company: '2016-05-03',
v_code: 'Tom',
v_mnoney: 'California',
v_equipmentType: 'Los Angeles',
v_equipmentCount: 'No. 189, Grove St, Los Angeles',
v_equipmentName: 'CA 90036',
v_money:'255',
v_status: '1',
},
{
v_id: '5',
v_company: '2016-05-03',
v_code: 'Tom',
v_mnoney: 'California',
v_equipmentType: 'Los Angeles',
v_equipmentCount: 'No. 189, Grove St, Los Angeles',
v_equipmentName: 'CA 90036',
v_money:'255',
v_status: '2',
},
]
let tableListInfo = reactive({
list: tableData
})
const addFn = (row: any) => {
addComRef.value.open()
}
const deleteItem = (row: any) => {
const itemID = row.v_id
console.log("ITEMid", row)
}
const deleteRowFn = (row: any) => {
ElConfirmBeforeOpert(
'操作确认',
'是否确定下架?',
deleteItem,
'确定',
'取消',
row
)
}
const searchFn = (val:any) => {
}
const resetFn = (val:any) => {
}
const exportFn = (val:any) => {
}
const auditFn = (row: any) => {
addComRef.value.edit({
title:'666'
})
}
const showFn = (row: any) => {
addComRef.value.show({
title:'666'
})
}
const getPageFn = (val: any) => {
paginationInfo.currentPage = val.currentPage
paginationInfo.pageSize = val.pageSize
initTableList()
}
const initTableList = () => {
}
</script>
<style scoped lang="scss"></style>

View File

@ -0,0 +1,67 @@
<template>
<el-card shadow="always" class="search_header_top_row1">
<el-form :inline="true" :model="filterForm" class="demo-form-inline">
<el-form-item label="关键字">
<el-input v-model="filterForm.keyword" placeholder="请输入关键字" clearable />
</el-form-item>
<el-form-item label="装备名称">
<el-input v-model="filterForm.equipment" placeholder="请输入装备名称" clearable />
</el-form-item>
<el-form-item label="装备编号">
<el-input v-model="filterForm.equipment_code" placeholder="请输装备编号" clearable />
</el-form-item>
<el-form-item label="订单编号">
<el-input v-model="filterForm.order_code" placeholder="请输入订单编号" clearable />
</el-form-item>
<el-form-item label="求租方企业">
<el-input v-model="filterForm.q_company" placeholder="请输入求租方企业名称" clearable />
</el-form-item>
<el-form-item label="出租方企业">
<el-input v-model="filterForm.c_company" placeholder="请输入出租方企业名称" clearable />
</el-form-item>
<el-form-item label="时间范围">
<el-date-picker v-model="filterForm.dataRange" type="daterange" range-separator="To" start-placeholder="Start date"
end-placeholder="End date" />
</el-form-item>
<el-form-item >
<el-button type="primary" @click="serachFn">查询</el-button>
<el-button type="plain" @click="resetFn">重置</el-button>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="exportFn">导出</el-button>
</el-form-item>
</el-form>
</el-card>
</template>
<script lang="ts" setup>
const emits = defineEmits(['search','reset','auditBatch','export','deleteBatch'])
const filterForm = reactive({
keyword: '',
equipment:'',
equipment_code:"",
order_code:'',
q_company:'',
c_company:'',
dataRange:''
})
const serachFn = () => {
emits('search',filterForm)
}
const resetFn=()=>{
emits('reset')
}
const exportFn =()=>{
emits('export')
}
</script>
<style scoped lang="scss"></style>

View File

@ -0,0 +1,128 @@
<template>
<el-dialog v-model="addShow" :title="title" width="1000px" draggable :close-on-click-modal="false">
<div class="sub_title">
订单信息
</div>
<el-divider></el-divider>
<el-form label-width="130px" inline="true" style="padding: 0 20px 0px 20px;">
<el-form-item label="求租方企业名称">
xxxxx
</el-form-item>
<el-form-item label="求租方联系电话:">
xxxxx
</el-form-item>
<el-form-item label="出租方企业名称:">
xxxxx
</el-form-item>
<el-form-item label="出租方联系电话:">
xxxxx
</el-form-item>
<el-form-item label="租赁时长:">
xxxxx
</el-form-item>
<el-form-item label="设备进场地址:">
xxxxx
</el-form-item>
<el-form-item label="进场时间:">
xxxxx
</el-form-item>
<el-form-item label="是否需求机手:">
xxxxx
</el-form-item>
<el-form-item label="工期时长:">
xxxxx
</el-form-item>
<el-form-item label="详细地址:">
xxxxx
</el-form-item>
<el-form-item label="发票类型:">
xxxxx
</el-form-item>
<el-form-item label="订单起止时间:">
xxxxx
</el-form-item>
<el-form-item label="订单状态:">
xxxxx
</el-form-item>
<el-form-item label="项目说明:" style="width:500px" >
<div>
</div>
</el-form-item>
<el-form-item label="订单合同:">
xxxxx
</el-form-item>
<el-form-item label="机手姓名:">
xxxxx
</el-form-item>
<el-form-item label="机手联系电话:">
xxxxx
</el-form-item>
</el-form>
<div class="sub_title">
装备信息
</div>
<el-divider></el-divider>
<el-form label-width="130px" inline="true" style="padding: 0 80px 0px 0;">
<el-form-item label="装备名称:">
xxxxx
</el-form-item>
<el-form-item label="装备编号:">
xxxxx
</el-form-item>
<el-form-item label="装备类别:">
xxxxx
</el-form-item>
<el-form-item label="装备组别:">
xxxxx
</el-form-item>
<el-form-item label="品牌:">
xxxxx
</el-form-item>
<el-form-item label="装备规格:">
xxxxx
</el-form-item>
<el-form-item label="装备位置:">
xxxxx
</el-form-item>
<el-form-item label="租金:">
xxxxx
</el-form-item>
</el-form>
</el-dialog>
</template>
<script lang="ts" setup>
const emits = defineEmits(['send'])
const addShow = ref(true)
let title = ref("订单详情")
const show = (val: any) => {
title.value = val.title
addShow.value = true
}
defineExpose({
show
})
</script>
<style scoped lang="scss">
.sub_title {
font-size: 16px;
font-weight: bold;
}
</style>

View File

@ -0,0 +1,167 @@
<template>
<headerTop @search="searchFn" @reset="resetFn" @export="exportFn"></headerTop>
<infoCom ref="infoComRef"></infoCom>
<el-card shadow="always" class="content_body_row">
<el-table :data="tableListInfo.list" border style="width: 100%" show-overflow-tooltip
:max-height="'calc(100vh - 72px - 48px - 65px - 12px - 60px - 48px)'"
:height="'calc(100vh - 72px - 48px - 65px - 12px - 60px - 48px)'">
<el-table-column type="index" width="72" label="序号" />
<el-table-column prop="v_order_code" label="订单编号" min-width="150" />
<el-table-column prop="v_q_company" label="求租方企业名称" min-width="220">
</el-table-column>
<el-table-column prop="v_c_company" label="出租方企业名称" min-width="220">
</el-table-column>
<el-table-column prop="v_equip_code" label="装备编号" min-width="220">
</el-table-column>
<el-table-column prop="v_equip_name" label="装备名称" min-width="220">
</el-table-column>
<el-table-column prop="v_time" label="工期" min-width="220">
</el-table-column>
<el-table-column prop="v_money" label="租金" min-width="220">
</el-table-column>
<el-table-column prop="v_create_time" label="订单创建时间" min-width="220">
</el-table-column>
<el-table-column label="操作" align="center" width="160">
<template #default="scope">
<el-button type="primary" size="small" @click.prevent="showRowFn(scope.row)">
查看
</el-button>
</template>
</el-table-column>
</el-table>
<div class="paination_out">
<Pagination :currentPage="paginationInfo.currentPage" :pageSize="paginationInfo.pageSize" @sendPage="getPageFn">
</Pagination>
</div>
</el-card>
</template>
<script lang="ts" setup>
import headerTop from "./com/headerTop.vue"
import infoCom from "./com/infoCom.vue"
import { ElConfirmBeforeOpert } from "utils/elementCom"
const infoComRef = ref()
const paginationInfo = reactive({
currentPage: 1,
pageSize: 15
})
const tableData = [
{
v_id: '1',
v_order_code: '2016-05-03',
v_q_company: 'Tom',
v_c_company: 'California',
v_equip_code: 'Los Angeles',
v_equip_name: 'No. 189, Grove St, Los Angeles',
v_time: 'CA 90036',
v_money:'3241321321',
v_create_time:'2015-01 11-22-55',
v_status: '1',
},
{
v_id: '2',
v_order_code: '2016-05-03',
v_q_company: 'Tom',
v_c_company: 'California',
v_equip_code: 'Los Angeles',
v_equip_name: 'No. 189, Grove St, Los Angeles',
v_time: 'CA 90036',
v_money:'3241321321',
v_create_time:'2015-01 11-22-55',
v_status: '1',
},
{
v_id: '3',
v_order_code: '2016-05-03',
v_q_company: 'Tom',
v_c_company: 'California',
v_equip_code: 'Los Angeles',
v_equip_name: 'No. 189, Grove St, Los Angeles',
v_time: 'CA 90036',
v_money:'3241321321',
v_create_time:'2015-01 11-22-55',
v_status: '1',
},
{
v_id: '4',
v_order_code: '2016-05-03',
v_q_company: 'Tom',
v_c_company: 'California',
v_equip_code: 'Los Angeles',
v_equip_name: 'No. 189, Grove St, Los Angeles',
v_time: 'CA 90036',
v_money:'3241321321',
v_create_time:'2015-01 11-22-55',
v_status: '2',
},
{
v_id: '5',
v_order_code: '2016-05-03',
v_q_company: 'Tom',
v_c_company: 'California',
v_equip_code: 'Los Angeles',
v_equip_name: 'No. 189, Grove St, Los Angeles',
v_time: 'CA 90036',
v_money:'3241321321',
v_create_time:'2015-01 11-22-55',
v_status: '3',
},
]
let tableListInfo = reactive({
list: tableData
})
const showRowFn = (row: any) => {
infoComRef.value.show({
title: "111"
})
}
const deleteItem = (row: any) => {
const itemID = row.v_id
console.log("ITEMid", row)
}
const deleteRowFn = (row: any) => {
ElConfirmBeforeOpert(
'操作确认',
'是否确定删除数据?',
deleteItem,
'确定',
'取消',
row
)
}
const searchFn = () => {
}
const resetFn = () => {
}
const exportFn = () => {
}
const getPageFn = (val: any) => {
paginationInfo.currentPage = val.currentPage
paginationInfo.pageSize = val.pageSize
initTableList()
}
const initTableList = () => {
}
</script>
<style scoped lang="scss"></style>