当前位置: 首页 > news >正文

行政单位网站信息建设政策佛山南海网站建设

行政单位网站信息建设政策,佛山南海网站建设,网站品牌高端定制,郑州做网站网络公司重构的流程1.新建项目,确定脚手架版本2.项目整体迁移3.重构路由,axios,element-plus等项目所需要的依赖4.迁移组件内容(需要的配置项移步到5目录and6目录)4-1.Login页面4-2. Home页4-3.Students管理内部的页面4-3-1.studentList(学生列表)4-3-2.InfoList(信息列表)4-3-3.InfoLi… 重构的流程1.新建项目,确定脚手架版本2.项目整体迁移3.重构路由,axios,element-plus等项目所需要的依赖4.迁移组件内容(需要的配置项移步到5目录and6目录)4-1.Login页面4-2. Home页4-3.Students管理内部的页面4-3-1.studentList(学生列表)4-3-2.InfoList(信息列表)4-3-3.InfoLists(信息管理)4-3-4.WorkList(作业列表页)4-3-5.WorkMenu(作业管理页)5.迁移到vue3中所用到的组件5-1.面包屑组件(Breadcrumb)5-2.侧边栏 组件(Menu)5-3.头部组件(Header)5-4.分页组件(pageing)5-5.页尾组件(footer)6.迁移到vue3中所用到的模块6-1.setToken.js模块6-2.table.js模块6-3.vaildata.js正则模块7.总结:1.新建项目,确定脚手架版本 1-1.新建项目 npm create vite (filename)1-2.查看脚手架版本是否是3.0.0版本,如果是则安装成功,否则安装失败 2.项目整体迁移 把vue2中所要用到的组件以及文件,图片迁移到vue3的组件内 3.重构路由,axios,element-plus等项目所需要的依赖 3-1.下载依赖可以使用两种方式 3-1-1:将依赖一次性下载完成 npm i axios,element-plus,vue-router,sass-loader,qs, echarts,font-awesome,vite-aliases3-1-2:使用那个就下载那个的依赖包 npm i //下载依赖 npm i axios //下载请求 npm i element-plus //下载element-plus npm i vue-router //下载路由 npm i sass-loader //下载sass npm i qs //下载qs方法 npm i echarts //下载echarts npm i font-awesome //下载图标库 npm i vite-aliases //下载的依赖文件下载完成移步4目录看修改vue2转换vue3的组件 4.迁移组件内容(需要的配置项移步到5目录and6目录) 4-1.Login页面 templatediv classloginel-card classbox-card!-- 这里的template只是为了承载插槽 #header--template #headerdiv classclearfixspan通用后台管理器/span/div/templateel-form :modelform status-icon refform label-width100px classdemo-ruleForm :rulesrulesel-form-item label用户名 propnameel-input typetext v-modelform.name autocompleteoff/el-input/el-form-itemel-form-item label密码 proppasswordel-input v-modelform.password/el-input/el-form-itemel-form-itemel-button typeprimary clicklogin(form)登录/el-button/el-form-item/el-form/el-card/div /templatescript import { login } from /api/api.js import { nameRule, passRule } from /utils/validate.js import { setToken } from /utils/setToken.js; export default {name: Login,data() {return {form: {name: admins,password: Dx1212$,},rules: {name: [{ validator: nameRule, required: true, trigger: blur },],password: [{ validator: passRule, required: true, trigger: blur }],}}},methods: {login(form) {this.$refs[form].validate((valid) {if (valid) {login(this.form).then((res) {if (res.data.status 200) {setToken(token, res.data.token);setToken(username, this.form.name);this.$message({ message: res.data.message, type: success });location.href /Home}})} else {// console.error(this.form)}})},},created() {// 记录url地址栏中路由信息// console.log(this.$route.matched)} }; /scriptstyle langscss .login {width: 100%;height: 100%;position: absolute;background: url(../assets/bg.jpg);.box-card {width: 450px;margin: 200px auto;background: #65768557;.clearfix {//标题font-size: 34px;color: white;}.el-button {//按钮width: 100%;}.el-form-item__label {color: white;}} } /style4-2. Home页 templatediv classhome!-- 头部 --Header/Header!-- 主体部分 --el-container classcontent!-- 左侧 --Menu/Menu!-- 右侧 --el-containerel-main!-- 面包屑 --Bread/Breaddiv classcountrouter-view/router-view/div/el-main!-- 尾部 --el-footerFooter/Footer/el-footer/el-container/el-container/div /templatescript import Header from ./common/Header.vue; import Bread from ./common/Breadcrumb.vue; import Menu from ./common/Menu.vue; import Footer from ./common/Footer.vue; export default {name: home,props: {msg: String},components: {Header,Bread,Menu,Footer},created() {console.log(this.$route.matched)} } /script!-- Add scoped attribute to limit CSS to this component only -- style scoped langscss .home {width: 100%;height: 100%;.content {position: absolute;width: 100%;top: 60px;bottom: 0;.count {margin: 20px 0px;}} } /style 4-3.Students管理内部的页面 4-3-1.studentList(学生列表) templatediv!-- 查询 --el-form :inlinetrue :modelformInline classdemo-form-inline sizesmall alignleftel-form-item label姓名el-input v-modelformInline.name placeholder请输入姓名/el-input/el-form-itemel-form-itemel-button typeprimary clickfind查询/el-button/el-form-itemel-form-itemel-button typeprimary clickreset重置/el-button/el-form-item/el-form!-- 表格 --!--1:0-9 2:10-19 3:20-29 slice(当前页数-1) *每页的条数,当前页数*当前的条数--el-table v-loadingloading border :datacompData stylewidth: 100%el-table-column propname label姓名 aligncenter/el-table-columnel-table-column propsex_text label性别 aligncenter/el-table-columnel-table-column propage label年龄 aligncenter/el-table-columnel-table-column propnumber label学号 aligncenter/el-table-columnel-table-column propclass label班级号 aligncenter/el-table-column!-- 判断是否入学 --el-table-column propstate_text label状态 aligncenter/el-table-columnel-table-column propaddress label地址 aligncenter/el-table-columnel-table-column propphone label联系方式 aligncenter/el-table-columnel-table-column label操作 width120px aligncenter!-- 相当于ref --template slot-scopescopeel-button typeprimary sizesmall iconDelete clickdel(scope.row)/el-button/template/el-table-column/el-table!-- 分页 --el-cardel-pagination size-changehandleSizeChange current-changehandleCurrentChange :current-pagecurrentPage:page-sizes[5, 10, 20, 30, 50] :page-sizepageSize layouttotal, sizes, prev, pager, next, jumper:totaltotal/el-pagination/el-card /div /templatescript setup import { student, studentDel } from ../../api/api; import { ref, reactive, computed } from vue import service from ../../api/service;let tableData reactive([])//表格的总数据 let formInline reactive({//查询name: }) // console.log(wewe, formInline.name); let total ref(0) //总条数 let pageSize ref(10)//每页显示的数量 let currentPage ref(1)//当前页 let loading ref(true)//加载遮罩层 getData()let compData computed(() {// console.log(tableData);return tableData.slice((currentPage.value - 1) * pageSize.value,//起点currentPage.value * pageSize.value//终点(数据取在终点的前一个结束)) })function handleSizeChange(val) {//修改每页显示的数量pageSize.value val;currentPage.value 1;//每次修改完成之后,回到当前第一页 } function handleCurrentChange(val) { //修改当前页currentPage.value val; } // 获取数据 function getData(params) {console.log(params);student(params).then((res) {if (res.data.status 200) {tableData.length 0tableData.push(...res.data.data)total.value res.data.total;tableData.forEach((item) {// 尽量不要去修改原数据,因为后续的使用会造成影响item.sex 1 ? (item.sex_text 男) : (item.sex_text 女);// 字符串的话要是用 不可以使用item.state 1?(item.state_text 已入学) : item.state 2?(item.state_text 未入学) : (item.state_text 休学中);})loading.value false}}) } // 删除 function del(row) {studentDel(row.id).then((res) {if (res.data.status 200) {message({ message: 数据删除成功, type: success });// 重新获取数据getData();// console.log(getData())}}) } // 查询 function find() {//根据姓名显示数据getData(formInline)// console.log(tableData) } // 重置 function reset() {formInline reactive({});getData(formInline.name) } /scriptstyle langscss scoped .demo-form-inline {padding-left: 10px; }.el-card {margin-top: 20px; } /style4-3-2.InfoList(信息列表) templatediv classinfolist!-- 新增按钮 --el-form :inlinetrue classdemo-form-inline sizesmall alignleftel-form-itemel-button typeprimary clickassStudent新增/el-button/el-form-item/el-form!-- 信息列表 --el-table :datacompData border stylewidth: 100% v-loadingloadingel-table-column propname label姓名 aligncenter/el-table-columnel-table-column propsex_text label性别 aligncenter/el-table-columnel-table-column propage label年龄 aligncenter/el-table-columnel-table-column proptime label入学时间 aligncenter/el-table-columnel-table-column propfather label父亲 aligncenter/el-table-columnel-table-column propmather label母亲 aligncenter/el-table-columnel-table-column propphone label手机号 aligncenter/el-table-columnel-table-column propaddress label地址 aligncenter/el-table-columnel-table-column label操作 width120px aligncenter!-- 相当于ref --template #defaultscopeel-button typeprimary sizesmall :iconEdit clickedit(scope.row)/el-buttonel-button typeprimary sizesmall :iconDelete clickdel(scope.row)/el-button/template/el-table-column/el-table!-- 课堂小练习:完成分页效果,效果详情参考studentList --el-cardel-pagination size-changehandleSizeChange current-changehandleCurrentChange :current-pagecurrentPage:page-sizes[5, 10, 20, 30, 50] :page-sizepageSize layouttotal, sizes, prev, pager, next, jumper:totaltotal/el-pagination/el-card!-- 复用提示框 --el-dialog width450px :titlestate ? 添加学生信息 : 修改学生信息 :model-valuedialogFormVisibleel-form :modelform refformRefel-form-item label姓名 propname :label-widthformLabelWidthel-input v-modelform.name autocompleteoff/el-input/el-form-itemel-form-item label性别 propsex :label-widthformLabelWidthel-radio v-modelform.sex label1男/el-radioel-radio v-modelform.sex label2女/el-radio/el-form-itemel-form-item label年龄 propage :label-widthformLabelWidthel-input v-modelform.age autocompleteoff/el-input/el-form-itemel-form-item label联系方式 propphone :label-widthformLabelWidthel-input v-modelform.phone autocompleteoff/el-input/el-form-itemel-form-item label父亲 propfather :label-widthformLabelWidthel-input v-modelform.father autocompleteoff/el-input/el-form-itemel-form-item label母亲 propmather :label-widthformLabelWidthel-input v-modelform.mather autocompleteoff/el-input/el-form-itemel-form-item label入学时间 proptime :label-widthformLabelWidthel-date-picker v-modelform.time typedate placeholder选择日期 formatyyyy 年 MM 月 dd 日value-formatyyyy-MM-dd/el-date-picker/el-form-itemel-form-item label家庭住址 propaddress :label-widthformLabelWidthel-input v-modelform.address autocompleteoff/el-input/el-form-item/el-formdiv slotfooter classdialog-footerel-button clickcloseInfo(form)取 消/el-buttonel-button typeprimary clicksure(form)确 定/el-button/div/el-dialog /div /templatescript setup import { Delete, Edit, Search, Share, Upload } from element-plus/icons-vue import { getInfo, info, infoDel } from ../../api/api; import { ref, reactive, computed } from vue; import service from ../../api/service; import { ElMessage, ElMessageBox } from element-plus// export default { // data() { // return { let tableData reactive([])//信息列表数据 let total ref(0)//总数 let currentPage ref(1)//当前页 let pageSize ref(10)//每页数量/ let state ref(false)//区分新增还是修改 let dialogFormVisible ref(false)//判断提示框显示隐藏 let formLabelWidth ref(80px)//默认宽度 // 对象的setter 可以创建属性,可以去创建属性,再去赋值 // getter 会直接去找该属性,如果没有属性,报错 let form reactive({name: ,age: ,sex: 1,father: ,mather: ,phone: ,time: ,address: ,id: 1 }) let loading ref(true)getData()let compData computed(() {console.log(erer, compData)return tableData.slice((currentPage.value - 1) * pageSize.value,//起点currentPage.value * pageSize.value//终点(数据取在终点的前一个结束)) })function handleSizeChange(val) {//修改每页显示的数量pageSize.value val;currentPage.value 1;//每次修改完成之后,回到当前第一页 } function handleCurrentChange(val) { //修改当前页currentPage.value val; } // 获取信息列表数据 function getData() {getInfo().then((res) {console.log(res)if (res.data.status 200) {tableData.length 0tableData.push(...res.data.data)total.value res.data.totalconsole.log(tableData)tableData.forEach((item) {item.sex 1 ? (item.sex_text 男) : (item.sex_text 女)})loading.value false}}) } // 新增数据 function assStudent() {//1.弹出 提示框dialogFormVisible.value true;// 修改文字state.value true;let i 0form reactive({name: ,age: ,sex: 1,father: ,mather: ,phone: ,time: ,address: ,id: i}) } function edit(row) {console.log(row);form reactive({ ...row });state.value false;//切换对话框标题dialogFormVisible.value true } const formRef ref(null) // 取消按钮 function closeInfo() {formRef.value.resetFields();dialogFormVisible.value false; } // 确定按钮 function sure() {console.log(1111);dialogFormVisible.value false// 是否复合正则要求formRef.value.validate(valid {if (valid) {// 判断是新增还是修改if (state.value) {//新增info(post, form).then((res) {// console.log(form.value, 111);if (res.data.status 200) {getData()dialogFormVisible.value false;ElMessage({ type: success, message: res.data.message })}})} else {//修改info(put, form).then((res) {if (res.data.status 200) {getData();dialogFormVisible.value false;ElMessage({ type: success, message: res.data.message })}})}}})} function del(row) {// alert(你确定要删除吗?, 提示, {// confirmButtonText: 确定,// callback: () {// console.log(111)// infoDel(row.id).then(res {// if (res.data.status 200) {// getData()// ElMessage({ type: success, message: res.data.message })// }// })// }// })ElMessageBox.alert(This is a message, Title, {// if you want to disable its autofocus// autofocus: false,confirmButtonText: OK,callback: () {infoDel(row.id).then(res {if (res.data.status 200) {getData()ElMessage({ type: success, message: res.data.message })}})},}) } /scriptstyle langscss scoped .demo-form-inline {padding-left: 10px; }.el-card {margin-top: 20px; } /style4-3-3.InfoLists(信息管理) templatediv classinfolist!-- 新增按钮 --el-form :inlinetrue classdemo-form-inline sizesmall alignleftel-form-itemel-button typeprimary clickassStudent新增/el-button/el-form-item/el-form!-- 信息列表 --el-table :datacompData border stylewidth: 100% v-loadingloadingel-table-column propname label姓名 aligncenter/el-table-columnel-table-column propsex_text label性别 aligncenter/el-table-columnel-table-column propage label年龄 aligncenter/el-table-columnel-table-column proptime label入学时间 aligncenter/el-table-columnel-table-column propfather label父亲 aligncenter/el-table-columnel-table-column propmather label母亲 aligncenter/el-table-columnel-table-column propphone label手机号 aligncenter/el-table-columnel-table-column propaddress label地址 aligncenter/el-table-columnel-table-column label操作 width120px aligncenter!-- 相当于ref --template #defaultscopeel-button typeprimary sizesmall :iconEdit clickedit(scope.row)dfgh/el-buttonel-button typeprimary sizesmall :iconDelete clickdel(scope.row)/el-button/template/el-table-column/el-table!-- 课堂小练习:完成分页效果,效果详情参考studentList --el-cardel-pagination size-changehandleSizeChange current-changehandleCurrentChange :current-pagecurrentPage:page-sizes[5, 10, 20, 30, 50] :page-sizepageSize layouttotal, sizes, prev, pager, next, jumper:totaltotal/el-pagination/el-card!-- 复用提示框 --el-dialog width450px :titlestate ? 添加学生信息 : 修改学生信息 :model-valuedialogFormVisibleel-form :modelform reffromel-form-item label姓名 propname :label-widthformLabelWidthel-input v-modelform.name autocompleteoff/el-input/el-form-itemel-form-item label性别 propsex :label-widthformLabelWidthel-radio v-modelform.sex label1男/el-radioel-radio v-modelform.sex label2女/el-radio/el-form-itemel-form-item label年龄 propage :label-widthformLabelWidthel-input v-modelform.age autocompleteoff/el-input/el-form-itemel-form-item label联系方式 propphone :label-widthformLabelWidthel-input v-modelform.phone autocompleteoff/el-input/el-form-itemel-form-item label父亲 propfather :label-widthformLabelWidthel-input v-modelform.father autocompleteoff/el-input/el-form-itemel-form-item label母亲 propmather :label-widthformLabelWidthel-input v-modelform.mather autocompleteoff/el-input/el-form-itemel-form-item label入学时间 proptime :label-widthformLabelWidthel-date-picker v-modelform.time typedate placeholder选择日期 formatyyyy 年 MM 月 dd 日value-formatyyyy-MM-dd/el-date-picker/el-form-itemel-form-item label家庭住址 propaddress :label-widthformLabelWidthel-input v-modelform.address autocompleteoff/el-input/el-form-item/el-formdiv slotfooter classdialog-footerel-button clickcloseInfo(form)取 消/el-buttonel-button typeprimary clicksure(form)确 定/el-button/div/el-dialog /div /templatescript setup import { Delete, Edit, Search, Share, Upload } from element-plus/icons-vue import { info, infoDel } from ../../api/api; import { getData, changInfo, delData } from ../../utils/table; import service from ../../api/service; import { computed, ref, toRef, reactive } from vue; let tableData reactive([])//信息列表数据 let total ref(0)//总数 let currentPage ref(1)//当前页 let pageSize ref(10)//每页数量 let state ref(false)//区分新增还是修改 let dialogFormVisible ref(false)//判断提示框显示隐藏 let formLabelWidth ref(80px)//默认宽度 // 对象的setter 可以创建属性,可以去创建属性,再去赋值 // getter 会直接去找该属性,如果没有属性,报错 var i 0 let form reactive({name: ,age: ,sex: 1,father: ,mather: ,phone: ,time: ,address: ,id: i }) let loading ref(true); const datas toRef(tableData)._object let obj {datas,total,loading,service } getData(obj, /info);let compData computed(() {return tableData.slice((currentPage.value - 1) * pageSize.value,//起点currentPage.value * pageSize.value//终点(数据取在终点的前一个结束)) }) function handleSizeChange(val) {//修改每页显示的数量pageSize.value val;currentPage.value 1;//每次修改完成之后,回到当前第一页 } function handleCurrentChange(val) { //修改当前页currentPage.value val; } // 获取信息列表数据// 新增数据 function assStudent() {// console.log(ghj);//1.弹出 提示框dialogFormVisible.value true;// 修改文字state.value true;let i 0form reactive({name: ,age: ,sex: 1,father: ,mather: ,phone: ,time: ,address: ,id: i}) } function edit(row) {// console.log(121212, row);form.value reactive({ ...row });state.value false;//切换对话框标题dialogFormVisible.value true } const from ref(null) // 取消按钮 function closeInfo(form) {from.resetFields();dialogFormVisible.value false; } // 确定按钮 function sure() {console.log(11)dialogFormVisible.value false// 是否复合正则要求let method ;const datas toRef(tableData)._objectlet mm {service,dialogFormVisible,datas,total,loading,service}state.value ? method post : method put;changInfo(mm, method, /info, form, getData);} function del(row) {// console.log(11111, row);const datas toRef(tableData)._objectlet obj3 {row,service,datas,total,loading,}// console.log(1111, row)delData(obj3, /info, row.id, getData); }/scriptstyle langscss scoped .demo-form-inline {padding-left: 10px; }.el-card {margin-top: 20px; } /style4-3-4.WorkList(作业列表页) templatediv classworkList!-- 信息列表 --el-table :datatableData v-loadingloading border stylewidth: 100%el-table-column propid label用户id aligncenter/el-table-columnel-table-column propuserId_text label所属班级 aligncenter/el-table-column6el-table-column proptitle label作业名称 aligncenter/el-table-columnel-table-column propcompleted_text label完成情况 aligncenter/el-table-column/el-table!-- 分页 --el-pagination size-changehandleSizeChange current-changehandleCurrentChange :current-pagepage:page-sizes[10, 20, 30, 50, 100] :page-sizesize layouttotal, sizes, prev, pager, next, jumper:totaltotal/el-pagination /div /templatescript setupimport service from ../../api/service.js import { getTableData } from /utils/table.js import { ref, reactive } from vue; let tableData reactive([]) let page ref(1) let size ref(10) let total ref(0) let loading ref(false) // 通过接口,请求数据 // getTable() // const datas tableData const obj reactive({service,tableData,total,loading }) let comp { completed: [已完成, 未完成], suerId: [猪猪侠一班, 猪猪侠二班, 猪猪侠三班, 猪猪侠四班] } getTableData(obj, /works, { page: page.value, size: size.value }, [completed, userId], comp) // console.log(getTable())function handleSizeChange(val) {console.log(每页 ${val} 条);size.value valpage.value 1;let comp { completed: [已完成, 未完成], suerId: [猪猪侠一班, 猪猪侠二班, 猪猪侠三班, 猪猪侠四班] }getTableData(obj, /works, { page: page.value, size: size.value }, [completed, userId], comp) } function handleCurrentChange(val) {console.log(当前页: ${val});console.log(page);page.value vallet comp { completed: [已完成, 未完成], suerId: [猪猪侠一班, 猪猪侠二班, 猪猪侠三班, 猪猪侠四班] }getTableData(obj, /works, { page: page.value, size: size.value }, [completed, userId], comp) }// computed: {// compData() {// return this.tableData.slice(// (this.page - 1) * this.size,//起点// this.page * this.size//终点(数据取在终点的前一个结束)// )// }// }/scriptstyle langscss scoped/style4-3-5.WorkMenu(作业管理页) templatediv classworkList!-- 信息列表 --el-table :datatableData v-loadingloading border stylewidth: 100%el-table-column propid label用户id aligncenter/el-table-columnel-table-column propuserId_text label所属班级 aligncenter/el-table-columnel-table-column proptitle label作业名称 aligncenter/el-table-columnel-table-column propcompleted_text label完成情况 aligncenter/el-table-column/el-tablePage :totaltotal :urlurl :objobj/Page /div /templatescript setupimport service from /api/service.jsimport Page from ../common/Pageing.vue; import { ref, reactive } from vue; // data() { // return { let tableData reactive([]) let total ref(0) let loading ref(true) let url ref(/works)let obj {tableData,total,loading,url,service }// }// },// mounted() {// // console.log(this.tableData)// }// computed: {// compData() {// return this.tableData.slice(// (this.page - 1) * this.size,//起点// this.page * this.size//终点(数据取在终点的前一个结束)// )// }// }// } /scriptstyle langscss scoped/style5.迁移到vue3中所用到的组件 5-1.面包屑组件(Breadcrumb) templatedivel-cardel-breadcrumb separator-classel-icon-arrow-rightel-breadcrumb-item :to{ path: /home }首页/el-breadcrumb-item!-- 课堂小练习:给各级的面包屑,添加路由跳转的功能 --el-breadcrumb-item v-for(item, index) in $route.matched :ueitem :keyindex:to{ name: item.name }{{ item.name }}/el-breadcrumb-item/el-breadcrumb/el-card/div /templatescript setup import { ref } from vue let ue ref() /scriptstyle langscss scoped/style5-2.侧边栏 组件(Menu) templatediv classmenuel-aside width203pxel-menu router default-active2 classel-menu-vertical-demo background-color#2578B5text-color#fff active-text-color#ffd04btemplate v-for(item, index) in menusel-sub-menu :indexindex :keyindex v-if!item.hiddentemplate #titlei :classitem.iconClass stylemargin-right:20px/ispan{{ item.name }}/span/templateel-menu-item v-for(child, index) in item.children :keyindex :indexchild.pathel-menu-item :indexchild.pathi :classchild.iconClass stylemargin-right:10px/i{{ child.name }}/el-menu-item/el-menu-item/el-sub-menu/template/el-menu/el-aside/div /templatescript setup import { useRouter } from vue-router; const router useRouter(); const menus router.options.routes; // 默认展开项 const activePach router.currentRoute.value.path;/scriptstyle langscss scoped .menu {// 谷歌中的滚动条::-webkit-scrollbar {display: none;}.el-aside {height: 100%;.el-menu {height: 100%;.fa {margin-right: 10px;}}.el-submenu .el-menu-item {min-width: 0;}} } /style5-3.头部组件(Header) templatediv classheaderel-headerdiv classtitle通用管理系统/divdiv{{ name }}/div/el-header/div /templatescript setup import { getToken } from /utils/setToken.js; import { ref, onMounted } from vue;let name ref()name.value getToken(username)/scriptstyle langscss scoped .header {.el-header {background-color: #2578b5;color: white;line-height: 60px;display: flex;justify-content: space-between;.title {width: 200px;font-size: 24px;// background: #2578b5;}} } /style5-4.分页组件(pageing) !-- 这里整个文件是 组件化封装 -- templatediv!-- 分页 --el-pagination size-changehandleSizeChange current-changehandleCurrentChange :current-pagepage:page-sizes[10, 20, 30, 50, 100] :page-sizesize layouttotal, sizes, prev, pager, next, jumper:totaltotal :urlurl :objobj/el-pagination /div /templatescript setup import { getTableData } from /utils/table.js import { ref, onMounted } from vue; const props defineProps({url: String,total: Number,obj: Object })let page ref(1); let size ref(10);console.log(props.obj) onMounted(() {// 通过接口,请求数据// getTable()let comp { completed: [已完成, 未完成], suerId: [猪猪侠一班, 猪猪侠二班, 猪猪侠三班, 猪猪侠四班] }getTableData(props.obj, props.url, { page: page.value, size: size.value }, [completed, userId], comp) })function handleSizeChange(val) {// console.log(每页 ${val} 条);size.value val;page.value 1;let comp { completed: [已完成, 未完成], suerId: [猪猪侠一班, 猪猪侠二班, 猪猪侠三班, 猪猪侠四班] }getTableData(props.obj, props.url, { page: page.value, size: size.value }, [completed, userId], comp) } function handleCurrentChange(val) {// console.log(当前页: ${val});page.value vallet comp { completed: [已完成, 未完成], suerId: [猪猪侠一班, 猪猪侠二班, 猪猪侠三班, 猪猪侠四班] }getTableData(props.obj, props.url, { page: page.value, size: size.value }, [completed, userId], comp) }/scriptstyle langscss scoped/style5-5.页尾组件(footer) templatedivel-cardFrontend 2022 Casey/el-card/div /templatescript setup/scriptstyle langscss scoped/style6.迁移到vue3中所用到的模块 6-1.setToken.js模块 export function setToken(tokenKey, tokenValue) {return localStorage.setItem(tokenKey, tokenValue) }export function getToken(tokenKey) {return localStorage.getItem(tokenKey) }export function removeToken(tokenKey) {return localStorage.removeItem(tokenKey) }6-2.table.js模块 import { ElMessage, ElMessageBox } from element-plus; // 这个整个文件是 模块化 // 获取表格数据 export function getData(root, url, params) {// console.log(1112345031E481, root);root.service.get(url, { params: params || {} }).then((res) {if (res.data.status 200) {root.datas.length 0root.datas.push(...res.data.data)root.total.value res.data.totalroot.datas.forEach((item) {item.sex 1 ? (item.sex_text 男) : (item.sex_text 女)})root.loading.value false}}).catch((err) {throw err;}) } // 新增和修改的确定按钮封装 import qs from qs; export function changInfo(root, method, url, form, callback) {// 判断是新增还是修改// 转换数据类型 后端的数据有问题let data qs.stringify(form)root.service[method](url, data).then((res) {if (res.data.status 200) {callback(root, url);root.dialogFormVisible.value false;ElMessage({ type: success, message: res.data.message })}}).catch(err {// 直接在控制台上弹出错误throw err;}) } // 删除提示框封装 export function delData(root, url, id, callFun) {ElMessageBox.alert(你确定要删除吗?, 提示, {confirmButtonText: 确定,callback: () {console.log(root.service.delete(${url}/${id}), 2345678);root.service.delete(${url}/${id}).then(res {console.log(11111, res)if (res.data.status 200) {callFun(root, url)console.log(root, url, 111);ElMessage({ type: success, message: res.data.message })}})}})}// 作业列表,获取数据的封装 export function getTableData(root, url, params, arr, text_patams) {root.service.get(url, { params: params || {} }).then(res {// console.log(root);if (res.data.status 200) {root.tableData.length 0root.tableData.push(...res.data.data)root.total.value res.data.total// 外层循环 找到数组中的每一个对象root.tableData.map(item {// 内层循环 找到每一个对象中需要修改的属性arr.map((aItem, index) {// console.log(2, item, item[aItem], aItem, index, text_patams.completed[index])if (aItem completed) {item[aItem] ? item[aItem _text] text_patams.completed[index] : item[aItem _text] text_patams.completed[index 1]} else {if (item.userId 1) {item[aItem _text] 猪猪侠一班return false} else if (item.userId 2) {item[aItem _text] 猪猪侠二班return false} else if (item.userId 3) {item[aItem _text] 猪猪侠三班return false} else if (item.userId 4) {item[aItem _text] 猪猪侠四班return false} else if (item.userId 5) {item[aItem _text] 猪猪侠五班return false} else if (item.userId 6) {item[aItem _text] 猪猪侠六班return false} else if (item.userId 7) {item[aItem _text] 猪猪侠七班return false} else if (item.userId 8) {item[aItem _text] 猪猪侠八班return false} else if (item.userId 9) {item[aItem _text] 猪猪侠九班return false} else if (item.userId 10) {item[aItem _text] 猪猪侠十班return false}}})})// console.log(root.loading);// root.loadingroot.loading.value false}}).catch(err {throw err;}) } 6-3.vaildata.js正则模块 // 用户名匹配 export function nameRule(rule, value, callback) {let reg /(^[a-zA-Z0-9]{4,10}$)/if (value ) {callback(new Error(请输入用户名));} else if (!reg.test(value)) {callback(请输入4-10位的用户名)} else {callback();} }//密码正则匹配 export function passRule(rule, value, callback) {let reg /^\S*(?\S{6,12})(?\S*\d)(?\S*[A-Z])(?\S*[a-z])(?\S*[!#$%^*? ])\S*$/if (value ) {callback(new Error(请输入密码));} else if (!reg.test(value)) {callback(请输入6-12位带有数字大小写字符以及特殊符号)} else {callback();} }7.总结: 以上所属都是vue2迁移到vue3所用到的内容,有何不懂评论区问答!!!
http://www.hkea.cn/news/14592670/

