vue-list.blade.php 60 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113
  1. @extends('layouts.base')
  2. @section('title', "订单列表")
  3. @section('content')
  4. <link rel="stylesheet" type="text/css" href="{{static_url('yunshop/goods/vue-goods1.css')}}"/>
  5. <style>
  6. .edit-i{display:none;}
  7. .el-table_1_column_2:hover .edit-i{font-weight:900;padding:0;margin:0;display:inline-block;}
  8. .el-tabs__item,.is-top{font-size:16px}
  9. .el-tabs__active-bar { height: 3px;}
  10. .list-title{display:flex;width:100%;background:#f9f9f9;padding:15px 10px;font-weight:900;border:1px solid #e9e9e9;}
  11. .list-title .list-title-1{display:flex;align-items:center;justify-content: center;}
  12. .list-info{display:flex ;padding: 10px;justify-content: left;background:#f9f9f9;}
  13. .list-con{display:flex;width:100%;font-size:12px;font-weight:500;align-items: stretch;border-bottom: 1px solid rgb(233, 233, 233);}
  14. .list-con-goods{display:flex;align-items:center;justify-content: center;box-sizing:border-box;padding-left:10px;border-top:1px solid #e9e9e9;min-height:90px}
  15. .list-con-goods-text{min-height:70px;overflow:hidden;flex:1;display: flex;flex-direction: column;justify-content: space-between;}
  16. .list-con-goods-price{border-right:1px solid #e9e9e9;border-left:1px solid #e9e9e9;min-width:150px;min-height:90px;text-align: left;padding:20px;display: flex;flex-direction: column;}
  17. .list-con-goods-title{font-size:14px;line-height:20px;text-overflow: -o-ellipsis-lastline;overflow: hidden;text-overflow: ellipsis;display: -webkit-box;-webkit-line-clamp: 2;line-clamp: 2;-webkit-box-orient: vertical;}
  18. .list-con-goods-option{font-size:12px;color:#999}
  19. .list-con-member-info{display:flex;padding:0 2px;flex-direction: column;flex:1;min-width: 120px;line-height:28px;justify-content: center;text-align:left;font-size:14px;border-top:1px solid #e9e9e9;border-right:1px solid #e9e9e9;}
  20. .list-member{padding: 10px;font-size: 12px;font-weight: 500;display:flex}
  21. .list-num{flex:3;display:flex;align-items:center;border-right:1px solid #e9e9e9;justify-content: center;}
  22. .list-gen{display:flex;align-items:center;justify-content: center;line-height:28px;}
  23. .list-gen-txt{flex:1;border-right:1px solid #e9e9e9;border-bottom:1px solid #e9e9e9;align-items:center;justify-content: center;display:flex;}
  24. .list-opt{flex:1;display:flex;align-items:center;border-left:1px solid #e9e9e9;justify-content: center;}
  25. /* 导航 */
  26. .el-radio-button .el-radio-button__inner,.el-radio-button:first-child .el-radio-button__inner {border-radius: 4px 4px 4px 4px;border-left: 0px;}
  27. .el-radio-button__inner{border:0;}
  28. .el-radio-button:last-child .el-radio-button__inner {border-radius: 4px 4px 4px 4px;}
  29. .a-btn {
  30. border-radius: 2px;
  31. padding: 8px 12px;
  32. box-sizing: border-box;
  33. color: #666;
  34. font-weight: 500;
  35. text-align: center;
  36. margin-left: 1%;
  37. background-color: #fff;
  38. }
  39. .a-btn:hover{
  40. background-color: #29BA9C;
  41. color: #FFF;
  42. }
  43. .a-colour1 {
  44. background-color: #fff;
  45. color: #666;
  46. }
  47. .a-colour2 {
  48. background-color: #29BA9C;
  49. color: #FFF;
  50. }
  51. </style>
  52. <div class="all">
  53. <div id="app" v-cloak>
  54. <div class="vue-head">
  55. <div class="vue-main-title" style="margin-bottom:20px">
  56. <div class="vue-main-title-left"></div>
  57. <div class="vue-main-title-content">订单筛选</div>
  58. <div class="vue-main-title-button">
  59. </div>
  60. </div>
  61. <div class="vue-search">
  62. <el-form :inline="true" :model="search_form" class="demo-form-inline">
  63. <el-form-item label="">
  64. <el-input v-model="search_form.member_id" placeholder="购买会员ID"></el-input>
  65. </el-form-item>
  66. <el-form-item label="">
  67. <el-input v-model="search_form.member_info" placeholder="购买昵称/姓名/手机号"></el-input>
  68. </el-form-item>
  69. <el-form-item label="">
  70. <el-input v-model="search_form.goods_id" placeholder="商品ID"></el-input>
  71. </el-form-item>
  72. <el-form-item label="">
  73. <el-input v-model="search_form.goods_title" placeholder="商品名称"></el-input>
  74. </el-form-item>
  75. <el-form-item label="">
  76. <el-input v-model="search_form.order_sn" placeholder="订单编号"></el-input>
  77. </el-form-item>
  78. <el-form-item label="">
  79. <el-input v-model="search_form.pay_sn" placeholder="支付单号"></el-input>
  80. </el-form-item>
  81. <el-form-item label="">
  82. <el-select v-model="search_form.order_status" clearable placeholder="订单状态" style="width:150px">
  83. <el-option label="待支付" value="waitPay"></el-option>
  84. <el-option label="待发货" value="1"></el-option>
  85. <el-option label="待收货" value="2"></el-option>
  86. <el-option label="已完成" value="3"></el-option>
  87. <el-option label="已关闭" value="-1"></el-option>
  88. </el-select>
  89. </el-form-item>
  90. <el-form-item label="">
  91. <el-select v-model="search_form.pay_type" clearable placeholder="支付方式" style="width:150px">
  92. @foreach(\app\backend\modules\order\services\OrderViewService::searchablePayType() as $pay_type)
  93. <el-option label="{{$pay_type['name']}}" value="{{$pay_type['value']}}"></el-option>
  94. @endforeach
  95. </el-select>
  96. </el-form-item>
  97. <el-form-item label="">
  98. <el-select v-model="search_form.pay_type_group" clearable placeholder="支付方式组" style="width:150px">
  99. @foreach(\app\backend\modules\order\services\OrderViewService::payTypeGroup() as $pay_type_group)
  100. <el-option label="{{$pay_type_group['name']}}" value="{{$pay_type_group['id']}}"></el-option>
  101. @endforeach
  102. </el-select>
  103. </el-form-item>
  104. <el-form-item label="">
  105. <el-select v-model="search_form.time_field" clearable placeholder="操作时间" style="width:150px">
  106. <el-option label="下单时间" value="create_time"></el-option>
  107. <el-option label="支付时间" value="pay_time"></el-option>
  108. <el-option label="发货时间" value="send_time"></el-option>
  109. <el-option label="完成时间" value="finish_time"></el-option>
  110. <el-option label="关闭时间" value="cancel_time"></el-option>
  111. <el-option label="退款申请时间" value="refund_create_time"></el-option>
  112. <el-option label="退款完成时间" value="refund_finish_time"></el-option>
  113. </el-select>
  114. </el-form-item>
  115. <el-form-item label="">
  116. <el-date-picker
  117. v-model="times"
  118. type="datetimerange"
  119. value-format="yyyy-MM-dd HH:mm:ss"
  120. range-separator="至"
  121. start-placeholder="开始日期"
  122. end-placeholder="结束日期"
  123. style="margin-left:5px;"
  124. align="right">
  125. </el-date-picker>
  126. </el-form-item>
  127. <el-form-item label="">
  128. <el-input v-model="search_form.service_id" placeholder="{{$lang_set['service']}}id"></el-input>
  129. </el-form-item>
  130. <el-form-item label="">
  131. <el-input v-model="search_form.obj_id" placeholder="{{$lang_set['reserve_obj']}}id"></el-input>
  132. </el-form-item>
  133. <el-form-item label="">
  134. <el-input v-model="search_form.obj_uid" placeholder="{{$lang_set['reserve_obj']}}会员ID"></el-input>
  135. </el-form-item>
  136. <el-form-item label="">
  137. <el-input v-model="search_form.obj_member_kwd" style="width:230px" placeholder="{{$lang_set['reserve_obj']}}会员昵称/姓名/手机号"></el-input>
  138. </el-form-item>
  139. <el-form-item label="">
  140. <el-button type="primary" @click="search(1)">搜索</el-button>
  141. <el-button @click="export1(1,1)">导出</el-button>
  142. </el-form-item>
  143. </el-form>
  144. </div>
  145. </div>
  146. <div class="vue-main">
  147. <div class="vue-main-form">
  148. <div class="vue-main-title" style="margin-bottom:20px">
  149. <div class="vue-main-title-left"></div>
  150. {{--<div class="vue-main-title-content" style="flex:0 0 140px">商品订单列表</div>--}}
  151. <div class="" style="text-align:left;font-size:14px;color:#999">
  152. <span>订单数:[[count.total]]</span>&nbsp;&nbsp;&nbsp;
  153. <span>订单金额:[[count.total_price]]</span>&nbsp;&nbsp;&nbsp;
  154. <span>运费:[[count.dispatch_price]]</span>&nbsp;&nbsp;&nbsp;
  155. </div>
  156. <div class="vue-main-title-button">
  157. </div>
  158. </div>
  159. <div v-for="(item,index) in list" style="border:1px solid #e9e9e9;border-radius:10px;margin-bottom:10px">
  160. <div class="list-info">
  161. <div style="display:flex;flex-wrap:wrap">
  162. <div class="vue-ellipsis" style="max-width:250px">
  163. <strong>[[item.store_name]]</strong>&nbsp;&nbsp;&nbsp;
  164. </div>
  165. <div class="vue-ellipsis" style="color:#999;max-width:150px">
  166. <strong>订单ID:</strong>[[item.id]]&nbsp;&nbsp;&nbsp;
  167. </div>
  168. <div v-if="item.order_sn" class="vue-ellipsis" style="color:#999;max-width:240px">
  169. <strong>订单编号:</strong>[[item.order_sn]]&nbsp;&nbsp;&nbsp;
  170. </div>
  171. <div v-if="item.has_one_order_pay" class="vue-ellipsis" style="color:#999;max-width:240px">
  172. <strong>支付单号:</strong>[[item.has_one_order_pay.pay_sn]]&nbsp;&nbsp;&nbsp;
  173. </div>
  174. <div class="vue-ellipsis" style="color:#999;max-width:230px">
  175. <strong>下单时间:</strong>[[item.create_time]]&nbsp;&nbsp;&nbsp;
  176. </div>
  177. <div v-if="item.has_many_first_order != null && item.has_many_first_order.length > 0" class="vue-ellipsis" style="color:#999;max-width:100px">
  178. <strong>首单</strong>&nbsp;&nbsp;&nbsp;
  179. </div>
  180. <div v-if="item.has_one_refund_apply" class="vue-ellipsis" style="color:red;max-width:230px">
  181. <strong>[[item.has_one_refund_apply.refund_type_name]]:[[item.has_one_refund_apply.status_name]]</strong>&nbsp;&nbsp;&nbsp;
  182. </div>
  183. <div v-if="item.no_refund" class="vue-ellipsis" style="color:red;max-width:200px">
  184. <strong>不可退款</strong>&nbsp;&nbsp;&nbsp;
  185. </div>
  186. <div v-for="(topContent,topKey1) in item.top_row" :key="topKey1" class="vue-ellipsis" style="color:#29BA9C;max-width:230px" >
  187. <strong>[[topContent]]</strong>&nbsp;&nbsp;&nbsp;
  188. </div>
  189. </div>
  190. <div style="flex:1;text-align:right;min-width:150px;">
  191. <a @click="closeOrder(item.id,item)" style="color:#29BA9C;font-size:13px;font-weight:600" v-if="item.fixed_button.close.is_show">关闭订单</a>
  192. <a @click="closeOrder1(item.id,item)" style="color:#29BA9C;font-size:13px;font-weight:600" v-if="item.fixed_button.manualRefund.is_show" >退款并关闭订单</a>
  193. </div>
  194. </div>
  195. <div class="list-con">
  196. <div style="flex:3;min-width:400px">
  197. <div v-for="(item1,index1) in item.has_many_order_goods" class="list-con-goods">
  198. <div class="list-con-goods-img" style="width:80px">
  199. <el-image :src="item1.thumb" style="width:70px;height:70px"></el-image>
  200. </div>
  201. <div class="list-con-goods-text" :style="{justifyContent:(item1.goods_option_title?'':'center')}">
  202. <div class="list-con-goods-title" style="color:#29BA9C;cursor: pointer;" @click="gotoGoods(item1.goods_id,item)">[[item1.title]]</div>
  203. <div class="list-con-goods-option" v-if="item1.goods_option_title">规格:[[item1.goods_option_title]]</div>
  204. </div>
  205. <div class="list-con-goods-price">
  206. <div>原价:[[item1.goods_price]]</div>
  207. <div>应付:[[item1.price]]</div>
  208. <div>数量:[[item1.total]]</div>
  209. </div>
  210. </div>
  211. </div>
  212. <div class="list-con-member-info vue-ellipsis">
  213. <div v-if="item.belongs_to_member" style="min-width:70%;margin:0 auto">
  214. <div @click="gotoMember(item.uid)" style="line-height:32px;color:#29BA9C;cursor: pointer;" class="vue-ellipsis">
  215. <strong>[[item.belongs_to_member.nickname]] </strong>
  216. </div>
  217. <div>[[item.has_many_member_certified?item.has_many_member_certified.realname:item.belongs_to_member.realname]]</div>
  218. <div>[[item.belongs_to_member.mobile]]</div>
  219. </div>
  220. <div v-else style="min-width:70%;margin:0 auto">
  221. <div>会员([[item.uid]])已被删除</div>
  222. </div>
  223. </div>
  224. <div class="list-con-member-info vue-ellipsis" style="text-align:center;min-width: 90px;">
  225. <div><strong>[[item.pay_type_name]]</strong></div>
  226. <div><strong v-if="item.has_one_dispatch_type">[[item.has_one_dispatch_type.name]]</strong></div>
  227. </div>
  228. <div class="list-con-member-info vue-ellipsis" style="min-width: 120px;">
  229. <div style="min-width:70%;margin:0 auto">
  230. <div>商品小计:¥[[item.goods_price]]</div>
  231. <div>运费:¥[[item.dispatch_price]]</div>
  232. <div v-if="item.change_price!='0.00'">卖家改价:¥[[item.change_price]]</div>
  233. <div v-if="item.change_dispatch_price!='0.00'">卖家改运费:¥[[item.change_dispatch_price]]</div>
  234. <div>应付款:¥[[item.price]]</div>
  235. </div>
  236. </div>
  237. <div class="list-con-member-info vue-ellipsis" style="text-align:center">
  238. <div style="min-width:70%;margin:0 auto">
  239. <div style="color:#29BA9C">[[item.status_name]]</div>
  240. <div v-if="item.status==0">
  241. <a style="color:#29BA9C" @click="changePrice(item.id,item)">修改价格</a>
  242. </div>
  243. <div>
  244. <a @click="gotoDetail(item)" style="color:#29BA9C">查看详情</a>
  245. </div>
  246. </div>
  247. </div>
  248. <div class="list-con-member-info vue-ellipsis" style="text-align:center;min-width: 80px;border-right:0">
  249. <!-- 未付款 -->
  250. {{--<div v-if="item.status==0">
  251. <el-button @click="confirmPay(item.id)" size="mini" type="primary" style="margin-bottom:5px;width:80%;margin:0 auto">确认付款</el-button>
  252. </div>--}}
  253. <!-- 待发货 -->
  254. {{--<div v-if="item.status==1 && item.dispatch_type_id==1">
  255. <el-button @click="confirmSend(item.order_id,item)" size="mini" type="primary" style="width:80%;margin:0 auto;margin-bottom:5px;">确认发货</el-button><br>
  256. <el-button @click="cancelSend(item.order_id)" plain size="mini" type="danger" style="width:80%;margin:0 auto;margin-bottom:5px;">取消发货</el-button>
  257. </div>
  258. <div v-if="item.status==2 && item.dispatch_type_id==1">
  259. <el-button @click="confirmReceive(item.order_id)" size="mini" type="primary" style="width:80%;margin:0 auto;margin-bottom:5px;">确认收货</el-button><br>
  260. </div>
  261. <div v-if="item.status==1 && item.dispatch_type_id==3">
  262. <el-button @click="confirmSend(item.order_id,item)" size="mini" type="primary" style="width:80%;margin:0 auto;margin-bottom:5px;">确认发货</el-button>
  263. </div>
  264. <div v-if="item.status==2 && (item.dispatch_type_id==2 ||item.dispatch_type_id==3)">
  265. <el-button @click="confirmReceive(item.order_id)" size="mini" type="primary" style="width:80%;margin:0 auto;margin-bottom:5px;">确认核销</el-button>
  266. </div>--}}
  267. <div v-for="(item1,index1) in item.backend_button_models" :key="index1">
  268. <el-button @click="orderConfirm(item1.value,item)" size="mini" :type="item1.type" style="width:80%;margin:0 auto;margin-bottom:5px;">
  269. [[item1.name]]
  270. </el-button>
  271. </div>
  272. <!-- <el-button plain size="mini" type="danger" style="margin-bottom:5px;width:80%;margin:0 suto">取消发货</el-button>
  273. <el-button size="mini" type="primary" style="margin-bottom:5px;width:80%;margin:0 suto">确认发货</el-button> -->
  274. </div>
  275. </div>
  276. <div class="list-member">
  277. <div v-if="item.has_one_reserve_order && item.has_one_reserve_order.id">
  278. [[item.has_one_reserve_order.customer_name]]&nbsp;&nbsp;&nbsp;[[item.has_one_reserve_order.customer_tel]]
  279. &nbsp;&nbsp;&nbsp;{{$lang_set['reserve_obj']}}:[[item.has_one_reserve_order.obj_name]]&nbsp;&nbsp;&nbsp;预约时间:[[item.has_one_reserve_order.begin_time_str]]
  280. </div>
  281. <div style="justify-content: flex-end;flex:1;display:flex">
  282. {{--<div v-if="item.status==0" style="margin-right:15px">
  283. <a style="color:#29BA9C" @click="changePrice(item.id,item)">修改价格</a>
  284. </div>
  285. <div v-if="item.fixed_button.detail.is_show">
  286. <a @click="gotoDetail(item)" style="color:#29BA9C">查看详情</a>
  287. </div>--}}
  288. </div>
  289. </div>
  290. </div>
  291. </div>
  292. </div>
  293. {{--订单类型-动态引入主键--}}
  294. @foreach((new \app\backend\modules\order\services\OrderViewService())->importVue() as $routeKey => $vueRoute)
  295. <template>
  296. <{{$vueRoute['primary']}}
  297. :operation-type="operationType"
  298. :operation-order="operationOrder"
  299. :express-companies="expressCompanies"
  300. :dialog_show="dialog_show"
  301. @search="reloadList"
  302. >
  303. </{{$vueRoute['primary']}}>
  304. </template>
  305. @endforeach
  306. {{--<template>--}}
  307. {{--<order-operation--}}
  308. {{--:operation-type="operationType"--}}
  309. {{--:operation-order="operationOrder"--}}
  310. {{--:synchro="synchro"--}}
  311. {{--:express-companies="expressCompanies"--}}
  312. {{--:dialog_show="dialog_show"--}}
  313. {{--@search="reloadList"--}}
  314. {{-->--}}
  315. {{--</order-operation>--}}
  316. {{--</template>--}}
  317. <!-- 退款 -->
  318. <el-dialog :visible.sync="close_order_show" width="750px" title="关闭订单">
  319. <div style="height:300px;overflow:auto" id="close-order">
  320. <div style="color:#000;font-weight:500">关闭订单原因</div>
  321. <el-input v-model="close_order_con" :rows="10" type="textarea"></el-input>
  322. </div>
  323. <span slot="footer" class="dialog-footer">
  324. <el-button @click="close_order_show = false">取 消</el-button>
  325. <el-button type="primary" @click="sureCloseOrder">确 定 </el-button>
  326. </span>
  327. </el-dialog>
  328. <!-- 手动退款 -->
  329. <el-dialog :visible.sync="close_order1_show" width="750px" title="退款并关闭订单">
  330. <div style="height:300px;overflow:auto">
  331. <div style="color:#000;font-weight:500">退款原因</div>
  332. <el-input v-model="close_order1_con" :rows="10" type="textarea"></el-input>
  333. </div>
  334. <span slot="footer" class="dialog-footer">
  335. <el-button @click="close_order1_show = false">取 消</el-button>
  336. <el-button type="primary" @click="sureCloseOrder1">退 款 </el-button>
  337. </span>
  338. </el-dialog>
  339. <!-- 修改价格 -->
  340. <el-dialog :visible.sync="change_price_show" width="65%" title="修改价格">
  341. <div style="height:500px;overflow:auto" id="change-price">
  342. <el-table :data="order_goods_model" style="width: 100%">
  343. <el-table-column label="商品名称" prop="has_one_goods.title"></el-table-column>
  344. <el-table-column label="单价" align="center" prop="goods_price" width="120">
  345. <template slot-scope="scope">
  346. <div>
  347. [[parseFloat(scope.row.price)/parseFloat(scope.row.total)]]
  348. </div>
  349. </template>
  350. </el-table-column>
  351. <el-table-column label="数量" align="center" prop="total" width="100"></el-table-column>
  352. <el-table-column label="小计" align="center" prop="price" width="150">
  353. <template slot-scope="scope">
  354. <div>
  355. [[scope.row.price]]
  356. <el-tag v-if="scope.row.change_price&&scope.row.change_price!=0&&scope.row.change_price!='0.00'" type="danger">改价</el-tag>
  357. </div>
  358. </template>
  359. </el-table-column>
  360. <el-table-column label="加价或减价" align="center" prop="display_order">
  361. <template slot-scope="scope">
  362. <div>
  363. <el-input @input="inputPrice(scope.$index,scope.row.new_price)" v-model="scope.row.new_price" size="small" style="width:95%"></el-input>
  364. </div>
  365. </template>
  366. </el-table-column>
  367. <el-table-column label="运费" align="center" prop="dispatch_price">
  368. <template slot-scope="scope" v-if="scope.$index==0">
  369. <div>
  370. <el-input @input="inputPrice('dispatch_pricec',dispatch_price)" v-model="dispatch_price" size="small" style="width:95%"></el-input>
  371. </div>
  372. </template>
  373. </el-table-column>
  374. <el-table-column label="" align="center" prop="display_order">
  375. <template slot-scope="scope" v-if="scope.$index==0">
  376. <div>
  377. <el-link :underline="false" @click="clearDispatch">直接免运费</el-link>
  378. </div>
  379. </template>
  380. </el-table-column>
  381. </el-table>
  382. <div class="tip" style="color:#f00;margin:10px 0;">提示:改价后价格不能小于0元</div>
  383. <div style="background:#eff3f6;border-radius:8px;padding:20px 10px;color:#000;font-weight:500;line-height:36px;">
  384. <div style="font-size:16px;font-weight:600;color:#000">购买者信息</div>
  385. <div>
  386. <div style="display:inline-block;width:150px;text-align:right;margin-right:30px">姓名</div>
  387. <div style="display:inline-block;">[[order_model.address?order_model.address.realname:""]]</div>
  388. </div>
  389. <div>
  390. <div style="display:inline-block;width:150px;text-align:right;margin-right:30px">联系方式</div>
  391. <div style="display:inline-block;">[[order_model.address?order_model.address.mobile:""]]</div>
  392. </div>
  393. <div>
  394. <div style="display:inline-block;width:150px;text-align:right;margin-right:30px">联系地址</div>
  395. <div style="display:inline-block;">[[order_model.address?order_model.address.address:""]]</div>
  396. </div>
  397. </div>
  398. </div>
  399. <span slot="footer" class="dialog-footer" style="display:flex;justify-content: flex-end;">
  400. <div style="display:inline-block;color:#000;margin-right:20px;font-weight:500;">
  401. <div style="display:flex;text-align:center;line-height:28px;align-items: center;">
  402. <div style="margin-right:15px">
  403. 原价<br>
  404. ¥[[parseFloat(order_model.price)-(parseFloat(order_model.dispatch_price))]]
  405. </div>
  406. <div style="margin-right:15px">+</div>
  407. <div style="margin-right:15px">
  408. 运费<br>
  409. ¥[[parseFloat(dispatch_price)]]
  410. </div>
  411. <div style="margin-right:15px">+</div>
  412. <div style="margin-right:15px">
  413. 价格修改<br>
  414. ¥[[(parseFloat(change_all_money))]]
  415. </div>
  416. <div style="margin-right:15px">=</div>
  417. <div style="margin-right:15px">
  418. 买家实付<br>
  419. <strong style="color:#f00">¥[[(parseFloat(all_money))]]</strong>
  420. </div>
  421. </div>
  422. </div>
  423. <div style="line-height:56px">
  424. <el-button @click="change_price_show = false">取 消</el-button>
  425. <el-button type="primary" @click="sureChangePrice">确认改价</el-button>
  426. </div>
  427. </span>
  428. </el-dialog>
  429. <!-- 分页 -->
  430. <div class="vue-page" v-if="total>0">
  431. <el-row>
  432. <el-col align="right">
  433. <el-pagination layout="prev, pager, next,jumper" @current-change="search" :total="total"
  434. :page-size="per_page" :current-page="current_page" background
  435. ></el-pagination>
  436. </el-col>
  437. </el-row>
  438. </div>
  439. </div>
  440. </div>
  441. {{--订单类型-动态加载js文件--}}
  442. @foreach((new \app\backend\modules\order\services\OrderViewService())->importVue() as $routeKey => $vueRoute)
  443. @include($vueRoute['path'])
  444. @endforeach
  445. {{--@include('public.admin.orderOperation')--}}
  446. {{--@include('public.admin.orderOperationV')--}}
  447. <script>
  448. var app = new Vue({
  449. el: "#app",
  450. delimiters: ['[[', ']]'],
  451. name: 'test',
  452. data() {
  453. return {
  454. commonPartUrl: '{!! yzWebFullUrl('order.order-list.common-part') !!}', //获取公共参数链接
  455. listUrl: '{!! yzWebFullUrl('plugin.reserve-simple.admin.order-list.get-list') !!}',//获取订单数据链接
  456. exportUrl: '{!! yzWebFullUrl('plugin.reserve-simple.admin.order-list.export') !!}',//订单数据导出链接
  457. detailUrl: '{!! yzWebFullUrl('plugin.reserve-simple.admin.order-detail.vue-index') !!}',
  458. url_open : "{!! yzWebUrl('order.waybill.waybill') !!}",
  459. list:[],
  460. count:{},
  461. has_many_level:[],
  462. change_sort:'',
  463. times:[],
  464. //页面返回全部参数
  465. responseResults:{},
  466. //插件判断条件
  467. extra_param:{},
  468. //订单条件
  469. code:'all',
  470. expressCompanies:[],//快递公司
  471. //搜索条件参数
  472. search_form:{
  473. member_id:"",
  474. service_id:"",
  475. obj_id:""
  476. },
  477. close_order_show:false,//关闭订单弹窗
  478. close_order_con:"",//关闭订单原因
  479. close_order_id:"",
  480. close_order_api:"",
  481. close_order1_show:false,//手动关闭订单弹窗
  482. close_order1_con:"",//手动关闭订单原因
  483. close_order1_id:"",
  484. close_order1_api:"",
  485. cancel_send_show:false,// 取消发货弹窗
  486. cancel_send_con:"",//取消发货原因
  487. cancel_send_id:'',
  488. confirm_send_show:false,// 确认发货弹窗
  489. confirm_send_id:"",
  490. change_price_show:false,//修改价格弹窗
  491. change_price_id:"",
  492. change_all_money:0.00,//价格修改
  493. all_money:0.00,//买家实付
  494. order_model:{},
  495. dispatch_price:0,//运费
  496. order_goods_model:[],
  497. address_info:{},
  498. //发货提交信息
  499. send:{
  500. dispatch_type_id:1,
  501. express_code:"",
  502. express_sn:"",
  503. },
  504. send_rules:{
  505. },
  506. // 多包裹发货
  507. more_send_show:false,
  508. order_goods_send_list:[],
  509. send_order_goods_ids:[],
  510. rules: {},
  511. current_page:1,
  512. total:1,
  513. per_page:1,
  514. synchro:0,
  515. readonly:false,
  516. operationType:'',
  517. operationOrder:{},
  518. dialog_show:0,
  519. }
  520. },
  521. created() {
  522. let result = this.viewReturn();
  523. this.__initial(result);
  524. this.search_form.member_id = this.getParam('member_id');
  525. this.search_form.service_id = this.getParam('service_id')
  526. this.search_form.obj_id = this.getParam('obj_id')
  527. },
  528. mounted() {
  529. this.getData(1);
  530. },
  531. methods: {
  532. //视图返回数据
  533. viewReturn() {
  534. return {!! $data?:'{}' !!};
  535. },
  536. //初始化页面数据,请求链接
  537. __initial(data) {
  538. if (data.code) {
  539. this.code = data.code;
  540. }
  541. if (data.listUrl) {
  542. this.listUrl = data.listUrl;
  543. }
  544. if (data.commonPartUrl) {
  545. this.commonPartUrl = data.commonPartUrl;
  546. }
  547. if (data.exportUrl) {
  548. this.exportUrl = data.exportUrl;
  549. }
  550. if (data.extraParam) {
  551. this.extra_param = data.extraParam;
  552. }
  553. this.expressCompanies = data.expressCompanies;
  554. this.responseResults = data;
  555. console.log(data);
  556. },
  557. changeProvince(type,val) {
  558. this.search_form[type] = val;
  559. },
  560. getData(page) {
  561. let requestData = {
  562. page:page,
  563. code: this.code,
  564. search: JSON.parse(JSON.stringify(this.search_form)),
  565. };
  566. if(this.times && this.times.length>0) {
  567. requestData.search.start_time = this.times[0];
  568. requestData.search.end_time = this.times[1];
  569. }
  570. console.log(requestData);
  571. let loading = this.$loading({target:document.querySelector(".content"),background: 'rgba(0, 0, 0, 0)'});
  572. this.$http.post(this.listUrl,requestData).then(function(response) {
  573. if (response.data.result) {
  574. // this.list = response.data.data.list;
  575. //this.expressCompanies = response.data.data.expressCompanies;
  576. this.count = response.data.data.count;
  577. this.list = response.data.data.list.data;
  578. this.current_page = response.data.data.list.current_page;
  579. this.total = response.data.data.list.total;
  580. this.per_page = response.data.data.list.per_page;
  581. this.synchro = response.data.data.synchro;
  582. loading.close();
  583. } else {
  584. this.$message({
  585. message: response.data.msg,
  586. type: 'error'
  587. });
  588. }
  589. loading.close();
  590. }, function(response) {
  591. this.$message({
  592. message: response.data.msg,
  593. type: 'error'
  594. });
  595. loading.close();
  596. });
  597. },
  598. gotoDetail(item) {
  599. let link = this.detailUrl +'&id='+item.id;
  600. //let link = item.fixed_button.detail.api +'&id='+item.id+'&order_id='+item.id;
  601. // window.location.href = link;
  602. window.open(link);
  603. },
  604. search(val) {
  605. this.getData(val);
  606. },
  607. // // 确认付款
  608. confirmPay(id) {
  609. console.log(id);
  610. this.$confirm('确认此订单已付款吗?', '提示', {confirmButtonText: '确定',cancelButtonText: '取消',type: 'warning'}).then(() => {
  611. let loading = this.$loading({target:document.querySelector(".content"),background: 'rgba(0, 0, 0, 0)'});
  612. this.$http.post('{!! yzWebFullUrl('plugin.reserve-simple.admin.order-operation.pay') !!}',{order_id:id}).then(function (response) {
  613. if (response.data.result) {
  614. this.$message({type: 'success',message: '操作成功'});
  615. }
  616. else{
  617. this.$message({type: 'error',message: response.data.msg});
  618. }
  619. loading.close();
  620. this.search(this.current_page)
  621. },function (response) {
  622. this.$message({type: 'error',message: response.data.msg});
  623. loading.close();
  624. }
  625. );
  626. }).catch(() => {
  627. this.$message({type: 'info',message: '已取消操作'});
  628. });
  629. },
  630. // 关闭订单
  631. closeOrder(id,item) {
  632. this.close_order_show = true;
  633. this.close_order_con = "";
  634. this.close_order_id = id;
  635. this.close_order_api = item.fixed_button.close.api;
  636. console.log(this.close_order_api)
  637. },
  638. // 确认关闭订单
  639. sureCloseOrder() {
  640. let json = {
  641. // route:'order.vue-operation.close',
  642. order_id:this.close_order_id,
  643. reson:this.close_order_con,
  644. };
  645. console.log(json);
  646. let loading = this.$loading({target:document.querySelector("#close-order"),background: 'rgba(0, 0, 0, 0)'});
  647. this.$http.post(this.close_order_api,json).then(function (response) {
  648. if (response.data.result) {
  649. this.$message({type: 'success',message: '关闭订单成功!'});
  650. }
  651. else{
  652. this.$message({type: 'error',message: response.data.msg});
  653. }
  654. loading.close();
  655. this.close_order_show = false;
  656. this.search(this.current_page);
  657. },function (response) {
  658. this.$message({type: 'error',message: response.data.msg});
  659. loading.close();
  660. this.close_order_show = false;
  661. })
  662. },
  663. // 手动退款并关闭订单
  664. closeOrder1(id,item) {
  665. this.close_order1_show = true;
  666. this.close_order1_con = "";
  667. this.close_order1_id = id;
  668. this.close_order1_api = item.fixed_button.manualRefund.api;
  669. },
  670. // 手动确认关闭订单
  671. sureCloseOrder1() {
  672. let json = {
  673. route:'order.vue-operation.manualRefund',
  674. order_id:this.close_order1_id,
  675. reson:this.close_order1_con,
  676. }
  677. console.log(json);
  678. let loading = this.$loading({target:document.querySelector("#close-order"),background: 'rgba(0, 0, 0, 0)'});
  679. this.$http.post(this.close_order1_api,json).then(function (response) {
  680. if (response.data.result) {
  681. this.$message({type: 'success',message: '关闭订单成功!'});
  682. }
  683. else{
  684. this.$message({type: 'error',message: response.data.msg});
  685. }
  686. loading.close();
  687. this.close_order1_show = false;
  688. this.search(this.current_page);
  689. },function (response) {
  690. this.$message({type: 'error',message: response.data.msg});
  691. loading.close();
  692. this.close_order1_show = false;
  693. })
  694. },
  695. // // 取消发货
  696. // cancelSend(id) {
  697. // this.cancel_send_show = true;
  698. // this.cancel_send_con = "";
  699. // this.cancel_send_id = id;
  700. // console.log(id)
  701. // },
  702. // // 确认取消发货
  703. // sureCancelSend() {
  704. // let json = {
  705. // // route:'order.operation.manualRefund',
  706. // order_id:this.cancel_send_id,
  707. // cancelreson:this.cancel_send_con,
  708. // };
  709. // console.log(json);
  710. // let loading = this.$loading({target:document.querySelector("#cancel-send"),background: 'rgba(0, 0, 0, 0)'});
  711. // this.$http.post('{!! yzWebFullUrl('order.vue-operation.cancel-send') !!}',json).then(function (response) {
  712. // if (response.data.result) {
  713. // this.$message({type: 'success',message: '关闭订单成功!'});
  714. // }
  715. // else{
  716. // this.$message({type: 'error',message: response.data.msg});
  717. // }
  718. // loading.close();
  719. // this.close_order_show = false;
  720. // this.search(this.current_page);
  721. // },function (response) {
  722. // this.$message({type: 'error',message: response.data.msg});
  723. // loading.close();
  724. // this.close_order_show = false;
  725. // })
  726. // },
  727. // // 确认收货
  728. // confirmReceive(id) {
  729. // this.$confirm('确认订单收货吗?', '提示', {confirmButtonText: '确定',cancelButtonText: '取消',type: 'warning'}).then(() => {
  730. // let loading = this.$loading({target:document.querySelector(".content"),background: 'rgba(0, 0, 0, 0)'});
  731. // this.$http.post('{!! yzWebFullUrl('order.vue-operation.receive') !!}',{order_id:id}).then(function (response) {
  732. // if (response.data.result) {
  733. // this.$message({type: 'success',message: '操作成功'});
  734. // }
  735. // else{
  736. // this.$message({type: 'error',message: response.data.msg});
  737. // }
  738. // loading.close();
  739. // this.search(this.current_page)
  740. // },function (response) {
  741. // this.$message({type: 'error',message: response.data.msg});
  742. // loading.close();
  743. // }
  744. // );
  745. // }).catch(() => {
  746. // this.$message({type: 'info',message: '已取消操作'});
  747. // });
  748. // },
  749. // // 确认发货
  750. // confirmSend(id,item) {
  751. // let synchro = this.synchro;
  752. // this.readonly = false;
  753. // if (synchro){
  754. // this.$http.post(this.url_open,{id:id}).then(function (response) {
  755. // if (response.data.result) {
  756. // this.send.express_code = response.data.resp.shipper_code;
  757. // this.send.express_sn = response.data.resp.logistic_code;
  758. // this.readonly = true;
  759. // // this.send.express_code = 1;
  760. // console.log('66666',response.data.resp.logistic_code);
  761. // }
  762. // },function (response) {
  763. // this.$message({type: 'error',message: response.data.msg});
  764. // }
  765. // );
  766. // }
  767. // console.log('898998',synchro);
  768. // this.confirm_send_show = true;
  769. // this.confirm_send_con = "";
  770. // this.send = {
  771. // dispatch_type_id :1,
  772. // express_code:"",
  773. // express_sn:""
  774. // }
  775. // this.confirm_send_id = id;
  776. // this.address_info = item.address || {};
  777. // },
  778. // // 确认确认发货
  779. // sureconfirmSend() {
  780. // let json = {
  781. // dispatch_type_id:this.send.dispatch_type_id,
  782. // express_code:this.send.express_code,
  783. // express_sn:this.send.express_sn,
  784. // order_id:this.confirm_send_id,
  785. // };
  786. // console.log(json);
  787. // // if(this.send.express_sn == "") {
  788. // // this.$message.error("快递单号不能为空!");
  789. // // return;
  790. // // }
  791. // let loading = this.$loading({target:document.querySelector("#cancel-send"),background: 'rgba(0, 0, 0, 0)'});
  792. // this.$http.post('{!! yzWebFullUrl('order.vue-operation.send') !!}',json).then(function (response) {
  793. // if (response.data.result) {
  794. // this.$message({type: 'success',message: '确认发货成功!'});
  795. // }
  796. // else{
  797. // this.$message({type: 'error',message: response.data.msg});
  798. // }
  799. // loading.close();
  800. // this.confirm_send_show = false;
  801. // this.search(this.current_page);
  802. // },function (response) {
  803. // this.$message({type: 'error',message: response.data.msg});
  804. // loading.close();
  805. // this.confirm_send_show = false;
  806. // })
  807. // },
  808. // //多包裹发货
  809. // separateSend(id,item) {
  810. // this.more_send_show = true;
  811. // this.confirm_send_id = id;
  812. // this.send = {
  813. // dispatch_type_id :1,
  814. // express_code:"",
  815. // express_sn:"",
  816. // };
  817. // this.address_info = item.address || {};
  818. // this.getSeparateSendOrderGoods(id);
  819. // },
  820. // // 多包裹确认发货 选择商品
  821. // moreSendChange(selection) {
  822. // let arr = [];
  823. // for(let j = 0,len = selection.length; j < len; j++){
  824. // console.log(selection[j].id);
  825. // arr.push(selection[j].id);
  826. // }
  827. // this.send_order_goods_ids = arr;
  828. // },
  829. // // 获取可选择的商品 多包裹发货
  830. // getSeparateSendOrderGoods(id) {
  831. // this.$http.post('{!! yzWebFullUrl('order.multiple-packages-order-goods.get-order-goods') !!}', {order_id:id}).then(function (response) {
  832. // if (response.data.result) {
  833. // this.order_goods_send_list = response.data.data;
  834. // // console.log(this.order_goods_send_list);
  835. // } else{
  836. // this.$message({type: 'error',message: response.data.msg});
  837. // }
  838. // },function (response) {
  839. // this.$message({type: 'error',message: response.data.msg});
  840. // });
  841. // },
  842. // //多包裹确认发货
  843. // confirmMoreSend() {
  844. // if(this.send_order_goods_ids == undefined || this.send_order_goods_ids.length <= 0) {
  845. // this.$message.error("请选择分批发货订单商品!");
  846. // return;
  847. // }
  848. // if(this.send.express_sn == "") {
  849. // this.$message.error("快递单号不能为空!");
  850. // return;
  851. // }
  852. // let json = {
  853. // dispatch_type_id:this.send.dispatch_type_id,
  854. // express_code:this.send.express_code,
  855. // express_sn:this.send.express_sn,
  856. // order_id:this.confirm_send_id,
  857. // order_goods_ids:this.send_order_goods_ids,
  858. // };
  859. // console.log(json);
  860. // let loading = this.$loading({target:document.querySelector("#separate-send"),background: 'rgba(0, 0, 0, 0)'});
  861. // this.$http.post('{!! yzWebFullUrl('order.vue-operation.separate-send') !!}',json).then(function (response) {
  862. // if (response.data.result) {
  863. // this.$message({type: 'success',message: '发货成功!'});
  864. // } else{
  865. // this.$message({type: 'error',message: response.data.msg});
  866. // }
  867. // loading.close();
  868. // this.more_send_show = false;
  869. // location.reload(); //刷新页面
  870. // },function (response) {
  871. // this.$message({type: 'error',message: response.data.msg});
  872. // loading.close();
  873. // this.more_send_show = false;
  874. // })
  875. // },
  876. orderConfirm(operationType, order) {
  877. console.log(operationType, order);
  878. this.dialog_show++;
  879. this.operationOrder = order;
  880. this.operationType = operationType;
  881. // if (operationType == 1) {
  882. // this.confirmPay(order.id);
  883. // } else if (operationType == 2) {
  884. // this.confirmSend(order.id, order);
  885. // } else if (operationType == 3) {
  886. // this.confirmReceive(order.id);
  887. // } else if (operationType == 'cancel_send') {
  888. // this.cancelSend(order.id);
  889. // } else if (operationType == 'separate_send') {
  890. // this.separateSend(order.id, order);
  891. // }
  892. },
  893. // 修改价格
  894. changePrice(id,item) {
  895. this.change_price_show = true;
  896. this.change_price_id = id;
  897. let loading = this.$loading({target:document.querySelector(".content"),background: 'rgba(0, 0, 0, 0)'});
  898. this.$http.post('{!! yzWebFullUrl('order.change-order-price.index-api') !!}',{order_id:this.change_price_id}).then(function (response) {
  899. if (response.data.result) {
  900. // this.$message({type: 'success',message: '操作成功'});
  901. this.order_goods_model = response.data.data.order_goods_model;
  902. this.order_goods_model.forEach((item,index) => {
  903. this.order_goods_model[index].new_price = 0.00
  904. })
  905. this.order_model = response.data.data.order_model;
  906. this.dispatch_price = this.order_model.dispatch_price;
  907. this.getNewPrice();
  908. }
  909. else{
  910. this.$message({type: 'error',message: response.data.msg});
  911. }
  912. loading.close();
  913. },function (response) {
  914. this.$message({type: 'error',message: response.data.msg});
  915. loading.close();
  916. }
  917. );
  918. },
  919. // 输入改价
  920. inputPrice(index,price) {
  921. // 强制刷新
  922. if(index != 'dispatch_price') {
  923. this.order_goods_model.push({});
  924. this.order_goods_model.splice(this.order_goods_model.length-1,1)
  925. }
  926. if (this.judgeSign(price) == -1) {
  927. this.$message.error("请输入数字");
  928. if(index == 'dispatch_price') {
  929. this.dispatch_price = 0.00;
  930. }
  931. else {
  932. this.order_goods_model[index].new_price = 0.00
  933. }
  934. return false;
  935. }
  936. this.getNewPrice();
  937. },
  938. getNewPrice() {
  939. let new_price = 0;
  940. this.order_goods_model.forEach((item,index) => {
  941. new_price += parseFloat(item.new_price);
  942. })
  943. console.log(new_price)
  944. this.change_all_money = new_price;
  945. this.all_money = (parseFloat(this.order_model.price)-(parseFloat(this.order_model.dispatch_price))) + parseFloat(new_price) + parseFloat(this.dispatch_price);
  946. // this.
  947. },
  948. // 直接免运费
  949. clearDispatch() {
  950. this.dispatch_price = 0.00;
  951. this.getNewPrice();
  952. },
  953. // 确认改价
  954. sureChangePrice() {
  955. let json = {
  956. order_id:this.change_price_id,
  957. dispatch_price:this.dispatch_price,
  958. order_goods:[],
  959. }
  960. this.order_goods_model.forEach((item,index) => {
  961. json.order_goods.push({order_goods_id:item.id,change_price:item.new_price});
  962. })
  963. console.log(json);
  964. let loading = this.$loading({target:document.querySelector("#change-price"),background: 'rgba(0, 0, 0, 0)'});
  965. this.$http.post('{!! yzWebFullUrl('order.change-order-price.store-api') !!}',json).then(function (response) {
  966. if (response.data.result) {
  967. this.$message({type: 'success',message: '修改价格成功!'});
  968. }
  969. else{
  970. this.$message({type: 'error',message: response.data.msg});
  971. }
  972. loading.close();
  973. this.change_price_show = false;
  974. this.search(this.current_page);
  975. },function (response) {
  976. this.$message({type: 'error',message: response.data.msg});
  977. loading.close();
  978. this.change_price_show = false;
  979. })
  980. },
  981. // 判断是否是数字
  982. judgeSign(num) {
  983. var reg = new RegExp("^-?[0-9]*.?[0-9]*$");
  984. if ( reg.test(num) ) {
  985. var absVal = Math.abs(num);
  986. return num==absVal?'是正数':'是负数';
  987. }
  988. else {
  989. return -1;
  990. }
  991. },
  992. export1(export_type,template){
  993. let that = this;
  994. console.log(that.search_form);
  995. let json = that.search_form;
  996. if(this.times && this.times.length>0) {
  997. json.start_time = this.times[0];
  998. json.end_time = this.times[1];
  999. }
  1000. let url = this.exportUrl;
  1001. url += "&export_type="+export_type+"&template="+template;
  1002. if (that.code) {
  1003. url+="&code="+that.code
  1004. }
  1005. for(let i in json){
  1006. if (json[i]) {
  1007. url+="&search["+i+"]="+ json[i]
  1008. }
  1009. }
  1010. console.log(url);
  1011. window.location.href = url;
  1012. },
  1013. gotoGoods(id,item) {
  1014. /*console.log(item)
  1015. if(!item.fixed_button.goods_detail.is_show) {
  1016. return
  1017. }
  1018. let link = item.fixed_button.goods_detail.api*/
  1019. window.location.href = `{!! yzWebFullUrl('plugin.reserve-simple.admin.goods.edit') !!}`+`&id=`+id;
  1020. //window.location.href = link+`&id=`+id;
  1021. },
  1022. gotoMember(id) {
  1023. window.location.href = `{!! yzWebFullUrl('member.member.detail') !!}`+`&id=`+id;
  1024. },
  1025. // 字符转义
  1026. escapeHTML(a) {
  1027. a = "" + a;
  1028. return a.replace(/&amp;/g, "&").replace(/&lt;/g, "<").replace(/&gt;/g, ">").replace(/&quot;/g, "\"").replace(/&apos;/g, "'");;
  1029. },
  1030. getParam(name) {
  1031. var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
  1032. var r = window.location.search.substr(1).match(reg);
  1033. if (r != null) return unescape(r[2]);
  1034. return null;
  1035. },
  1036. reloadList() {
  1037. this.search(this.current_page)
  1038. }
  1039. },
  1040. })
  1041. </script>
  1042. @endsection