修改去向调查得问题

This commit is contained in:
2025-12-29 10:53:16 +08:00
parent 09771cc281
commit 2845a6b636
2 changed files with 210 additions and 219 deletions

View File

@@ -1,13 +1,9 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form v-show="showSearch" ref="queryForm" :model="queryParams" size="small" :inline="true" <el-form v-show="showSearch" ref="queryForm" :model="queryParams" size="small" :inline="true" label-width="120px">
label-width="120px"
>
<el-form-item label="主题" prop="surveyId"> <el-form-item label="主题" prop="surveyId">
<el-select v-model="queryParams.surveyId" clearable placeholder="请选择去向调查"> <el-select v-model="queryParams.surveyId" clearable placeholder="请选择去向调查">
<el-option v-for="item in surveyList" :key="item.surveyId" :value="item.surveyId" <el-option v-for="item in surveyList" :key="item.surveyId" :value="item.surveyId" :label="item.surveyName" />
:label="item.surveyName"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="学号" prop="stuNo"> <el-form-item label="学号" prop="stuNo">
@@ -17,21 +13,17 @@
<el-input v-model="queryParams.name" placeholder="请输入姓名" clearable @keyup.enter.native="handleQuery" /> <el-input v-model="queryParams.name" placeholder="请输入姓名" clearable @keyup.enter.native="handleQuery" />
</el-form-item> </el-form-item>
<el-form-item label="班级" prop="className"> <el-form-item label="班级" prop="className">
<el-input v-model="queryParams.className" placeholder="请输入班级" clearable <el-input v-model="queryParams.className" placeholder="请输入班级" clearable @keyup.enter.native="handleQuery" />
@keyup.enter.native="handleQuery"
/>
</el-form-item> </el-form-item>
<el-form-item label="预计离校日期" prop="willLeaveTime"> <el-form-item label="预计离校日期" prop="willLeaveTime">
<el-date-picker v-model="queryParams.willLeaveTime" type="date" placeholder="请选择预计离校日期" <el-date-picker v-model="queryParams.willLeaveTime" type="date" placeholder="请选择预计离校日期"
value-format="yyyy-MM-dd" clearable value-format="yyyy-MM-dd" clearable />
/>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button> <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
<el-button type="warning" plain icon="el-icon-download" size="mini" <el-button type="warning" plain icon="el-icon-download" size="mini"
@click="handleExport" @click="handleExport">导出学生填写记录(可以先搜索再导出)</el-button>
>导出学生填写记录可以先搜索再导出</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-table v-loading="loading" :data="itineraryList"> <el-table v-loading="loading" :data="itineraryList">
@@ -59,16 +51,13 @@
</el-table-column> </el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button size="mini" type="text" icon="el-icon-view" <el-button size="mini" type="text" icon="el-icon-view" @click="auditVClick(scope.row)">查看</el-button>
@click="auditVClick(scope.row)"
>查看</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
:limit.sync="queryParams.pageSize" @pagination="getList" @pagination="getList" />
/>
<el-dialog :title="title" :visible.sync="open" width="920px" append-to-body> <el-dialog :title="title" :visible.sync="open" width="920px" append-to-body>
<el-form ref="form" class="lookForm" size="mini" label-width="160px"> <el-form ref="form" class="lookForm" size="mini" label-width="160px">
@@ -95,10 +84,8 @@
<el-input v-model="form.name" readonly /> <el-input v-model="form.name" readonly />
</el-form-item> </el-form-item>
<el-form-item label="宿舍"> <el-form-item label="宿舍">
<el-input <el-input :value="form.campusName + '--' + form.parkName + '--' + form.buildingName + '--' + form.roomNo"
:value="form.campusName + '--' + form.parkName + '--' + form.buildingName + '--' + form.roomNo" readonly />
readonly
/>
</el-form-item> </el-form-item>
<el-form-item label="联系电话"> <el-form-item label="联系电话">
<el-input v-model="form.phone" readonly /> <el-input v-model="form.phone" readonly />
@@ -125,6 +112,10 @@
<el-input :value="form.willAddr" readonly /> <el-input :value="form.willAddr" readonly />
</el-form-item> </el-form-item>
<el-form-item v-if="form.isLeave == '1'" label="去向地-详细地址">
<el-input v-model="form.willDetailAddr" readonly />
</el-form-item>
<el-form-item v-if="form.isLeave == '1'" label="预计离校时间"> <el-form-item v-if="form.isLeave == '1'" label="预计离校时间">
<el-input :value="form.willLeaveTime" readonly /> <el-input :value="form.willLeaveTime" readonly />
</el-form-item> </el-form-item>
@@ -134,15 +125,13 @@
</el-form-item> </el-form-item>
<el-form-item v-if="form.isLeave == '1' && !isEmpty(form.homeGps)" <el-form-item v-if="form.isLeave == '1' && !isEmpty(form.homeGps)"
:label="form.isHome == '1' ? '到家定位经纬度' : '到目的地定位经纬度'" :label="form.isHome == '1' ? '到家定位经纬度' : '到目的地定位经纬度'">
>
<el-input :value="form.homeGps" readonly /> <el-input :value="form.homeGps" readonly />
<span style="color: red;font-size: 12px;">(*定位可能有误差)</span> <span style="color: red;font-size: 12px;">(*定位可能有误差)</span>
</el-form-item> </el-form-item>
<el-form-item v-if="form.isLeave == '1' && !isEmpty(form.homeGpsAddr)" <el-form-item v-if="form.isLeave == '1' && !isEmpty(form.homeGpsAddr)"
:label="form.isHome == '1' ? '到家定位详细地址' : '到目的地定位详细地址'" :label="form.isHome == '1' ? '到家定位详细地址' : '到目的地定位详细地址'">
>
<el-input :value="form.homeGpsAddr" readonly /> <el-input :value="form.homeGpsAddr" readonly />
<span style="color: red;font-size: 12px;">(*定位可能有误差)</span> <span style="color: red;font-size: 12px;">(*定位可能有误差)</span>
</el-form-item> </el-form-item>
@@ -156,9 +145,7 @@
</el-form-item> </el-form-item>
<el-form-item v-if="form.isLeave == '0'" label="留校事由"> <el-form-item v-if="form.isLeave == '0'" label="留校事由">
<el-input type="textarea" :autosize="{ minRows: 6, maxRows: 10 }" :value="form.stayReason" <el-input type="textarea" :autosize="{ minRows: 6, maxRows: 10 }" :value="form.stayReason" readonly />
readonly
/>
</el-form-item> </el-form-item>
</el-form> </el-form>
@@ -167,199 +154,199 @@
</template> </template>
<script> <script>
import { fullLoading, isEmpty } from '@/api/helpFunc' import { fullLoading, isEmpty } from '@/api/helpFunc';
import { listFdyAll as listView, updateStuHomeGpsAddr } from '@/api/survey/itinerary' import { listFdyAll as listView, updateStuHomeGpsAddr } from '@/api/survey/itinerary';
import { listAllSurvey } from '@/api/survey/survey' import { listAllSurvey } from '@/api/survey/survey';
export default { export default {
name: 'Itinerary', name: 'Itinerary',
dicts: ['sur_status'], dicts: ['sur_status'],
data() { data() {
return { return {
isEmpty, isEmpty,
// 遮罩层 // 遮罩层
loading: true, loading: true,
// 选中数组 // 选中数组
ids: [], ids: [],
// 非单个禁用 // 非单个禁用
single: true, single: true,
// 非多个禁用 // 非多个禁用
multiple: true, multiple: true,
// 显示搜索条件 // 显示搜索条件
showSearch: true, showSearch: true,
// 总条数 // 总条数
total: 0, total: 0,
// 学生假期返校表格数据 // 学生假期返校表格数据
itineraryList: [], itineraryList: [],
// 弹出层标题 // 弹出层标题
title: '', title: '',
// 是否显示弹出层 // 是否显示弹出层
open: false, open: false,
// 查询参数 // 查询参数
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
pageSize: 10, pageSize: 10,
deptId: null, deptId: null,
stuNo: null, stuNo: null,
classId: null, classId: null,
name: null, name: null,
phone: null, phone: null,
emergencyContact: null, emergencyContact: null,
emergencyContactPhone: null, emergencyContactPhone: null,
schoolDistrict: null, schoolDistrict: null,
apartment: null, apartment: null,
room: null, room: null,
scheduledReturnTime: null, scheduledReturnTime: null,
reachSchoolStatus: null, reachSchoolStatus: null,
parentName: null, parentName: null,
parentPhone: null, parentPhone: null,
know: null, know: null,
absentSchoolType: null, absentSchoolType: null,
absentSchoolRemark: null, absentSchoolRemark: null,
attendSchoolGps: null, attendSchoolGps: null,
attendSchoolTime: null, attendSchoolTime: null,
status: null, status: null,
surveyId: null, surveyId: null,
surveyName: null, surveyName: null,
className: null, className: null,
}, },
dept_list: [], dept_list: [],
deptForm: { deptForm: {
}, },
classVlue1: [],//班级搜索选择 classVlue1: [],//班级搜索选择
ClassNameList: [],//班级名称 ClassNameList: [],//班级名称
// 表单参数 // 表单参数
form: {}, form: {},
auditForm: { auditForm: {
}, },
surveyList: [], surveyList: [],
}
},
created() {
if (!isEmpty(this.$store.sur)) {
if (!isEmpty(this.$store.sur.willLeaveTime)) {
this.queryParams.willLeaveTime = this.$store.sur.willLeaveTime
}
}
this.getList()
this.listAllSurvey()
},
methods: {
handleExport() {
let sdata = { ...this.queryParams }
sdata.pageNum = null
sdata.pageSize = null
this.download('survey/itinerary/fdyExport', {
...sdata
}, `学生假期离校返校填写记录_${new Date().getTime()}.xlsx`)
},
async listAllSurvey() {
let res = await listAllSurvey()
if (res.code == 200) {
this.surveyList = [...res.data]
}
},
getList() {
this.loading = true
listView(this.queryParams).then(response => {
this.itineraryList = response.rows
this.total = response.total
this.loading = false
})
},
// 取消按钮
cancel() {
this.open = false
this.reset()
},
// 表单重置
reset() {
this.form = {
returnSchoolId: null,
deptId: null,
stuNo: null,
classId: null,
name: null,
phone: null,
emergencyContact: null,
emergencyContactPhone: null,
schoolDistrict: null,
apartment: null,
room: null,
scheduledReturnTime: null,
reachSchoolStatus: null,
parentName: null,
parentPhone: null,
know: null,
absentSchoolType: null,
absentSchoolRemark: null,
attendSchoolGps: null,
attendSchoolTime: null,
status: null,
surveyId: null
}
this.resetForm('form')
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1
this.getList()
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm('queryForm')
this.classVlue1 = [],
this.handleQuery()
},
auditVClick(row) {
this.form = {}
this.form = { ...row }
this.updateStuHomeGpsAddr()
this.open = true
},
updateStuHomeGpsAddr() {
if (!isEmpty(this.form.homeGps) && isEmpty(this.form.homeGpsAddr)) {
let loading = fullLoading(this)
this.fetchLocation(this.form.homeGps)
loading.close()
}
},
fetchLocation(latlng) {
this.cleanup()
window.baiduCallback = this.baiduCallback
const script = document.createElement('script')
script.src =
`https://api.map.baidu.com/reverse_geocoding/v3/?ak=HUWNwlsBGdZk85kkDkfl3MCYVEqaTey1&output=json&coordtype=gcj02ll&location=${latlng}&callback=baiduCallback`
document.body.appendChild(script)
setTimeout(() => {
this.cleanup()
}, 5000)
},
cleanup() {
const scripts = document.querySelectorAll('script[src*="reverse_geocoding"]')
scripts.forEach(script => script.remove())
window.baiduCallback = null
},
async baiduCallback(data) {
if (data.status == 0) {
this.form.homeGpsAddr = data.result.formatted_address
await updateStuHomeGpsAddr(this.form)
this.getList()
} else {
this.form.homeGpsAddr = '定位失败'
}
}
} }
},
created() {
if (!isEmpty(this.$store.sur)) {
if (!isEmpty(this.$store.sur.willLeaveTime)) {
this.queryParams.willLeaveTime = this.$store.sur.willLeaveTime
}
}
this.getList()
this.listAllSurvey()
},
methods: {
handleExport() {
let sdata = { ...this.queryParams }
sdata.pageNum = null
sdata.pageSize = null
this.download('survey/itinerary/fdyExport', {
...sdata
}, `学生假期离校返校填写记录_${new Date().getTime()}.xlsx`)
},
async listAllSurvey() {
let res = await listAllSurvey()
if (res.code == 200) {
this.surveyList = [...res.data]
}
},
getList() {
this.loading = true
listView(this.queryParams).then(response => {
this.itineraryList = response.rows
this.total = response.total
this.loading = false
})
},
// 取消按钮
cancel() {
this.open = false
this.reset()
},
// 表单重置
reset() {
this.form = {
returnSchoolId: null,
deptId: null,
stuNo: null,
classId: null,
name: null,
phone: null,
emergencyContact: null,
emergencyContactPhone: null,
schoolDistrict: null,
apartment: null,
room: null,
scheduledReturnTime: null,
reachSchoolStatus: null,
parentName: null,
parentPhone: null,
know: null,
absentSchoolType: null,
absentSchoolRemark: null,
attendSchoolGps: null,
attendSchoolTime: null,
status: null,
surveyId: null
}
this.resetForm('form')
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1
this.getList()
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm('queryForm')
this.classVlue1 = [],
this.handleQuery()
},
auditVClick(row) {
this.form = {}
this.form = { ...row }
this.updateStuHomeGpsAddr()
this.open = true
},
updateStuHomeGpsAddr() {
if (!isEmpty(this.form.homeGps) && isEmpty(this.form.homeGpsAddr)) {
let loading = fullLoading(this)
this.fetchLocation(this.form.homeGps)
loading.close()
}
},
fetchLocation(latlng) {
this.cleanup()
window.baiduCallback = this.baiduCallback
const script = document.createElement('script')
script.src =
`https://api.map.baidu.com/reverse_geocoding/v3/?ak=HUWNwlsBGdZk85kkDkfl3MCYVEqaTey1&output=json&coordtype=gcj02ll&location=${latlng}&callback=baiduCallback`
document.body.appendChild(script)
setTimeout(() => {
this.cleanup()
}, 5000)
},
cleanup() {
const scripts = document.querySelectorAll('script[src*="reverse_geocoding"]')
scripts.forEach(script => script.remove())
window.baiduCallback = null
},
async baiduCallback(data) {
if (data.status == 0) {
this.form.homeGpsAddr = data.result.formatted_address
await updateStuHomeGpsAddr(this.form)
this.getList()
} else {
this.form.homeGpsAddr = '定位失败'
}
}
}
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.lookForm { .lookForm {
.el-form-item { .el-form-item {
margin-bottom: 5px; margin-bottom: 5px;
} }
} }
</style> </style>

