口门门禁管理

dev-2.0
LiuJiaNan 2025-07-19 09:57:38 +08:00
parent aac8f5a645
commit 540e78eaea
7 changed files with 468 additions and 0 deletions

View File

@ -808,6 +808,30 @@
"style" : {
"navigationBarTitleText" : "分公司隐患考评"
}
},
{
"path" : "pages/door_access_control/index",
"style" : {
"navigationBarTitleText" : "口门门禁管理"
}
},
{
"path" : "pages/door_access_control/share_office_vehicle_info/index",
"style" : {
"navigationBarTitleText" : "股份公司车辆管理"
}
},
{
"path" : "pages/door_access_control/share_office_vehicle_info/add",
"style" : {
"navigationBarTitleText" : "新增"
}
},
{
"path" : "pages/door_access_control/share_office_vehicle_info/view",
"style" : {
"navigationBarTitleText" : "查看"
}
}
],
"globalStyle": {

View File

@ -0,0 +1,39 @@
<template>
<view class="content">
<u-cell-group>
<u-cell v-for="(item,index) in baseList" :key="index" isLink :url="item.url">
<view slot="title">{{ item.title }}</view>
<!-- <view slot="value">-->
<!-- <u-badge :value="item.NUM"></u-badge>-->
<!-- </view>-->
</u-cell>
</u-cell-group>
</view>
</template>
<script>
export default {
data() {
return {
baseList: [
{
title: '股份公司车辆管理',
url: '/pages/door_access_control/share_office_vehicle_info/index'
},
]
}
},
methods: {
fnNavigator(e) {
uni.$u.route({
url: this.baseList[e].url
})
}
},
}
</script>
<style scoped>
</style>

View File

@ -0,0 +1,161 @@
<template>
<view class="content">
<view class="card" style="padding-left: 20px;">
<u-form labelPosition="left" :model="form" :rules="rules" ref="formRef" labelWidth="140px">
<u-form-item label="车牌类型" prop="LICENCE_TYPE" borderBottom required
@click="fnSingleChoiceClick('LICENCE_TYPE')">
<u-input v-model="form.LICENCE_TYPE_NAME" border="none" readonly input-align="right"/>
<u-icon name="arrow-right"></u-icon>
</u-form-item>
<u-form-item label="车牌号" prop="LICENCE_NO" borderBottom required>
<u-input v-model="form.LICENCE_NO" border="none" input-align="right"/>
</u-form-item>
<u-form-item label="车辆类型" prop="VEHICLE_TYPE" borderBottom required
@click="fnSingleChoiceClick('VEHICLE_TYPE')">
<u-input v-model="form.VEHICLE_TYPE_NAME" border="none" readonly input-align="right"/>
<u-icon name="arrow-right"></u-icon>
</u-form-item>
<u-form-item label="审批人" prop="QY_AUDITOR" borderBottom required
@click="fnSingleChoiceClick('QY_AUDITOR')">
<u-input v-model="form.QY_AUDITOR_NAME" border="none" readonly input-align="right"/>
<u-icon name="arrow-right"></u-icon>
</u-form-item>
<u-form-item label="范围" prop="portId" borderBottom required
@click="fnSingleChoiceClick('portId')">
<u-input v-model="form.portName" border="none" readonly input-align="right"/>
<u-icon name="arrow-right"></u-icon>
</u-form-item>
<u-form-item label="车辆所属部门" prop="DEPARTMENT_NAME" borderBottom required>
<u-input :value="userInfo.DEPARTMENT_NAME" border="none" readonly input-align="right"/>
</u-form-item>
<u-form-item label="车辆归属人" prop="USERNAME" borderBottom required>
<u-input :value="userInfo.USERNAME" border="none" readonly input-align="right"/>
</u-form-item>
</u-form>
<view class="mt-10">
<u-button type="primary" text="提交" @click="$u.debounce(fnSubmit, 1000, true)"/>
</view>
</view>
<u-picker :show="picker.show" :columns="picker.columns" :keyName="picker.key" :key="picker.type"
:defaultIndex="picker.defaultIndex" @confirm="fnSingleChoiceConfirm" @cancel="fnSingleChoiceCancel"/>
</view>
</template>
<script>
export default {
data() {
return {
VEHICLE_ID: '',
VEHICLE_LICENSE_PLATE_TYPE_LIST: [
{id: '0', name: "白牌"},
{id: '1', name: "蓝牌"},
{id: '2', name: "黄牌"},
{id: '3', name: "绿牌"},
{id: '4', name: "黑牌"},
],
VEHICLE_TYPE_LIST: [{id: '1', name: "轿车"}],
VEHICLE_PORT_LIST: [
{id: "0", name: "全部"},
{id: "1", name: "东港区"},
{id: "2", name: "西港区"},
],
userList: [],
form: {
LICENCE_TYPE:'',
LICENCE_TYPE_NAME:'',
LICENCE_NO:'',
VEHICLE_TYPE:'',
VEHICLE_TYPE_NAME:'',
QY_AUDITOR:'',
QY_AUDITOR_NAME:'',
portId:'',
portName:'',
},
rules: {
LICENCE_TYPE: [{type: 'string', required: true, message: '请选择车牌类型', trigger: ['blur', 'change']}],
LICENCE_NO: [{type: 'string', required: true, message: '请输入车牌号', trigger: ['blur', 'change']}],
VEHICLE_TYPE: [{type: 'string', required: true, message: '请选择车辆类型', trigger: ['blur', 'change']}],
QY_AUDITOR: [{type: 'string', required: true, message: '请选择审批人', trigger: ['blur', 'change']}],
portId: [{type: 'string', required: true, message: '请选择范围', trigger: ['blur', 'change']}],
},
picker: {
show: false,
columns: [],
key: 'name',
type: 'picker',
defaultIndex: []
},
}
},
onLoad(event) {
this.VEHICLE_ID = event.VEHICLE_ID
if (event.VEHICLE_ID) {
uni.setNavigationBarTitle({
title: "修改",
});
}
},
computed: {
userInfo() {
return this.$store.getters.getUserInfo
}
},
methods: {
fnSingleChoiceClick(event) {
this.picker.type = event
if (event === 'LICENCE_TYPE') {
this.picker.columns = [this.VEHICLE_LICENSE_PLATE_TYPE_LIST]
}
if (event === 'VEHICLE_TYPE') {
this.picker.columns = [this.VEHICLE_TYPE_LIST]
}
if (event === 'QY_AUDITOR') {
this.picker.columns = [this.userList]
}
if (event === 'portId') {
this.picker.columns = [this.VEHICLE_PORT_LIST]
}
this.picker.show = true
},
fnSingleChoiceConfirm(event) {
if (this.picker.type === 'LICENCE_TYPE') {
this.form.LICENCE_TYPE = event.value[0].id
this.form.LICENCE_TYPE_NAME = event.value[0].name
}
if (this.picker.type === 'VEHICLE_TYPE') {
this.form.VEHICLE_TYPE = event.value[0].id
this.form.VEHICLE_TYPE_NAME = event.value[0].name
}
if (this.picker.type === 'QY_AUDITOR') {
this.form.QY_AUDITOR = event.value[0].userId
this.form.QY_AUDITOR_NAME = event.value[0].name
}
if (this.picker.type === 'portId') {
this.form.portId = event.value[0].id
this.form.portName = event.value[0].name
}
this.fnSingleChoiceCancel()
},
fnSingleChoiceCancel() {
this.picker.show = false
},
async fnSubmit() {
try {
await this.$refs.formRef.validate()
const params = {
...this.form,
DEPARTMENT_ID: this.userInfo.DEPARTMENT_ID,
USER_ID: this.userInfo.USER_ID,
}
console.log(params)
} catch {
uni.$u.toast('请补全必填项')
}
}
},
}
</script>
<style scoped lang="scss">
</style>

View File

@ -0,0 +1,176 @@
<template>
<view class="content">
<view class="search card">
<u--input
prefixIcon="search"
placeholder="请输入关键字"
border="surround"
v-model="keyword"
clearable
shape="circle"
></u--input>
<view class="bth-mini ml-10">
<u-button type="success" text="确定" @click="resetList"></u-button>
</view>
</view>
<u-list @scrolltolower="scrolltolower" v-if="list.length > 0">
<u-list-item v-for="(item, index) in list" :key="index">
<view>
<view class="flex-between main-title">
<text>车牌号{{ item.LICENCE_NO }}</text>
</view>
<view class="flex-between mt-10 subtitle">
<text>车牌类型{{ VEHICLE_LICENSE_PLATE_TYPE_MAP[item.LICENCE_TYPE] }}</text>
<text>车辆类型{{ VEHICLE_TYPE_MAP[item.VEHICLE_TYPE] }}</text>
</view>
<view class="flex-between mt-10 subtitle">
<text>车辆所属部门{{ item.JG_DEPT_NAME }}</text>
<text>车辆归属人{{ item.JG_USER_NAME }}</text>
</view>
<view class="flex-between mt-10 subtitle">
<text>车辆进/出港状态{{ item.vehicleArrivalStatus }}</text>
</view>
<view class="flex-between mt-10 subtitle">
<text>车辆来源{{ VEHICLE_OWNERSHIP_TYPE_MAP[item.vehicleFrom] }}</text>
</view>
<view class="mt-10 see_btn">
<view class="wrap">
<u-button type="primary" text="查看" size="mini"
@click="fnNavigatorView(item.VEHICLE_ID)"></u-button>
</view>
<view class="wrap ml-10">
<u-button type="primary" text="修改" size="mini"
@click="fnNavigatorView(item.VEHICLE_ID)"></u-button>
</view>
<view class="wrap ml-10">
<u-button type="error" text="删除" size="mini"
@click="fnDelete(item.VEHICLE_ID)"></u-button>
</view>
</view>
</view>
</u-list-item>
</u-list>
<empty v-else></empty>
<fab-button @click="fnNavigatorAdd('')"/>
</view>
</template>
<script>
import FabButton from '@/components/fab_button/index.vue'
export default {
components: {
FabButton,
},
data() {
return {
VEHICLE_LICENSE_PLATE_TYPE_MAP: {
0: "白牌",
1: "蓝牌",
2: "黄牌",
3: "绿牌",
4: "黑牌",
},
VEHICLE_TYPE_MAP: {
0: "货车",
1: "轿车",
2: "大巴客车",
},
VEHICLE_OWNERSHIP_TYPE_MAP: {
0: "员工车辆",
1: "单位车辆",
},
keyword: '',
pageSize: 10,
currentPage: 1,
totalPage: 0,
list: [],
}
},
computed: {
userInfo() {
return this.$store.getters.getUserInfo
}
},
onShow() {
// this.resetList()
},
methods: {
async getData() {
const resData = {}
this.list = [...this.list, ...resData.varList];
this.totalPage = resData.page.totalPage;
},
resetList() {
this.pageSize = 10
this.currentPage = 1
this.list = []
this.getData()
},
fnNavigatorView(VEHICLE_ID) {
uni.$u.route({
url: '/pages/door_access_control/share_office_vehicle_info/view',
params: {
VEHICLE_ID,
}
})
},
fnNavigatorAdd(VEHICLE_ID) {
uni.$u.route({
url: '/pages/door_access_control/share_office_vehicle_info/add',
params: {
VEHICLE_ID,
}
})
},
fnDelete(VEHICLE_ID) {
uni.showModal({
title: '提示',
content: '确定要删除这条记录?',
success: async res => {
if (res.confirm) {
}
}
})
},
scrolltolower() {
this.currentPage++;
if (this.totalPage >= this.currentPage) this.getData();
},
}
}
</script>
<style scoped lang="scss">
.ml-10 {
margin-left: 10rpx;
}
.search {
display: flex;
.ml-10 {
margin-left: 10rpx;
}
.bth-mini {
width: 100rpx;
}
}
.see_btn {
display: flex;
justify-content: flex-end;
.wrap {
//width: 200rpx;
margin: 0 10rpx;
}
}
</style>

View File

@ -0,0 +1,63 @@
<template>
<view class="content">
<view class="card">
<u-cell-group :border="false">
<u-cell>
<view slot="title" class="title">车牌号</view>
<view slot="label" class="mt-10">{{ info.LICENCE_NO }}</view>
</u-cell>
<u-cell>
<view slot="title" class="title">车牌类型</view>
<view slot="label" class="mt-10">{{ VEHICLE_LICENSE_PLATE_TYPE_MAP[info.LICENCE_TYPE] }}</view>
</u-cell>
<u-cell>
<view slot="title" class="title">车辆类型</view>
<view slot="label" class="mt-10">{{ VEHICLE_TYPE_MAP[info.VEHICLE_TYPE] }}</view>
</u-cell>
<u-cell>
<view slot="title" class="title">范围</view>
<view slot="label" class="mt-10">{{ VEHICLE_PORT_MAP[info.portId] }}</view>
</u-cell>
<u-cell>
<view slot="title" class="title">车辆所属部门</view>
<view slot="label" class="mt-10">{{ info.DEPT_NAME }}</view>
</u-cell>
<u-cell>
<view slot="title" class="title">车辆归属人</view>
<view slot="label" class="mt-10">{{ info.U_NAME }}</view>
</u-cell>
</u-cell-group>
</view>
</view>
</template>
<script>
export default {
data() {
return {
info: {},
VEHICLE_LICENSE_PLATE_TYPE_MAP: {
0: "白牌",
1: "蓝牌",
2: "黄牌",
3: "绿牌",
4: "黑牌",
},
VEHICLE_TYPE_MAP: {
0: "货车",
1: "轿车",
2: "大巴客车",
},
VEHICLE_PORT_MAP: {
0: "全部",
1: "东港区",
2: "西港区",
}
}
},
}
</script>
<style scoped lang="scss">
</style>

View File

@ -187,6 +187,11 @@
img: require('../../static/icon-apps/home-znx.png'),
title: '分公司隐患考评',
url: '/pages/hidden-danger-review/index/index'
},
{
img: require('../../static/icon-apps/home-door.png'),
title: '口门门禁管理',
url: '/pages/door_access_control/index'
},
],
isPromiseUnsigned: false

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB