1.相关方app车辆申请

dev-2.0-mkmj
guoyuepeng 2025-07-21 15:32:28 +08:00
parent 2e2e595e8d
commit dd244fc051
6 changed files with 84 additions and 28 deletions

View File

@ -57,6 +57,7 @@ export const setTaskSave = (params) => post('/app/Task/init', params) //八项
export const getCurrentNextOperation = (params) => post('/app/Task/getSupplementInfo', params) //获取当前任务的下一步操作 export const getCurrentNextOperation = (params) => post('/app/Task/getSupplementInfo', params) //获取当前任务的下一步操作
export const addFormInfo = (params) => post('/app/Task/addSupplementInfo', params) //审批过程中添加其他信息 export const addFormInfo = (params) => post('/app/Task/addSupplementInfo', params) //审批过程中添加其他信息
export const getDepartmentTree = (params) => post('/app/util/getDepartmentTree', params) //获取部门树 export const getDepartmentTree = (params) => post('/app/util/getDepartmentTree', params) //获取部门树
export const getTree = (params) => post('/app/util/getTree', params) //获取部门树
export const getUserList = (params) => post('/app/util/getUserList', params) //获取人员 export const getUserList = (params) => post('/app/util/getUserList', params) //获取人员
export const getToDoTaskList = (params) => post('/app/Task/getAllList', params) //获取待办列表 export const getToDoTaskList = (params) => post('/app/Task/getAllList', params) //获取待办列表
export const getTaskTechnologicalProcess = (params) => post('/app/Task/getAgencyList', params) //获取流程 export const getTaskTechnologicalProcess = (params) => post('/app/Task/getAgencyList', params) //获取流程
@ -86,3 +87,7 @@ export const compareUserExamFaceCertify = (params) => post('/app/user/compareExa
export const compareUserExamVideoFaceCertify = (params) => post('/app/user/compareExamVideoFace', params) // 考试视频人脸认证 export const compareUserExamVideoFaceCertify = (params) => post('/app/user/compareExamVideoFace', params) // 考试视频人脸认证
export const getClassInfoByParams = (params) => post("/app/stagestudentrelation/getClassInfoByParams", params ); // 获取班级信息 export const getClassInfoByParams = (params) => post("/app/stagestudentrelation/getClassInfoByParams", params ); // 获取班级信息
// ********************* end *********************** // ********************* end ***********************
export const addVehicleMessage = (params) => post('/app/vehiclemessage/addVehicleMessage', params) // 添加车联信息
export const goCheckLicenceNo = (params) => post("/app/vehiclemessage/goCheckLicenceNo", params);
export const getVehiclemessagePageList = (params) => post("/app/vehiclemessage/getPageList", params);

View File

@ -9,16 +9,16 @@
:is-show-clear="isShowClear" :is-show-clear="isShowClear"
theme-color="#3377ff" theme-color="#3377ff"
page-height="92vh" page-height="92vh"
label-key="DEPARTMENT_NAME" label-key="name"
value-key="DEPARTMENT_ID" value-key="departmentId"
children-key="nodes" children-key="list"
@confirm="fnTreeConfirm" @confirm="fnTreeConfirm"
@cancel="$emit('update:visible', false)" @cancel="$emit('update:visible', false)"
/> />
</template> </template>
<script> <script>
import {getDepartmentTree} from "@/api"; import {getTree} from "@/api";
export default { export default {
props: { props: {
@ -34,6 +34,14 @@ export default {
type: Boolean, type: Boolean,
default: false, default: false,
}, },
type:{
type: String,
default: "2",
},
corpId:{
type: String,
default: "",
}
}, },
data() { data() {
return { return {
@ -55,13 +63,12 @@ export default {
this.$emit("update:visible", false); this.$emit("update:visible", false);
}, },
async fnGetData() { async fnGetData() {
const resData = await getDepartmentTree({ const resData = await getTree({
loading: false, loading: false,
// postMethod: 'application/json', getDepByCorpType:1,
TYPE:'2', corpTypeList:[0,2]
CORP_ID:this.$store.getters.getUserInfo.CORPINFO_ID,
}); });
this.treeData = resData.tree.tree; this.treeData = resData.deptTree ;
} }
}, },
} }

View File

@ -23,6 +23,8 @@
:visible.sync="visible" :visible.sync="visible"
:value="id" :value="id"
:is-show-clear="isShowClear" :is-show-clear="isShowClear"
:type="type"
:corp-id="corpId"
@confirm="fnConfirm" @confirm="fnConfirm"
/> />
</view> </view>
@ -74,6 +76,14 @@ export default {
type: Boolean, type: Boolean,
default: false, default: false,
}, },
type:{
type: String,
default: "2",
},
corpId:{
type: String,
default: "",
}
}, },
data() { data() {
return { return {
@ -83,8 +93,8 @@ export default {
methods: { methods: {
fnConfirm(event) { fnConfirm(event) {
if (event.length > 0) { if (event.length > 0) {
this.$emit('update:name', event[0].DEPARTMENT_NAME) this.$emit('update:name', event[0].name)
this.$emit('update:id', event[0].DEPARTMENT_ID) this.$emit('update:id', event[0].departmentId)
} else { } else {
this.$emit('update:name', '') this.$emit('update:name', '')
this.$emit('update:id', '') this.$emit('update:id', '')

View File

@ -18,7 +18,7 @@ export default {
return { return {
baseList: [ baseList: [
{ {
title: '股份公司车辆管理', title: '相关方车辆管理',
url: '/pages/door_access_control/vehicle_info/index' url: '/pages/door_access_control/vehicle_info/index'
}, },
] ]

View File

@ -15,19 +15,29 @@
<u-input v-model="form.VEHICLE_TYPE_NAME" border="none" readonly input-align="right"/> <u-input v-model="form.VEHICLE_TYPE_NAME" border="none" readonly input-align="right"/>
<u-icon name="arrow-right"></u-icon> <u-icon name="arrow-right"></u-icon>
</u-form-item> </u-form-item>
<app-department label="车辆所属部门" :id.sync="form.DEPARTMENT_ID" :name.sync="form.DEPARTMENT_NAME" <u-form-item label="范围" prop="port_id" borderBottom required
:form.sync="form" prop="DEPARTMENT_ID" clear-key="USER_NAME,USER_ID"/> @click="fnSingleChoiceClick('port_id')">
<app-personnel :id.sync="form.USER_ID" :name.sync="form.USER_NAME" :department-id="form.DEPARTMENT_ID" <u-input v-model="form.portId" border="none" readonly input-align="right"/>
prop="USER_ID" label="负责人"/> <u-icon name="arrow-right"></u-icon>
</u-form-item>
<u-cell title="车辆所属部门" :value="$store.getters.getUserInfo.DEPARTMENT_NAME"></u-cell>
<u-cell title="负责人" :value="$store.getters.getUserInfo.NAME"></u-cell>
<!-- <app-department label="车辆所属部门" :id.sync="form.DEPARTMENT_ID" :name.sync="form.DEPARTMENT_NAME"-->
<!-- :form.sync="form" prop="DEPARTMENT_ID" clear-key="USER_NAME,USER_ID"/>-->
<!-- <app-personnel :id.sync="form.USER_ID" :name.sync="form.USER_NAME" :department-id="form.DEPARTMENT_ID"-->
<!-- prop="USER_ID" label="负责人"/>-->
<app-time v-model="form.VISIT_START_TIME" prop="VISIT_START_TIME" label="有效期开始"/> <app-time v-model="form.VISIT_START_TIME" prop="VISIT_START_TIME" label="有效期开始"/>
<app-time v-model="form.VISIT_END_TIME" prop="VISIT_END_TIME" label="有效期结束"/> <app-time v-model="form.VISIT_END_TIME" prop="VISIT_END_TIME" label="有效期结束"/>
<app-department label="审核部门" :id.sync="form.AUDITOR_DEPARTMENT_ID" :name.sync="form.AUDITOR_DEPARTMENT_NAME" <app-department label="审核部门" :id.sync="form.AUDITOR_DEPARTMENT_ID" :name.sync="form.AUDITOR_DEPARTMENT_NAME"
type='0'
prop="AUDITOR_DEPARTMENT_ID"/> prop="AUDITOR_DEPARTMENT_ID"/>
</u-form> </u-form>
<view class="mt-10"> <view class="mt-10">
<u-button type="primary" text="提交" @click="$u.debounce(fnSubmit, 1000, true)"/> <u-button type="primary" text="提交" @click="$u.debounce(fnSubmit, 1000, true)"/>
</view> </view>
</view> </view>
<u-picker :show="picker.show" :columns="picker.columns" :keyName="picker.key" :key="picker.type"
:defaultIndex="picker.defaultIndex" @confirm="fnSingleChoiceConfirm" @cancel="fnSingleChoiceCancel" />
</view> </view>
</template> </template>
@ -35,7 +45,7 @@
import AppTime from "@/components/time/index.vue"; import AppTime from "@/components/time/index.vue";
import AppDepartment from "@/components/department/index.vue"; import AppDepartment from "@/components/department/index.vue";
import AppPersonnel from "@/components/personnel/index.vue"; import AppPersonnel from "@/components/personnel/index.vue";
import {addVehicleMessage,goCheckLicenceNo} from "@/api";
export default { export default {
components: { components: {
AppTime, AppTime,
@ -67,6 +77,7 @@ export default {
VISIT_END_TIME: '', VISIT_END_TIME: '',
AUDITOR_DEPARTMENT_ID: '', AUDITOR_DEPARTMENT_ID: '',
AUDITOR_DEPARTMENT_NAME: '', AUDITOR_DEPARTMENT_NAME: '',
portId: '',
}, },
rules: { rules: {
LICENCE_TYPE: [{type: 'string', required: true, message: '请选择车牌类型', trigger: ['blur', 'change']}], LICENCE_TYPE: [{type: 'string', required: true, message: '请选择车牌类型', trigger: ['blur', 'change']}],
@ -109,6 +120,9 @@ export default {
if (event === 'VEHICLE_TYPE') { if (event === 'VEHICLE_TYPE') {
this.picker.columns = [this.VEHICLE_TYPE_LIST] this.picker.columns = [this.VEHICLE_TYPE_LIST]
} }
if (event === 'port_id') {
this.picker.columns = [[{id: '0', name: "全部"}, {id: '1', name: "东港区"}, {id: '2', name: "西港区"}]]
}
this.picker.show = true this.picker.show = true
}, },
fnSingleChoiceConfirm(event) { fnSingleChoiceConfirm(event) {
@ -128,12 +142,25 @@ export default {
async fnSubmit() { async fnSubmit() {
try { try {
await this.$refs.formRef.validate() await this.$refs.formRef.validate()
const checkRes = await goCheckLicenceNo({
LICENCE_NO: this.form.LICENCE_NO,
licenceType: this.form.LICENCE_TYPE,
VEHICLE_ID : this.VEHICLE_ID || ''
});
if (checkRes.exists === '1') {
uni.$u.toast('车牌号已存在')
return
}
const params = { const params = {
...this.form, ...this.form,
DEPARTMENT_ID: this.userInfo.DEPARTMENT_ID, DEPARTMENT_ID: this.userInfo.DEPARTMENT_ID,
USER_ID: this.userInfo.USER_ID, USER_ID: this.userInfo.USER_ID,
VEHICLE_DEPARTMENT_ID: this.userInfo.DEPARTMENT_ID,
VEHICLE_DEPARTMENT_NAME: this.userInfo.DEPARTMENT_NAME,
QY_AUDITOR:'QY_AUDITOR'
} }
console.log(params) const resData = await addVehicleMessage(params);
} catch { } catch {
uni.$u.toast('请补全必填项') uni.$u.toast('请补全必填项')
} }

View File

@ -25,17 +25,14 @@
<text>车辆类型{{ VEHICLE_TYPE_MAP[item.VEHICLE_TYPE] }}</text> <text>车辆类型{{ VEHICLE_TYPE_MAP[item.VEHICLE_TYPE] }}</text>
</view> </view>
<view class="flex-between mt-10 subtitle"> <view class="flex-between mt-10 subtitle">
<text>车辆所属部门{{ item.DEPT_NAME }}</text> <text>车辆所属部门{{ item.JG_DEPT_NAME }}</text>
<text>车辆责任{{ item.U_NAME }}</text> <text>车辆归属{{ item.JG_USER_NAME }}</text>
</view> </view>
<view class="flex-between mt-10 subtitle"> <view class="flex-between mt-10 subtitle">
<text>访问起始时间{{ item.VISIT_START_TIME }}</text> <text>车辆进/出港状态{{ item.vehicleArrivalStatus || '出港' }}</text>
</view> </view>
<view class="flex-between mt-10 subtitle"> <view class="flex-between mt-10 subtitle">
<text>访问结束时间{{ item.VISIT_END_TIME }}</text> <text>车辆来源{{ VEHICLE_OWNERSHIP_TYPE_MAP[item.CAR_FROM] }}</text>
</view>
<view class="flex-between mt-10 subtitle">
<text>审核状态{{ AUDIT_STATUS_MAP[item.IS_AUDIT] }}</text>
</view> </view>
<view class="mt-10 see_btn"> <view class="mt-10 see_btn">
<view class="wrap"> <view class="wrap">
@ -43,8 +40,12 @@
@click="fnNavigatorView(item.VEHICLE_ID)"></u-button> @click="fnNavigatorView(item.VEHICLE_ID)"></u-button>
</view> </view>
<view class="wrap ml-10"> <view class="wrap ml-10">
<u-button type="primary" text="重新申请" size="mini" <u-button type="primary" text="修改" size="mini"
@click="fnNavigatorView(item.VEHICLE_ID)"></u-button> @click="fnNavigatorAdd(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> </view>
</view> </view>
@ -58,6 +59,7 @@
<script> <script>
import FabButton from '@/components/fab_button/index.vue' import FabButton from '@/components/fab_button/index.vue'
import {getVehiclemessagePageList, setVehiclemessageDelete} from "@/api";
export default { export default {
components: { components: {
FabButton, FabButton,
@ -81,6 +83,10 @@ export default {
2: "已审核", 2: "已审核",
3: "审核驳回", 3: "审核驳回",
}, },
VEHICLE_OWNERSHIP_TYPE_MAP: {
0: "员工车辆",
1: "单位车辆",
},
keyword: '', keyword: '',
pageSize: 10, pageSize: 10,
currentPage: 1, currentPage: 1,
@ -98,8 +104,9 @@ export default {
}, },
methods: { methods: {
async getData() { async getData() {
const resData = {} const resData = await getVehiclemessagePageList({ type: 1, CAR_FROM: 0, curPage: this.currentPage, limit: this.pageSize});
this.list = [...this.list, ...resData.varList]; this.list = [...this.list, ...resData.varList];
console.info(this.list)
this.totalPage = resData.page.totalPage; this.totalPage = resData.page.totalPage;
}, },
resetList() { resetList() {