Merge branch 'main' of http://47.112.118.149:10082/xgxt_sd/zhxg_pc
This commit is contained in:
@@ -129,7 +129,8 @@
|
||||
<el-tab-pane label="预计离校" name="second">
|
||||
数据更新时间:{{ new Date().toLocaleString() }}<el-button @click="exportWillLeave">导出</el-button>
|
||||
<el-table id="willLeaveTable" v-if="lookLeaveV" :border="true" :data="willLeaveList"
|
||||
:span-method="objectSpanMethod1">
|
||||
:span-method="objectSpanMethod1" :show-summary="true" :summary-method="getSummaries"
|
||||
sum-text="总计">
|
||||
<el-table-column label="学院" align="center" prop="dept_name" width="180" />
|
||||
<el-table-column label="学生数" align="center" prop="stu_num" />
|
||||
<el-table-column label="详细学院" align="center" prop="more_dept_name" width="180" />
|
||||
@@ -484,6 +485,43 @@ export default {
|
||||
}
|
||||
}
|
||||
},
|
||||
getSummaries(param) {
|
||||
const { columns, data } = param;
|
||||
const sums = [];
|
||||
|
||||
// 过滤掉已有的总计行(合计、里建、长堽)
|
||||
const filteredData = data.filter(item =>
|
||||
item.dept_name !== '合计' &&
|
||||
item.dept_name !== '里建' &&
|
||||
item.dept_name !== '长堽'
|
||||
);
|
||||
|
||||
columns.forEach((column, index) => {
|
||||
if (index === 0) {
|
||||
sums[index] = '总计';
|
||||
return;
|
||||
}
|
||||
if (index === 2) {
|
||||
sums[index] = '';
|
||||
return;
|
||||
}
|
||||
|
||||
const values = filteredData.map(item => Number(item[column.property]));
|
||||
if (!values.every(value => isNaN(value))) {
|
||||
sums[index] = values.reduce((prev, curr) => {
|
||||
const value = Number(curr);
|
||||
if (!isNaN(value)) {
|
||||
return prev + curr;
|
||||
} else {
|
||||
return prev;
|
||||
}
|
||||
}, 0);
|
||||
} else {
|
||||
sums[index] = '';
|
||||
}
|
||||
});
|
||||
return sums;
|
||||
},
|
||||
async listReturnRes1() {
|
||||
this.returnFields = [];
|
||||
this.returnLoading = true;
|
||||
|
||||
@@ -29,6 +29,10 @@
|
||||
<el-button type="success" icon="el-icon-edit" size="mini" :disabled="multiple" plain
|
||||
@click="manyAudit">批量审核通过</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="danger" icon="el-icon-close" size="mini" :disabled="multiple" plain
|
||||
@click="manyReject">批量驳回</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="primary" icon="el-icon-view" size="mini" plain @click="lookVClick">查看离校填写情况</el-button>
|
||||
</el-col>
|
||||
@@ -74,6 +78,7 @@
|
||||
<el-option label="通过" value="2"></el-option>
|
||||
<el-option label="打回" value="10"></el-option>
|
||||
</el-select>
|
||||
<el-button @click="saveEdit" type="primary">编辑保存</el-button>
|
||||
<el-button @click="doAudit" type="success">审核</el-button>
|
||||
</el-form-item>
|
||||
<el-form-item label="主题">
|
||||
@@ -97,42 +102,69 @@
|
||||
readonly />
|
||||
</el-form-item>
|
||||
<el-form-item label="联系电话">
|
||||
<el-input v-model="form.phone" readonly />
|
||||
<el-input v-model="form.phone" />
|
||||
</el-form-item>
|
||||
<el-form-item label="紧急联系人">
|
||||
<el-input v-model="form.emergencyContact" readonly />
|
||||
<el-input v-model="form.emergencyContact" />
|
||||
</el-form-item>
|
||||
<el-form-item label="紧急联系人电话">
|
||||
<el-input v-model="form.emergencyContactPhone" readonly />
|
||||
<el-input v-model="form.emergencyContactPhone" />
|
||||
</el-form-item>
|
||||
<el-form-item label="家长姓名">
|
||||
<el-input v-model="form.famName" readonly />
|
||||
<el-input v-model="form.famName" />
|
||||
</el-form-item>
|
||||
<el-form-item label="家长电话">
|
||||
<el-input v-model="form.famPhone" readonly />
|
||||
<el-input v-model="form.famPhone" />
|
||||
</el-form-item>
|
||||
<el-form-item label="家长是否知晓">
|
||||
<el-input v-model="form.famKnow" readonly />
|
||||
<el-select v-model="form.famKnow" placeholder="请选择家长是否知晓">
|
||||
<el-option label="是" value="是" />
|
||||
<el-option label="否" value="否" />
|
||||
</el-select>
|
||||
</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'">
|
||||
<el-input :value="form.willLeaveTime" readonly />
|
||||
<el-date-picker
|
||||
v-model="form.willLeaveTime"
|
||||
type="datetime"
|
||||
placeholder="选择预计离校时间"
|
||||
format="yyyy-MM-dd HH:mm:ss"
|
||||
value-format="yyyy-MM-dd HH:mm:ss"
|
||||
style="width: 100%;">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="去向地" v-if="form.isLeave == '1' && !isEmpty(form.willAddr)">
|
||||
<el-input :value="form.willAddr" readonly />
|
||||
<el-form-item label="去向地" v-if="form.isLeave == '1'">
|
||||
<el-input v-model="form.willAddr" placeholder="请输入去向地" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="预计返校时间" v-if="form.isLeave == '1'">
|
||||
<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%;">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="预计留校时间" v-if="form.isLeave == '0'">
|
||||
<el-input :value="form.willStayTime" readonly />
|
||||
<el-date-picker
|
||||
v-model="form.willStayTime"
|
||||
type="datetime"
|
||||
placeholder="选择预计留校时间"
|
||||
format="yyyy-MM-dd HH:mm:ss"
|
||||
value-format="yyyy-MM-dd HH:mm:ss"
|
||||
style="width: 100%;">
|
||||
</el-date-picker>
|
||||
</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-input type="textarea" :autosize="{ minRows: 6, maxRows: 10 }" v-model="form.stayReason" />
|
||||
</el-form-item>
|
||||
|
||||
</el-form>
|
||||
@@ -155,7 +187,14 @@
|
||||
<el-input v-model="lookParams.name" placeholder="请输入姓名" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="班级" prop="className">
|
||||
<el-input v-model="queryParams.className" placeholder="请输入班级" clearable />
|
||||
<el-input v-model="lookParams.className" placeholder="请输入班级" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="是否填写" prop="isFilled">
|
||||
<el-select v-model="lookParams.isFilled" placeholder="请选择是否填写" clearable>
|
||||
<el-option label="全部" :value="null" />
|
||||
<el-option label="已填写" :value="1" />
|
||||
<el-option label="未填写" :value="0" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="lookQuery">搜索</el-button>
|
||||
@@ -192,7 +231,8 @@
|
||||
</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 id="willLeaveTable" v-if="willV" :border="true" :data="willList"
|
||||
:show-summary="true" :summary-method="getSummaries" sum-text="总计">
|
||||
<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" />
|
||||
@@ -222,12 +262,14 @@
|
||||
<FdyAll v-if="lookWillLeaveV" />
|
||||
</el-dialog>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { isEmpty, fullLoading } from "@/api/helpFunc";
|
||||
import { listFdy as listView, leaveAudit, manyLeaveAudit, listFdyStuLeave, sendFdyStuLeaveMsg, countFdyClassWillLeave } from "@/api/survey/itinerary";
|
||||
import { listFdy as listView, leaveAudit, manyLeaveAudit, manyLeaveReject, listFdyStuLeave, sendFdyStuLeaveMsg, countFdyClassWillLeave, updateItinerary } from "@/api/survey/itinerary";
|
||||
import { listAllSurvey } from "@/api/survey/survey";
|
||||
import XLSX from 'xlsx';
|
||||
|
||||
@@ -306,6 +348,8 @@ export default {
|
||||
lookParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
className: null,
|
||||
isFilled: null,
|
||||
},
|
||||
lookTotal: 0,
|
||||
lookList: [],
|
||||
@@ -404,6 +448,30 @@ export default {
|
||||
this.willList = [...data];
|
||||
}
|
||||
},
|
||||
getSummaries(param) {
|
||||
const { columns, data } = param;
|
||||
const sums = [];
|
||||
columns.forEach((column, index) => {
|
||||
if (index === 0) {
|
||||
sums[index] = '总计';
|
||||
return;
|
||||
}
|
||||
const values = data.map(item => Number(item[column.property]));
|
||||
if (!values.every(value => isNaN(value))) {
|
||||
sums[index] = values.reduce((prev, curr) => {
|
||||
const value = Number(curr);
|
||||
if (!isNaN(value)) {
|
||||
return prev + curr;
|
||||
} else {
|
||||
return prev;
|
||||
}
|
||||
}, 0);
|
||||
} else {
|
||||
sums[index] = '';
|
||||
}
|
||||
});
|
||||
return sums;
|
||||
},
|
||||
|
||||
async sendMsg() {
|
||||
let sdata = { ...this.lookParams };
|
||||
@@ -423,6 +491,8 @@ export default {
|
||||
this.$message.info("请选择去向调查");
|
||||
return;
|
||||
}
|
||||
// 重置页码为1,避免fromIndex > toIndex错误
|
||||
this.lookParams.pageNum = 1;
|
||||
let loading = fullLoading(this);
|
||||
let res = await listFdyStuLeave(this.lookParams);
|
||||
loading.close();
|
||||
@@ -460,6 +530,34 @@ export default {
|
||||
}
|
||||
});
|
||||
},
|
||||
// 批量驳回
|
||||
manyReject() {
|
||||
let sdata = [...this.ids];
|
||||
if (isEmpty(sdata)) {
|
||||
this.$message.info("请选择要驳回的记录");
|
||||
return;
|
||||
}
|
||||
this.$confirm('是否批量驳回选中的记录?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(async () => {
|
||||
let loading = fullLoading(this);
|
||||
try {
|
||||
let res = await manyLeaveReject(sdata);
|
||||
loading.close();
|
||||
if (res.code == 200) {
|
||||
this.$message.success(res.msg);
|
||||
this.getList();
|
||||
} else {
|
||||
this.$message.error(res.msg || '驳回失败');
|
||||
}
|
||||
} catch (error) {
|
||||
loading.close();
|
||||
this.$message.error('驳回失败:' + error.message);
|
||||
}
|
||||
});
|
||||
},
|
||||
async doAudit() {
|
||||
let sdata = { ...this.auditForm };
|
||||
console.log(sdata);
|
||||
@@ -477,6 +575,42 @@ export default {
|
||||
this.getList();
|
||||
}
|
||||
},
|
||||
async saveEdit() {
|
||||
try {
|
||||
let loading = fullLoading(this);
|
||||
|
||||
// 准备要更新的数据
|
||||
const updateData = {
|
||||
returnSchoolId: this.form.returnSchoolId,
|
||||
phone: this.form.phone,
|
||||
emergencyContact: this.form.emergencyContact,
|
||||
emergencyContactPhone: this.form.emergencyContactPhone,
|
||||
famName: this.form.famName,
|
||||
famPhone: this.form.famPhone,
|
||||
famKnow: this.form.famKnow,
|
||||
willLeaveTime: this.form.willLeaveTime,
|
||||
willAddr: this.form.willAddr,
|
||||
scheduledReturnTime: this.form.scheduledReturnTime,
|
||||
willStayTime: this.form.willStayTime,
|
||||
stayReason: this.form.stayReason
|
||||
};
|
||||
|
||||
// 调用更新API
|
||||
let res = await updateItinerary(updateData);
|
||||
loading.close();
|
||||
|
||||
if (res.code == 200) {
|
||||
this.$message.success('编辑保存成功!');
|
||||
// 刷新列表数据
|
||||
this.getList();
|
||||
} else {
|
||||
this.$message.error(res.msg || '编辑保存失败');
|
||||
}
|
||||
} catch (error) {
|
||||
loading.close();
|
||||
this.$message.error('编辑保存失败:' + error.message);
|
||||
}
|
||||
},
|
||||
|
||||
getList() {
|
||||
this.loading = true;
|
||||
|
||||
Reference in New Issue
Block a user