组件互调
框架地址:https://github.com/nandy007/project_h5
路由部分 { path: ‘/hllr’, component: HLLRPage, //设置缓存 cache:true, }, static get tag(){ return ‘hllr’; } 页面一跳转,并重新加载组件 router.go({path: ‘/selectman’, isForce: true}); //接收页面二组件参数 fname(str){ //需展示值得添加 $(’#selectactor’).val(str) }
页面二 //组件传值 //aui-hllr:需传到组件return值 //页面一与create同级fname方法,names页面二需传递的值 document.querySelector(‘aui-hllr’).component.fname(names); //关闭当前页面,即页面二 history.go(-1);
本地缓存
//input type=text <input name="hlhmc" v-model="hlhmc" type="text" placeholder="" required > //input type=tel <input v-model="sjh" type="tel" maxlength="11" required > <input v-bind:value="sjh" name="sjh" type="hidden" required > //checkbox <input v-model="zjss" type="checkbox"> //select <label id="cat" class="pleft1" v-if="zjss"> <span class="stylespan" >合理化分类</span> <select id="md-category" name="hlhfl" v-model="hlhfl"> <option>请选择</option> <option v-for="item in items" v-bind:value='item.value'>{{item.text}}</option> </select> </label> //select下拉框 var fselect=[]; //本地存储 var localjson=[]; 去空数组 if(e2.text.trim()!= "") { fselect.push(e2); } //插入数据 sublocal:function(){ var localdata=JSON.stringify($("form").serializeArray()); localStorage.setItem('localjson',localdata); console.log(localdata) }, //本地存储 获取 getlocal:function(){ if(obj.hlhfl!=''){ obj.xian=true } //获取存储的参数 var ljson=[]; ljson = JSON.parse(localStorage.getItem('localjson')); // push之前先清空数组,防止重复添加 localjson.splice(0,localjson.length); $.each(ljson, function(e,e1) { if(e1.value=='true'){ this.value=true }else if(e1.value=='false'){ this.value=false } //跳转选择值之前若为空则不加该值,不然传过来的值会被置空 if(e1.value!=''){ localjson.push(e1.value); obj[e1.name]=e1.value; console.log(e1.name+'--'+e1.value); } }); },页面一
<ui> <div id="auiscrollerlr"> <aui-header> <aui-titlebar class="reverse"> <left-area> <aui-action type="back"><i class="icon auicon icon-arrowleft" style="color:white;"></i></aui-action> </left-area> <caption-area v-on:click="func.sublocal()"> <aui-text>合理化录入</aui-text> </caption-area> <right-area v-on:click="func.getlocal()"> <a> <i class="icon auicon icon-rdoadd" style="color:white;"></i> </a> </right-area> </aui-titlebar> </aui-header> <aui-scroller class="content" style="position: absolute; top: 45px; right: 0px; bottom: 0px;left: 0px;text-align: center; background-color:white;"> <form id="demo" style="display:none" mbsc-form> <div class="mbsc-form-group"> <label class="pleft1"> <span class="stylespan">合理化名称 </span> <input name="hlhmc" v-model="hlhmc" type="text" placeholder="" required > </label> </div> <div class="mbsc-form-group"> <label class="pleft1"> <span class="stylespan" >提出时间</span> <input name="tcsj" v-model="tcsj" id="md-starttime" type="text" placeholder="开始" required > </label> <label style="text-align:left;"> <span class="stylespan" style="text-align:left;" >自己实施</span> <input v-model="zjss" type="checkbox"> <input type="hidden" name="zjss" v-bind:value="zjss"> </label> <label id="cat" class="pleft1" v-if="zjss"> <span class="stylespan" >合理化分类</span> <select id="md-category" name="hlhfl" v-model="hlhfl"> <option>请选择</option> <option v-for="item in items" v-bind:value='item.value'>{{item.text}}</option> </select> </label> <label id="hlh_phone" class="pleft1"> <span class="stylespan" >手机号</span> <input v-model="sjh" type="text" maxlength="11" required > <input v-bind:value="sjh" name="sjh" type="hidden" required > </label> </div> <div class="mbsc-form-group" > <label class="pleft1"> <aui-text class="fl stylearea">现状说明(地点、现状缺点与不足)</aui-text> <textarea name="xzsm" v-model="xzsm" style="text-indent:2em;padding:0;"></textarea> </label> <label class="pleft1"> <aui-text class="fl stylearea">改进措施/预期效果</aui-text> <textarea name="gjcs" v-model="gjcs" style="text-indent:2em;padding:0;"></textarea> </label> <label class="pleft1"> <span class="stylespan">建议实施人员 </span> <input name="jyssry" v-model="jyssry" id="selectactor" v-on:click="func.manclick()" type="text" placeholder="请选择人员" required readonly='readonly'> </label> </div> <div class="mbsc-form-group"> <list-cell id="upimg" style="background-color:#fff;"> <aui-text class="fl">合理化建议附件</aui-text> <aui-button class="btn btn-primary btcss" v-on:click="func.fimg">附件上传</aui-button> <div id="filediv" style="display:none"></div> <img class="fileimg" src="./assets/imgs/upfile.jpg" v-on:click="func.fimg"> </list-cell> </div> </form> </aui-scroller> </div> </ui> <script> import '@auicomp/header/Header.aui'; import '@auicomp/button/Button.aui'; import '@auicomp/scroller/Scroller.aui'; import '@auicomp/titlebar/Titlebar.aui'; import '@auicomp/datetime/Datetime.aui'; import '@auiutil/mobiscroll3/css/mobiscroll.javascript.min.css'; import mobiscroll from '@auiutil/mobiscroll3/js/mobiscroll.javascript.min'; import Alert from '@auicomp/alert/Alert.aui'; import fetch from '@comm/utils/xfetch'; import { router } from '@auicomp/action/Action.aui'; import Actionsheet from '@auicomp/actionsheet/Actionsheet.aui'; import './Frame.aui'; export default class HLLRPage{ static get tag(){ return 'hllr'; } //接收上个组件参数 fname(str){ // obj.jyssry=str; console.log(str); $('#selectactor').val(str) } created () { mobiscroll.settings = { theme: 'ios', lang: 'zh', }; mobiscroll.form('#demo'); // window.onload=function(){ // obj.func.getlocal(); // } // alert('执行') //自己实施复选框 // var actio=document.getElementById("action"); // action.onclick=visibled; // function visibled(){ // var v=$('input[name="cat1"]:checked ').val(); // if(v=="on"){ // document.getElementById("cat").removeAttribute("style"); // }else{ // document.getElementById("cat").style.display="none"; // } // } var names = router.getQueryObj(location.search).names||router.getQueryObj().names; // if(names!=null&&names!=""){ // $("#selectactor").val(names); // } // 某个逻辑发起ajax post请求 var dj = []; //select下拉框 var fselect=[]; //本地存储 var localjson=[]; fetch({ appId: 'ci_test', url : 'http://ciurl/hlh_add.jsp', data: { // username: lname, // password: lpassword }, success: function(json){ //初始化有一个id var chushi=json.hideInfo[2].value; //进页面请求数据注入到select $.each(json.hlh_fenlei, function(e1, e2) { //select去除空值 if(e2.text.trim()!= "") { fselect.push(e2); } }) // $.each(dj, function(e, e1) { // $('#md-category').append("<option>" + e1.text + "</option>") // }) $("#hlh_phone input").val(json.pempMtel) }, error: function(rs){ Alert.show({ content: rs.errmsg+'未请求成功' }); } }); var obj = { items:fselect, zjss:false, hlhmc:'', tcsj:'', hlhfl:'', sjh:'', xzsm:'', gjcs:'', jyssry:'', func:{ //提交表单数据 // sublocal:function(){ // var localdata=JSON.stringify($("form").serializeArray()); // localStorage.setItem('localjson',localdata); // console.log(localdata) // }, //本地存储 获取 // getlocal:function(){ // if(obj.hlhfl!=''){ // obj.xian=true // } // obj.xian=true //获取存储的参数 // var ljson=[]; // ljson = JSON.parse(localStorage.getItem('localjson')); // push之前先清空数组,防止重复添加 // localjson.splice(0,localjson.length); // $.each(ljson, function(e,e1) { // if(e1.value=='true'){ // this.value=true // }else if(e1.value=='false'){ // this.value=false // } //跳转选择值之前若为空则不加该值,不然传过来的值会被置空 // if(e1.value!=''){ // localjson.push(e1.value); // obj[e1.name]=e1.value; // console.log(e1.name+'--'+e1.value); // } // }); // }, manclick:function(){ //跳转之前先获取表单数据 // obj.func.sublocal(); // router.go('/selectman'); router.go({path: '/selectman', isForce: true}); }, fimg: function() { Actionsheet.show({ list: [{ text: '拍照上传', handler: function() { appnest.photo.camera({ width: 1080, // 拍照后生成图片宽度 success: function(res) { var img = res.imagePath; var thumbnailPath = res.thumbnailPath; // $("filediv").html('<input type="hidden" name="Filedata" subval value="'+img+'"/>'); appnest.photo.getBase64Image({ imagePath: img, // 图片全路径 success: function(res) { var base64Image = res.data; // 返回图片的base64编码数据 $('.fileimg').attr('src', base64Image); obj.file.upfile(img) }, fail: function(res) { Alert.show({ content: res.errMsg }); } }); }, fail: function(res) { Alert.show({ content: res.errMsg }); } }); } }, { text: '图库选择', handler: function() { appnest.photo.album({ crop: true, cropWidth: 300, success: function(res) { var img = res.imagePath; var thumbnailPath = res.thumbnailPath; // $("filediv").html('<input type="hidden" name="Filedata" subval value="'+img+'"/>'); appnest.photo.getBase64Image({ imagePath: img, // 图片全路径 success: function(res) { var base64Image = res.data; // 返回图片的base64编码数据 $('.fileimg').attr('src', base64Image); obj.file.upfile(img); }, fail: function(res) { Alert.show({ content: res.errMsg }); } }); }, fail: function(res) { Alert.show({ content: res.errMsg }); } }); } } ], doCancel: function() { console.log('点了取消'); } }); }, file: { upfile: function(img) { //发起请求 fetch({ appId: 'ci_test', url: 'http://ciurl/bizProp/upload', success: function(data1) { alert(JSON.stringify(data1)) }, error: function(rs) { Alert.show({ content: rs.errMsg }); } }); } } } } $('#auiscrollerlr').render(obj) // if(names!=''){ // obj.func.getlocal(); // console.log('1') // } //拍照上传 // var objimg = { // fupimg: { // } // } // $('#upimg').render(objimg); // var objfile = { // // fujiantjurl:'', // } // $('#upimg').render(objimg); } } </script> <style> .stylespan{ height:44px; line-height:44px; width:110px; } .stylearea{ height:44px; line-height:44px; width:100%; text-align: left; } a[class="button-selectimg"]{ padding:4px 6px; border:1px dashed #00A2D4; border-radius:2px; } .pleft1{ padding-left: 1em !important; } /* select{ height: 20px; font-size: 15px; border: 0; -moz-appearance:none; -webkit-appearance:none; padding-right: 14px; padding-left:10px; background: url(../assets/imgs/arrow.png) no-repeat scroll right center transparent; } */ .fileimg { width: 100px; height: 100px; margin-top: 40px; margin-left: 50px; } .fl{ float: left; } .btcss { top: 10px !important; right: 25% !important; transform: none !important; } </style>页面二
<ui> <aui-header> <aui-titlebar class="reverse"> <left-area> <aui-action type="back"><i class="icon auicon icon-arrowleft" style="color:white;"></i></aui-action> </left-area> <caption-area> <aui-text>人员选择</aui-text> </caption-area> </aui-titlebar> </aui-header> <aui-scroller id="namescroller" class="content" style="position: absolute; top: 45px; right: 0px; bottom: 0px;left: 0px;text-align: center;"> <div style="width:100%;margin:5px 0px;"> <div style="display: inline-block; width:60%;"> <input name="searchman" style="width:100%;height:44px;" id="inputname" type="text" placeholder="请输入关键字" minlength="2" required data-icon="empty"> </div> <div style="display: inline-block; width:20%;"> <aui-button class="btn btn-link" v-on:click="func.searchname" style="width:20%;">搜索</aui-button> </div> </div> <aui-list id="manlist"> <list-cell v-on:click="func.nlistclick()"> <a style="text-align:left;"> 1111111111 </a> </list-cell> <list-cell v-for="item in items" v-on:click="func.nlistclick(item.empname)"> <a style="text-align:left;"> {{item.empname}} </a> </list-cell> </aui-list> </aui-scroller> </ui> <script> import '@auicomp/header/Header.aui'; import '@auicomp/button/Button.aui'; import '@auicomp/scroller/Scroller.aui'; import '@auicomp/titlebar/Titlebar.aui'; import '@auicomp/datetime/Datetime.aui'; import '@auiutil/mobiscroll3/css/mobiscroll.javascript.min.css'; import mobiscroll from '@auiutil/mobiscroll3/js/mobiscroll.javascript.min'; import '@auicomp/list/List.aui'; import Alert from '@auicomp/alert/Alert.aui'; import Confirm from '@auicomp/confirm/Confirm.aui'; import fetch from '@comm/utils/xfetch'; import { router } from '@auicomp/action/Action.aui'; import './Frame.aui'; export default class SelectManPage{ static get tag(){ return 'selectman'; } created () { // var lname = router.getQueryObj(location.search).lname||router.getQueryObj().lname;//获取username // var lpassword = router.getQueryObj(location.search).lpassword||router.getQueryObj().lpassword;//password var mancout=[]; var f=0; //表示无匹配数据 否则为1 var obj = { items : mancout, func:{ searchname:function(){ mancout.splice(0,mancout.length); var nametag=$("#inputname").val(); var re = new RegExp(nametag);//正则表达判断 f=0; fetch({ appId: 'ci_test', url : 'http://ciurl/search.jsp', data: { // username: lname, // password: lpassword }, success: function(json){ $.each(json.list, function(e,e1) { var showname=e1.empname; if(re.test(showname)){ var manjson={empname:showname} mancout.push(manjson); f=1; } }); if(f==0){ Alert.show({ content: '无匹配数据' }); } }, error: function(rs){ Alert.show({ content: rs.errmsg+'未请求成功' }); } }); }, nlistclick:function(names){ Confirm.show({ content: '确定选择'+names+'吗?', doOk: function(){ // router.go('/hllr?names='+names); //组件传值, 需要传到组件return值 方法 document.querySelector('aui-hllr').component.fname(names); history.go(-1); }, doCancel: function(){ console.log('Confirm Cancel'); } }); } } }; $('#namescroller').render(obj); mobiscroll.settings = { theme: 'ios', lang: 'zh', }; var date, select, widget, now = new Date(), form = document.getElementById("demo"); mobiscroll.form('#demo'); date = mobiscroll.date('#md-birthday', { defaultValue: new Date(now.getFullYear() - 18, 0, 1), min: new Date(now.getFullYear() - 100, now.getMonth(), now.getDate()), max: new Date(now.getFullYear() - 13, now.getMonth(), now.getDate()) }); select = mobiscroll.select('#md-country', { group: true, maxWidth: [40, 260], width: [40, 235], placeholder: 'Country' }); mobiscroll.numpad('.md-phone', { display: 'bottom', cssClass: 'md-phone-num', template: '{plus}ddddddddddd', maxLength: 14, allowLeadingZero: true, leftKey: { text: '+', value: '', variable: 'plus:+' }, formatValue: function (numbers, vars, inst) { var newVal = ' '; if (vars.plus) { newVal += vars.plus; } newVal += numbers.join().replace(/,/g, ''); return newVal; }, parseValue: function (value) { if (value) { return value.toString().split(''); } return []; }, validate: function (event, inst) { var disabled = [], invalid = false; if (inst.isVisible()) { inst._markup[0].querySelector('.mbsc-np-dsp').innerHTML = inst.settings.formatValue(event.values, event.variables, inst) || ' ' } return { invalid: invalid, disabled: disabled }; } }); widget = mobiscroll.widget('#demo-success', { display: 'center', focusOnClose: false, buttons: [{ text: 'Log in', handler: 'set' }] }); form.noValidate = true; form.onsubmit = validateForm; function validateForm(event) { event.preventDefault(); var parent, errorMsg, form = (event.target ? event.target : event.srcElement), f, field, formvalid = true; for (f = 0; f < form.elements.length; f++) { field = form.elements[f]; parent = field.parentNode; errorMsg = parent.querySelector('.mbsc-err-msg'); if (field.validity.valid) { parent.parentNode.classList.remove('mbsc-err'); if (errorMsg) { parent.removeChild(errorMsg); } } else { if (!errorMsg) { errorMsg = document.createElement('span'); errorMsg.className = 'mbsc-err-msg'; errorMsg.innerHTML = 'This field is required'; parent.appendChild(errorMsg); } parent.parentNode.classList.add('mbsc-err'); formvalid = false; } } if (formvalid) { widget.show(); } return formvalid; } } } </script> <style> .md-phone-num .mbsc-np-dsp { min-height: 25px; -webkit-box-sizing: content-box; -moz-box-sizing: content-box; box-sizing: content-box; } </style>路由
import { router } from '@auicomp/page/Page.aui'; import CIcenter from '../pages/CIcenter.aui'; import SelectPage from '../pages/SelectPage.aui'; import HLS from '../pages/HLS.aui'; import JifenPage from '../pages/JifenPage.aui'; import HLLRPage from '../pages/HLLRPage.aui'; import HLListPage from '../pages/HLListPage.aui'; import OtherPage from '../pages/OtherPage.aui'; import SelectManPage from '../pages/SelectManPage.aui'; import Department from '../pages/Department.aui'; import Department_hlh from '../pages/Department_hlh.aui'; import JiFenList from '../pages/JiFenList.aui'; import HLSList from '../pages/HLSList.aui'; import HLSDetail from '../pages/HLSDetail.aui'; import HL_Detail from '../pages/HL_Detail.aui'; router.add([ { path: '/', redirect: '/cicenter' }, { path: '/cicenter', component: CIcenter, }, { path: '/select', component: SelectPage }, { path: '/hls', component: HLS }, { path: '/jifen', component: JifenPage }, { path: '/hllr', component: HLLRPage, cache:true, }, { path: '/hllist', component: HLListPage }, { path: '/other', component: OtherPage }, { path: '/selectman', component: SelectManPage }, { path: '/department', component: Department }, { path: '/department_hlh', component: Department_hlh }, { path: '/jifenlist', component: JiFenList }, { path: '/hlslist', component: HLSList }, { path: '/hlsdetail', component: HLSDetail }, { path: '/hl_detail', component: HL_Detail } ]); export default router;