vue初实践之简单加载页面<一>
编辑时间:2019-11-27 作者:金满斗 浏览量:1872 来源:原创

vue现在比较火,可是我一直没怎么学。

其实我认为最简单的学习就是实践,昨天把一个用jq实现的老页面用vue实现了下,确实很方便。这是最初版本。

看不懂是正常的。这个本来就是自己的一个记录。



codelayui.code

  1. <style>
  2. .btn-circle .layui-icon {font-size: 18px;}
  3. </style>
  4. <!-- 正文开始 -->
  5. <div class="layui-fluid" id="Business_lst_html" >
  6. <div class="layui-row layui-col-space15" >
  7. <div class="layui-col-xs12">
  8. <div class="layui-card">
  9. <div class="layui-card-body">
  10. <div class="layui-form" lay-filter="butsinLstFormTop" >
  11. <div class="layui-block layui-form" style="margin-bottom:10px;">
  12. <input type="type" name="seachTest" class="myseach-input" lay-verify="required" placeholder="按事项关键字搜索" />
  13. <button class="layui-btn icon-btn layui-btn-sm myseach" lay-filter="seachButsin" lay-submit >
  14. <i class="layui-icon">&#xe615;</i>搜
  15. </button>
  16. </div>
  17. <div class="layui-btn-container">
  18. <button class="layui-btn btn-circle" @click="openWin()" style="bottom: 60px; z-index: 9999;font-size: 18px" title="增加业务">
  19. <i class="layui-icon">&#xe654;</i>
  20. </button>
  21. <!--<button data-tableid="butsinLstTable" ew-event="exportCsv" class="layui-btn icon-btn layui-btn-sm">
  22. <i class="layui-icon">&#xe67d;</i>导出
  23. </button>-->
  24. <button class="layui-btn layui-btn-sm layui-btn-primary" v-on:click="only_debts">
  25. 只看欠款
  26. </button>
  27. <button class="layui-btn layui-btn-sm layui-btn-danger" v-on:click="wait_works(1)">
  28. 待处理
  29. </button>
  30. <button class="layui-btn layui-btn-sm layui-btn-normal" v-on:click="wait_works(2)">
  31. 处理中
  32. </button>
  33. <button class="layui-btn layui-btn-sm" v-on:click="wait_works(3)">
  34. 待结账
  35. </button>
  36. </div>
  37. </div>
  38. </div>
  39. </div>
  40. </div>
  41. </div>
  42. <div class="layui-row layui-col-space15" id="Business_html">
  43. <div class="layui-col-xs12 layui-col-sm6 layui-col-md6 mymain" v-for="(obj,index) in listData" v-bind:key="obj.id" >
  44. <div class="layui-card">
  45. <div class="layui-card-body">
  46. <div class="layui-text">
  47. <template v-if="obj.img_url != 'assets/images/default.png' ">
  48. <div class="user-text-head" >
  49. <img @click="imgprev(obj.img_url)" v-bind:src=`${obj.img_url}?x-oss-process=style/thumb` v-bind:layer-src="obj.img_url" />
  50. </div>
  51. </template>
  52. <div class="con-right ">
  53. <h3>事项</h3>
  54. <p>{{obj.matters}} </p>
  55. <p>{{obj.bus_detailed}}</p>
  56. </div>
  57. <div class="layui-clear"></div>
  58. <div class="layui-text"><span>{{obj.create_time}}</span><span class="pull-right" style="color:#FF5722;" >¥{{obj.actual_pay}}<span></div>
  59. <template v-if="obj.phone">
  60. <div class="layui-text" >
  61. <span>客户:{{obj.user_name}}</span>
  62. <span style="margin-left:10px;">{{obj.phone}}</span>
  63. <a v-bind:href=`tel:${obj.phone}` class=" pull-right layui-btn layui-btn-primary layui-btn-xs">直拨电话</a>
  64. </div>
  65. </template>
  66. <div class="layui-text layui-clear" style="margin-top:5px;">
  67. <a v-if="obj.status == 1 " class="layui-btn layui-btn-danger layui-btn-xs" @click="openWin(index)">{{obj.status_text}}</a>
  68. <a v-else-if="obj.status == 2 " class="layui-btn layui-btn-normal layui-btn-xs" @click="openWin(index)">{{obj.status_text}}</a>
  69. <a v-else-if="obj.status == 3 " class="layui-btn layui-btn-xs" @click="openWin(index)">{{obj.status_text}}</a>
  70. <template v-else class="layui-btn layui-btn-xs">
  71. <span v-if="obj.dabt == 0 " >完成</span>
  72. <a v-else class="layui-btn layui-btn-xs" @click="openWin(index)" >欠款{{obj.dabt}}</a>
  73. </template>
  74. <span v-if="obj.status == 10 " class="layui-ml10">收款:{{obj.pay_type_title}}</span>
  75. <button class="layui-btn layui-btn-xs layui-btn-primary" @click="del(index)" style="float: right;"><i class="layui-icon">&#xe640;</i> 删除</button>
  76. <button class="layui-btn layui-btn-xs layui-btn-primary" @click="openWin(index)" style="float: right;margin-right: 10px;"><i class="layui-icon">&#xe642;</i> 修改</button>
  77. </div>
  78. </div>
  79. </div>
  80. </div>
  81. </div>
  82. </div>
  83. </div>
  84. <script >
  85. layui.use(['layer', 'form', 'config','common'],
  86. function () {
  87. "use strict";
  88. var $ = layui.jquery;
  89. var layer = layui.layer;
  90. var form = layui.form;
  91. var config = layui.config;
  92. var my_html_data = {
  93. title:'业务',
  94. mainId:"#Business_lst_html",
  95. geturl:'Business/apilst',
  96. addurl:"business/gethtml/method/business_add/",
  97. searchsUrl:'Business/searchs', //搜索用地址
  98. delurl:'Business/del',
  99. }
  100. var vm = new Vue({
  101. el: '#Business_lst_html',
  102. data: {
  103. listData:[],
  104. initData:my_html_data,
  105. searchData:{ //请求搜索时的对象
  106. 'page': 1,
  107. 'limit': 30,
  108. 'search':[]
  109. }
  110. },
  111. methods: {
  112. //初始加载
  113. gethtml:function(url){
  114. let _that = this;
  115. admin.req(url,_that.searchData, function (res) {
  116. if(res.code != 0) return wx.miniProgram.navigateTo({url:'/pages/start/start'});
  117. // 如果超过了500条,就清空免得影响性能,这么长谁看
  118. if(_that.listData.length > 500){
  119. _that.listData = [];
  120. }
  121. _that.listData.push.apply( _that.listData,res.data) ; //数组加入原来数组
  122. if(_that.listData.length ==0){
  123. layer.msg("暂无数据");
  124. }
  125. }, 'POST');
  126. },
  127. //页面参数重新初始化
  128. seachInit:function(){
  129. this.searchData.limit = 1;
  130. this.searchData.limit = 10;
  131. this.listData=[];
  132. },
  133. //只看欠账
  134. only_debts:function(){
  135. this.seachInit();
  136. this.searchData.search = {arrears:1};
  137. this.gethtml(config.base_server + this.initData.searchsUrl);
  138. },
  139. //看工作状态
  140. wait_works:function(status_text){
  141. this.seachInit();
  142. this.searchData.search = {status:status_text};
  143. this.gethtml(config.base_server + this.initData.searchsUrl);
  144. },
  145. //绑定微信预览图片接口事件
  146. imgprev:function(src){
  147. wx.previewImage({
  148. current: src, // 当前显示图片的http链接
  149. urls: [src] // 需要预览的图片http链接列表
  150. });
  151. },
  152. //打开窗口事件
  153. openWin(tabid){
  154. let _that = this;
  155. let id = (tabid &&(tabid !='undefined')) ? 1 : 0; //因为js中0算假,因此加1判断
  156. let title = id ? "修改":"增加";
  157. let url = id ? _that.initData.addurl+'/id/'+_that.listData[tabid].id : _that.initData.addurl;
  158. url = config.base_server + url;
  159. admin.open({
  160. title: title + _that.initData.title,
  161. url: url,
  162. end:function(){
  163. if(id){
  164. let data = admin.getTempData('tr_temp_data');
  165. console.log(data);
  166. _that.listData.splice(tabid,tabid+1,data);
  167. }else{
  168. let data = admin.getTempData('tr_temp_data');
  169. _that.listData.unshift(data); //数组插入到首位
  170. }
  171. }
  172. });
  173. },
  174. del:function(tabid){
  175. let _that = this;
  176. layer.confirm('确定删除吗?注意,删除后不可恢复', function(index){
  177. admin.req(_that.initData.delurl,{id:_that.listData[tabid].id}
  178. ,function(data){
  179. if(data.code==1001){
  180. _that.listData.splice(tabid, 1);
  181. }
  182. layer.msg(data.msg);
  183. },'POST'
  184. );
  185. layer.close(index);
  186. });
  187. }
  188. },
  189. created:function(){ //实例被创建后执行代码
  190. this.searchData.limit = 1;
  191. this.searchData.limit = 10;
  192. this.gethtml(config.base_server + this.initData.geturl);
  193. },
  194. })
  195. })
  196. </script>

还有下拉加载没做,慢慢做。实践了一下,真有隔代杀的感觉。

来说两句吧
  • 请先说点什么
    热门评论
    1873人参与,0条评论www