Commit 96a21780 by peijy

8.8 老师-后勤报修

parent 5d3a4cb4
......@@ -39,6 +39,7 @@ declare module '@vue/runtime-core' {
VanPullRefresh: typeof import('vant/es')['PullRefresh']
VanRadio: typeof import('vant/es')['Radio']
VanRadioGroup: typeof import('vant/es')['RadioGroup']
VanRate: typeof import('vant/es')['Rate']
VanSearch: typeof import('vant/es')['Search']
VanSidebar: typeof import('vant/es')['Sidebar']
VanSidebarItem: typeof import('vant/es')['SidebarItem']
......
......@@ -199,12 +199,54 @@ const routes = [
name: "TeacherList",
component: () => import("../views/parent/TeacherList.vue"),
},
/* 学生选课 家长端 */
{
path: "/studentCourseSelection",
name: "studentCourseSelection",
component: () => import("../views/parent/studentCourseSelection/index"),
},
/* 学生选课 家长端 学科成绩 */
{
path: "/subjectAchievement",
name: "subjectAchievement",
component: () => import("../views/parent/studentCourseSelection/subjectAchievement"),
},
/* 学生选课 家长端 成绩查看 */
{
path: "/totalScoreView",
name: "totalScoreView",
component: () => import("../views/parent/studentCourseSelection/totalScoreView"),
},
/* 教师列表页 教师端的 可以查看所有教师 */
{
path: "/teacherListTeac",
name: "TeacherListTeac",
component: () => import("../views/teacher/TeacherListTeac.vue"),
},
/* 后勤报修 教师端的 */
{
path: "/logisticsRepair",
name: "logisticsRepair",
component: () => import("../views/teacher/logisticsRepair/index"),
},
/* 后勤报修新增 教师端的 */
{
path: "/addRepair",
name: "addRepair",
component: () => import("../views/teacher/logisticsRepair/addRepair"),
},
/* 后勤报修查看 教师端的 */
{
path: "/checkRepair",
name: "checkRepair",
component: () => import("../views/teacher/logisticsRepair/checkRepair"),
},
/* 后勤报修反馈 教师端的 */
{
path: "/feedbackRepair",
name: "feedbackRepair",
component: () => import("../views/teacher/logisticsRepair/feedbackRepair"),
},
// /* 课程表 */
// {
// path: "/gradeSchedule",
......
/**
* 教师报修
* */
import axios from "../utils/axios";
//个人报修列表
export function getRepairList() {
return axios.get('/wx/repairs/getList');
}
//新增报修信息
export function addRepairInfo(data) {
return axios.post('/wx/repairs/add/' ,{
...data
} );
}
//获取报修单号
export function getNumber(data) {
return axios.get('/wx/repairs/getNumber');
}
//修改报修信息
export function editRepairInfo(data) {
return axios.post('/wx/repairs/edit/' ,{
...data
} );
}
//删除报修信息
export function removeRepairInfo(id) {
return axios.post('/wx/repairs/remove/' + id );
}
//反馈结果
export function getFeedResult(data) {
return axios.post('/wx/repairs/edit/' ,{
...data
} );
}
//查询报修信息详情
export function getRepairInfo(id) {
return axios.get('/wx/repairs/' + id );
}
//上传故障图片
export function uploadPic(query) {
return axios({
url: "/wx/userInfo/editFailure",
method: "PUT",
data: query,
});
}
/**
* 家长选课
* */
import axios from "../utils/axios";
//查询个人成绩信息
export function getPersonGrade(id) {
return axios.get('/wx/course/achievement/' + id );
}
//根据学生3门选课查询
export function getSelectGrade(data) {
return axios.post('/wx/course/studenttypeview' ,{
...data
} );
}
//保存选课信息
export function saveSelectInfo(data) {
return axios.post('/wx/course/savestudentcourse' ,{
...data
} );
}
......@@ -141,6 +141,7 @@ export default {
name: "Login",
setup() {
//双向绑定对象
const state = reactive({
message: "请填写学生身份证号",
// studentName: "伊一", //学生姓名
......
<template>
<div class="main">
<div>
<van-nav-bar
title="教师信息"
left-text="返回"
......
<template>
<van-nav-bar
title="课程选择"
left-text="返回"
left-arrow
@click-left="goback"
/>
<div>
<div class="main">
<div style="margin: 16px;float: right">
<van-button style="height: 30px;width: 100px;" @click="checkGrade" round type="primary" native-type="submit">
成绩查看
</van-button>
</div>
<van-form label-align="right" label-width="70px" ref="checkForm">
<van-field
readonly
label="姓名:"
v-model="state.studentName"
rows="1"
autosize
type="textarea"
/>
<van-field
readonly
label="选课日期:"
v-model="state.selectionTime"
rows="1"
autosize
type="textarea"
/>
<van-field name="radio1" label="选课方式">
<template #input>
<van-radio-group v-model="checkedType" direction="horizontal">
<van-radio icon-size="18px" name="1">夏季</van-radio>
<van-radio icon-size="18px" name="2">春季</van-radio>
<van-radio icon-size="18px" name="3">艺体</van-radio>
</van-radio-group>
</template>
</van-field>
<!-- 夏季 -->
<van-field v-if="checkedType == 1" name="radio2" label=" ">
<template #input>
<van-radio-group v-model="checkedSub" direction="horizontal">
<van-radio icon-size="18px" name="1" shape="square" @click="materialization">物政化</van-radio>
<van-radio icon-size="18px" name="2" shape="square" @click="monomasa">物政生</van-radio>
<van-radio icon-size="18px" name="3" shape="square" @click="matsuki">物政地</van-radio>
<van-radio icon-size="18px" name="4" shape="square" @click="physicalChemistry">物理化</van-radio>
</van-radio-group>
</template>
</van-field>
<!-- 春季 -->
<div style="margin-left: 60px;margin-right: 50px" v-if="checkedType == 2">
<!-- 第一志愿 -->
<van-field
v-model="state.firstChoice"
is-link
readonly
name="picker"
label="第一志愿"
placeholder="请选择"
@click="showFirst"
/>
<van-popup v-model:show="showPickerFirst" position="bottom">
<van-picker
:columns="firstDropDown"
@confirm="onConfirmFirst"
@cancel="showPickerFirst = false"
/>
</van-popup>
<!-- 第二志愿 -->
<van-field
v-model="state.secondChoice"
is-link
readonly
name="picker"
label="第二志愿"
placeholder="请选择"
@click="showSecond"
/>
<van-popup v-model:show="showPickerSecond" position="bottom">
<van-picker
:columns="secondDropDown"
@confirm="onConfirmSecond"
@cancel="showPickerSecond = false"
/>
</van-popup>
<!-- 第三志愿 -->
<van-field
v-model="state.thirdChoice"
is-link
readonly
name="picker"
label="第三志愿"
placeholder="请选择"
@click="showThird"
/>
<van-popup v-model:show="showPickerThird" position="bottom">
<van-picker
:columns="thirdDropDown"
@confirm="onConfirmThird"
@cancel="showPickerThird = false"
/>
</van-popup>
<!-- 第四志愿 -->
<van-field
v-model="state.forthChoice"
is-link
readonly
name="picker"
label="第四志愿"
placeholder="请选择"
@click="showForth"
/>
<van-popup v-model:show="showPickerForth" position="bottom">
<van-picker
:columns="forthDropDown"
@confirm="onConfirmForth"
@cancel="showPickerForth = false"
/>
</van-popup>
<!-- 第五志愿 -->
<van-field
v-model="state.fifthChoice"
is-link
readonly
name="picker"
label="第五志愿"
placeholder="请选择"
@click="showFifth"
/>
<van-popup v-model:show="showPickerfifth" position="bottom">
<van-picker
:columns="fifthDropDown"
@confirm="onConfirmFifth"
@cancel="showPickerfifth = false"
/>
</van-popup>
<!-- 第六志愿 -->
<van-field
v-model="state.sixChoice"
is-link
readonly
name="picker"
label="第六志愿"
placeholder="请选择"
@click="showSix"
/>
<van-popup v-model:show="showPickerSix" position="bottom">
<van-picker
:columns="sixDropDown"
@confirm="onConfirmSix"
@cancel="showPickerSix = false"
/>
</van-popup>
</div>
<!-- 艺体 -->
<div v-if="checkedType == 3">
<van-field class="art" name="radio2" label=" ">
<template #input>
<van-radio-group v-model="checkedArt" direction="horizontal">
<van-radio icon-size="18px" name="1" shape="square">音乐</van-radio>
<van-radio icon-size="18px" name="2" shape="square">美术</van-radio>
<van-radio icon-size="18px" name="3" shape="square">田径</van-radio>
<van-radio icon-size="18px" name="4" shape="square">舞蹈</van-radio>
</van-radio-group>
</template>
</van-field>
<van-field v-if="checkedType == 3" name="radio2" label=" ">
<template #input>
<van-radio-group v-model="checkedArtSub" direction="horizontal">
<van-radio icon-size="18px" name="1" shape="square">物政化</van-radio>
<van-radio icon-size="18px" name="2" shape="square">物政生</van-radio>
<van-radio icon-size="18px" name="3" shape="square">物政地</van-radio>
<van-radio icon-size="18px" name="4" shape="square">物理化</van-radio>
</van-radio-group>
</template>
</van-field>
</div>
<div style="margin: 16px;">
<van-button style="width: 120px;height: 40px" @click="onSubmit" round type="primary" native-type="submit">
确 定
</van-button>
</div>
</van-form>
<!-- <div style="text-align: left;margin-left: 15px">-->
<!-- <p>填写说明:</p>-->
<!-- <div style="margin-left: 20px">-->
<!-- <p>选择夏考的时候自动带出夏考的课程,20种情况选一个</p>-->
<!-- <p>选择春考的时候自动带出21个专业,多选只能选6个</p>-->
<!-- <p>选课结束之后就是查看页面,只查看结果</p>-->
<!-- <p>艺体先选艺体科目然后再选文化课科目</p>-->
<!-- </div>-->
<!-- </div>-->
</div>
</div>
</template>
<script setup>
import {onMounted, ref, onUpdated, reactive, toRefs} from "vue";
import {Dialog, Toast} from "vant";
import {useRouter} from "vue-router";
import {useStore} from "vuex";
import {
getPersonGrade, //查询个人成绩信息
getSelectGrade,//根据学生3门选课查询
saveSelectInfo,//保存选课信息
} from "@/service/studentCourseSelection";
const router = useRouter();
const store = useStore();
console.log('store',store)
const state = reactive({
studentName: store.state.userInfo.studentName, //学生姓名
selectionTime: "", //选课日期
firstChoice:"", //第一志愿
secondChoice:"",//第二志愿
thirdChoice:"", //第三志愿
forthChoice:"", //第四志愿
fifthChoice:"", //第五志愿
sixChoice:"", //第六志愿
});
//成绩查看按钮
const checkGrade = () => {
router.push({
path: "/totalScoreView",
query:{
id:store.state.userInfo.studentId
}
})
};
//物政化点击事件
const materialization = () => {
router.push({
path: "/subjectAchievement",
query: {
name:'物政化'
},
})
};
//物政生点击事件
const monomasa = () => {
router.push({
path: "/subjectAchievement",
query: {
name:'物政生'
},
})
};
//物政地点击事件
const matsuki = () => {
router.push({
path: "/subjectAchievement",
query: {
name:'物政地'
},
})
};
//物理化点击事件
const physicalChemistry = () => {
router.push({
path: "/subjectAchievement",
query: {
name:'物理化'
},
})
};
// 提交表单
const checkForm = ref(null);
// 加载效果
const loading = ref(false);
//单选框1 夏季/春季/艺考
const checkedType = ref('1');
//夏季-物政化等
const checkedSub = ref('1');
//艺体-音乐/美术/田径/舞蹈
const checkedArt = ref('1');
//艺体-物政化等
const checkedArtSub = ref('1');
// const result = ref('');
//春季志愿下拉框全数据
const columns = ['杭州', '宁波', '温州', '嘉兴', '湖州', '山东','上海', '北京'];
//六个下拉框已经选中的数据
const selectArr = ref([]);
//第一志愿下拉框显示的数据
const firstDropDown = ref([]);
//第一志愿下拉框是否显示
const showPickerFirst = ref(false);
//第一志愿点击下拉框事件
const showFirst = () => {
// firstDropDown.value = columns.filter(item => {
// return item != state.secondChoice && item != state.thirdChoice && item != state.forthChoice
// })
//把其他下拉框已选择的过滤出去
firstDropDown.value = columns.filter(item => {
if(!selectArr.value.includes(item)){
return item
}
})
console.log('state.secondChoice',state.secondChoice)
console.log('columns',columns)
console.log('firstDropDown.value',firstDropDown.value)
showPickerFirst.value = true;
};
//第一志愿选择确认按钮事件
const onConfirmFirst = (value) => {
state.firstChoice = value;
showPickerFirst.value = false;
selectArr.value[0] = value
console.log('selectArr.value',selectArr.value)
};
//第二志愿下拉框显示的数据
const secondDropDown = ref([])
//第二志愿下拉框是否显示
const showPickerSecond = ref(false);
//第二志愿点击下拉框事件
const showSecond = () => {
// secondDropDown.value = columns.filter(item => {
// return item != state.firstChoice && item != state.thirdChoice && item != state.forthChoice
// })
//把其他下拉框已选择的过滤出去
secondDropDown.value = columns.filter(item => {
if(!selectArr.value.includes(item)){
return item
}
})
showPickerSecond.value = true;
};
//第二志愿选择确认按钮事件
const onConfirmSecond = (value) => {
state.secondChoice = value;
showPickerSecond.value = false;
selectArr.value[1] = value
console.log('selectArr.value',selectArr.value)
};
//第三志愿下拉框显示的数据
const thirdDropDown = ref([])
//第三志愿下拉框是否显示
const showPickerThird = ref(false);
//第三志愿点击下拉框事件
const showThird = () => {
// thirdDropDown.value = columns.filter(item => {
// return item != state.firstChoice && item != state.secondChoice && item != state.forthChoice
// })
//把其他下拉框已选择的过滤出去
thirdDropDown.value = columns.filter(item => {
if(!selectArr.value.includes(item)){
return item
}
})
showPickerThird.value = true;
};
//第三志愿选择确认按钮事件
const onConfirmThird = (value) => {
state.thirdChoice = value;
showPickerThird.value = false;
selectArr.value[2] = value
console.log('selectArr.value',selectArr.value)
};
//第四志愿下拉框显示的数据
const forthDropDown = ref([])
//第四志愿下拉框是否显示
const showPickerForth = ref(false);
//第四志愿点击下拉框事件
const showForth = () => {
// forthDropDown.value = columns.filter(item => {
// return item != state.firstChoice && item != state.secondChoice && item != state.thirdChoice
// })
// 把其他下拉框已选择的过滤出去
forthDropDown.value = columns.filter(item => {
if(!selectArr.value.includes(item)){
return item
}
})
showPickerForth.value = true;
};
//第四志愿选择确认按钮事件
const onConfirmForth = (value) => {
state.forthChoice = value;
showPickerForth.value = false;
selectArr.value[3] = value
console.log('selectArr.value',selectArr.value)
};
//第五志愿下拉框显示的数据
const fifthDropDown = ref([])
//第五志愿下拉框是否显示
const showPickerfifth = ref(false);
//第五志愿点击下拉框事件
const showFifth = () => {
// forthDropDown.value = columns.filter(item => {
// return item != state.firstChoice && item != state.secondChoice && item != state.thirdChoice
// })
//把其他下拉框已选择的过滤出去
fifthDropDown.value = columns.filter(item => {
if(!selectArr.value.includes(item)){
return item
}
})
showPickerfifth.value = true;
};
//第五志愿选择确认按钮事件
const onConfirmFifth = (value) => {
state.fifthChoice = value;
showPickerfifth.value = false;
selectArr.value[4] = value
console.log('selectArr.value',selectArr.value)
};
//第六志愿下拉框显示的数据
const sixDropDown = ref([])
const showPickerSix = ref(false);
//第六志愿点击下拉框是否显示
const showSix = () => {
// forthDropDown.value = columns.filter(item => {
// return item != state.firstChoice && item != state.secondChoice && item != state.thirdChoice
// })
//把其他下拉框已选择的过滤出去
sixDropDown.value = columns.filter(item => {
if(!selectArr.value.includes(item)){
return item
}
})
showPickerSix.value = true;
};
//第六志愿选择确认按钮事件
const onConfirmSix = (value) => {
state.sixChoice = value;
showPickerSix.value = false;
selectArr.value[5] = value
console.log('selectArr.value',selectArr.value)
};
onMounted(async () => {
console.log("3- 组件挂在完毕执行 --- onMounted");
//获取路由跳转过来的参数
// console.log('router1',JSON.parse(router.currentRoute.value.query.item))
// console.log('router.currentRoute.value.query',router.currentRoute.value.query)
});
//确定提交按钮
const onSubmit = async () => {
// console.log(ryFk.value);
// let result = await postfz(detail.id, { ryFk: ryFk.value });
// Toast("反馈成功");
// router.back();
};
const goback = (g) => {
router.back();
};
</script>
<style scoped lang="less">
/** 最上层banner条 */
.home {
height: 15rem;
}
.bg_color {
background-color: rgb(230, 230, 230);
}
.m_top {
height: 40vw;
position: relative;
}
.main {
height: auto !important;
min-height: 80vh;
line-height: 20px;
//border-radius: 50px 50px 70px 70px;
// background-color: rgba(255, 199, 0, 100);
font-size: 14px;
text-align: center;
padding-bottom: 15vw;
background: #fff;
.main_search {
width: 98vw;
height: 15vw;
.main_search_1 {
width: 45vw;
height: 14vw;
display: inline-block;
vertical-align: top;
border: yellow 2px;
}
.main_search_2 {
width: 45vw;
height: 14vw;
display: inline-block;
vertical-align: top;
}
}
.main_list_one {
// margin-left: 5vw;
margin-top: 5vw;
width: 100vw;
height: 20vw;
line-height: 20px;
// border-radius: 6px;
background-color: rgb(255, 255, 255);
text-align: center;
// border: 1px solid rgba(9, 208, 178, 100);
.main_list_one_left_1 {
display: inline-block;
margin-top: 2vw;
width: 15vw;
height: 15vw;
border-radius: 50px;
// border: 1px solid rgba(187, 187, 187, 100);
vertical-align: top;
}
.main_list_one_left_2 {
display: inline-block;
padding-left: 5vw;
width: 70vw;
position: relative;
top: 2vw;
vertical-align: top;
.left_2_1 {
width: 75vw;
height: 22px;
color: rgba(28, 28, 28, 100);
font-size: 15px;
text-align: left;
font-family: Microsoft YaHei;
.left_2_1_1 {
display: inline-block;
width: 60%;
}
.left_2_1_2 {
display: inline-block;
width: 40%;
color: rgb(145, 141, 141);
text-align: left;
font-size: 10px;
font-family: Microsoft YaHei;
float: right;
}
}
.left_2_2 {
width: 60vw;
height: 22px;
color: rgb(145, 141, 141);
text-align: left;
font-size: 12px;
font-family: Microsoft YaHei;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
}
}
.main_one_btna {
height: auto;
position: relative;
top: 3vh;
line-height: 20px;
// border-radius: 0px 0px 26px 26px;
display: flex;
align-items: center;
justify-content: center;
text-align: center;
// padding-left: 10vw;
// padding-bottom: 10vw;
}
}
::v-deep .main .van-radio.van-radio--horizontal {
margin-bottom: 10px !important;
}
::v-deep .main .art .van-radio.van-radio--horizontal {
margin-right: 9px !important;
}
::v-deep .main .van-cell.van-field.van-field--label-right.art{
padding-bottom: 0 !important;
.van-cell__value.van-field__value{
border-bottom: 1px solid !important;
}
}
</style>
<!--学科成绩-->
<template>
<van-nav-bar
title="学科成绩"
left-text="返回"
left-arrow
@click-left="goback"
/>
<!-- 物政化一模-->
<div v-if="query == '物政化'"
class="c_main_list"
style="padding: 18px 12px 15px 17px"
>
<div style="text-align: center;font-size: 20px" class="title">一模</div>
<div class="totalScore">
<div>总成绩:<span>600</span></div>
<div>总成绩年纪排名:<span>5000</span></div>
</div>
<div class="subject">
<div>物理:<span>600</span></div>
<div>年纪排名:<span>5000</span></div>
</div>
<div class="subject">
<div>政治:<span>600</span></div>
<div>年纪排名:<span>5000</span></div>
</div>
<div class="subject">
<div>化学:<span>600</span></div>
<div>年纪排名:<span>5000</span></div>
</div>
</div>
<!-- 物政化二模-->
<div v-if="query == '物政化'"
class="c_main_list"
style="padding: 18px 12px 15px 17px"
>
<div style="text-align: center;font-size: 20px" class="title">二模</div>
<div class="totalScore">
<div>总成绩:<span>600</span></div>
<div>总成绩年纪排名:<span>5000</span></div>
</div>
<div class="subject">
<div>物理:<span>600</span></div>
<div>年纪排名:<span>5000</span></div>
</div>
<div class="subject">
<div>政治:<span>600</span></div>
<div>年纪排名:<span>5000</span></div>
</div>
<div class="subject">
<div>化学:<span>600</span></div>
<div>年纪排名:<span>5000</span></div>
</div>
</div>
<!-- 物政化三模-->
<div v-if="query == '物政化'"
class="c_main_list"
style="padding: 18px 12px 15px 17px"
>
<div style="text-align: center;font-size: 20px" class="title">三模</div>
<div class="totalScore">
<div>总成绩:<span>600</span></div>
<div>总成绩年纪排名:<span>5000</span></div>
</div>
<div class="subject">
<div>物理:<span>600</span></div>
<div>年纪排名:<span>5000</span></div>
</div>
<div class="subject">
<div>政治:<span>600</span></div>
<div>年纪排名:<span>5000</span></div>
</div>
<div class="subject">
<div>化学:<span>600</span></div>
<div>年纪排名:<span>5000</span></div>
</div>
</div>
<!-- 物政生一模-->
<div v-if="query == '物政生'"
class="c_main_list"
style="padding: 18px 12px 15px 17px"
>
<div style="text-align: center;font-size: 20px" class="title">一模</div>
<div class="totalScore">
<div>总成绩:<span>600</span></div>
<div>总成绩年纪排名:<span>5000</span></div>
</div>
<div class="subject">
<div>物理:<span>600</span></div>
<div>年纪排名:<span>5000</span></div>
</div>
<div class="subject">
<div>政治:<span>600</span></div>
<div>年纪排名:<span>5000</span></div>
</div>
<div class="subject">
<div>生物:<span>600</span></div>
<div>年纪排名:<span>5000</span></div>
</div>
</div>
<!-- 物政生二模-->
<div v-if="query == '物政生'"
class="c_main_list"
style="padding: 18px 12px 15px 17px"
>
<div style="text-align: center;font-size: 20px" class="title">二模</div>
<div class="totalScore">
<div>总成绩:<span>600</span></div>
<div>总成绩年纪排名:<span>5000</span></div>
</div>
<div class="subject">
<div>物理:<span>600</span></div>
<div>年纪排名:<span>5000</span></div>
</div>
<div class="subject">
<div>政治:<span>600</span></div>
<div>年纪排名:<span>5000</span></div>
</div>
<div class="subject">
<div>生物:<span>600</span></div>
<div>年纪排名:<span>5000</span></div>
</div>
</div>
<!-- 物政生三模-->
<div v-if="query == '物政生'"
class="c_main_list"
style="padding: 18px 12px 15px 17px"
>
<div style="text-align: center;font-size: 20px" class="title">三模</div>
<div class="totalScore">
<div>总成绩:<span>600</span></div>
<div>总成绩年纪排名:<span>5000</span></div>
</div>
<div class="subject">
<div>物理:<span>600</span></div>
<div>年纪排名:<span>5000</span></div>
</div>
<div class="subject">
<div>政治:<span>600</span></div>
<div>年纪排名:<span>5000</span></div>
</div>
<div class="subject">
<div>生物:<span>600</span></div>
<div>年纪排名:<span>5000</span></div>
</div>
</div>
<!-- 物政地一模-->
<div v-if="query == '物政地'"
class="c_main_list"
style="padding: 18px 12px 15px 17px"
>
<div style="text-align: center;font-size: 20px" class="title">一模</div>
<div class="totalScore">
<div>总成绩:<span>600</span></div>
<div>总成绩年纪排名:<span>5000</span></div>
</div>
<div class="subject">
<div>物理:<span>600</span></div>
<div>年纪排名:<span>5000</span></div>
</div>
<div class="subject">
<div>政治:<span>600</span></div>
<div>年纪排名:<span>5000</span></div>
</div>
<div class="subject">
<div>地理:<span>600</span></div>
<div>年纪排名:<span>5000</span></div>
</div>
</div>
<!-- 物政地二模-->
<div v-if="query == '物政地'"
class="c_main_list"
style="padding: 18px 12px 15px 17px"
>
<div style="text-align: center;font-size: 20px" class="title">二模</div>
<div class="totalScore">
<div>总成绩:<span>600</span></div>
<div>总成绩年纪排名:<span>5000</span></div>
</div>
<div class="subject">
<div>物理:<span>600</span></div>
<div>年纪排名:<span>5000</span></div>
</div>
<div class="subject">
<div>政治:<span>600</span></div>
<div>年纪排名:<span>5000</span></div>
</div>
<div class="subject">
<div>地理:<span>600</span></div>
<div>年纪排名:<span>5000</span></div>
</div>
</div>
<!-- 物政地三模-->
<div v-if="query == '物政地'"
class="c_main_list"
style="padding: 18px 12px 15px 17px"
>
<div style="text-align: center;font-size: 20px" class="title">三模</div>
<div class="totalScore">
<div>总成绩:<span>600</span></div>
<div>总成绩年纪排名:<span>5000</span></div>
</div>
<div class="subject">
<div>物理:<span>600</span></div>
<div>年纪排名:<span>5000</span></div>
</div>
<div class="subject">
<div>政治:<span>600</span></div>
<div>年纪排名:<span>5000</span></div>
</div>
<div class="subject">
<div>地理:<span>600</span></div>
<div>年纪排名:<span>5000</span></div>
</div>
</div>
<!-- 物理化一模-->
<div v-if="query == '物理化'"
class="c_main_list"
style="padding: 18px 12px 15px 17px"
>
<div style="text-align: center;font-size: 20px" class="title">一模</div>
<div class="totalScore">
<div>总成绩:<span>600</span></div>
<div>总成绩年纪排名:<span>5000</span></div>
</div>
<div class="subject">
<div>物理:<span>600</span></div>
<div>年纪排名:<span>5000</span></div>
</div>
<div class="subject">
<div>地理:<span>600</span></div>
<div>年纪排名:<span>5000</span></div>
</div>
<div class="subject">
<div>化学:<span>600</span></div>
<div>年纪排名:<span>5000</span></div>
</div>
</div>
<!-- 物政地二模-->
<div v-if="query == '物理化'"
class="c_main_list"
style="padding: 18px 12px 15px 17px"
>
<div style="text-align: center;font-size: 20px" class="title">二模</div>
<div class="totalScore">
<div>总成绩:<span>600</span></div>
<div>总成绩年纪排名:<span>5000</span></div>
</div>
<div class="subject">
<div>物理:<span>600</span></div>
<div>年纪排名:<span>5000</span></div>
</div>
<div class="subject">
<div>地理:<span>600</span></div>
<div>年纪排名:<span>5000</span></div>
</div>
<div class="subject">
<div>化学:<span>600</span></div>
<div>年纪排名:<span>5000</span></div>
</div>
</div>
<!-- 物政地三模-->
<div v-if="query == '物理化'"
class="c_main_list"
style="padding: 18px 12px 15px 17px"
>
<div style="text-align: center;font-size: 20px" class="title">三模</div>
<div class="totalScore">
<div>总成绩:<span>600</span></div>
<div>总成绩年纪排名:<span>5000</span></div>
</div>
<div class="subject">
<div>物理:<span>600</span></div>
<div>年纪排名:<span>5000</span></div>
</div>
<div class="subject">
<div>地理:<span>600</span></div>
<div>年纪排名:<span>5000</span></div>
</div>
<div class="subject">
<div>化学:<span>600</span></div>
<div>年纪排名:<span>5000</span></div>
</div>
</div>
</template>
<script setup>
import {onMounted, ref, onUpdated, reactive, toRefs} from "vue";
import {useRouter,useRoute} from "vue-router";
import {useStore} from "vuex";
const router = useRouter();
const route = useRoute();
const store = useStore();
const query = route.query.name;
const state = reactive({
});
onMounted( () => {
})
const goback = (g) => {
router.back();
};
</script>
<style lang="less" scoped>
.totalScore{
font-size: 14px;
display:flex;
justify-content: space-around;
margin: 20px 0 10px 0;
padding-bottom: 15px;
border-bottom:1px solid silver;
}
.subject{
font-size: 14px;
display:flex;
justify-content: space-around;
margin-bottom: 10px;
}
</style>
<!--成绩查看 totalScoreView-->
<template>
<van-nav-bar
title="成绩查看"
left-text="返回"
left-arrow
@click-left="goback"
/>
<!-- 一模-->
<div
class="c_main_list card"
:class=" collapsFirst ? 'isCollaps': ''"
>
<!--折叠-->
<div class="collaps" @click="isCollaps(1)" v-if="collapsFirst == false">展开</div>
<div class="collaps" @click="isCollaps(1)" v-else>折叠</div>
<div style="text-align: center;font-size: 20px" class="title">一模</div>
<div class="totalScore">
<div>总成绩:<span>600</span></div>
<div>总成绩年纪排名:<span>5000</span></div>
</div>
<div class="subject">
<div>语文:<span>600</span></div>
<div>年纪排名:<span>5000</span></div>
</div>
<div class="subject">
<div>数学:<span>600</span></div>
<div>年纪排名:<span>5000</span></div>
</div>
<div class="subject">
<div>英语:<span>600</span></div>
<div>年纪排名:<span>5000</span></div>
</div>
<div class="subject">
<div>历史:<span>600</span></div>
<div>年纪排名:<span>5000</span></div>
</div>
<div class="subject">
<div>地理:<span>600</span></div>
<div>年纪排名:<span>5000</span></div>
</div>
<div class="subject">
<div>生物:<span>600</span></div>
<div>年纪排名:<span>5000</span></div>
</div>
<div class="subject">
<div>物理:<span>600</span></div>
<div>年纪排名:<span>5000</span></div>
</div>
<div class="subject">
<div>化学:<span>600</span></div>
<div>年纪排名:<span>5000</span></div>
</div>
<div class="subject">
<div>政治:<span>600</span></div>
<div>年纪排名:<span>5000</span></div>
</div>
</div>
<!-- 二模-->
<div
class="c_main_list card"
:class=" collapsSecond ? 'isCollaps': ''"
>
<!--折叠-->
<div class="collaps" @click="isCollaps(2)" v-if="collapsSecond == false">展开</div>
<div class="collaps" @click="isCollaps(2)" v-else>折叠</div>
<div style="text-align: center;font-size: 20px" class="title">二模</div>
<div class="totalScore">
<div>总成绩:<span>600</span></div>
<div>总成绩年纪排名:<span>5000</span></div>
</div>
<div class="subject">
<div>语文:<span>600</span></div>
<div>年纪排名:<span>5000</span></div>
</div>
<div class="subject">
<div>数学:<span>600</span></div>
<div>年纪排名:<span>5000</span></div>
</div>
<div class="subject">
<div>英语:<span>600</span></div>
<div>年纪排名:<span>5000</span></div>
</div>
<div class="subject">
<div>历史:<span>600</span></div>
<div>年纪排名:<span>5000</span></div>
</div>
<div class="subject">
<div>地理:<span>600</span></div>
<div>年纪排名:<span>5000</span></div>
</div>
<div class="subject">
<div>生物:<span>600</span></div>
<div>年纪排名:<span>5000</span></div>
</div>
<div class="subject">
<div>物理:<span>600</span></div>
<div>年纪排名:<span>5000</span></div>
</div>
<div class="subject">
<div>化学:<span>600</span></div>
<div>年纪排名:<span>5000</span></div>
</div>
<div class="subject">
<div>政治:<span>600</span></div>
<div>年纪排名:<span>5000</span></div>
</div>
</div>
<!-- 三模-->
<div
class="c_main_list card"
:class=" collapsThird ? 'isCollaps': ''"
>
<!--折叠-->
<div class="collaps" @click="isCollaps(3)" v-if="collapsThird == false">展开</div>
<div class="collaps" @click="isCollaps(3)" v-else>折叠</div>
<div style="text-align: center;font-size: 20px" class="title">三模</div>
<div class="totalScore">
<div>总成绩:<span>600</span></div>
<div>总成绩年纪排名:<span>5000</span></div>
</div>
<div class="subject">
<div>语文:<span>600</span></div>
<div>年纪排名:<span>5000</span></div>
</div>
<div class="subject">
<div>数学:<span>600</span></div>
<div>年纪排名:<span>5000</span></div>
</div>
<div class="subject">
<div>英语:<span>600</span></div>
<div>年纪排名:<span>5000</span></div>
</div>
<div class="subject">
<div>历史:<span>600</span></div>
<div>年纪排名:<span>5000</span></div>
</div>
<div class="subject">
<div>地理:<span>600</span></div>
<div>年纪排名:<span>5000</span></div>
</div>
<div class="subject">
<div>生物:<span>600</span></div>
<div>年纪排名:<span>5000</span></div>
</div>
<div class="subject">
<div>物理:<span>600</span></div>
<div>年纪排名:<span>5000</span></div>
</div>
<div class="subject">
<div>化学:<span>600</span></div>
<div>年纪排名:<span>5000</span></div>
</div>
<div class="subject">
<div>政治:<span>600</span></div>
<div>年纪排名:<span>5000</span></div>
</div>
</div>
</template>
<script setup>
import {onMounted, ref, onUpdated, reactive, toRefs} from "vue";
import {useRouter,useRoute} from "vue-router";
import {useStore} from "vuex";
import {
getPersonGrade, //查询个人成绩信息
} from "@/service/studentCourseSelection";
const router = useRouter();
const route = useRoute();
const store = useStore();
const query = route.query;
const state = reactive({
});
const collapsFirst = ref(false);
const collapsSecond = ref(false);
const collapsThird = ref(false);
const isCollaps = (num) => {
if(num == 1){
collapsFirst.value = !collapsFirst.value
}
if(num == 2){
collapsSecond.value = !collapsSecond.value
}
if(num == 3){
collapsThird.value = !collapsThird.value
}
};
onMounted( async () => {
console.log('query.id',query.id)
let result = await getPersonGrade(query.id)
console.log('result',result)
})
const goback = (g) => {
router.back();
};
</script>
<style lang="less" scoped>
.totalScore{
font-size: 14px;
display:flex;
justify-content: space-around;
margin: 20px 0 10px 0;
padding-bottom: 15px;
border-bottom:1px solid silver;
}
.subject{
font-size: 14px;
display:flex;
justify-content: space-around;
margin-bottom: 10px;
}
.card{
spadding: 18px 12px 15px 17px;
position:relative;
height: 160px;
overflow-y: hidden
}
.collaps{
text-align:center;
height: 30px;
line-height: 30px;
width: 80px;
font-size: 14px;
position:absolute;
right: 0;
top: 0;
background: #4ea0fc;
border-radius: 5px;
color: #ffffff;
}
.isCollaps{
height: 350px !important;
}
</style>
......@@ -363,19 +363,19 @@ export default {
console.log(123, file);
const formData = new FormData();
formData.append("avatarfile", file.file);
console.log('formData',formData)
// 请求接口上传图片到服务器
let result = await uploadImgpar(formData);
console.log('666',result)
if (result.code == 200) {
state.imgUrl = file.content;
// state.imgUrl = axios.defaults.baseURL + result.imgUrl;
let userInfo = store.state.userInfo;
userInfo.avatar = file.content;
store.commit("edituserInfo", userInfo);
this.$toast("头像修改成功");
Toast.success("头像修改成功");
} else {
this.$toast(res.msg);
Toast.fail(res.msg);
}
};
......
......@@ -17,6 +17,7 @@
</van-swipe-item>
</van-swipe>
<div class="main">
<!-- 家长登录查看的 -->
<div
style="padding-left: 10px; padding-right: 5px"
v-show="parentShow"
......@@ -32,6 +33,7 @@
<text class="main_top_o_text">学生请假</text>
</div>
</div>
<!-- 老师登录查看的 -->
<div
style="padding-left: 10px; padding-right: 5px"
v-show="teacherShow"
......@@ -83,7 +85,7 @@
<span class="item_text">冬夏时令</span>
</van-grid-item> -->
</van-grid>
<!-- 家长登录查看的 -->
<van-grid class="theIconGrid" :column-num="4" v-show="parentShow">
<van-grid-item icon="photo-o" text="园区介绍" url=" #/gardenIntr">
<van-image
......@@ -182,6 +184,13 @@
/>
<span class="item_text">教师信息</span>
</van-grid-item>
<van-grid-item icon="photo-o" text="学生选课" url=" #/studentCourseSelection">
<van-image
style="width: 48px"
:src="require('@/assets/index/rkls.png')"
/>
<span class="item_text">学生选课</span>
</van-grid-item>
<!-- <van-grid-item icon="photo-o" text="请假" url=" #/studentLeavetask">
<van-image
style="width: 48px"
......@@ -220,6 +229,7 @@
<span class="item_text">素质评价</span>
</van-grid-item> -->
</van-grid>
<!-- 老师登录查看的 -->
<van-grid class="theIconGrid" :column-num="4" v-show="teacherShow">
<van-grid-item icon="photo-o" text="园区介绍" url=" #/gardenIntr">
<van-image
......@@ -390,7 +400,17 @@
/>
<span class="item_text">问卷调查</span>
</van-grid-item>
<van-grid-item
icon="photo-o"
text="后勤报修"
url=" #/logisticsRepair"
>
<van-image
style="width: 48px"
:src="require('@/assets/index/dcwj.png')"
/>
<span class="item_text">后勤报修</span>
</van-grid-item>
<!-- <van-grid-item icon="photo-o" text="我的领用" url=" #/myUse">
<van-image
style="width: 24px"
......@@ -566,6 +586,7 @@ export default {
const getuserInfo = async () => {
//访问后台接口
let result = await getInfo();
console.log('info',result)
if (result.code === 200) {
let userInfo = result.userInfo;
if (userInfo.type == 1) {
......
<template>
<van-nav-bar
title="报修申请"
left-text="返回"
left-arrow
@click-left="goback"
/>
<div class="">
<div class="main">
<van-form ref="addForm">
<!--自动带出 -->
<van-field
label="报修单号"
v-model="state.id"
rows="1"
autosize
type="textarea"
placeholder="报修单号"
readonly
/>
<!--当前登录人,自动带出-->
<van-field
readonly
required
label="报修人"
v-model="state.repairsName"
rows="1"
autosize
type="textarea"
placeholder="报修人"
:rules="[{ required: true, message: '请输入报修人' }]"
/>
<!--当前登录人了联系方式,自动带出-->
<van-field
readonly
required
label="联系方式"
v-model="state.phone"
rows="1"
autosize
type="textarea"
placeholder="联系方式"
:rules="[{ required: true, message: '请输入联系方式' }]"
/>
<!--默认当前时间(自动带出)-->
<van-field
readonly
required
label="报修时间"
v-model="state.repairsTime"
rows="1"
autosize
type="textarea"
placeholder="报修时间"
:rules="[{ required: true, message: '请输入报修时间' }]"
/>
<van-field
required
label="故障设备"
v-model="state.failureEquipment"
rows="1"
autosize
type="textarea"
placeholder="请填写故障设备"
:rules="[{ required: true, message: '请填写故障设备' }]"
/>
<van-field
required
label="地点"
v-model="state.failureEquipmentArea"
rows="1"
autosize
type="textarea"
placeholder="请填写故障设备所在地点"
:rules="[{ required: true, message: '请填写故障设备所在地点' }]"
/>
<van-field
required
style="display: flex; flex-direction: column"
label="故障描述"
v-model="state.failureEquipmentDescribe"
rows="1"
type="textarea"
:rules="[{ required: true, message: '请输入故障描述' }]"
/>
<van-field name="uploader" label="故障图片">
<template #input>
<van-uploader v-model="state.pics" :after-read="afterRead" @delete="deletePic"/>
</template>
</van-field>
<div class="main_one_btna">
<van-button
style="width: 105px; height: 36px; margin-right: 15px"
type="primary"
@click="submitReport"
native-type="submit"
loading-type="spinner"
:loading="loading"
>确认上报
</van-button>
<van-button
style="width: 105px; height: 36px; "
plain
type="primary"
@click="goback"
native-type="submit"
loading-type="spinner"
:loading="loading"
>取 消
</van-button>
</div>
</van-form>
</div>
</div>
</template>
<script setup>
import {onMounted, ref, onUpdated, reactive, toRefs, toRaw} from "vue";
import { Dialog, Toast } from "vant";
import { useRouter } from "vue-router";
import { useStore } from "vuex";
import {
editRepairInfo, //修改报修信息
addRepairInfo, //新增报修信息
getRepairInfo, //查询报修信息详情
getNumber, //获取报修单号
uploadPic, //上传图片
} from "@/service/repair";
import {uploadImgpar} from "@/service/home";
// import { getTotyp } from "@/utils/auth";
import { formatDatetime } from "@/utils/time.js";
const minDate = new Date(
new Date().getFullYear(),
new Date().getMonth(),
new Date().getDate()
);
const store = useStore();
const maxDate = new Date(2050, 10, 1);
const formatDate = (date) => {
var month = date.getMonth() + 1;
var strDate = date.getDate();
if (month >= 1 && month <= 9) {
month = "0" + month;
}
if (strDate >= 0 && strDate <= 9) {
strDate = "0" + strDate;
}
// var currentDate = date.getFullYear() + '-' + month + '-' + strDate + ' ' + date.getHours() + ':' + date.getMinutes() + ':' + date.getSeconds();
var currentDate = date.getFullYear() + "-" + month + "-" + strDate;
return currentDate;
};
const state = reactive({
id:null, //报修单号
repairsId: store.state.userInfo.teacherId, //报修人id
repairsName: store.state.userInfo.teacherName, //报修人姓名
phone: store.state.userInfo.teacherPhonenumber, //手机号,联系方式
repairsTime: formatDate(new Date()), //报修时间
failureEquipment:"",//故障设备
failureEquipmentArea:"", //故障设备所在地点
failureEquipmentDescribe:"",//故障描述
pics:[],//故障图片
});
const newstate = toRefs(state);
const router = useRouter();
const columns = ref([]);
// 提交表单
const addForm = ref(null);
// 加载效果
const loading = ref(false);
onMounted( async () => {
console.log('router.currentRoute.value.query',router.currentRoute.value.query)
if(router.currentRoute.value.query.id){
console.log('编辑')
let result = await getRepairInfo(router.currentRoute.value.query.id)
console.log('result',result)
if(result.code == 200){
Object.assign(state,result.data)
if(result.data.newFailureEquipmentPicture){
const picArr = result.data.newFailureEquipmentPicture.split(',')
state.pics = picArr.map( item => {
return {
url:item
}
})
console.log('state.pics',state.pics)
}
}
}else{
console.log('新增')
console.log('store',store.state)
let result = await getNumber();
console.log('新增result',result)
state.id = result.data.id;
// state.repairsId = null;
// state.repairsName = store.state.teacherName;
// state.phone = store.state.telephone;
// state.repairsTime = formatDate(new Date());
state.failureEquipment = null;
state.failureEquipmentArea = null;
state.failureEquipmentDescribe = null;
state.failureEquipmentPicture = [];
}
});
//上传图片
const afterRead = async (file) => {
const formData = new FormData();
console.log('file',file)
console.log('toRaw(file)',toRaw(file))
console.log('state',state)
console.log('上传column',columns.value)
formData.append("avatarfile", file.file);
let result = await uploadPic(formData);
if(result.code == 200){
if(state.failureEquipmentPicture){
columns.value.push(result.imgUrl)
state.failureEquipmentPicture = state.failureEquipmentPicture.split(',').concat(columns.value).toString()
console.log('111state.failureEquipmentPicture',state.failureEquipmentPicture)
}else{
columns.value.push(result.imgUrl)
console.log('columns.value',columns.value)
}
}
};
//删除图片
const deletePic = async (file,index) => {
console.log('index',index)
console.log('删除前state',state)
console.log('删除前columns',columns.value)
if(state.failureEquipmentPicture && columns.value.length != 0){
state.failureEquipmentPicture = state.failureEquipmentPicture.split(',')
console.log('index1',index)
// state.failureEquipmentPicture = state.failureEquipmentPicture.concat(columns.value)
console.log(' state.failureEquipmentPicture1', state.failureEquipmentPicture)
state.failureEquipmentPicture.splice(index.index,1)
state.failureEquipmentPicture = state.failureEquipmentPicture.toString()
console.log(' state.failureEquipmentPicture2', state.failureEquipmentPicture)
}else if(state.failureEquipmentPicture && columns.value.length == 0){
state.failureEquipmentPicture = state.failureEquipmentPicture.split(',')
state.failureEquipmentPicture.splice(index.index,1)
state.failureEquipmentPicture = state.failureEquipmentPicture.toString()
console.log('state.failureEquipmentPicture2',state.failureEquipmentPicture)
}else{
columns.value.splice(index.index,1)
console.log('columns.value',columns.value)
}
};
// 确认上报
const submitReport = () => {
addForm.value
.validate()
.then((valid) => {
Toast.loading({
message: "加载中...",
forbidClick: true,
});
if(router.currentRoute.value.query.id){
console.log('编辑')
console.log('state',state);
//没有新上传的图片
if(columns.value.length == 0){
editRepairInfo({
...state
})
.then((response) => {
Toast.success("提交成功");
goback();
})
.catch((error) => {
loading.value = false;
Toast.fail("提交失败");
});
//有新上传的图片
}else{
console.log('新上传state',state)
console.log('新上传columns',columns.value)
if(state.failureEquipmentPicture){
console.log('state.failureEquipmentPicture1',state.failureEquipmentPicture)
}else{
state.failureEquipmentPicture = columns.value.toString()
console.log('state.failureEquipmentPicture2',state.failureEquipmentPicture)
console.log('columns.value2',columns.value.toString())
}
console.log('589',state)
editRepairInfo({
...state,
})
.then((response) => {
Toast.success("提交成功");
goback();
})
.catch((error) => {
loading.value = false;
Toast.fail("提交失败");
});
}
}else{
console.log('新增')
console.log('state',state)
console.log('columns',columns.value)
console.log('columns',columns.value.toString())
addRepairInfo({
...state,
failureEquipmentPicture:columns.value.toString()
})
.then((response) => {
Toast.success("提交成功");
goback();
})
.catch((error) => {
loading.value = false;
Toast.fail("提交失败");
});
}
})
.catch((message) => {});
};
const goback = (g) => {
router.back();
};
</script>
<style scoped lang="less">
/** 最上层banner条 */
.home {
height: 15rem;
}
.bg_color {
background-color: rgb(230, 230, 230);
}
.m_top {
height: 40vw;
position: relative;
}
.main {
margin: 15px;
height: auto !important;
min-height: 80vh;
line-height: 20px;
border-radius: 50px 50px 70px 70px;
// background-color: rgba(255, 199, 0, 100);
font-size: 14px;
text-align: center;
padding-bottom: 15vw;
.main_search {
width: 98vw;
height: 15vw;
.main_search_1 {
width: 45vw;
height: 14vw;
display: inline-block;
vertical-align: top;
border: yellow 2px;
}
.main_search_2 {
width: 45vw;
height: 14vw;
display: inline-block;
vertical-align: top;
}
}
.main_list_one {
// margin-left: 5vw;
margin-top: 5vw;
width: 100vw;
height: 20vw;
line-height: 20px;
// border-radius: 6px;
background-color: rgb(255, 255, 255);
text-align: center;
// border: 1px solid rgba(9, 208, 178, 100);
.main_list_one_left_1 {
display: inline-block;
margin-top: 2vw;
width: 15vw;
height: 15vw;
border-radius: 50px;
// border: 1px solid rgba(187, 187, 187, 100);
vertical-align: top;
}
.main_list_one_left_2 {
display: inline-block;
padding-left: 5vw;
width: 70vw;
position: relative;
top: 2vw;
vertical-align: top;
.left_2_1 {
width: 75vw;
height: 22px;
color: rgba(28, 28, 28, 100);
font-size: 15px;
text-align: left;
font-family: Microsoft YaHei;
.left_2_1_1 {
display: inline-block;
width: 60%;
}
.left_2_1_2 {
display: inline-block;
width: 40%;
color: rgb(145, 141, 141);
text-align: left;
font-size: 10px;
font-family: Microsoft YaHei;
float: right;
}
}
.left_2_2 {
width: 60vw;
height: 22px;
color: rgb(145, 141, 141);
text-align: left;
font-size: 12px;
font-family: Microsoft YaHei;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
}
}
.main_one_btna {
height: auto;
position: relative;
top: 3vh;
line-height: 20px;
// border-radius: 0px 0px 26px 26px;
display: flex;
align-items: center;
justify-content: center;
text-align: center;
// padding-left: 10vw;
// padding-bottom: 10vw;
}
}
</style>
<template>
<van-nav-bar
title="报修结果反馈"
left-text="返回"
left-arrow
@click-left="goback"
/>
<div class="">
<div class="main">
<div class="mainCard">
<div style="display: flex;flex-direction: row;justify-content: left;align-items: center">
<p style="width: 3px;height: 18px;background-color: #1989fa;border: 1px solid #1989fa;border-radius: 2px"></p>
<p class="title">反馈结果</p>
</div>
<van-form label-align="right" label-width="105px" ref="feedbackForm">
<van-field
label="报修单号"
v-model="state.id"
rows="1"
autosize
type="textarea"
placeholder="报修单号"
/>
<van-field
v-model="state.maintainResult"
is-link
readonly
name="picker"
label="维修结果"
placeholder="请选择维修结果"
@click="showPicker = true"
/>
<van-popup v-model:show="showPicker" position="bottom">
<van-picker
:columns="columns"
@confirm="onConfirm"
@cancel="showPicker = false"
/>
</van-popup>
<van-field name="rate" label="评价:">
<template #input>
<van-rate v-model="state.evaluate" />
</template>
</van-field>
<div class="main_one_btna" style="margin:20px 0">
<van-button
style="width: 75px; height: 28px; margin-right: 15px"
type="primary"
@click="submitFeedbackForm"
native-type="submit"
loading-type="spinner"
:loading="loading"
>确认
</van-button>
</div>
</van-form>
</div>
</div>
</div>
</template>
<script setup>
import { onMounted, ref, onUpdated,reactive } from "vue";
import { Dialog, Toast } from "vant";
import { useRouter } from "vue-router";
import { useStore } from "vuex";
import {
getFeedResult, //反馈结果
} from "@/service/repair";
import { formatDatetime } from "@/utils/time.js";
const router = useRouter();
const store = useStore();
const minDate = new Date(
new Date().getFullYear(),
new Date().getMonth(),
new Date().getDate()
);
const maxDate = new Date(2050, 10, 1);
const state = reactive({
id:null, //报修单号
maintainResult:'', //维修结果
maintainState:2, //维修状态
evaluate:'', //评价
});
const showPicker = ref(false);
const columns = ['已修好', '无法维修'];
const onConfirm = (value) => {
state.maintainResult = value;
showPicker.value = false;
};
// 提交表单
const feedbackForm = ref(null);
// 加载效果
const loading = ref(false);
const courseNumss = ref([]);
onMounted( () => {
console.log("3- 组件挂在完毕执行 --- onMounted");
console.log('router1',router.currentRoute.value.query.id)
state.id = router.currentRoute.value.query.id
console.log('state.id',state.id)
});
// 确认按钮
const submitFeedbackForm = () => {
feedbackForm.value
.validate()
.then((valid) => {
Toast.loading({
message: "加载中...",
forbidClick: true,
});
console.log(valid);
state.id = Number(state.id)
state.maintainState = 3
getFeedResult({
...state,
})
.then((response) => {
Toast.success("提交成功");
goback();
})
.catch((error) => {
loading.value = false;
Toast.fail("提交失败");
});
})
.catch((message) => {});
};
const goback = (g) => {
router.back();
};
</script>
<style scoped lang="less">
/** 最上层banner条 */
.home {
height: 15rem;
}
.bg_color {
background-color: rgb(230, 230, 230);
}
.m_top {
height: 40vw;
position: relative;
}
.main {
margin: 15px;
height: auto !important;
min-height: 80vh;
line-height: 20px;
border-radius: 50px 50px 70px 70px;
// background-color: rgba(255, 199, 0, 100);
font-size: 14px;
text-align: center;
padding-bottom: 15vw;
.mainCard {
background:#ffffff;
padding:0px 10px 10px 10px;
border: 1px solid silver;
border-radius: 10px;
box-shadow:0px 0px 10px #888888;
.title {
text-align: left;
font-size: 14px;
color: #1989fa;
margin-left: 10px;
}
}
}
</style>
<template>
<van-nav-bar
title="报修列表"
left-text="返回"
left-arrow
@click-left="goback"
right-text="新增"
@click-right="goAddRepair"
/>
<!-- 下拉刷新 -->
<van-pull-refresh v-model="refreshing" @refresh="onRefresh">
<van-list
v-model:loading="loading"
:finished="finished"
finished-text="没有更多了"
@load="onLoad"
>
<!--循环-->
<div
class="c_main_list"
v-for="item in list"
:key="item.id"
style="padding: 18px 12px 15px 17px"
>
<div style="position: relative">
<div style="position: absolute; top: -18px; right: -12px">
<div
v-if="item.maintainState === 3 && item.maintainResult === '无法维修'"
style="
width: 105px;
height: 20px;
background: #33ddc6;
border-radius: 0px 6px 0px 6px;
font-family: PingFang SC;
color: #ffffff;
font-size: 12px;
text-align: center;
"
>
已完成—无法维修
</div>
<div
v-if="item.maintainState === 3 && item.maintainResult === '已维修'"
style="
width: 105px;
height: 20px;
background: #ff7868;
border-radius: 0px 6px 0px 6px;
font-family: PingFang SC;
color: #ffffff;
font-size: 12px;
text-align: center;
"
>
已完成-维修完成
</div>
<div
v-if="item.maintainState === 1"
style="
width: 52px;
height: 20px;
background: #aebdc5;
border-radius: 0px 6px 0px 6px;
font-family: PingFang SC;
color: #ffffff;
font-size: 12px;
text-align: center;
"
>
未接单
</div>
<div
v-if="item.maintainState === 2"
style="
width: 52px;
height: 20px;
background: #ffc641;
border-radius: 0px 6px 0px 6px;
font-family: PingFang SC;
color: #ffffff;
font-size: 12px;
text-align: center;
"
>
维修中
</div>
</div>
<div
style="
font-family: PingFang SC;
font-weight: 700;
color: #000000;
font-size: 16px;
"
>
<!-- {{ item.title }}-->
后勤报修申请 - {{ item.repairsName }}
</div>
<div style="display: flex; align-items: center; margin-top: 10px">
<div
style="
height: 20px;
font-family: PingFang SC;
color: #6f787d;
font-size: 14px;
"
>
报修单号: {{item.id}}
</div>
</div>
<div style="display: flex; align-items: center; margin-top: 10px">
<div
style="
height: 20px;
font-family: PingFang SC;
color: #6f787d;
font-size: 14px;
"
>
报修人: {{ item.repairsName }}
</div>
</div>
<div
style="
display: flex;
align-items: center;
justify-content: flex-end;
margin-top: 23px;
"
>
<div
@click="goDetails(item)"
class="flex_center"
style="
width: 64px;
height: 32px;
border: 1px solid;
border-color: #aebdc5;
border-radius: 3px;
font-family: PingFang SC;
font-weight: 700;
color: #aebdc5;
font-size: 14px;
text-align: center;
margin-left: 10px;
"
>
查看
</div>
<div
v-if="item.maintainState === 1"
class="flex_center"
@click="removeRepair(item)"
style="
width: 64px;
height: 32px;
background: #ff7a6a;
border-radius: 3px;
font-family: PingFang SC;
font-weight: 700;
color: #ffffff;
font-size: 14px;
text-align: center;
margin-left: 10px;
"
>
删除
</div>
<div
v-if="item.maintainState === 1"
class="flex_center"
@click="editRepair(item)"
style="
width: 64px;
height: 32px;
background: #39befe;
border-radius: 3px;
font-family: PingFang SC;
font-weight: 700;
color: #ffffff;
font-size: 14px;
margin-left: 10px;
"
>
编辑
</div>
<div
v-if="item.maintainState === 2"
class="flex_center"
@click="feedback(item)"
style="
width: 64px;
height: 32px;
background: #ff7a6a;
border-radius: 3px;
font-family: PingFang SC;
font-weight: 700;
color: #ffffff;
font-size: 14px;
text-align: center;
margin-left: 10px;
"
>
反馈
</div>
</div>
</div>
</div>
</van-list>
</van-pull-refresh>
</template>
<script setup>
import { ref, toRefs, computed, reactive, onMounted } from "vue";
import { useRouter } from "vue-router";
import {
getRepairList, //个人报修列表
removeRepairInfo, //删除报修信息
} from "@/service/repair";
import { Toast } from "vant";
import axios from "axios";
import { useStore } from "vuex";
import { formatDatetime, formatDate } from "@/utils/time.js";
const store = useStore();
const router = useRouter();
const state = reactive({
searchText: "",
typeId: "",
optionId: 0,
});
console.log('store',store.state)
//删除按钮
const removeRepair = async (item) => {
console.log(item);
let result = await removeRepairInfo(item.id);
console.log('result',result)
if (result.code == 200) {
Toast.success("删除成功");
onRefresh();
}
};
const list = ref([]);
//加载中
const loading = ref(false);
const finished = ref(false);
const refreshing = ref(false);
const pageNum = ref(0);
//获取列表list数据
const onLoad = async () => {
if (refreshing.value) {
list.value = [];
pageNum.value = 0;
refreshing.value = false;
}
pageNum.value += 1;
let result = await getRepairList();
console.log('result',result);
if (result.code == 200) {
list.value.push(...result.rows);
loading.value = false;
list.value.length === result.total && (finished.value = true);
} else {
Toast("获取信息失败!");
loading.value = false;
return;
}
// controller.abort();
};
//下拉刷新
const onRefresh = () => {
refreshing.value=true
// 清空列表数据
finished.value = false;
// 重新加载数据
// 将 loading 设置为 true,表示处于加载状态
loading.value = true;
onLoad();
};
// const loadData = async () => {};
onMounted(async () => {
// loadData();
// let result = await getcourseNum();
// courseNums.value = result.data;
});
/*查看按钮*/
const goDetails = (item) => {
console.log('查看',item.id)
router.push({
path: "/checkRepair",
query: {
id:item.id
},
});
// }
};
/*编辑按钮*/
const editRepair = (item) =>{
router.push({
path: "/addRepair",
query: {
id:item.id
},
});
};
/*反馈按钮*/
const feedback = (item) => {
console.log('feedback',item.id)
router.push({
path: "/feedbackRepair",
query: {
id:item.id
},
});
};
const goback = () => {
router.back();
};
//新增按钮
const goAddRepair = (g) => {
router.push({
path: "/addRepair",
});
};
</script>
<style lang="less" scoped>
// ::v-deep.van-dropdown-menu__bar {
// box-shadow: none !important;
// }
::v-deep .van-tabs__line {
background: #1989fa;
}
::v-deep .van-dropdown-menu__bar {
box-shadow: none !important;
}
.main_search {
width: 100vw;
height: 15vw;
display: flex;
align-items: center;
background: white;
.main_search_1 {
flex: 1;
height: 15vw;
display: inline-block;
vertical-align: top;
}
.van-dropdown-menu:root {
--van-dropdown-menu-box-shadow: none;
}
.main_search_2 {
height: 15vw;
display: flex;
align-items: center;
}
}
</style>
[
"/Users/muyecun/Desktop/zhxy/src/assets/index/home.jpg",
"/Users/muyecun/Desktop/zhxy/src/assets/ttf/x.ttf",
"/Users/muyecun/Desktop/zhxy/src/assets/xxcjx.png",
"/Users/muyecun/Desktop/zhxy/src/assets/zbb.png",
"/Users/muyecun/Desktop/zhxy/src/router/config.js",
"/Users/muyecun/Desktop/zhxy/src/store/other.js",
"/Users/muyecun/Desktop/zhxy/src/utils/dict.js",
"/Users/muyecun/Desktop/zhxy/src/utils/MyTools.js",
"/Users/muyecun/Desktop/zhxy/src/views/tabbar/main/parent.vue",
"/Users/muyecun/Desktop/zhxy/src/views/tabbar/main/teacher.vue"
"/Users/ths/WebstormProjects/二中/公众号/zhxy/src/assets/index/home.jpg",
"/Users/ths/WebstormProjects/二中/公众号/zhxy/src/assets/index/hqbx.png",
"/Users/ths/WebstormProjects/二中/公众号/zhxy/src/assets/ttf/x.ttf",
"/Users/ths/WebstormProjects/二中/公众号/zhxy/src/assets/xxcjx.png",
"/Users/ths/WebstormProjects/二中/公众号/zhxy/src/assets/zbb.png",
"/Users/ths/WebstormProjects/二中/公众号/zhxy/src/router/config.js",
"/Users/ths/WebstormProjects/二中/公众号/zhxy/src/store/other.js",
"/Users/ths/WebstormProjects/二中/公众号/zhxy/src/utils/dict.js",
"/Users/ths/WebstormProjects/二中/公众号/zhxy/src/utils/MyTools.js",
"/Users/ths/WebstormProjects/二中/公众号/zhxy/src/views/tabbar/main/parent.vue",
"/Users/ths/WebstormProjects/二中/公众号/zhxy/src/views/tabbar/main/teacher.vue"
]
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment