Compare commits
2 Commits
07832bdffa
...
6bfef9bf9a
| Author | SHA1 | Date | |
|---|---|---|---|
| 6bfef9bf9a | |||
| 8f57cd58b3 |
@@ -1,5 +1,35 @@
|
|||||||
import request from '@/utils/request';
|
import request from '@/utils/request';
|
||||||
|
|
||||||
|
export function listXwReturnRes1(id) {
|
||||||
|
return request({
|
||||||
|
url: '/survey/itinerary/listXwReturnRes1/' + id,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function listXwSubmitRes(id) {
|
||||||
|
return request({
|
||||||
|
url: '/survey/itinerary/listXwSubmitRes/' + id,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function countXwWillLeave(id) {
|
||||||
|
return request({
|
||||||
|
url: '/survey/itinerary/countXwWillLeave/' + id,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function listXw(query) {
|
||||||
|
return request({
|
||||||
|
url: '/survey/itinerary/listXw',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
export function countFdyClassWillLeave(id) {
|
export function countFdyClassWillLeave(id) {
|
||||||
return request({
|
return request({
|
||||||
url: '/survey/itinerary/countFdyClassWillLeave/' + id,
|
url: '/survey/itinerary/countFdyClassWillLeave/' + id,
|
||||||
|
|||||||
@@ -2,9 +2,9 @@
|
|||||||
<div class="app-container">
|
<div class="app-container">
|
||||||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch"
|
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch"
|
||||||
label-width="120px">
|
label-width="120px">
|
||||||
<el-form-item label="主题" prop="surveyName">
|
<el-form-item label="主题" prop="surveyId">
|
||||||
<el-select clearable v-model="queryParams.surveyName" placeholder="请选择去向调查">
|
<el-select clearable v-model="queryParams.surveyId" placeholder="请选择去向调查">
|
||||||
<el-option v-for="item in surveyList" :key="item.surveyId" :value="item.surveyName"
|
<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>
|
||||||
@@ -25,6 +25,8 @@
|
|||||||
<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"
|
||||||
|
@click="handleExport">导出学生填写记录(可以先搜索再导出)</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">
|
||||||
@@ -61,6 +63,7 @@
|
|||||||
<el-form ref="form" class="lookForm" size="mini" label-width="160px">
|
<el-form ref="form" class="lookForm" size="mini" label-width="160px">
|
||||||
<el-form-item label="是否通过">
|
<el-form-item label="是否通过">
|
||||||
<el-select :disabled="true" v-model="form.leaveStatus" placeholder="请选择是否通过">
|
<el-select :disabled="true" v-model="form.leaveStatus" placeholder="请选择是否通过">
|
||||||
|
<el-option label="待审核" value="1"></el-option>
|
||||||
<el-option label="通过" value="2"></el-option>
|
<el-option label="通过" value="2"></el-option>
|
||||||
<el-option label="打回" value="10"></el-option>
|
<el-option label="打回" value="10"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
@@ -231,6 +234,14 @@ export default {
|
|||||||
this.listAllSurvey();
|
this.listAllSurvey();
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
handleExport() {
|
||||||
|
let sdata = { ...this.queryParams };
|
||||||
|
sdata.pageNum = null;
|
||||||
|
sdata.pageSize = null;
|
||||||
|
this.download('survey/itinerary/fdyExport', {
|
||||||
|
...sdata
|
||||||
|
}, `学生假期离校返校填写记录_${new Date().getTime()}.xlsx`)
|
||||||
|
},
|
||||||
async listAllSurvey() {
|
async listAllSurvey() {
|
||||||
let res = await listAllSurvey();
|
let res = await listAllSurvey();
|
||||||
if (res.code == 200) {
|
if (res.code == 200) {
|
||||||
|
|||||||
@@ -2,9 +2,9 @@
|
|||||||
<div class="app-container">
|
<div class="app-container">
|
||||||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch"
|
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch"
|
||||||
label-width="40px">
|
label-width="40px">
|
||||||
<el-form-item label="主题" prop="surveyName">
|
<el-form-item label="主题" prop="surveyId">
|
||||||
<el-select clearable v-model="queryParams.surveyName" placeholder="请选择去向调查">
|
<el-select clearable v-model="queryParams.surveyId" placeholder="请选择去向调查">
|
||||||
<el-option v-for="item in surveyList" :key="item.surveyId" :value="item.surveyName"
|
<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>
|
||||||
|
|||||||
554
src/views/survey/leave/xw.vue
Normal file
554
src/views/survey/leave/xw.vue
Normal file
@@ -0,0 +1,554 @@
|
|||||||
|
<template>
|
||||||
|
<div class="app-container">
|
||||||
|
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch"
|
||||||
|
label-width="120px">
|
||||||
|
<el-form-item label="主题" prop="surveyId">
|
||||||
|
<el-select clearable v-model="queryParams.surveyId" placeholder="请选择去向调查">
|
||||||
|
<el-option v-for="item in surveyList" :key="item.surveyId" :value="item.surveyId"
|
||||||
|
:label="item.surveyName" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="学号" prop="stuNo">
|
||||||
|
<el-input v-model="queryParams.stuNo" placeholder="请输入学号" clearable @keyup.enter.native="handleQuery" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="姓名" prop="name">
|
||||||
|
<el-input v-model="queryParams.name" placeholder="请输入姓名" clearable @keyup.enter.native="handleQuery" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="班级" prop="className">
|
||||||
|
<el-input v-model="queryParams.className" placeholder="请输入班级" clearable
|
||||||
|
@keyup.enter.native="handleQuery" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="预计离校日期" prop="willLeaveTime">
|
||||||
|
<el-date-picker v-model="queryParams.willLeaveTime" type="date" placeholder="请选择预计离校日期"
|
||||||
|
value-format="yyyy-MM-dd" clearable />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<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 type="warning" plain icon="el-icon-download" size="mini"
|
||||||
|
@click="handleExport">导出学生填写记录(可以先搜索再导出)</el-button>
|
||||||
|
<el-button type="primary" icon="el-icon-view" size="mini" plain @click="willVClick">查看预计离校情况</el-button>
|
||||||
|
<el-button type="primary" icon="el-icon-view" size="mini" plain @click="homeVClick">查看学生到家情况</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<el-table v-loading="loading" :data="itineraryList">
|
||||||
|
<el-table-column label="#" align="center" prop="returnSchoolId" />
|
||||||
|
<el-table-column label="主题" align="center" prop="surveyName" />
|
||||||
|
<el-table-column label="学号" align="center" prop="stuNo" width="120" />
|
||||||
|
<el-table-column label="姓名" align="center" prop="name" />
|
||||||
|
<el-table-column label="班级" align="center" prop="className" width="300" />
|
||||||
|
<el-table-column label="联系电话" align="center" prop="phone" width="140" />
|
||||||
|
<el-table-column label="是否离校" align="center">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
{{ scope.row.isLeave == "1" ? "是" : "否" }}
|
||||||
|
<div v-if="scope.row.isLeave == 1">{{ scope.row.isLeave == "1" && scope.row.isHome == "是" ? "已到家" :
|
||||||
|
"未到家" }}</div>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="审核状态" align="center" prop="configType">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<dict-tag :options="dict.type.sur_status" :value="scope.row.leaveStatus" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-button size="mini" type="text" icon="el-icon-view"
|
||||||
|
@click="auditVClick(scope.row)">查看</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
|
||||||
|
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum"
|
||||||
|
:limit.sync="queryParams.pageSize" @pagination="getList" />
|
||||||
|
|
||||||
|
<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-item label="是否通过">
|
||||||
|
<el-select :disabled="true" v-model="form.leaveStatus" placeholder="请选择是否通过">
|
||||||
|
<el-option label="待审核" value="1"></el-option>
|
||||||
|
<el-option label="通过" value="2"></el-option>
|
||||||
|
<el-option label="打回" value="10"></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="主题">
|
||||||
|
<el-input v-model="form.surveyName" readonly />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="学院">
|
||||||
|
<el-input v-model="form.moreDeptName" readonly />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="班级">
|
||||||
|
<el-input v-model="form.className" readonly />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="学号">
|
||||||
|
<el-input v-model="form.stuNo" readonly />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="姓名">
|
||||||
|
<el-input v-model="form.name" readonly />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="宿舍">
|
||||||
|
<el-input
|
||||||
|
:value="form.campusName + '--' + form.parkName + '--' + form.buildingName + '--' + form.roomNo"
|
||||||
|
readonly />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="联系电话">
|
||||||
|
<el-input v-model="form.phone" readonly />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="紧急联系人">
|
||||||
|
<el-input v-model="form.emergencyContact" readonly />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="紧急联系人电话">
|
||||||
|
<el-input v-model="form.emergencyContactPhone" readonly />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="家长姓名">
|
||||||
|
<el-input v-model="form.famName" readonly />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="家长电话">
|
||||||
|
<el-input v-model="form.famPhone" readonly />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="家长是否知晓">
|
||||||
|
<el-input v-model="form.famKnow" readonly />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="是否离校">
|
||||||
|
<el-input :value="form.isLeave == '1' ? '是' : '否'" readonly />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="去向地" v-if="form.isLeave == '1' && !isEmpty(form.willAddr)">
|
||||||
|
<el-input :value="form.willAddr" readonly />
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item label="预计离校时间" v-if="form.isLeave == '1'">
|
||||||
|
<el-input :value="form.willLeaveTime" readonly />
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item label="是否到家" v-if="form.isLeave == '1'">
|
||||||
|
<el-input :value="form.isHome == '1' ? '是' : '否'" readonly />
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item :label="form.isHome == '1' ? '到家定位经纬度' : '到目的地定位经纬度'"
|
||||||
|
v-if="form.isLeave == '1' && !isEmpty(form.homeGps)">
|
||||||
|
<el-input :value="form.homeGps" readonly />
|
||||||
|
<span style="color: red;font-size: 12px;">(*定位可能有误差)</span>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item :label="form.isHome == '1' ? '到家定位详细地址' : '到目的地定位详细地址'"
|
||||||
|
v-if="form.isLeave == '1' && !isEmpty(form.homeGpsAddr)">
|
||||||
|
<el-input :value="form.homeGpsAddr" readonly />
|
||||||
|
<span style="color: red;font-size: 12px;">(*定位可能有误差)</span>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item label="定位时间" v-if="!isEmpty(form.homeGpsTime)">
|
||||||
|
<el-input :value="form.homeGpsTime" readonly />
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item label="预计留校时间" v-if="form.isLeave == '0'">
|
||||||
|
<el-input :value="form.willStayTime" readonly />
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item label="留校事由" v-if="form.isLeave == '0'">
|
||||||
|
<el-input type="textarea" :autosize="{ minRows: 6, maxRows: 10 }" :value="form.stayReason"
|
||||||
|
readonly />
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
</el-form>
|
||||||
|
</el-dialog>
|
||||||
|
|
||||||
|
|
||||||
|
<el-dialog title="查看学生预计离校情况" :visible.sync="willV" width="1000px" append-to-body :close-on-click-modal="false">
|
||||||
|
<el-form size="small" :inline="true" label-width="40px">
|
||||||
|
<el-form-item label="主题" prop="willId">
|
||||||
|
<el-select clearable v-model="willId" placeholder="请选择去向调查">
|
||||||
|
<el-option v-for="item in surveyList" :key="item.surveyId" :value="item.surveyId"
|
||||||
|
:label="item.surveyName" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary" icon="el-icon-search" size="mini" @click="willQuery">查看</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
数据更新时间:{{ new Date().toLocaleString() }}<el-button @click="exportWillLeave">导出</el-button>
|
||||||
|
<el-table id="willLeaveTable" v-if="willV" :border="true" :data="willList">
|
||||||
|
<el-table-column label="班级" align="center" prop="class_name" width="180" />
|
||||||
|
<el-table-column label="学生数" align="center" prop="stu_num" />
|
||||||
|
<el-table-column label="提交数" align="center" prop="submit_num" />
|
||||||
|
<el-table-column label="到家人数" align="center" prop="home_num" />
|
||||||
|
<el-table-column label="每日预计离校人数" align="center">
|
||||||
|
<el-table-column v-for="(v, i) in willFields" :key="i" :label="v.label" align="center"
|
||||||
|
:prop="v.value" width="180">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
{{ scope.row[v.value] }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="留校学生" align="center" prop="stay_num" />
|
||||||
|
</el-table>
|
||||||
|
<table id="tempTable2">
|
||||||
|
|
||||||
|
</table>
|
||||||
|
</el-dialog>
|
||||||
|
|
||||||
|
<el-dialog title="查看学生到家情况" :visible.sync="homeV" fullscreen append-to-body :close-on-click-modal="false">
|
||||||
|
<el-form size="small" :inline="true" label-width="40px">
|
||||||
|
<el-form-item label="主题" prop="homeId">
|
||||||
|
<el-select clearable v-model="homeId" placeholder="请选择去向调查">
|
||||||
|
<el-option v-for="item in surveyList" :key="item.surveyId" :value="item.surveyId"
|
||||||
|
:label="item.surveyName" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary" icon="el-icon-search" size="mini" @click="homeQuery">查看</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
数据更新时间:{{ new Date().toLocaleString() }}<el-button @click="exportHome">导出</el-button>
|
||||||
|
<el-table id="homeTable" v-if="homeV" :border="true" :data="homeList">
|
||||||
|
<el-table-column label="班级" align="center" prop="class_name" width="180" />
|
||||||
|
<el-table-column label="学生数" align="center" prop="stu_num" />
|
||||||
|
<el-table-column label="提交数" align="center" prop="submit_num" />
|
||||||
|
<el-table-column label="到家人数" align="center" prop="home_num" />
|
||||||
|
<el-table-column label="每日到家人数" align="center">
|
||||||
|
<el-table-column v-for="(v, i) in countDateField" :key="i" :label="v.label" align="center"
|
||||||
|
:prop="v.value" width="180" />
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="留校学生" align="center">
|
||||||
|
<el-table-column label="小计" align="center" prop="stay_num" />
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
|
||||||
|
<table id="tempTable1">
|
||||||
|
|
||||||
|
</table>
|
||||||
|
|
||||||
|
</el-dialog>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { isEmpty, fullLoading } from "@/api/helpFunc";
|
||||||
|
import { listXw as listView, updateStuHomeGpsAddr, countXwWillLeave, listXwSubmitRes } from "@/api/survey/itinerary";
|
||||||
|
import { listAllSurvey } from "@/api/survey/survey";
|
||||||
|
import XLSX from 'xlsx';
|
||||||
|
export default {
|
||||||
|
name: "Itinerary",
|
||||||
|
dicts: ['sur_status'],
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
isEmpty,
|
||||||
|
// 遮罩层
|
||||||
|
loading: true,
|
||||||
|
// 选中数组
|
||||||
|
ids: [],
|
||||||
|
// 非单个禁用
|
||||||
|
single: true,
|
||||||
|
// 非多个禁用
|
||||||
|
multiple: true,
|
||||||
|
// 显示搜索条件
|
||||||
|
showSearch: true,
|
||||||
|
// 总条数
|
||||||
|
total: 0,
|
||||||
|
// 学生假期返校表格数据
|
||||||
|
itineraryList: [],
|
||||||
|
// 弹出层标题
|
||||||
|
title: "",
|
||||||
|
// 是否显示弹出层
|
||||||
|
open: false,
|
||||||
|
// 查询参数
|
||||||
|
queryParams: {
|
||||||
|
pageNum: 1,
|
||||||
|
pageSize: 10,
|
||||||
|
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,
|
||||||
|
surveyName: null,
|
||||||
|
className: null,
|
||||||
|
},
|
||||||
|
dept_list: [],
|
||||||
|
deptForm: {
|
||||||
|
|
||||||
|
},
|
||||||
|
classVlue1: [],//班级搜索选择
|
||||||
|
ClassNameList: [],//班级名称
|
||||||
|
|
||||||
|
// 表单参数
|
||||||
|
form: {},
|
||||||
|
|
||||||
|
auditForm: {
|
||||||
|
|
||||||
|
},
|
||||||
|
surveyList: [],
|
||||||
|
|
||||||
|
willV: false,
|
||||||
|
willList: [],
|
||||||
|
willId: null,
|
||||||
|
willFields: [],
|
||||||
|
|
||||||
|
homeV: false,
|
||||||
|
homeList: [],
|
||||||
|
countDateField: [
|
||||||
|
|
||||||
|
],
|
||||||
|
homeId: null,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
if (!isEmpty(this.$store.sur)) {
|
||||||
|
if (!isEmpty(this.$store.sur.willLeaveTime)) {
|
||||||
|
this.queryParams.willLeaveTime = this.$store.sur.willLeaveTime;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.getList();
|
||||||
|
this.listAllSurvey();
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
exportHome() {
|
||||||
|
if (isEmpty(this.homeId)) {
|
||||||
|
this.$message.info("请选择您要导出的去向调查");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (document.getElementById('homeTable') == null) {
|
||||||
|
this.$message.info("请等待数据加载完毕");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
let title = this.surveyList.find(item => item.surveyId == this.homeId).surveyName;
|
||||||
|
|
||||||
|
let thead = document.getElementById('homeTable').getElementsByTagName('thead')[0];
|
||||||
|
let tbody = document.getElementById('homeTable').getElementsByTagName('tbody')[0];
|
||||||
|
let tempTable = document.getElementById('tempTable1');
|
||||||
|
if (thead) {
|
||||||
|
tempTable.appendChild(thead.cloneNode(true))
|
||||||
|
}
|
||||||
|
if (tbody) {
|
||||||
|
tempTable.appendChild(tbody.cloneNode(true))
|
||||||
|
}
|
||||||
|
const wb = XLSX.utils.table_to_book(tempTable, { sheet: 'Sheet1' })
|
||||||
|
XLSX.writeFile(wb, title + "学生到家情况.xlsx");
|
||||||
|
tempTable.innerHTML = '';
|
||||||
|
},
|
||||||
|
homeQuery() {
|
||||||
|
if (isEmpty(this.homeId)) {
|
||||||
|
this.$message.info("请选择您要查看的去向调查");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.countDateField = [];
|
||||||
|
let tempCount = this.surveyList.find(item => item.surveyId == this.homeId).countDate;
|
||||||
|
let temp = tempCount.split(",");
|
||||||
|
temp.map(x => {
|
||||||
|
this.countDateField.push({
|
||||||
|
label: x + " 12:00:00前到家",
|
||||||
|
value: x + " 12:00:00前"
|
||||||
|
});
|
||||||
|
});
|
||||||
|
this.listSubmitRes();
|
||||||
|
},
|
||||||
|
async homeVClick() {
|
||||||
|
this.countDateField = [];
|
||||||
|
this.homeList = [];
|
||||||
|
this.homeId = null;
|
||||||
|
this.homeV = true;
|
||||||
|
},
|
||||||
|
async listSubmitRes() {
|
||||||
|
let loading = fullLoading(this);
|
||||||
|
let res = await listXwSubmitRes(this.homeId);
|
||||||
|
loading.close();
|
||||||
|
if (res.code == 200) {
|
||||||
|
let data = [...res.data];
|
||||||
|
this.homeList = data;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
exportWillLeave() {
|
||||||
|
if (isEmpty(this.willId)) {
|
||||||
|
this.$message.info("请选择您要导出的去向调查");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (document.getElementById('willLeaveTable') == null) {
|
||||||
|
this.$message.info("请等待数据加载完毕");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
let title = this.surveyList.find(item => item.surveyId == this.willId).surveyName;
|
||||||
|
|
||||||
|
let thead = document.getElementById('willLeaveTable').getElementsByTagName('thead')[0];
|
||||||
|
let tbody = document.getElementById('willLeaveTable').getElementsByTagName('tbody')[0];
|
||||||
|
let tempTable = document.getElementById('tempTable2');
|
||||||
|
if (thead) {
|
||||||
|
tempTable.appendChild(thead.cloneNode(true))
|
||||||
|
}
|
||||||
|
if (tbody) {
|
||||||
|
tempTable.appendChild(tbody.cloneNode(true))
|
||||||
|
}
|
||||||
|
const wb = XLSX.utils.table_to_book(tempTable, { sheet: 'Sheet1' })
|
||||||
|
XLSX.writeFile(wb, title + "学生预计离校情况.xlsx");
|
||||||
|
tempTable.innerHTML = '';
|
||||||
|
},
|
||||||
|
willQuery() {
|
||||||
|
if (isEmpty(this.willId)) {
|
||||||
|
this.$message.info("请选择您要查看的去向调查");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.countXwWillLeave();
|
||||||
|
},
|
||||||
|
willVClick() {
|
||||||
|
this.willId = null;
|
||||||
|
this.willV = true;
|
||||||
|
},
|
||||||
|
async countXwWillLeave() {
|
||||||
|
this.willList = [];
|
||||||
|
|
||||||
|
let tempFields = [];
|
||||||
|
let loading = fullLoading(this);
|
||||||
|
let res = await countXwWillLeave(this.willId);
|
||||||
|
loading.close();
|
||||||
|
if (res.code == 200) {
|
||||||
|
let data = [...res.data];
|
||||||
|
for (let key in data[0]) {
|
||||||
|
if (key.includes('预计离校')) {
|
||||||
|
tempFields.push({
|
||||||
|
label: key,
|
||||||
|
value: key
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
tempFields.sort((a, b) => {
|
||||||
|
// 提取日期部分并转为Date对象进行比较
|
||||||
|
const dateA = new Date(a.label.slice(0, 10));
|
||||||
|
const dateB = new Date(b.label.slice(0, 10));
|
||||||
|
return dateA - dateB;
|
||||||
|
});
|
||||||
|
this.willFields = [...tempFields];
|
||||||
|
this.willList = [...data];
|
||||||
|
}
|
||||||
|
},
|
||||||
|
handleExport() {
|
||||||
|
let sdata = { ...this.queryParams };
|
||||||
|
sdata.pageNum = null;
|
||||||
|
sdata.pageSize = null;
|
||||||
|
this.download('survey/itinerary/xwExport', {
|
||||||
|
...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>
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.lookForm {
|
||||||
|
.el-form-item {
|
||||||
|
margin-bottom: 5px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -2,9 +2,9 @@
|
|||||||
<div class="app-container">
|
<div class="app-container">
|
||||||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch"
|
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch"
|
||||||
label-width="40px">
|
label-width="40px">
|
||||||
<el-form-item label="主题" prop="surveyName">
|
<el-form-item label="主题" prop="surveyId">
|
||||||
<el-select clearable v-model="queryParams.surveyName" placeholder="请选择去向调查">
|
<el-select clearable v-model="queryParams.surveyId" placeholder="请选择去向调查">
|
||||||
<el-option v-for="item in surveyList" :key="item.surveyId" :value="item.surveyName"
|
<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>
|
||||||
@@ -21,6 +21,8 @@
|
|||||||
<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"
|
||||||
|
@click="handleExport">导出学生填写记录(可以先搜索再导出)</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">
|
||||||
@@ -247,6 +249,14 @@ export default {
|
|||||||
this.listAllSurvey();
|
this.listAllSurvey();
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
handleExport() {
|
||||||
|
let sdata = { ...this.queryParams };
|
||||||
|
sdata.pageNum = null;
|
||||||
|
sdata.pageSize = null;
|
||||||
|
this.download('survey/itinerary/xwExport', {
|
||||||
|
...sdata
|
||||||
|
}, `学生假期离校返校填写记录_${new Date().getTime()}.xlsx`)
|
||||||
|
},
|
||||||
async listAllSurvey() {
|
async listAllSurvey() {
|
||||||
let res = await listAllSurvey();
|
let res = await listAllSurvey();
|
||||||
if (res.code == 200) {
|
if (res.code == 200) {
|
||||||
|
|||||||
@@ -3,8 +3,8 @@
|
|||||||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch"
|
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch"
|
||||||
label-width="40px">
|
label-width="40px">
|
||||||
<el-form-item label="主题" prop="surveyName">
|
<el-form-item label="主题" prop="surveyName">
|
||||||
<el-select clearable v-model="queryParams.surveyName" placeholder="请选择去向调查">
|
<el-select clearable v-model="queryParams.surveyId" placeholder="请选择去向调查">
|
||||||
<el-option v-for="item in surveyList" :key="item.surveyId" :value="item.surveyName"
|
<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>
|
||||||
|
|||||||
384
src/views/survey/return/xw.vue
Normal file
384
src/views/survey/return/xw.vue
Normal file
@@ -0,0 +1,384 @@
|
|||||||
|
<template>
|
||||||
|
<div class="app-container">
|
||||||
|
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch"
|
||||||
|
label-width="40px">
|
||||||
|
<el-form-item label="主题" prop="surveyId">
|
||||||
|
<el-select clearable v-model="queryParams.surveyId" placeholder="请选择去向调查">
|
||||||
|
<el-option v-for="item in surveyList" :key="item.surveyId" :value="item.surveyId"
|
||||||
|
:label="item.surveyName" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="学号" prop="stuNo">
|
||||||
|
<el-input v-model="queryParams.stuNo" placeholder="请输入学号" clearable @keyup.enter.native="handleQuery" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="姓名" prop="name">
|
||||||
|
<el-input v-model="queryParams.name" placeholder="请输入姓名" clearable @keyup.enter.native="handleQuery" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="班级" prop="className">
|
||||||
|
<el-input v-model="queryParams.className" placeholder="请输入班级" clearable
|
||||||
|
@keyup.enter.native="handleQuery" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<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 type="warning" plain icon="el-icon-download" size="mini"
|
||||||
|
@click="handleExport">导出学生填写记录(可以先搜索再导出)</el-button>
|
||||||
|
<el-button type="warning" plain icon="el-icon-download" size="mini"
|
||||||
|
@click="exportXwReturnRes">导出学生假期返校结果</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<el-table v-loading="loading" :data="itineraryList">
|
||||||
|
<el-table-column label="#" align="center" prop="returnSchoolId" />
|
||||||
|
<el-table-column label="主题" align="center" prop="surveyName" width="120" />
|
||||||
|
<el-table-column label="学号" align="center" prop="stuNo" width="120" />
|
||||||
|
<el-table-column label="姓名" align="center" prop="name" />
|
||||||
|
<el-table-column label="班级" align="center" prop="className" width="300" />
|
||||||
|
<el-table-column label="联系电话" align="center" prop="phone" width="140" />
|
||||||
|
<el-table-column label="是否离校" align="center">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
{{ scope.row.isLeave == "1" ? "是" : "否" }}
|
||||||
|
<div v-if="scope.row.isLeave == 1">{{ scope.row.isLeave == "1" && scope.row.isHome == "是" ? "已到家" :
|
||||||
|
"未到家" }}</div>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="是否到校" prop="reachSchoolStatus" align="center" />
|
||||||
|
<el-table-column label="离校审核状态" align="center" prop="configType">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<dict-tag :options="dict.type.sur_status" :value="scope.row.leaveStatus" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="到校审核状态" align="center" prop="configType">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<dict-tag :options="dict.type.sur_status" :value="scope.row.status" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-button size="mini" type="text" icon="el-icon-view"
|
||||||
|
@click="auditVClick(scope.row)">查看</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
|
||||||
|
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum"
|
||||||
|
:limit.sync="queryParams.pageSize" @pagination="getList" />
|
||||||
|
|
||||||
|
<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-item label="主题">
|
||||||
|
<el-input v-model="form.surveyName" readonly />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="班级">
|
||||||
|
<el-input v-model="form.className" readonly />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="学院">
|
||||||
|
<el-input v-model="form.moreDeptName" readonly />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="学号">
|
||||||
|
<el-input v-model="form.stuNo" readonly />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="姓名">
|
||||||
|
<el-input v-model="form.name" readonly />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="宿舍">
|
||||||
|
<el-input
|
||||||
|
:value="form.campusName + '--' + form.parkName + '--' + form.buildingName + '--' + form.roomNo"
|
||||||
|
readonly />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="联系电话">
|
||||||
|
<el-input v-model="form.phone" readonly />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="紧急联系人">
|
||||||
|
<el-input v-model="form.emergencyContact" readonly />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="紧急联系人电话">
|
||||||
|
<el-input v-model="form.emergencyContactPhone" readonly />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="家长姓名">
|
||||||
|
<el-input v-model="form.famName" readonly />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="家长电话">
|
||||||
|
<el-input v-model="form.famPhone" readonly />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="家长是否知晓">
|
||||||
|
<el-input v-model="form.famKnow" readonly />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="是否离校">
|
||||||
|
<el-input :value="form.isLeave == '1' ? '是' : '否'" readonly />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="去向地" v-if="form.isLeave == '1' && !isEmpty(form.willAddr)">
|
||||||
|
<el-input :value="form.willAddr" readonly />
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item label="预计离校时间" v-if="form.isLeave == '1'">
|
||||||
|
<el-input :value="form.willLeaveTime" readonly />
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item label="是否到家" v-if="form.isLeave == '1'">
|
||||||
|
<el-input :value="form.isHome == '1' ? '是' : '否'" readonly />
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item :label="form.isHome == '1' ? '到家定位经纬度' : '到目的地定位经纬度'"
|
||||||
|
v-if="form.isLeave == '1' && !isEmpty(form.homeGps)">
|
||||||
|
<el-input :value="form.homeGps" readonly />
|
||||||
|
<span style="color: red;font-size: 12px;">(*定位可能有误差)</span>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item :label="form.isHome == '1' ? '到家定位详细地址' : '到目的地定位详细地址'"
|
||||||
|
v-if="form.isLeave == '1' && !isEmpty(form.homeGpsAddr)">
|
||||||
|
<el-input :value="form.homeGpsAddr" readonly />
|
||||||
|
<span style="color: red;font-size: 12px;">(*定位可能有误差)</span>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item label="定位时间" v-if="!isEmpty(form.homeGpsTime)">
|
||||||
|
<el-input :value="form.homeGpsTime" readonly />
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item label="预计留校时间" v-if="form.isLeave == '0'">
|
||||||
|
<el-input :value="form.willStayTime" readonly />
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item label="留校事由" v-if="form.isLeave == '0'">
|
||||||
|
<el-input type="textarea" :autosize="{ minRows: 6, maxRows: 10 }" :value="form.stayReason"
|
||||||
|
readonly />
|
||||||
|
</el-form-item>
|
||||||
|
<hr />
|
||||||
|
<el-form-item label="计划返校时间">
|
||||||
|
<el-input v-model="form.scheduledReturnTime" readonly />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="家长姓名">
|
||||||
|
<el-input v-model="form.parentName" readonly />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="家长电话">
|
||||||
|
<el-input v-model="form.parentPhone" readonly />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="家长是否知晓">
|
||||||
|
<el-input v-model="form.know" readonly />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item v-if="!isEmpty(form.reachSchoolStatus)" label="是否到校">
|
||||||
|
<el-input v-model="form.reachSchoolStatus" readonly />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item v-if="form.reachSchoolStatus == '是'" label="到校时间">
|
||||||
|
<el-input v-model="form.attendSchoolTime" readonly />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item v-if="form.reachSchoolStatus == '否'" label="未返校原因分类">
|
||||||
|
<el-input v-model="form.absentSchoolType" readonly />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item v-if="form.reachSchoolStatus == '否'" label="未返校详细原因">
|
||||||
|
<el-input readonly type="textarea" :autosize="{ minRows: 6, maxRows: 10 }"
|
||||||
|
v-model="form.absentSchoolRemark" />
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
</el-form>
|
||||||
|
</el-dialog>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { isEmpty, fullLoading } from "@/api/helpFunc";
|
||||||
|
import { listXw as listView, updateStuHomeGpsAddr } from "@/api/survey/itinerary";
|
||||||
|
import { listAllSurvey } from "@/api/survey/survey";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: "Itinerary",
|
||||||
|
dicts: ['sur_status'],
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
isEmpty,
|
||||||
|
// 遮罩层
|
||||||
|
loading: true,
|
||||||
|
// 选中数组
|
||||||
|
ids: [],
|
||||||
|
// 非单个禁用
|
||||||
|
single: true,
|
||||||
|
// 非多个禁用
|
||||||
|
multiple: true,
|
||||||
|
// 显示搜索条件
|
||||||
|
showSearch: true,
|
||||||
|
// 总条数
|
||||||
|
total: 0,
|
||||||
|
// 学生假期返校表格数据
|
||||||
|
itineraryList: [],
|
||||||
|
// 弹出层标题
|
||||||
|
title: "",
|
||||||
|
// 是否显示弹出层
|
||||||
|
open: false,
|
||||||
|
// 查询参数
|
||||||
|
queryParams: {
|
||||||
|
pageNum: 1,
|
||||||
|
pageSize: 10,
|
||||||
|
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,
|
||||||
|
surveyName: null,
|
||||||
|
className: null,
|
||||||
|
},
|
||||||
|
dept_list: [],
|
||||||
|
deptForm: {
|
||||||
|
|
||||||
|
},
|
||||||
|
classVlue1: [],//班级搜索选择
|
||||||
|
ClassNameList: [],//班级名称
|
||||||
|
|
||||||
|
// 表单参数
|
||||||
|
form: {},
|
||||||
|
|
||||||
|
auditForm: {
|
||||||
|
|
||||||
|
}
|
||||||
|
};
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.getList();
|
||||||
|
this.listAllSurvey();
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
exportXwReturnRes() {
|
||||||
|
let sdata = { ...this.queryParams };
|
||||||
|
if (isEmpty(sdata.surveyId)) {
|
||||||
|
this.$message.warning("请选择去向调查后再导出!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
sdata.pageNum = null;
|
||||||
|
sdata.pageSize = null;
|
||||||
|
let surveyName = this.surveyList.find(item => item.surveyId == sdata.surveyId)?.surveyName || '';
|
||||||
|
this.download('survey/itinerary/exportXwReturnRes', {
|
||||||
|
...sdata
|
||||||
|
}, `${surveyName}-学生假期返校结果_${new Date().getTime()}.xlsx`);
|
||||||
|
|
||||||
|
},
|
||||||
|
handleExport() {
|
||||||
|
let sdata = { ...this.queryParams };
|
||||||
|
sdata.pageNum = null;
|
||||||
|
sdata.pageSize = null;
|
||||||
|
this.download('survey/itinerary/xwExport', {
|
||||||
|
...sdata
|
||||||
|
}, `学生假期离校返校填写记录_${new Date().getTime()}.xlsx`);
|
||||||
|
},
|
||||||
|
|
||||||
|
async listAllSurvey() {
|
||||||
|
let res = await listAllSurvey();
|
||||||
|
if (res.code == 200) {
|
||||||
|
this.surveyList = [...res.data];
|
||||||
|
}
|
||||||
|
},
|
||||||
|
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 = "定位失败";
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
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;
|
||||||
|
},
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.lookForm {
|
||||||
|
.el-form-item {
|
||||||
|
margin-bottom: 5px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
Reference in New Issue
Block a user