相关文章:

  • 网页美工的设计要点seo关键词优化排名软件
  • 有哪些建设网站的做网站空间重要还是程序重要
  • 四川建设厅网站施工员证查询学网校app下载
  • 汽车最全的网站免费域名服务
  • 营销型网站建设的资讯佛山专业的网站建设公司
  • 做啥网站好网站开发环境介绍
  • 网站备案 个人 单位广州新建站
  • 如何开心设计一个网站科技公司属于什么行业
  • 网站适配怎么做wordpress主题带有推荐功能
  • 做网站要学什么c语言网站备案信息可以改吗
  • 网站设计教科书编程课程培训机构排名
  • mk厂手表网站凌云网小说
  • 让网站建设便宜到底杭州网站优化效果
  • 网站租金可以做办公费吗桂林网丫网业管理有限公司
  • 西安网站seo推广wordpress 书站
  • 佳木斯做微网站做兼职的设计网站有哪些
  • seo优化教程视频seo整站优化系统
  • 天工网官方网站代理公司注册商标
  • 汽油价格最新调整seo搜索引擎优化名词解释
  • 北京海淀房管局网站专业做国际网站的公司
  • 之梦做的网站后台修改栏目描述网站制作公司广州
  • 网站开发简历中国建筑人才网官网查询
  • 天津品牌网站建设是什么注册公司代理费用标准
  • 代运营网站山河集团建设有限公司网站
  • 网站开发 chrome浏览器崩溃用dw做php网站
  • 网站首页排版设计手机界面设计素材
  • 要建设网站重庆网站建设qq群
  • 石家庄园林绿化建设招标网站建一个团购网站
  • 想建个网站找谁网站建设_超速云建站
  • 潍坊网页网站制作哪个网站可以做头像的