View File

@@ -136,7 +136,7 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="是否离校"> <el-form-item label="是否离校">
<el-input :value="form.isLeave == '1' ? '是' : '否'" readonly /> <el-input :value="form.isLeave == '1' ? '是' : '否'" />
</el-form-item> </el-form-item>
<el-form-item v-if="form.isLeave == '1'" label="预计离校时间"> <el-form-item v-if="form.isLeave == '1'" label="预计离校时间">
@@ -149,6 +149,10 @@
<el-input v-model="form.willAddr" placeholder="请输入去向地" /> <el-input v-model="form.willAddr" placeholder="请输入去向地" />
</el-form-item> </el-form-item>
<el-form-item v-if="form.isLeave == '1'" label="去向地-详细地址">
<el-input v-model="form.willDetailAddr" />
</el-form-item>
<el-form-item v-if="form.isLeave == '1'" label="预计返校时间"> <el-form-item v-if="form.isLeave == '1'" label="预计返校时间">
<el-date-picker v-model="form.scheduledReturnTime" type="datetime" placeholder="选择预计返校时间" <el-date-picker v-model="form.scheduledReturnTime" type="datetime" placeholder="选择预计返校时间"
format="yyyy-MM-dd HH:mm:ss" value-format="yyyy-MM-dd HH:mm:ss" style="width: 100%;" format="yyyy-MM-dd HH:mm:ss" value-format="yyyy-MM-dd HH:mm:ss" style="width: 100%;"
@@ -156,7 +160,7 @@
</el-form-item> </el-form-item>
<el-form-item v-if="form.isLeave == '0'" label="预计留校时间"> <el-form-item v-if="form.isLeave == '0'" label="预计留校时间">
<el-input v-model="form.willStayTime" readonly style="width: 100%;" /> <el-input v-model="form.willStayTime" style="width: 100%;" />
</el-form-item> </el-form-item>
<el-form-item v-if="form.isLeave == '0'" label="留校事由"> <el-form-item v-if="form.isLeave == '0'" label="留校事由">
@@ -501,7 +505,7 @@ export default {
this.$message.info('请选择去向调查') this.$message.info('请选择去向调查')
return return
} }
// // 重置页码为1避免fromIndex > toIndex错误 // // 重置页码为1,避免fromIndex > toIndex错误
// this.lookParams.pageNum = 1; // this.lookParams.pageNum = 1;
let loading = fullLoading(this) let loading = fullLoading(this)
let res = await listFdyStuLeave(this.lookParams) let res = await listFdyStuLeave(this.lookParams)
@@ -564,7 +568,7 @@ export default {
} }
} catch (error) { } catch (error) {
loading.close() loading.close()
this.$message.error('驳回失败' + error.message) this.$message.error('驳回失败:' + error.message)
} }
}) })
}, },
@@ -610,7 +614,7 @@ export default {
loading.close() loading.close()
if (res.code == 200) { if (res.code == 200) {
this.$message.success('编辑保存成功') this.$message.success('编辑保存成功!')
// 刷新列表数据 // 刷新列表数据
this.getList() this.getList()
} else { } else {
@@ -618,7 +622,7 @@ export default {
} }
} catch (error) { } catch (error) {
loading.close() loading.close()
this.$message.error('编辑保存失败' + error.message) this.$message.error('编辑保存失败:' + error.message)
} }
}, },