From d69a453c79be14803fd9b9981117b30593764024 Mon Sep 17 00:00:00 2001
From: lion <120344285@qq.com>
Date: Tue, 28 Oct 2025 16:17:00 +0800
Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/api/gate/index.js | 18 +-
src/views/dashboard/components/PanelGroup.vue | 4 +-
src/views/dashboard/index.vue | 44 +-
src/views/resource/component/addStudy.vue | 6 +-
src/views/resource/study.vue | 2 +-
src/views/visit/check.vue | 44 +-
src/views/visit/component/addCommon copy.vue | 2 +-
src/views/visit/component/addCommon.vue | 565 +++++++++---------
src/views/visit/component/showVisit.vue | 57 +-
src/views/visit/record.vue | 134 +++--
src/views/visit/study.vue | 4 +-
11 files changed, 449 insertions(+), 431 deletions(-)
diff --git a/src/api/gate/index.js b/src/api/gate/index.js
index 17c3a3d..9f53e73 100644
--- a/src/api/gate/index.js
+++ b/src/api/gate/index.js
@@ -2,28 +2,12 @@ import request from "@/utils/request";
export function getList(params){
return request({
- url:'/api/admin/gate/visits',
+ url:'/api/admin/gate/visit-list',
method:'get',
params
})
}
-export function show(data){
- return request({
- url:'/api/admin/gate/visits/detail',
- method:'post',
- data
- })
-}
-
-export function update(data){
- return request({
- url:'/api/admin/gate/visits/update',
- method:'post',
- data
- })
-}
-
export function getUserList(params){
return request({
url:'/api/admin/gate/user-list',
diff --git a/src/views/dashboard/components/PanelGroup.vue b/src/views/dashboard/components/PanelGroup.vue
index 2c638c6..315e147 100644
--- a/src/views/dashboard/components/PanelGroup.vue
+++ b/src/views/dashboard/components/PanelGroup.vue
@@ -46,7 +46,7 @@
- 施工访客
+ 施工人员
@@ -87,7 +87,7 @@
- 物流车辆
+ 物流司机
diff --git a/src/views/dashboard/index.vue b/src/views/dashboard/index.vue
index 3aebccc..98abdad 100644
--- a/src/views/dashboard/index.vue
+++ b/src/views/dashboard/index.vue
@@ -95,22 +95,22 @@
}
},{
value: 0,
- name:"施工访客",
+ name:"施工人员",
itemStyle: {
- color: '#9193BC' // 施工访客卡片颜色
+ color: '#9193BC' // 施工人员卡片颜色
}
},{
value: 0,
- name:"物流车辆",
+ name:"物流司机",
itemStyle: {
- color: '#64A48E' // 物流车辆卡片颜色
+ color: '#64A48E' // 物流司机卡片颜色
}
}],
radiusArr:'50%'
},
LineData:{
xArr: [],
- legendArr: ["普通访客", "施工访客", "物流车辆"],
+ legendArr: ["普通访客", "施工人员", "物流司机"],
series:[
{
name: '普通访客',
@@ -122,21 +122,21 @@
}
},
{
- name: '施工访客',
+ name: '施工人员',
type: 'line',
stack: 'Total',
data: [],
itemStyle: {
- color: '#9193BC' // 施工访客颜色
+ color: '#9193BC' // 施工人员颜色
}
},
{
- name: '物流车辆',
+ name: '物流司机',
type: 'line',
stack: 'Total',
data: [],
itemStyle: {
- color: '#64A48E' // 物流车辆颜色
+ color: '#64A48E' // 物流司机颜色
}
}
]
@@ -156,13 +156,13 @@
const today = new Date();
const thirtyDaysAgo = new Date();
thirtyDaysAgo.setDate(today.getDate() - 30);
-
+
return [
this.formatDate(thirtyDaysAgo),
this.formatDate(today)
];
},
-
+
// 格式化日期为 YYYY-MM-DD
formatDate(date) {
const year = date.getFullYear();
@@ -170,7 +170,7 @@
const day = String(date.getDate()).padStart(2, '0');
return `${year}-${month}-${day}`;
},
-
+
// 更新圆饼图数据
updatePieChartData(listData) {
if (listData && listData.common_visit && listData.work_visit && listData.car_visit) {
@@ -184,22 +184,22 @@
},
{
value: listData.work_visit.total || 0,
- name: "施工访客",
+ name: "施工人员",
itemStyle: {
- color: '#9193BC' // 施工访客卡片颜色
+ color: '#9193BC' // 施工人员卡片颜色
}
},
{
value: listData.car_visit.total || 0,
- name: "物流车辆",
+ name: "物流司机",
itemStyle: {
- color: '#64A48E' // 物流车辆卡片颜色
+ color: '#64A48E' // 物流司机卡片颜色
}
}
];
}
},
-
+
// 更新曲线图数据
updateLineChartData(dateList) {
if (dateList && Array.isArray(dateList)) {
@@ -211,14 +211,14 @@
const day = String(date.getDate()).padStart(2, '0');
return `${month}-${day}`;
});
-
+
// 提取各类型访客数据
this.LineData.series[0].data = dateList.map(item => item.common_visit || 0);
this.LineData.series[1].data = dateList.map(item => item.work_visit || 0);
this.LineData.series[2].data = dateList.map(item => item.car_visit || 0);
}
},
-
+
// 时间段改变事件
handleDateChange(value) {
console.log('选择的时间段:', value);
@@ -256,13 +256,13 @@
await getChartsHome(params).then((res) => {
console.log('接口返回数据:', res);
this.list = res.list;
-
+
// 更新圆饼图数据
this.updatePieChartData(res.list);
-
+
// 更新曲线图数据
this.updateLineChartData(res.all_date_list);
-
+
// this.chartData = res;
// let _business_data = [];
// let _collect_data = [];
diff --git a/src/views/resource/component/addStudy.vue b/src/views/resource/component/addStudy.vue
index af48b37..fc450b0 100644
--- a/src/views/resource/component/addStudy.vue
+++ b/src/views/resource/component/addStudy.vue
@@ -188,15 +188,15 @@ import xyTinymce from "@/components/XyTinymce/index.vue";
fileList: [],
types: [{
id: 1,
- value: "访客"
+ value: "普通访客"
},
{
id: 2,
- value: "施工"
+ value: "施工人员"
},
{
id: 3,
- value: "车辆"
+ value: "物流司机"
}
],
form: {
diff --git a/src/views/resource/study.vue b/src/views/resource/study.vue
index b27a7ed..1ab0230 100644
--- a/src/views/resource/study.vue
+++ b/src/views/resource/study.vue
@@ -72,7 +72,7 @@
sortable: false,
prop: 'type',
formatter: (cell, data, value) => {
- return value=="1"?"普通访客":(value=="2"?"施工访客":"物流车辆")
+ return value=="1"?"普通访客":(value=="2"?"施工人员":"物流司机")
}
},
{
diff --git a/src/views/visit/check.vue b/src/views/visit/check.vue
index 1461140..4464346 100644
--- a/src/views/visit/check.vue
+++ b/src/views/visit/check.vue
@@ -174,16 +174,16 @@
created_at: '2024-10-13 15:30:00',
admin: { name: '管理员A' },
vehicle_images_detail: [
- {
+ {
id: 2001,
- url: 'https://picsum.photos/300/400?random=11',
+ url: 'https://picsum.photos/300/400?random=11',
original_name: '访客正面照.png',
extension: 'png',
size: 2544
},
- {
+ {
id: 2002,
- url: 'https://picsum.photos/300/400?random=12',
+ url: 'https://picsum.photos/300/400?random=12',
original_name: '访客侧面照.png',
extension: 'png',
size: 2231
@@ -194,7 +194,7 @@
id: 2,
name: '李四',
type: 2,
- type_text: '施工访客',
+ type_text: '施工人员',
audit_status: 0,
audit_status_text: '待审核',
accept_admin: { name: '王主管' },
@@ -209,9 +209,9 @@
created_at: '2024-10-13 16:00:00',
admin: { name: '管理员B' },
vehicle_images_detail: [
- {
+ {
id: 2003,
- url: 'https://picsum.photos/300/400?random=13',
+ url: 'https://picsum.photos/300/400?random=13',
original_name: '施工人员照片.png',
extension: 'png',
size: 2784
@@ -222,7 +222,7 @@
id: 3,
name: '王五',
type: 3,
- type_text: '物流车辆',
+ type_text: '物流司机',
audit_status: 0,
audit_status_text: '待审核',
accept_admin: { name: '赵总监' },
@@ -237,16 +237,16 @@
created_at: '2024-10-13 14:20:00',
admin: { name: '管理员C' },
vehicle_images_detail: [
- {
+ {
id: 2004,
- url: 'https://picsum.photos/400/300?random=14',
+ url: 'https://picsum.photos/400/300?random=14',
original_name: '车辆前方照片.png',
extension: 'png',
size: 2686
},
- {
+ {
id: 2005,
- url: 'https://picsum.photos/400/300?random=15',
+ url: 'https://picsum.photos/400/300?random=15',
original_name: '车辆侧面照片.png',
extension: 'png',
size: 2544
@@ -272,9 +272,9 @@
created_at: '2024-10-14 08:30:00',
admin: { name: '管理员D' },
vehicle_images_detail: [
- {
+ {
id: 2006,
- url: 'https://picsum.photos/300/400?random=16',
+ url: 'https://picsum.photos/300/400?random=16',
original_name: '访客证件照.png',
extension: 'png',
size: 2544
@@ -285,7 +285,7 @@
id: 5,
name: '孙七',
type: 2,
- type_text: '施工访客',
+ type_text: '施工人员',
audit_status: 0,
audit_status_text: '待审核',
accept_admin: { name: '周主任' },
@@ -300,9 +300,9 @@
created_at: '2024-10-13 17:15:00',
admin: { name: '管理员E' },
vehicle_images_detail: [
- {
+ {
id: 2007,
- url: 'https://picsum.photos/300/400?random=17',
+ url: 'https://picsum.photos/300/400?random=17',
original_name: '施工人员照片.png',
extension: 'png',
size: 2784
@@ -431,28 +431,28 @@
if (this.useMockData) {
// 过滤模拟数据
let filteredData = [...this.mockData]
-
+
// 关键词搜索
if (this.select.keyword) {
- filteredData = filteredData.filter(item =>
+ filteredData = filteredData.filter(item =>
item.name.includes(this.select.keyword) ||
item.mobile.includes(this.select.keyword) ||
item.idcard.includes(this.select.keyword) ||
item.company_name.includes(this.select.keyword)
)
}
-
+
// 状态筛选(check页面默认显示待审核)
if (this.select.audit_status !== '' && this.select.audit_status !== null && this.select.audit_status !== undefined) {
filteredData = filteredData.filter(item => item.audit_status === this.select.audit_status)
}
-
+
// 计算分页
this.total = filteredData.length
const start = (this.select.page - 1) * this.select.page_size
const end = start + this.select.page_size
this.data = filteredData.slice(start, end)
-
+
console.log('使用模拟数据:', { total: this.total, data: this.data })
} else {
// 原有的真实接口调用逻辑
diff --git a/src/views/visit/component/addCommon copy.vue b/src/views/visit/component/addCommon copy.vue
index 8d136ef..31088ec 100644
--- a/src/views/visit/component/addCommon copy.vue
+++ b/src/views/visit/component/addCommon copy.vue
@@ -626,7 +626,7 @@
},
visitType(val) {
if (val) {
- this.typeName = val == 1 ? '普通访客' : (val == 2 ? '施工访客' : (val == 3 ? '物流车辆' : ''))
+ this.typeName = val == 1 ? '普通访客' : (val == 2 ? '施工人员' : (val == 3 ? '物流司机' : ''))
}
}
diff --git a/src/views/visit/component/addCommon.vue b/src/views/visit/component/addCommon.vue
index a5f4a4c..97c6fda 100644
--- a/src/views/visit/component/addCommon.vue
+++ b/src/views/visit/component/addCommon.vue
@@ -18,6 +18,19 @@
+
+
+
+
@@ -73,9 +86,9 @@
车辆类型:
-
-
- {{item.value}}
+
+
+ {{item.value}}
@@ -150,75 +163,75 @@
-
-
-
-
-
-
-
-
-
- *到访车辆:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 到访车辆:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+ *到访车辆:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 到访车辆:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -261,7 +274,7 @@
- -->
+ -->
@@ -350,12 +363,13 @@
type: 'add',
id: '',
visitType: "",
- typeName: '',
+ typeName: '',
visitAreaText:"",
form: {
// type: 1,
visitinfo: "",
date: "",
+ end_date:'',
visit_time_id: "",
visit_area_id: "",
workRange: "",
@@ -367,24 +381,24 @@
mobile: "",
credent: 1,
idcard: "",
- company_name: "",
+ company_name: "",
cda:'',
- cars: [],
+ cars: [],
carsno:[],
follw_people: [],
- long_time: 0,
+ long_time: 0,
longrange: "",
- visitorinfos: "",
- accpet_department_id: "",
- accept_admin_id: "",
- visitorinfos1:'',
+ visitorinfos: "",
+ accpet_department_id: "",
+ accept_admin_id: "",
+ visitorinfos1:'',
accompany_id:'',
accept_goods_admin_id: ""
},
- followList:[],
+ followList:[],
carsList:[],
visitTimeList: [],
- visitAreaList: [],
+ visitAreaList: [],
parkAreaList: [],
reasonList: [],
credentList: [{
@@ -406,17 +420,17 @@
},
],
departmentList: [],
- adminList: [],
- carTable:[{
- label: "车牌号",
- prop: "car",
- // width: 200,
- customFn: (row, scope) => {
- return (
-
- )
- }
+ adminList: [],
+ carTable:[{
+ label: "车牌号",
+ prop: "car",
+ // width: 200,
+ customFn: (row, scope) => {
+ return (
+
+ )
+ }
}],
followTable: [{
label: "姓名",
@@ -497,10 +511,10 @@
visit_area_id: [{
required: true,
message: '请选择到访区域'
- }],
- plate: [{
- required: true,
- message: '请选择停车区域'
+ }],
+ plate: [{
+ required: true,
+ message: '请选择停车区域'
}],
name: [{
required: true,
@@ -514,31 +528,31 @@
pattern: /^[1][3-9][\d]{9}/,
message: "手机号格式错误",
}
- ],
- company_name: [{
- required: true,
- message: '请输入单位名称'
- }],
- cda:[{
- required: true,
- message: '请输入CDA编号'
- }],
- // cars: [{
- // required: true,
- // message: '请输入车牌号'
- // }],
- accompany_id: [{
- required: true,
- message: '请选择陪同人'
- }],
- accept_admin_id: [{
- required: true,
- message: '请选被访人'
- }],
- accept_goods_admin_id: [{
- required: true,
- message: '请选择收货人'
- }]
+ ],
+ company_name: [{
+ required: true,
+ message: '请输入单位名称'
+ }],
+ cda:[{
+ required: true,
+ message: '请输入CDA编号'
+ }],
+ // cars: [{
+ // required: true,
+ // message: '请输入车牌号'
+ // }],
+ accompany_id: [{
+ required: true,
+ message: '请选择陪同人'
+ }],
+ accept_admin_id: [{
+ required: true,
+ message: '请选被访人'
+ }],
+ accept_goods_admin_id: [{
+ required: true,
+ message: '请选择收货人'
+ }]
},
pickerOptions: {
@@ -579,39 +593,40 @@
const res = await show({
id: this.id
})
- this.form = {
- visitinfo: "",
- date: res?.date,
- visit_time_id: res?.visit_time_id,
- visit_area_id: res?.visit_area_id,
- workRange: res.work_start_time?[res.work_start_time,res.work_end_time]:"",
- reason: res?.reason,
- plate: res?.plate,
- remark: res?.remark,
- visitorinfo: "",
- name: res?.name,
- mobile: res?.mobile,
- credent: res?.credent,
- idcard: res?.idcard,
- company_name: res?.company_name,
- cda:res?.cda,
- cars:[],
- carsno: [],
- follw_people: res?.follw_people,
- long_time: res?.long_time,
- longrange: res.start_date?[res.start_date,res.end_date]:"",
- visitorinfos: "",
- accpet_department_id: res?.accpet_department_id,
- accept_admin_id: res?.accept_admin_id,
- visitorinfos1:'',
- accompany_id:res?.accompany_id,
- accept_goods_admin_id: res?parseInt(res.accept_goods_admin_id):''
- }
- this.followList = res?.follw_people
- for(var k of res?.cars){
- this.carsList.push({car:k})
- }
- this.visitAreaText = res?.visit_area.name
+ this.form = {
+ visitinfo: "",
+ date: res?.date,
+ end_date: res?.end_date,
+ visit_time_id: res?.visit_time_id,
+ visit_area_id: res?.visit_area_id,
+ workRange: res.work_start_time?[res.work_start_time,res.work_end_time]:"",
+ reason: res?.reason,
+ plate: res?.plate,
+ remark: res?.remark,
+ visitorinfo: "",
+ name: res?.name,
+ mobile: res?.mobile,
+ credent: res?.credent,
+ idcard: res?.idcard,
+ company_name: res?.company_name,
+ cda:res?.cda,
+ cars:[],
+ carsno: [],
+ follw_people: res?.follw_people,
+ long_time: res?.long_time,
+ longrange: res.start_date?[res.start_date,res.end_date]:"",
+ visitorinfos: "",
+ accpet_department_id: res?.accpet_department_id,
+ accept_admin_id: res?.accept_admin_id,
+ visitorinfos1:'',
+ accompany_id:res?.accompany_id,
+ accept_goods_admin_id: res?parseInt(res.accept_goods_admin_id):''
+ }
+ this.followList = res?.follw_people
+ for(var k of res?.cars){
+ this.carsList.push({car:k})
+ }
+ this.visitAreaText = res?.visit_area.name
console.log(this.followList,this.carsList)
},
async getLabel() {
@@ -625,100 +640,100 @@
const reason = await getparameter({
number: "reasonList",
});
- this.reasonList = reason?.detail;
- const park = await getparameter({
- number: "parkArea",
- });
+ this.reasonList = reason?.detail;
+ const park = await getparameter({
+ number: "parkArea",
+ });
this.parkAreaList = park?.detail;
- },
- changeVisitArea(val){
- console.log(val)
- this.visitAreaList.map(item=>{
- if(item.id==val){
- this.visitAreaText = item.name
- }
- })
- console.log(this.visitAreaText)
- },
- changelongrange(val){
- this.form.start_date = val[0]
- this.form.end_date = val[1]
- },
- changeworkrange(val){
- this.form.work_start_time = val[0]
- this.form.work_end_time = val[1]
- },
- changeAdmin(item){
- if(item){
- this.adminList.map(e=>{
- if(e.id==item){
- this.form.accompany_id = e.id
- }
- })
-
- }
- },
- changeAdmin1(item){
- if(item){
- this.adminList.map(e=>{
- if(e.id==item){
- this.form.accept_admin_id = e.id
- this.form.accpet_department_id = e.department_id
- if(this.visitAreaText=='非生产区'){
- this.form.accompany_id = e.id
- }
- }
- })
-
- }
- },
- changeGoods(item){
- if(item){
- this.adminList.map(e=>{
- if(e.id==item){
- this.form.accept_admin_id = e.id
- this.form.accept_goods_admin_id = e.id
- this.form.accpet_department_id = e.department_id
- if(this.visitAreaText=='非生产区'){
- this.form.accompany_id = e.id
- }
- }
- })
-
- }
+ },
+ changeVisitArea(val){
+ console.log(val)
+ this.visitAreaList.map(item=>{
+ if(item.id==val){
+ this.visitAreaText = item.name
+ }
+ })
+ console.log(this.visitAreaText)
+ },
+ changelongrange(val){
+ this.form.start_date = val[0]
+ this.form.end_date = val[1]
+ },
+ changeworkrange(val){
+ this.form.work_start_time = val[0]
+ this.form.work_end_time = val[1]
+ },
+ changeAdmin(item){
+ if(item){
+ this.adminList.map(e=>{
+ if(e.id==item){
+ this.form.accompany_id = e.id
+ }
+ })
+
+ }
+ },
+ changeAdmin1(item){
+ if(item){
+ this.adminList.map(e=>{
+ if(e.id==item){
+ this.form.accept_admin_id = e.id
+ this.form.accpet_department_id = e.department_id
+ if(this.visitAreaText=='非生产区'){
+ this.form.accompany_id = e.id
+ }
+ }
+ })
+
+ }
+ },
+ changeGoods(item){
+ if(item){
+ this.adminList.map(e=>{
+ if(e.id==item){
+ this.form.accept_admin_id = e.id
+ this.form.accept_goods_admin_id = e.id
+ this.form.accpet_department_id = e.department_id
+ if(this.visitAreaText=='非生产区'){
+ this.form.accompany_id = e.id
+ }
+ }
+ })
+
+ }
},
submit() {
- let that = this
- if(that.form.credent==1){
- const regtest = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/
- if(!regtest.test(that.form.idcard)){
- this.$successMessage('身份证格式错误', '','warning')
- return
- }
- }
- if(that.form.credent==2){
- const regtest = /^([a-zA-z]|[0-9]){5,17}$/
- if(!regtest.test(that.form.idcard)){
- this.$successMessage('护照格式错误', '','warning')
- return
- }
- }
- that.form.follw_people = that.followList
- let _car = []
- for(var k of that.carsList){
- _car.push(k.car)
- }
- this.form.cars = _car
- console.log("this.form.cars",this.form.cars)
- // return
- if(this.visitType==3){
- this.form.accept_admin_id = this.form.accept_goods_admin_id
+ let that = this
+ if(that.form.credent==1){
+ const regtest = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/
+ if(!regtest.test(that.form.idcard)){
+ this.$successMessage('身份证格式错误', '','warning')
+ return
+ }
+ }
+ if(that.form.credent==2){
+ const regtest = /^([a-zA-z]|[0-9]){5,17}$/
+ if(!regtest.test(that.form.idcard)){
+ this.$successMessage('护照格式错误', '','warning')
+ return
+ }
+ }
+ that.form.follw_people = that.followList
+ let _car = []
+ for(var k of that.carsList){
+ _car.push(k.car)
+ }
+ this.form.cars = _car
+ console.log("this.form.cars",this.form.cars)
+ // return
+ if(this.visitType==3){
+ this.form.accept_admin_id = this.form.accept_goods_admin_id
}
if (this.type === 'editor') {
this.form.id = this.id
- }else{
- this.form.id = ""
+ }else{
+ this.form.id = ""
}
// return
save({
@@ -732,9 +747,9 @@
},
watch: {
isShow(newVal) {
- if (newVal) {
- console.log("this.visitType",this.visitType)
- this.form.type = this.visitType
+ if (newVal) {
+ console.log("this.visitType",this.visitType)
+ this.form.type = this.visitType
this.form.audit_status = 1
if (this.type === 'editor') {
this.getDetail()
@@ -743,15 +758,15 @@
this.id = ''
this.type = ''
this.visitType = 1
- this.followList = []
- this.carsList = []
+ this.followList = []
+ this.carsList = []
this.visitAreaText=''
this.$refs['dialog'].reset()
}
},
visitType(val) {
if (val) {
- this.typeName = val == 1 ? '普通访客' : (val == 2 ? '施工访客' : (val == 3 ? '物流车辆' : ''))
+ this.typeName = val == 1 ? '普通访客' : (val == 2 ? '施工人员' : (val == 3 ? '物流司机' : ''))
}
}
@@ -775,11 +790,11 @@
position: absolute;
top: 4px;
right: 4px;
- }
- .carsitem{
- width:450px;margin-bottom:10px;margin-bottom: 10px;display: flex;align-items: center;justify-content: space-between;
- }
- .carsitem Button{
- margin-left:10px
}
-
+ .carsitem{
+ width:450px;margin-bottom:10px;margin-bottom: 10px;display: flex;align-items: center;justify-content: space-between;
+ }
+ .carsitem Button{
+ margin-left:10px
+ }
+
diff --git a/src/views/visit/component/showVisit.vue b/src/views/visit/component/showVisit.vue
index 7d42448..c7b8468 100644
--- a/src/views/visit/component/showVisit.vue
+++ b/src/views/visit/component/showVisit.vue
@@ -91,6 +91,16 @@
{{form.date}}
+
+
@@ -419,7 +429,8 @@
car_no: '',
visitinfo: "",
- date: "",
+ date: "",
+ end_date:'',
visit_time_id: "",
visit_area_id: "",
workRange: "",
@@ -719,7 +730,7 @@
display: block !important;
margin: 0 !important;
padding: 0 !important;
-
+
// 突破xy-dialog的布局限制
position: relative;
left: -50%;
@@ -736,37 +747,37 @@
width: 100%;
justify-content: flex-start;
max-width: 100%;
-
+
.photo-item {
display: flex;
flex-direction: column;
align-items: center;
-
+
.photo-wrapper {
position: relative;
width: 120px;
height: 160px;
border-radius: 8px;
overflow: hidden;
-
+
.photo-image {
width: 100%;
height: 100%;
border: 2px solid #e4e7ed;
cursor: pointer;
transition: all 0.3s;
-
+
&:hover {
border-color: #409eff;
}
-
+
::v-deep .el-image__inner {
width: 100%;
height: 100%;
object-fit: cover;
transition: transform 0.3s;
}
-
+
.image-slot {
display: flex;
justify-content: center;
@@ -775,13 +786,13 @@
height: 100%;
background: #f5f7fa;
color: #909399;
-
+
i {
font-size: 40px;
}
}
}
-
+
.photo-overlay {
position: absolute;
top: 0;
@@ -796,31 +807,31 @@
opacity: 0;
transition: opacity 0.3s;
pointer-events: none;
-
+
i {
font-size: 32px;
color: #fff;
margin-bottom: 8px;
}
-
+
span {
color: #fff;
font-size: 14px;
font-weight: 500;
}
}
-
+
&:hover {
.photo-overlay {
opacity: 1;
}
-
+
.photo-image ::v-deep .el-image__inner {
transform: scale(1.1);
}
}
}
-
+
.photo-desc {
margin-top: 8px;
font-size: 12px;
@@ -850,13 +861,13 @@
justify-content: center !important;
transition: all 0.3s !important;
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.5) !important;
-
+
&:hover {
background: rgba(255, 73, 73, 0.9) !important;
transform: scale(1.1) rotate(90deg) !important;
}
}
-
+
// 优化左右切换按钮
.el-image-viewer__prev,
.el-image-viewer__next {
@@ -867,32 +878,32 @@
border-radius: 50% !important;
color: #fff !important;
transition: all 0.3s !important;
-
+
&:hover {
background: rgba(64, 158, 255, 0.9) !important;
transform: scale(1.1) !important;
}
}
-
+
// 优化操作栏按钮
.el-image-viewer__actions__inner {
background: rgba(0, 0, 0, 0.7) !important;
border-radius: 30px !important;
padding: 10px 20px !important;
-
+
i {
color: #fff !important;
font-size: 24px !important;
margin: 0 8px !important;
transition: all 0.3s !important;
-
+
&:hover {
color: #409eff !important;
transform: scale(1.2) !important;
}
}
}
-
+
// 优化遮罩层
.el-image-viewer__mask {
background: rgba(0, 0, 0, 0.85) !important;
diff --git a/src/views/visit/record.vue b/src/views/visit/record.vue
index 2d21c6c..0ecb241 100644
--- a/src/views/visit/record.vue
+++ b/src/views/visit/record.vue
@@ -37,10 +37,10 @@
@click="visible=false,$refs['addCommon'].isShow = true,$refs['addCommon'].type = 'add',$refs['addCommon'].visitType = 1">普通访客
施工访客
+ @click="visible=false,$refs['addCommon'].isShow = true,$refs['addCommon'].type = 'add',$refs['addCommon'].visitType = 2">施工人员
物流车辆
+ @click="visible=false,$refs['addCommon'].isShow = true,$refs['addCommon'].type = 'add',$refs['addCommon'].visitType = 3">物流司机
新增
@@ -151,13 +151,13 @@
入场时间:
- {{ getGateTime(currentDetail, '进厂') || '-' }}
+ {{ getGateTime(currentDetail, '进厂') || '-' }}
离场时间:
- {{ getGateTime(currentDetail, '离厂') || '-' }}
+ {{ getGateTime(currentDetail, '离厂') || '-' }}
@@ -190,7 +190,7 @@
-
+
@@ -322,16 +322,16 @@
name: '管理员A'
},
vehicle_images_detail: [
- {
+ {
id: 1001,
- url: 'https://picsum.photos/300/400?random=1',
+ url: 'https://picsum.photos/300/400?random=1',
original_name: '访客正面照.png',
extension: 'png',
size: 2544
},
- {
+ {
id: 1002,
- url: 'https://picsum.photos/300/400?random=2',
+ url: 'https://picsum.photos/300/400?random=2',
original_name: '访客侧面照.png',
extension: 'png',
size: 2231
@@ -342,7 +342,7 @@
id: 2,
name: '李四',
type: 2,
- type_text: '施工访客',
+ type_text: '施工人员',
audit_status: 1,
audit_status_text: '通过(待进厂)',
accept_admin: {
@@ -362,9 +362,9 @@
name: '管理员B'
},
vehicle_images_detail: [
- {
+ {
id: 1003,
- url: 'https://picsum.photos/300/400?random=3',
+ url: 'https://picsum.photos/300/400?random=3',
original_name: '施工人员照片.png',
extension: 'png',
size: 2784
@@ -375,7 +375,7 @@
id: 3,
name: '王五',
type: 3,
- type_text: '物流车辆',
+ type_text: '物流司机',
audit_status: 4,
audit_status_text: '已离厂',
accept_admin: {
@@ -398,23 +398,23 @@
name: '管理员C'
},
vehicle_images_detail: [
- {
+ {
id: 1004,
- url: 'https://picsum.photos/400/300?random=4',
+ url: 'https://picsum.photos/400/300?random=4',
original_name: '车辆前方照片.png',
extension: 'png',
size: 2686
},
- {
+ {
id: 1005,
- url: 'https://picsum.photos/400/300?random=5',
+ url: 'https://picsum.photos/400/300?random=5',
original_name: '车辆侧面照片.png',
extension: 'png',
size: 2544
},
- {
+ {
id: 1006,
- url: 'https://picsum.photos/400/300?random=6',
+ url: 'https://picsum.photos/400/300?random=6',
original_name: '车牌号照片.png',
extension: 'png',
size: 2231
@@ -445,9 +445,9 @@
name: '管理员D'
},
vehicle_images_detail: [
- {
+ {
id: 1007,
- url: 'https://picsum.photos/300/400?random=7',
+ url: 'https://picsum.photos/300/400?random=7',
original_name: '访客证件照.png',
extension: 'png',
size: 2544
@@ -458,7 +458,7 @@
id: 5,
name: '孙七',
type: 2,
- type_text: '施工访客',
+ type_text: '施工人员',
audit_status: 2,
audit_status_text: '驳回',
accept_admin: {
@@ -508,7 +508,7 @@
id: 7,
name: '吴九',
type: 3,
- type_text: '物流车辆',
+ type_text: '物流司机',
audit_status: 3,
audit_status_text: '已进厂',
accept_admin: {
@@ -530,16 +530,16 @@
name: '管理员G'
},
vehicle_images_detail: [
- {
+ {
id: 1008,
- url: 'https://picsum.photos/400/300?random=8',
+ url: 'https://picsum.photos/400/300?random=8',
original_name: '货车照片.png',
extension: 'png',
size: 2686
},
- {
+ {
id: 1009,
- url: 'https://picsum.photos/300/400?random=9',
+ url: 'https://picsum.photos/300/400?random=9',
original_name: '司机照片.png',
extension: 'png',
size: 2544
@@ -725,35 +725,35 @@
if (this.useMockData) {
// 过滤模拟数据
let filteredData = [...this.mockData]
-
+
// 关键词搜索
if (this.select.keyword) {
- filteredData = filteredData.filter(item =>
+ filteredData = filteredData.filter(item =>
item.name.includes(this.select.keyword) ||
item.mobile.includes(this.select.keyword) ||
item.idcard.includes(this.select.keyword) ||
item.company_name.includes(this.select.keyword)
)
}
-
+
// 状态筛选
if (this.select.audit_status !== '' && this.select.audit_status !== null && this.select.audit_status !== undefined) {
filteredData = filteredData.filter(item => item.audit_status === this.select.audit_status)
}
-
+
// 时间段筛选
if (this.select.start_date && this.select.end_date) {
filteredData = filteredData.filter(item => {
return item.date >= this.select.start_date && item.date <= this.select.end_date
})
}
-
+
// 计算分页
this.total = filteredData.length
const start = (this.select.page - 1) * this.select.page_size
const end = start + this.select.page_size
this.data = filteredData.slice(start, end)
-
+
console.log('使用模拟数据:', { total: this.total, data: this.data })
} else {
// 原有的真实接口调用逻辑
@@ -807,9 +807,13 @@
},
// 获取进厂/离厂时间
getGateTime(record, remark) {
+ console.log(record,remark)
if (record.gate_logs && record.gate_logs.length > 0) {
- const log = record.gate_logs.find(item => item.remark === remark)
- return log ? log.created_at : ''
+ const logs = record.gate_logs.filter(item => item.remark === remark)
+ if (logs && logs.length > 0) {
+ // 将多条记录的时间用换行符分隔
+ return logs.map(item => item.created_at).join('\n')
+ }
}
return ''
},
@@ -841,77 +845,81 @@
// 详情弹窗样式
.detail-content {
padding: 10px;
-
+
.detail-row {
margin-bottom: 20px;
-
+
&:last-child {
margin-bottom: 0;
}
}
-
+
.detail-item {
display: flex;
align-items: flex-start;
min-height: 32px;
-
+
.detail-label {
font-weight: 600;
color: #606266;
min-width: 90px;
flex-shrink: 0;
}
-
+
.detail-value {
color: #303133;
flex: 1;
word-break: break-all;
+
+ &.multi-line {
+ white-space: pre-line;
+ }
}
-
+
// 照片展示样式
&.detail-photos {
align-items: flex-start;
-
+
.detail-value {
width: 100%;
}
-
+
.photo-list {
display: flex;
flex-wrap: wrap;
gap: 15px;
margin-top: 5px;
-
+
.photo-item {
display: flex;
flex-direction: column;
align-items: center;
-
+
.photo-wrapper {
position: relative;
width: 120px;
height: 160px;
border-radius: 8px;
overflow: hidden;
-
+
.photo-image {
width: 100%;
height: 100%;
border: 2px solid #e4e7ed;
cursor: pointer;
transition: all 0.3s;
-
+
&:hover {
border-color: #409eff;
}
-
+
::v-deep .el-image__inner {
width: 100%;
height: 100%;
object-fit: cover;
transition: transform 0.3s;
}
-
+
.image-slot {
display: flex;
justify-content: center;
@@ -920,13 +928,13 @@
height: 100%;
background: #f5f7fa;
color: #909399;
-
+
i {
font-size: 40px;
}
}
}
-
+
.photo-overlay {
position: absolute;
top: 0;
@@ -941,31 +949,31 @@
opacity: 0;
transition: opacity 0.3s;
pointer-events: none;
-
+
i {
font-size: 32px;
color: #fff;
margin-bottom: 8px;
}
-
+
span {
color: #fff;
font-size: 14px;
font-weight: 500;
}
}
-
+
&:hover {
.photo-overlay {
opacity: 1;
}
-
+
.photo-image ::v-deep .el-image__inner {
transform: scale(1.1);
}
}
}
-
+
.photo-desc {
margin-top: 8px;
font-size: 12px;
@@ -1025,13 +1033,13 @@
justify-content: center !important;
transition: all 0.3s !important;
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.5) !important;
-
+
&:hover {
background: rgba(255, 73, 73, 0.9) !important;
transform: scale(1.1) rotate(90deg) !important;
}
}
-
+
// 优化左右切换按钮
.el-image-viewer__prev,
.el-image-viewer__next {
@@ -1042,32 +1050,32 @@
border-radius: 50% !important;
color: #fff !important;
transition: all 0.3s !important;
-
+
&:hover {
background: rgba(64, 158, 255, 0.9) !important;
transform: scale(1.1) !important;
}
}
-
+
// 优化操作栏按钮
.el-image-viewer__actions__inner {
background: rgba(0, 0, 0, 0.7) !important;
border-radius: 30px !important;
padding: 10px 20px !important;
-
+
i {
color: #fff !important;
font-size: 24px !important;
margin: 0 8px !important;
transition: all 0.3s !important;
-
+
&:hover {
color: #409eff !important;
transform: scale(1.2) !important;
}
}
}
-
+
// 优化遮罩层
.el-image-viewer__mask {
background: rgba(0, 0, 0, 0.85) !important;
diff --git a/src/views/visit/study.vue b/src/views/visit/study.vue
index 49c4eeb..afb8455 100644
--- a/src/views/visit/study.vue
+++ b/src/views/visit/study.vue
@@ -79,9 +79,9 @@
if(value==1){
return '普通访客'
}else if(value==2){
- return '施工访客'
+ return '施工人员'
}else if(value==3){
- return '物流车辆'
+ return '物流司机'
}else{
return '未知'
}