记录一个vue编辑的移动端页面

<template><div class="wrap"><el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="120px"><el-form-item label="班级" prop="classId" required style="width: 100%;"><template v-if="oroles == 'teacher_director'"><el-select v-model="queryParams.classId" placeholder="请选择班级" @change="seletChange"><el-option v-for="item in classList" :key="item.deptId" :label="item.deptName" :value="item.deptId"></el-option></el-select></template><template v-else><div>{{ classList[0] ? classList[0].deptName : '' }}</div></template></el-form-item> <el-form-item label="选择学生" prop="student" required><el-button size="mini" @click="openStudent">点击选择</el-button><div class="checked-student" v-if="checkedStudent"><!-- <el-image style="width: 60px; height: 60px; border-radius: 50%;" :src="checkedStudent.headUrl" fit="cover"></el-image> --><div class="student-mes"><div class="d1">{{ checkedStudent.number }}号</div><!-- <div class="d2">{{ checkedStudent.name }}</div> --></div></div></el-form-item><el-form-item label="性别" prop="sex"><el-radio v-model="queryParams.sex" label="0">男</el-radio><el-radio v-model="queryParams.sex" label="1">女</el-radio></el-form-item><el-form-item label="生日" prop="birthday"><el-date-picker clearable v-model="queryParams.birthday" type="date" value-format="yyyy-MM-dd" placeholder="请选择生日"></el-date-picker></el-form-item>      <el-form-item label="身高" prop="height"><div class="input-wrap"><el-input type="number" oninput="if(value.length>5)value=value.slice(0,5)" v-model="queryParams.height" placeholder="请输入身高" /><div class="d1">(cm)</div></div></el-form-item><el-form-item label="体重" prop="weight"><div class="input-wrap"><el-input type="number" oninput="if(value.length>5)value=value.slice(0,5)" v-model="queryParams.weight" placeholder="请输入体重" /><div class="d1">(kg)</div></div>    </el-form-item><el-form-item label="坐位体前屈" prop="flexibility"><div class="input-wrap"><el-input type="number" oninput="if(value.length>5)value=value.slice(0,5)" v-model="queryParams.flexibility" placeholder="请输入" /><div class="d1">(cm)</div></div>          </el-form-item><el-form-item label="立定跳远" prop="downStrength"><div class="input-wrap"><el-input type="number" oninput="if(value.length>5)value=value.slice(0,5)" v-model="queryParams.downStrength" placeholder="请输入" /><div class="d1">(cm)</div></div>        </el-form-item><el-form-item :label="physicalVersion == '2' ? '握力' : '网球掷远'" prop="upStrength"><div class="input-wrap"><el-input type="number" oninput="if(value.length>5)value=value.slice(0,5)" v-model="queryParams.upStrength" placeholder="请输入" /><div class="d1">{{ physicalVersion == '2' ? '(kg)' : '(m)' }}</div></div>          </el-form-item><el-form-item label="平衡木" prop="balance"> <div class="input-wrap"><el-input type="number" oninput="if(value.length>5)value=value.slice(0,5)" v-model="queryParams.balance" placeholder="请输入" /> <div class="d1">(s)</div></div>         </el-form-item><el-form-item label="双脚连跳" prop="coordination"> <div class="input-wrap"><el-input type="number" oninput="if(value.length>5)value=value.slice(0,5)" v-model="queryParams.coordination" placeholder="请输入" /> <div class="d1">(s)</div></div>        </el-form-item><el-form-item :label="physicalVersion == '2' ? '15米绕障碍跑' : '10米折返跑'" prop="sensitivity"> <div class="input-wrap"><el-input type="number" oninput="if(value.length>5)value=value.slice(0,5)" v-model="queryParams.sensitivity" placeholder="请输入" /> <div class="d1">{{ physicalVersion == '2' ? '(s)' : '(s)' }}</div></div>         </el-form-item><el-form-item label=" " prop="" size="medium"><div class="pop-footer"><div class="b1" @click="prev">返回</div><div class="b2" @click="save">保存</div></div></el-form-item>   </el-form><div class="mask" v-if="open"></div><!-- 选择学生 --><div class="pop-box" v-if="open"><div class="student-header"><div class="d1">请选择学生</div><div class="close-wrap" @click="cancel"><i class="el-icon-close"></i></div></div><div class="student-main"><div class="student-list" v-for="(item,index) in reportRecordDetailList" :key="item.id" @click="studentHandle(index)">          <div class="img-wrap"><img src="@/assets/images/complet.png" class="icon-complet" v-if="item.status == 1" /><!-- <i class="el-icon-success" v-if="item.checked"></i> --></div><div class="student-mes" :class="{ active: item.checked }"><div class="d1">{{ item.number }}号</div></div></div>        </div></div></div>
</template><script>
import { listDeptAll,listReportRecordDetail, getReportRecordDetail, delReportRecordDetail, addReportRecordDetail, updateReportRecordDetail } from "@/api/school/reportRecordDetail";
import { listDept } from "@/api/system/dept";export default {metaInfo() {return {title: this.PageTitle,titleTemplate: null,//不加这个会有个默认的后缀meta: [{name: "viewport",content: 'width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no',},],};},// metaInfo: {//   //title: '详情页',//   meta: [//     { charset: 'utf-8' },//     { name: 'viewport', content: 'width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no' }//   ]// },name: "ReportRecordDetail",data() {return {// 班级数据classList: [],queryParams: {classId: null,        recordId: null,//上级目录idid: null,//学生列表里的id(修改则必填 新增的时候没有id)sid: null,//选中的学生idsex: null,//性别 2是未知 0男 1女birthday: null,   height: null,weight: null,flexibility: null,downStrength: null,upStrength: null,   balance: null,  coordination: null,sensitivity: null,},ouser: null,//用户信息checkedStudent: null,//选中的学生信息    reportRecordDetailList: [],// 体测数据,录入学生数据表格数据oroles: null,//角色studentIndex: null,physicalVersion: null,//版本// 遮罩层loading: true,// 选中数组ids: [],// 非单个禁用single: true,// 非多个禁用multiple: true,// 显示搜索条件// 总条数total: 0,      // 弹出层标题title: "",// 是否显示弹出层open: false,// 查询参数      // 表单参数form: {},    name: null,PageTitle: null, isclock: false, };},watch: {selectedValue(newValue, oldValue) {// 当selectedValue变化时,这个函数会被调用// newValue是新选中的值,oldValue是之前的值console.log('选中的值变化了', newValue, oldValue);// 在这里可以执行其他逻辑}},created() {    this.ouser = this.$store.state.user;this.reportRecordDetailList = [];//重置学生列表this.queryParams.recordId = this.$route.params.idthis.physicalVersion = this.$route.params.physicalVersionthis.name = this.$route.params.name//如果用户直接访问这个页面 给它跳转到列表页if(!this.queryParams.recordId){this.$router.push({ path: '/reportRecord' })}//判断当前老师是不是混龄班级的老师teacher_directorthis.oroles = this.ouser.roles[0]if(this.oroles == 'teacher_director'){this.getClassListAll();}else{this.getClassList();}    },mounted() {    this.PageTitle = this.name},methods: {seletChange(val){if(val){this.checkedStudent = nullthis.resetInput()}},prev(){this.$router.go(-1); // 返回上一页},/** 查询班级列表 */getClassListAll() {listDeptAll({ deptType: 3, parentId: this.ouser.schoolId, status :0 }).then(response => {this.classList = response.data;});},save(){if(this.isclock) returnthis.isclock = trueif(!this.checkedStudent){this.$modal.msgError("请先选择学生");this.isclock = truereturn}this.queryParams.sid = this.checkedStudent.sidif(this.checkedStudent.id){this.queryParams.id = this.checkedStudent.id        }else{this.queryParams.id = null}//新增/编辑addReportRecordDetail(this.queryParams).then(res => {//this.$modal.msgSuccess("新增成功");this.checkedStudent.id = res.data.id //ly-addthis.$modal.confirm(this.checkedStudent.number + '号学生数据保存成功,继续提交下一位同学?').then(() => {          this.isclock = falsethis.queryParams.id = nullthis.queryParams.sid = nullthis.resetInput()  //studentIndex 学生下标 如果学生下标+1 有sid 那么就是有学生 如果没有sid 则最后一个学生了//学生列表 this.reportRecordDetailListlet olist = this.reportRecordDetailListif(olist[this.studentIndex + 1].sid){this.checkedStudent = olist[this.studentIndex + 1]if(olist[this.studentIndex + 1].id){let slist = olist[this.studentIndex + 1]              //有id代表编辑状态this.fillValue(slist)              }this.studentIndex++            }}).catch(() => { this.isclock = false});}).catch(() => { this.isclock = false});;        },studentHandle(idx){this.studentIndex = idx; //给选中的下标赋值let olist = this.reportRecordDetailListthis.reportRecordDetailList.forEach(item => {item.checked = false; // 重置所有的checked状态为false})olist[idx].checked = truethis.reportRecordDetailList = olistthis.checkedStudent = olist[idx]if(olist[idx].id){//有id代表编辑状态this.fillValue(olist[idx])}else{this.resetInput()}      this.open = false},fillValue(list){this.queryParams.sex = list.sexthis.queryParams.birthday = list.birthdaythis.queryParams.height = list.heightthis.queryParams.weight = list.weightthis.queryParams.flexibility = list.flexibilitythis.queryParams.downStrength = list.downStrengththis.queryParams.upStrength = list.upStrengththis.queryParams.balance = list.balance this.queryParams.coordination = list.coordinationthis.queryParams.sensitivity = list.sensitivity },resetInput(){this.queryParams.sex = nullthis.queryParams.birthday = nullthis.queryParams.height = nullthis.queryParams.weight = nullthis.queryParams.flexibility = nullthis.queryParams.downStrength = nullthis.queryParams.upStrength = null  this.queryParams.balance = null this.queryParams.coordination = nullthis.queryParams.sensitivity = null },//打开学生列表openStudent(){if(!this.queryParams.classId){this.$modal.msgError("请先选择班级");return}this.getList()this.open = true},/** 查询班级列表 */getClassList() {listDept({ deptType: 3, parentId: this.ouser.schoolId }).then(response => {this.classList = response.data;this.queryParams.classId = this.classList[0].deptId});},/** 查询体测数据,录入学生数据列表 */getList() {//如果班级id为空 则不请求接口      this.loading = true;      let params = {classId: this.queryParams.classId,recordId: this.queryParams.recordId}listReportRecordDetail(params).then(response => {response.rows.forEach(item => {item.checked = false; // 添加checked属性并赋值为false 作为判断是否选中的标识});this.reportRecordDetailList = response.rows//如果已有选中的学生 给选中的学生加个选中状态if(this.checkedStudent && this.checkedStudent.number){let oindex = this.reportRecordDetailList.findIndex(item => item.number == this.checkedStudent.number)          this.reportRecordDetailList[oindex].checked = true}this.total = response.total;this.loading = false;});},// 取消按钮cancel() {this.open = false;//this.reset();},// 表单重置reset() {this.queryParams = {id: null,sid: null,classId: null,recordId: null,sex: null,//性别 2是未知 0男 1女birthday: null, height: null,weight: null,flexibility: null,downStrength: null,upStrength: null,};this.resetForm("queryParams");//queryForm / form},}
};
</script>
<style scoped>
.close-wrap{ width: 40px; height: 40px; display: flex; justify-content: center; align-items: center;}
.close-wrap .el-icon-close{ color: #fff;}
.student-list{ display: flex; flex-direction: column; align-items: center;}
.img-wrap{ position: relative; width: 40px;}
.img-wrap .el-icon-success{ position: absolute; top: -5px; right: -5px; color: #33a9ff;}
.wrap /deep/ .el-scrollbar .el-scrollbar__bar {opacity: 1 !important;
}
.wrap{ padding: 30px 15px 15px 15px;}
.checked-student{ margin-top: 5px; display: flex; flex-direction: column;}
.student-mes{ width: 40px; height: 40px; text-align: center; line-height: 40px; font-size: 12px; color: #33a9ff; border: 1px solid #33a9ff; border-radius: 50%;}
.student-mes .d2{ margin-left: 5px; max-width: 50px;}
.student-mes.active{ background: #33a9ff; color: #fff;}
.mask{ position: fixed; top: 0; right: 0; bottom: 0; left: 0; z-index: 998; background: rgba(0,0,0,0.3);}
.pop-box{ position: fixed; top: 5%; left: 5%; z-index: 999; box-sizing: border-box; display: flex; flex-direction: column; width: 90%; height: 90%; background: #fff; border-radius: 10px;}
.student-header{ padding-left: 15px; display: flex; justify-content: space-between; align-items: center; height: 40px; background: #33a9ff; font-size: 14px;color: #fff; border-radius: 10px 10px 0 0;}
.student-main{ align-content:flex-start; padding: 15px 0 10px 0; display: grid; grid-template-columns: repeat(5, 1fr); grid-gap: 10px; flex: 1; overflow-y: scroll;}
.student-img{ display: block; width: 40px; height: 40px; object-fit: cover; border-radius: 50%;}
.icon-complet{ position: absolute; top: -5px; left: -5px; width: 20px;}
.wrap /deep/ .el-form-item__label{ font-weight: 400;}
</style>
<style>
@media (max-width: 720px) {.el-message-box {width: 350px !important;}
}.pop-footer{ display: flex; justify-content: center; align-items: center; height: 60px;}
.pop-footer .b1,.pop-footer .b2{ width: 80px; height: 36px; text-align: center; line-height: 36px; font-size: 14px; color: #fff; border-radius: 18px;}
.pop-footer .b1{ background: #ffa400;}
.pop-footer .b2{ margin-left: 30px; background: #33a9ff;}
.input-wrap{ position: relative;}
.input-wrap .d1{ position: absolute; top: 0; right: 10px; line-height: 32px; font-size: 12px; color: #33a9ff;}
</style>

起作用的是

main.js
// 头部标签组件 在PC端里使用移动端布局的方法
import VueMeta from 'vue-meta'
Vue.use(VueMeta)页面里:
metaInfo() {return {title: this.PageTitle,titleTemplate: null,//不加这个会有个默认的后缀meta: [{name: "viewport",content: 'width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no',},],};},@media (max-width: 720px) {.el-message-box {width: 350px !important;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/274186.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

运维自动化之ansible

pxe 一键安装操作系统 操作系统只是提供一个平台 lnmp 需要多软件协同完成的一个简单项目 服务器正常运行 日常运维 巡检 服务器上的软件正常运行 zabbix 普罗米修斯 系统调优&#xff0c;架构调优 云计算核心职能 搭建平台架构 日常运营保障 性能效率优化 相关工具 代…

【SQL】601. 体育馆的人流量(with as 临时表;id减去row_number()思路)

前述 知识点学习&#xff1a; with as 和临时表的使用12、关于临时表和with as子查询部分 题目描述 leetcode题目&#xff1a;601. 体育馆的人流量 思路 关键&#xff1a;如何确定id是连续的三行或更多行记录 方法一&#xff1a; 多次连表&#xff0c;筛选查询方法二&…

护眼灯什么价位的好用?推荐五款好价护眼台灯

如今&#xff0c;我们不难发现许多年轻人早早地就戴上了眼镜&#xff0c;近视问题日益严重。在改善近视问题的众多因素中&#xff0c;营造适宜的照明环境&#xff0c;特别是选择一款合适的护眼台灯&#xff0c;显得尤为重要。然而&#xff0c;对于初次选购护眼台灯的人来说&…

vue+Nodejs+Koa搭建前后端系统(九)-- 上传图片

web2.0的到来使网页世界正式进入了寒武纪&#xff0c;各式各样的多媒体资源屡见不鲜&#xff0c;上传资源变得刻不容缓&#xff01; 前言 本文是在该系列的基础上&#xff0c;针对前后端代码的修改。 准备 HTTP上传图片时Content-Type值常见的有2种&#xff1a;application…

解决:chrome无痕模式下找不到插件问题

如需在 Chrome 浏览器或 ChromeOS 设备上以无痕模式使用扩展程序&#xff0c;请执行以下操作&#xff1a; 在新的无痕式窗口中&#xff0c;打开 chrome://extensions。找到要在无痕模式下使用的扩展程序。点击详情。开启在无痕模式下启用。 此时打开无痕模式&#xff0c;就能看…

经营分析怎么做?详解企业月度经营分析的思路与方法

企业经营分析是企业成功的关键之一&#xff0c;无论企业规模大小&#xff0c;都需要通过系统性的数据分析来指导经营决策。这一过程不仅仅是对集团大局数据的简单处理&#xff0c;还包括对市场、客户、生产、财务、运营、项目进展、人效等多个方面数据的全面审视。通过深入分析…

【微信小程序】传参存储

目录 一、本地数据存储 wx.setStorage wx.setStorageSync 1.1、异步缓存 存取数据 1.2、同步缓存 存取数据 二、使用url跳转路径携带参数 2.1、 wx.redirectTo({}) 2.2、 wx.navigateTo({}) 2.3、 wx.switchTab({}) 2.4 、wx.reLaunch({}) 2.5、组件跳转 三、…

解压常见_gzip:stdin:not in gzio format:怀疑下文件是否损坏

此次的主角文件是&#xff1a;pin-2.14-71313-gcc.4.4.7-linux.tar.gz 结论&#xff1a;文件后缀没问题&#xff0c;就先怀疑下是不是文件损坏了 ls指令看不出任何端倪 文件名、后缀都正常 解压出现报错 瞅瞅文件大小 du -h <文件名> 呦呵 4kb&#xff0c;和应该的大…

Android studio Gradle下载失败,如何手动配置解决该问题详解

前些天发现了一个蛮有意思的人工智能学习网站,8个字形容一下"通俗易懂&#xff0c;风趣幽默"&#xff0c;感觉非常有意思,忍不住分享一下给大家。 &#x1f449;点击跳转到教程 前言&#xff1a; 今天在打开公司一个项目时&#xff0c;突然要重新下载相关的gradle&am…

在表格中循环插入表单

<template><div class"key">{{ruleForm.casesRange}}<el-form label-position"top" :model"ruleForm" refruleForm><el-form-item label"这个表格怎么写"><el-table :data"tableData" border>…

【rk3229 android7.1.2 替换默认输入法】

问题平台描述 问题描述解决方法 郑重声明:本人原创博文&#xff0c;都是实战&#xff0c;均经过实际项目验证出货的 转载请标明出处:攻城狮2015 Platform: Rockchip CPU:rk3229 OS:Android 7.1.2 Kernel: 3.10 问题描述 国内客户&#xff0c;觉得安卓自带的输入法不好用&#x…

Ping工作原理

文章目录 目的ping网络协议 OSIICMP什么是ICMP作用功能报文类型查询报文类型差错报文类型ICMP 在 IPv4 和 IPv6 的封装ICMP 在 IPv4 协议中的封装ICMP 在 IPv6 协议中的封装ICMP 头部日常ping 排除步骤ping 查询报文使用code扩展目的 本文主要是梳理ping的工作原理- 揭开 ICMP…

项目实战-tpshop商城项目

项目实战-tpshop商城项目 环境部署准备软件工具准备远程连接测试远程连接测试-查看虚拟机IP地址远程连接测试-检测本机与虚拟机是否连通远程连接测试-通过远程工具连接linux服务器 常见问题处理 环境部署项目技术架构介绍部署tpshop项目-tpshop验证数据库验证用户信息表熟悉商品…

【C语言】内存函数

1. memcpy 使⽤和模拟实现 void * memcpy ( void * destination, const void * source, size_t num ); • 函数memcpy从source的位置开始向后复制num个字节的数据到destination指向的内存位置。 • 这个函数在遇到 \0 的时候并不会停下来。 • 如果source和destination有任…

Java面试——Netty

优质博文&#xff1a;IT-BLOG-CN 一、BIO、NIO 和 AIO 【1】阻塞 IO(Blocking I/O)&#xff1a; 同步阻塞I/O模式&#xff0c;当一条线程执行 read() 或者 write() 方法时&#xff0c;这条线程会一直阻塞直到读取一些数据或者写出去的数据已经全部写出&#xff0c;在这期间这条…

数据库-第十一章 并发控制【期末复习|考研复习】

前言 总结整理不易&#xff0c;希望大家点赞收藏。 给大家整理了一下数据库系统概论中的重点概念&#xff0c;以供大家期末复习和考研复习的时候使用。 参考资料是王珊老师和萨师煊老师的数据库系统概论(第五版)。 数据库系统概论系列文章传送门&#xff1a; 第一章 绪论 第二/…

使用npm版本管理工具解决npm 的EACCES permissions errors when installing packages globally错误

EACCES错误通常表示“权限被拒绝”&#xff0c;意味着您没有足够的权限来执行某个操作。在计算机领域&#xff0c;尤其是在文件系统和程序安装中&#xff0c;这个错误很常见。以下是可能导致EACCES错误的原因以及相应的解决方法&#xff1a; 文件系统权限&#xff1a;当您尝试…

C++的学习

代码练习 输入一个字符串&#xff0c;统计其中大写字母、小写字母、数字、空格以及其他字符的个数 #include <iostream>using namespace std;int main() {cout << "请输入一个字符串" << endl;string str;getline(cin,str);int capital 0;int l…

快速搭建Vue前端框架

快速搭建Vue前端框架 安装Vue Vue官方安装过程:https://cli.vuejs.org/zh/guide/installation.html 二.创建Vue工程 2.2 安装淘宝镜像 安装淘宝镜像&#xff08;会让你安装Vue的速度加快&#xff09;&#xff1a; npm config set registry https://registry.npm.taobao.or…

Redis常见数据类型下

目录 Hash 哈希 常用指令 HSET HGET HEXISTS HDEL HKEYS HVALS HGETALL HMGET 内部编码 Hash类型和关系型数据库 缓存方式对比 List 列表 特点 常用命令 LPUSH LPUSHX RPUSH RPUSHX LRANGE LPOP / RPOP LINDEX LINSERT 阻塞(BLOCK)版…