printer.php 37 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844
  1. <style>
  2. .form-body {
  3. padding: 20px 0;
  4. background-color: #fff;
  5. margin-bottom: 20px;
  6. }
  7. .form-button {
  8. margin: 0;
  9. }
  10. .form-button .el-form-item__content {
  11. margin-left: 0!important;
  12. }
  13. .button-item {
  14. padding: 9px 25px;
  15. }
  16. .app-share {
  17. padding-top: 12px;
  18. border-top: 1px solid #e2e2e2;
  19. margin-top: -20px;
  20. }
  21. .app-share .app-share-bg {
  22. position: relative;
  23. width: 310px;
  24. height: 360px;
  25. background-repeat: no-repeat;
  26. background-size: contain;
  27. background-position: center
  28. }
  29. .app-share .app-share-bg .title {
  30. width: 160px;
  31. height: 29px;
  32. line-height: 1;
  33. word-break: break-all;
  34. text-overflow: ellipsis;
  35. display: -webkit-box;
  36. -webkit-box-orient: vertical;
  37. -webkit-line-clamp: 2;
  38. overflow: hidden;
  39. }
  40. .app-share .app-share-bg .pic-image {
  41. background-repeat: no-repeat;
  42. background-position: 0 0;
  43. background-size: cover;
  44. width: 160px;
  45. height: 130px;
  46. }
  47. .goods-list {
  48. flex-wrap: wrap;
  49. margin-top: 10px;
  50. /* cursor: move; */
  51. }
  52. .goods-item,
  53. .goods-add {
  54. width: 50px;
  55. height: 50px;
  56. position: relative;
  57. border: 1px solid #e2e2e2;
  58. margin-right: 15px;
  59. margin-bottom: 15px;
  60. }
  61. .goods-add .el-button {
  62. width: 100%;
  63. height: 100%;
  64. border: none;
  65. border-radius: 0;
  66. padding: 0;
  67. }
  68. .goods-delete {
  69. position: absolute;
  70. left: calc(100% - 13px);
  71. top: -13px;
  72. width: 25px;
  73. height: 25px;
  74. line-height: 25px;
  75. padding: 0 0;
  76. visibility: hidden;
  77. z-index: 1;
  78. }
  79. .goods-delete .el-icon-close {
  80. position: absolute;
  81. top: 6px;
  82. left: 6px;
  83. }
  84. .goods-item:hover .goods-delete {
  85. visibility: visible;
  86. }
  87. .goods-pic {
  88. background-size: cover;
  89. background-position: center;
  90. width: 100%;
  91. height: 100%;
  92. background-color: #f6f6f6;
  93. background-repeat: no-repeat;
  94. }
  95. .input-item {
  96. display: inline-block;
  97. width: 250px;
  98. margin: 0;
  99. }
  100. .input-item .el-input__inner {
  101. border-right: 0;
  102. }
  103. .input-item .el-input__inner:hover {
  104. border: 1px solid #dcdfe6;
  105. border-right: 0;
  106. outline: 0;
  107. }
  108. .input-item .el-input__inner:focus {
  109. border: 1px solid #dcdfe6;
  110. border-right: 0;
  111. outline: 0;
  112. }
  113. .input-item .el-input-group__append {
  114. background-color: #fff;
  115. border-left: 0;
  116. width: 10%;
  117. padding: 0;
  118. }
  119. .input-item .el-input-group__append .el-button {
  120. padding: 0;
  121. }
  122. .input-item .el-input-group__append .el-button {
  123. margin: 0;
  124. }
  125. .customize-share-title {
  126. position: relative;
  127. margin-top: 10px;
  128. }
  129. .customize-share-title .del-btn {
  130. position: absolute;
  131. top: -10px;
  132. left: 70px;
  133. }
  134. </style>
  135. <!--打印机列表-->
  136. <div id="app">
  137. <div v-cloak v-if="printer">
  138. <div >
  139. <el-button style="float: right; margin: 5px 0" type="primary" size="small"
  140. @click="handle('pop_add_printer')">添加打印机
  141. </el-button>
  142. </div>
  143. <el-table v-loading="loading" border :data="printerData" style="width: 100%;margin-bottom: 15px">
  144. <el-table-column width='300' prop="name" label="打印机名称"></el-table-column>
  145. <el-table-column prop="brand" label="打印机品牌"></el-table-column>
  146. <el-table-column label="操作" width="220">
  147. <template slot-scope="scope">
  148. <el-button type="text" @click="handle('get_setting', scope.row)" size="small" circle>
  149. <el-tooltip class="item" effect="dark" content="门店打印配置" placement="top">
  150. <img src="resources/img/mall/edit.png" alt="">
  151. </el-tooltip>
  152. </el-button>
  153. <el-button type="text" @click="handle('printer_edit', scope.row)" size="small" circle>
  154. <el-tooltip class="item" effect="dark" content="打印机配置" placement="top">
  155. <img src="resources/img/mall/detail.png" alt="">
  156. </el-tooltip>
  157. </el-button>
  158. <el-button type="text" @click="handle('delete_printer', scope.row.id)" size="small" circle>
  159. <el-tooltip class="item" effect="dark" content="删除" placement="top">
  160. <img src="resources/img/mall/del.png" alt="">
  161. </el-tooltip>
  162. </el-button>
  163. </template>
  164. </el-table-column>
  165. </el-table>
  166. </div>
  167. <!--打印机列表-->
  168. <!--弹出添加打印机-->
  169. <!--------------------------------------->
  170. <el-dialog :close-on-click-modal="false" title="打印设置" :visible.sync="printerPop" width="35%">
  171. <el-form :model="printerForm" label-width="10rem" :rules="FormRules" ref="printerForm">
  172. <div class="form-body">
  173. <el-form-item label="打印机名称" prop="print_name">
  174. <el-col :span="10">
  175. <el-input size="small" v-model="printerForm.print_name" autocomplete="off"></el-input>
  176. </el-col>
  177. </el-form-item>
  178. <el-form-item prop="type">
  179. <template slot='label'>
  180. <span>打印机类型</span>
  181. <el-tooltip effect="dark" content="目前支持365-kdt2云打印、易联云、飞鹅打印机、佳博云打印"
  182. placement="top">
  183. <i class="el-icon-info"></i>
  184. </el-tooltip>
  185. </template>
  186. <el-col :span="10">
  187. <el-select size="small" v-model="form.type" placeholder="请选择打印机类型" @change="toggle">
  188. <el-option :label="item.label" :value="item.value" v-for="item in selectPrintType" :key="item.id"></el-option>
  189. </el-select>
  190. </el-col>
  191. </el-form-item>
  192. <el-form-item prop="apiKey" v-if="form.type == 'gainscha-gp'">
  193. <template slot='label'>
  194. <span>API密钥</span>
  195. <el-tooltip effect="dark" content="(云平台系统集成里获取)"
  196. placement="top">
  197. <i class="el-icon-info"></i>
  198. </el-tooltip>
  199. </template>
  200. <el-col :span="10">
  201. <el-input size="small" v-model="printerForm.apiKey" autocomplete="off"></el-input>
  202. </el-col>
  203. </el-form-item>
  204. <el-form-item prop="user" v-if="form.type == 'feie'">
  205. <template slot='label'>
  206. <span>USER</span>
  207. <el-tooltip effect="dark" content="飞鹅云后台注册用户名"
  208. placement="top">
  209. <i class="el-icon-info"></i>
  210. </el-tooltip>
  211. </template>
  212. <el-col :span="10">
  213. <el-input size="small" v-model="printerForm.user" autocomplete="off"></el-input>
  214. </el-col>
  215. </el-form-item>
  216. <el-form-item prop="ukey" v-if="form.type == 'feie'">
  217. <template slot='label'>
  218. <span>UKEY</span>
  219. <el-tooltip effect="dark" content="飞鹅云后台登录生成的UKEY"
  220. placement="top">
  221. <i class="el-icon-info"></i>
  222. </el-tooltip>
  223. </template>
  224. <el-col :span="10">
  225. <el-input size="small" v-model="printerForm.ukey" autocomplete="off"></el-input>
  226. </el-col>
  227. </el-form-item>
  228. <el-form-item prop="sn" v-if="form.type == 'feie'">
  229. <template slot='label'>
  230. <span>打印机编号</span>
  231. <el-tooltip effect="dark" content="打印机编号9位,查看飞鹅打印机底部贴纸上面的打印机编号"
  232. placement="top">
  233. <i class="el-icon-info"></i>
  234. </el-tooltip>
  235. </template>
  236. <el-col :span="10">
  237. <el-input size="small" v-model="printerForm.sn" autocomplete="off"></el-input>
  238. </el-col>
  239. </el-form-item>
  240. <el-form-item prop="machine_code" v-if="form.type == 'yilianyun-k4'">
  241. <template slot='label'>
  242. <span>终端号</span>
  243. <el-tooltip effect="dark" content="打印机终端号"
  244. placement="top">
  245. <i class="el-icon-info"></i>
  246. </el-tooltip>
  247. </template>
  248. <el-col :span="10">
  249. <el-input size="small" v-model="printerForm.machine_code" autocomplete="off"></el-input>
  250. </el-col>
  251. </el-form-item>
  252. <el-form-item prop="key" v-if="form.type == 'feie' || form.type == 'yilianyun-k4'">
  253. <template slot='label'>
  254. <span>{{form.type == 'feie'?'打印机key':'密钥'}}</span>
  255. <el-tooltip effect="dark" :content="form.type == 'feie'?'查看飞鹅打印机底部贴纸上面的打印机key':'打印机终端密钥'"
  256. placement="top">
  257. <i class="el-icon-info"></i>
  258. </el-tooltip>
  259. </template>
  260. <el-col :span="10">
  261. <el-input size="small" v-model="printerForm.key" autocomplete="off"></el-input>
  262. </el-col>
  263. </el-form-item>
  264. <el-form-item label="打印机编号" prop="name" v-if="form.type == '360-kdt2'">
  265. <el-col :span="10">
  266. <el-input size="small" v-model="printerForm.name" autocomplete="off"></el-input>
  267. </el-col>
  268. </el-form-item>
  269. <el-form-item label="打印机密钥" prop="key" v-if="form.type == '360-kdt2'">
  270. <el-col :span="10">
  271. <el-input size="small" v-model="printerForm.key" autocomplete="off"></el-input>
  272. </el-col>
  273. </el-form-item>
  274. <el-form-item prop="client_id" v-if="form.type == 'yilianyun-k4'">
  275. <template slot='label'>
  276. <span>用户ID</span>
  277. <el-tooltip effect="dark" content="用户id(管理中心系统集成里获取)"
  278. placement="top">
  279. <i class="el-icon-info"></i>
  280. </el-tooltip>
  281. </template>
  282. <el-col :span="10">
  283. <el-input size="small" v-model="printerForm.client_id" autocomplete="off"></el-input>
  284. </el-col>
  285. </el-form-item>
  286. <el-form-item label="" prop="client_key" v-if="form.type == 'yilianyun-k4'">
  287. <template slot='label'>
  288. <span>apiKey</span>
  289. <el-tooltip effect="dark" content="apiKey(管理中心系统集成里获取)"
  290. placement="top">
  291. <i class="el-icon-info"></i>
  292. </el-tooltip>
  293. </template>
  294. <el-col :span="10">
  295. <el-input size="small" v-model="printerForm.client_key" autocomplete="off"></el-input>
  296. </el-col>
  297. </el-form-item>
  298. <el-form-item prop="memberCode" v-if="form.type == 'gainscha-gp'">
  299. <template slot='label'>
  300. <span>商户编号</span>
  301. <el-tooltip effect="dark" content="(云平台系统集成里获取)"
  302. placement="top">
  303. <i class="el-icon-info"></i>
  304. </el-tooltip>
  305. </template>
  306. <el-col :span="10">
  307. <el-input size="small" v-model="printerForm.memberCode" autocomplete="off"></el-input>
  308. </el-col>
  309. </el-form-item>
  310. <el-form-item prop="deviceNo" v-if="form.type == 'gainscha-gp'">
  311. <template slot='label'>
  312. <span>终端编号</span>
  313. <el-tooltip effect="dark" content="(云平台系统集成里获取)"
  314. placement="top">
  315. <i class="el-icon-info"></i>
  316. </el-tooltip>
  317. </template>
  318. <el-col :span="10">
  319. <el-input size="small" v-model="printerForm.deviceNo" autocomplete="off"></el-input>
  320. </el-col>
  321. </el-form-item>
  322. <el-form-item prop="time">
  323. <template slot='label'>
  324. <span>打印联数</span>
  325. <el-tooltip effect="dark" content="同一订单,打印的次数"
  326. placement="top">
  327. <i class="el-icon-info"></i>
  328. </el-tooltip>
  329. </template>
  330. <el-col :span="10">
  331. <el-input size="small" v-model="printerForm.time" autocomplete="off"></el-input>
  332. </el-col>
  333. </el-form-item>
  334. </div>
  335. <el-form-item class="form-button">
  336. <el-button sizi="mini" class="button-item" :loading="loading" type="primary" @click="handle('add_printer')">
  337. 保存
  338. </el-button>
  339. <el-button sizi="mini" class="button-item" @click="handle('cancel_add_printer')">
  340. 取消
  341. </el-button>
  342. </el-form-item>
  343. </el-form>
  344. </el-dialog>
  345. <!--弹出添加打印机-->
  346. <!--打印机门店配置列表-->
  347. <div v-loading="loading" v-if="printerSetting">
  348. <div >
  349. <el-button style="float: right; margin: 5px 0" type="primary" size="small" @click="handle('add_setting_pop')">添加门店打印设置
  350. </el-button>
  351. </div>
  352. <el-table border :data="printerSettingList" style="width: 100%;margin-bottom: 15px">
  353. <el-table-column width='100' prop="id" label="打印机id"></el-table-column>
  354. <el-table-column width="150" prop="name" label="打印机名称"></el-table-column>
  355. <el-table-column label="打印方式">
  356. <template slot-scope="scope">
  357. <el-tooltip style="margin-right: 10px" effect="dark" v-if="scope.row.type.order == '1'" content="下单打印" placement="top">
  358. <img src="resources/img/mall/order_print.png" alt="">
  359. </el-tooltip>
  360. <el-tooltip style="margin-right: 10px" effect="dark" v-if="scope.row.type.pay == '1'" content="付款打印" placement="top">
  361. <img src="resources/img/mall/pay_print.png" alt="">
  362. </el-tooltip>
  363. <el-tooltip style="margin-right: 10px" effect="dark" v-if="scope.row.type.confirm == '1'" content="确认收货打印" placement="top">
  364. <img src="resources/img/mall/confirm_print.png" alt="">
  365. </el-tooltip>
  366. </template>
  367. </el-table-column>
  368. <el-table-column prop="store_name" label="所属门店"></el-table-column>
  369. <el-table-column label="是否使用规格" width="120">
  370. <template slot-scope="scope">
  371. <el-switch
  372. :active-value="1"
  373. :inactive-value="0"
  374. @change="handle('update_setting', scope.row)"
  375. v-model="scope.row.is_attr">
  376. </el-switch>
  377. </template>
  378. </el-table-column>
  379. <el-table-column label="是否启用" width="100">
  380. <template slot-scope="scope">
  381. <el-switch
  382. :active-value="1"
  383. :inactive-value="0"
  384. @change="handle('update_setting', scope.row)"
  385. v-model="scope.row.status">
  386. </el-switch>
  387. </template>
  388. </el-table-column>
  389. <el-table-column label="操作" width="220">
  390. <template slot-scope="scope">
  391. <el-button type="text" @click="handle('add_setting_pop', scope.row)" size="small" circle>
  392. <el-tooltip class="item" effect="dark" content="编辑门店配置" placement="top">
  393. <img src="resources/img/mall/edit.png" alt="">
  394. </el-tooltip>
  395. </el-button>
  396. <el-button type="text" @click="handle('delete_setting', scope.row.id)" size="small" circle>
  397. <el-tooltip class="item" effect="dark" content="删除" placement="top">
  398. <img src="resources/img/mall/del.png" alt="">
  399. </el-tooltip>
  400. </el-button>
  401. </template>
  402. </el-table-column>
  403. </el-table>
  404. <div flex="box:last cross:center">
  405. <div></div>
  406. <div>
  407. <el-pagination v-if="pagination" :page-size="pagination.defaultPageSize"
  408. style="display: inline-block;float: right;" background @current-change="pageChange"
  409. layout="prev, pager, next" :total="pagination.totalCount">
  410. </el-pagination>
  411. </div>
  412. </div>
  413. </div>
  414. <!--打印机门店配置列表-->
  415. <!--弹窗添加配置弹窗-->
  416. <el-dialog :close-on-click-modal="false" title="打印设置" :visible.sync="settingPop" width="35%">
  417. <el-form v-loading="loading" :model="printerSettingForm" label-width="10rem" label-position="right">
  418. <!-- <el-form-item label="选择打印机" prop="select">
  419. <el-select filterable v-model="printerSettingForm.printer_id" size="small">
  420. <el-option :label="item.name" :value="item.id" :key="item.id" v-for="item in select"></el-option>
  421. </el-select>
  422. </el-form-item> -->
  423. <el-form-item label="选择门店" prop="select">
  424. <el-select filterable v-model="printerSettingForm.store_id" size="small">
  425. <el-option :label="item.name" :value="item.id" :key="item.id" v-for="item in stores"></el-option>
  426. </el-select>
  427. </el-form-item>
  428. <el-form-item label="是否打印规格" prop="is_attr">
  429. <el-switch v-if="!loading"
  430. v-if="settingPop"
  431. v-model="printerSettingForm.is_attr"
  432. :active-value="1"
  433. :inactive-value="0">
  434. </el-switch>
  435. </el-form-item>
  436. <el-form-item label="订单打印方式" prop="type">
  437. <el-checkbox-group v-if="!loading" v-model="type">
  438. <el-checkbox label="order">下单打印</el-checkbox>
  439. <el-checkbox label="pay">付款打印</el-checkbox>
  440. <el-checkbox label="confirm">确认收货打印</el-checkbox>
  441. </el-checkbox-group>
  442. </el-form-item>
  443. <el-form-item label="是否启用" prop="status">
  444. <el-switch v-if="!loading"
  445. v-if="settingPop"
  446. v-model="printerSettingForm.status"
  447. :active-value="1"
  448. :inactive-value="0">
  449. </el-switch>
  450. </el-form-item>
  451. <el-form-item style="margin-bottom: 0">
  452. <el-button type="primary" size="small" style="float: right;width: 80px;margin-right: 20px;" :loading="loading" @click="handle('add_setting')">提交</el-button>
  453. </el-form-item>
  454. </el-form>
  455. </el-dialog>
  456. <!--弹处添加配置弹窗-->
  457. </div>
  458. <script>
  459. const app = new Vue({
  460. el: '#app',
  461. data() {
  462. return {
  463. openOff: false,
  464. printerSettingList: [],
  465. pagination: null,
  466. loading: false,
  467. printer: true,//打印机列表
  468. printerPop: false,//新增打印机弹窗
  469. printerSetting: false,//打印机设置
  470. settingPop: false,//设置弹窗
  471. printer_id: 1,
  472. printer_name: '',
  473. selectPrintType: [],
  474. app_style: [],
  475. type: [],
  476. form: {},
  477. printerForm: {},
  478. printerData:[],
  479. submitLoading: false,
  480. submitSettingLoading: false,
  481. printerSettingPage: 1,
  482. stores: [{id:0,name:"全门店通用"}],
  483. printerSettingForm: {
  484. is_attr: '0',
  485. status: '0',
  486. store_id: 0,
  487. type: {
  488. order: '0',
  489. pay: '0',
  490. confirm: '0',
  491. },
  492. },
  493. FormRules: {
  494. print_name: [
  495. { required: true, message: '打印机名称不能为空', trigger: 'change' },
  496. { min: 1, max: 30, message: "打印机名称长度在1-30个字符内" },
  497. ],
  498. name: [
  499. { required: true, message: '打印机编号不能为空', trigger: 'change' }
  500. ],
  501. user: [
  502. { required: true, message: '用户名不能为空', trigger: 'change' }
  503. ],
  504. ukey: [
  505. { required: true, message: 'UKEY不能为空', trigger: 'change' }
  506. ],
  507. sn: [
  508. { required: true, message: '打印机编号不能为空', trigger: 'change' }
  509. ],
  510. machine_code: [
  511. { required: true, message: '终端号不能为空', trigger: 'change' }
  512. ],
  513. key: [
  514. { required: true, message: '密钥不能为空', trigger: 'change' }
  515. ],
  516. client_key: [
  517. { required: true, message: 'API密钥不能为空', trigger: 'change' }
  518. ],
  519. apiKey: [
  520. { required: true, message: 'API密钥不能为空', trigger: 'change' }
  521. ],
  522. memberCode: [
  523. { required: true, message: '商户编号不能为空', trigger: 'change' }
  524. ],
  525. deviceNo: [
  526. { required: true, message: '终端编号不能为空', trigger: 'change' }
  527. ],
  528. client_id: [
  529. { required: true, message: '用户ID不能为空', trigger: 'change' }
  530. ],
  531. time: [
  532. { required: true, message: '打印联数不能为空', trigger: 'change' }
  533. ],
  534. },
  535. }
  536. },
  537. mounted: function() {
  538. this.loadData();
  539. },
  540. methods: {
  541. //打印机列表
  542. loadData() {
  543. this.loading = true;
  544. this.printerPop = false;
  545. request({
  546. params: {
  547. r: 'mall/setting/printer',
  548. },
  549. method: 'get'
  550. }).then(e=>{
  551. this.loading = false;
  552. if (e.data.code == 0) {
  553. this.printerData = e.data.data;
  554. }
  555. }).catch(e => {
  556. this.loading = false;
  557. this.$message.error(e.data.msg);
  558. })
  559. request({
  560. params: {
  561. r: 'mall/setting/get-printer-type'
  562. },
  563. method: 'get'
  564. }).then(e=>{
  565. if (e.data.code == 0) {
  566. this.selectPrintType = e.data.data;
  567. } else {
  568. this.$message({
  569. message: e.data.msg,
  570. type: 'error'
  571. });
  572. }
  573. }).catch(e=>{
  574. this.$message({
  575. message: e.data.msg,
  576. type: 'error'
  577. });
  578. })
  579. },
  580. //商户打印配置列表
  581. loadSettingData(){
  582. this.loading = true;
  583. this.printerPop = false;
  584. this.printer = false;
  585. this.printerSetting = true;
  586. id = this.printer_id;
  587. request({
  588. params: {
  589. r: 'mall/setting/printer-setting',
  590. printer_id: id,
  591. },
  592. method: 'get',
  593. }).then(e => {
  594. this.loading = false;
  595. if (e.data.code == 0) {
  596. this.printerSettingList = e.data.data.list;
  597. this.pagination = e.data.data.pagination;
  598. }
  599. }).catch(err=>{
  600. this.loading = true;
  601. this.$message({
  602. message: err.data.msg,
  603. type: 'error'
  604. });
  605. })
  606. },
  607. pageChange(page) {
  608. this.printerSettingPage = page;
  609. this.loadSettingData();
  610. },
  611. handle(type, data = null) {
  612. switch (type) {
  613. //弹出添加打印机弹窗
  614. case 'pop_add_printer':
  615. this.printerPop = true;
  616. this.loading = false;
  617. break;
  618. //添加打印机
  619. case 'add_printer':
  620. this.$refs.printerForm.validate((valid) => {
  621. this.loading = true;
  622. this.printerForm.type = this.form.type;
  623. this.printerForm.name = this.printerForm.print_name;
  624. let para = Object.assign(this.printerForm);
  625. console.log(para);
  626. request({
  627. params: {
  628. r: 'mall/setting/edit-printer',
  629. },
  630. data: para,
  631. method: 'post'
  632. }).then(e=>{
  633. this.loading = false;
  634. if (e.data.code == 0) {
  635. this.$message({
  636. message: e.data.msg,
  637. type: 'success'
  638. });
  639. location.reload();
  640. } else {
  641. this.$message({
  642. message: e.data.msg,
  643. type: 'error'
  644. });
  645. }
  646. }).catch(e=>{
  647. this.loading = false;
  648. this.$message({
  649. message: e.data.msg,
  650. type: 'error'
  651. });
  652. })
  653. })
  654. break;
  655. //打印机设置
  656. case 'get_setting':
  657. this.printer_id = data.id;
  658. this.printer_name = data.name;
  659. this.loadSettingData();
  660. break;
  661. //弹处添加设置弹窗
  662. case 'add_setting_pop':
  663. this.settingPop = true;
  664. this.printerPop = false;
  665. this.printer = false;
  666. this.printerSettingForm['printer_id'] = this.printer_id;
  667. this.printerSettingForm['name'] = this.printer_name;
  668. this.printerSettingForm['id'] = '';
  669. if (data != null) {
  670. this.printerSettingForm = data;
  671. if (this.printerSettingForm.type.order == 1) this.type.push('order');
  672. if (this.printerSettingForm.type.pay == 1) this.type.push('pay');
  673. if (this.printerSettingForm.type.confirm == 1) this.type.push('confirm');
  674. }
  675. break;
  676. //添加设置
  677. case 'add_setting':
  678. this.loading = true;
  679. this.printerSettingForm.type.order = this.type.indexOf('order') !== -1 ? 1 :0;
  680. this.printerSettingForm.type.pay = this.type.indexOf('pay') !== -1 ? 1 :0;
  681. this.printerSettingForm.type.confirm = this.type.indexOf('confirm') !== -1 ? 1 :0;
  682. this.printerSettingForm.type = JSON.stringify(this.printerSettingForm.type);
  683. let para = Object.assign(this.printerSettingForm);
  684. request({
  685. params: {
  686. r: 'mall/setting/edit-printer-setting'
  687. },
  688. data: para,
  689. method: 'post'
  690. }).then(e=>{
  691. this.loading = false;
  692. if (e.data.code == 0) {
  693. this.$message({
  694. message: e.data.msg,
  695. type: 'success'
  696. });
  697. this.printerSettingPage = 1;
  698. this.settingPop = false;
  699. this.loadSettingData();
  700. this.printerSettingForm={is_attr: '0',status: '0',store_id: 0,type: {order: '0',pay: '0',confirm: '0'}};
  701. this.type = [];
  702. } else {
  703. this.$message({
  704. message: e.data.msg,
  705. type: 'error'
  706. });
  707. }
  708. }).catch(e=>{
  709. this.loading = false;
  710. this.$message.error(e.data.msg);
  711. })
  712. break;
  713. //删除设置
  714. case 'delete_setting':
  715. this.loading = true;
  716. this.$confirm('确认删除该记录吗?', '提示',{
  717. type: 'warning'
  718. }).then(() => {
  719. request({
  720. params: {
  721. r: 'mall/setting/dele-printer-setting',
  722. },
  723. method: 'post',
  724. data: {
  725. id: data,
  726. }
  727. }).then(e=>{
  728. console.log(e)
  729. this.loading = false;
  730. this.$message({
  731. message: e.data.msg,
  732. type: 'success'
  733. });
  734. this.loadSettingData();
  735. }).catch(e=>{
  736. this.loading = false;
  737. this.$message({
  738. message: e.data.msg,
  739. type: 'error'
  740. });
  741. })
  742. })
  743. break;
  744. //删除打印机
  745. case 'delete_printer':
  746. this.$confirm('确认删除该记录吗?', '提示',{
  747. type: 'warning'
  748. }).then(() => {
  749. this.loading = true;
  750. request({
  751. params: {
  752. r: 'mall/setting/dele-printer',
  753. },
  754. method: 'post',
  755. data: {
  756. id: data,
  757. }
  758. }).then(e=>{
  759. this.loading = false;
  760. this.$message({
  761. message: e.data.msg,
  762. type: 'success'
  763. });
  764. location.reload();
  765. }).catch(e=>{
  766. this.loading = false;
  767. this.$message({
  768. message: e.data.msg,
  769. type: 'error'
  770. });
  771. })
  772. })
  773. break;
  774. //编辑打印机
  775. case 'printer_edit':
  776. this.printerPop = true;
  777. this.$set(this.printerForm,"type", data['type']);
  778. this.$set(this.printerForm,"brand", data['brand']);
  779. this.$set(this.printerForm,"name", data['name']);
  780. this.$set(this.printerForm,"print_name", data['name']);
  781. this.$set(this.form,'type',data['type']);
  782. for (i in data['printer_config']) {
  783. this.$set(this.printerForm,i,data['printer_config'][i]);
  784. }
  785. this.printerForm['id'] = data['id'];
  786. break;
  787. //关闭添加打印机
  788. case 'cancel_add_printer':
  789. this.printerPop = false;
  790. break;
  791. //是否启用,是否使用规格
  792. case 'update_setting':
  793. request({
  794. params: {
  795. r: 'mall/setting/change-printer-setting',
  796. },
  797. method: 'post',
  798. data: {status: data['status'], is_attr: data['is_attr'], id:data['id']}
  799. }).then(e=>{
  800. if (e.data.code == 0) {
  801. this.$message({
  802. message: e.data.msg,
  803. type: 'success'
  804. });
  805. } else {
  806. this.$message({
  807. message: e.data.msg,
  808. type: 'error'
  809. });
  810. }
  811. }).catch(e=>{
  812. this.$message({
  813. message: e.data.msg,
  814. type: 'error'
  815. });
  816. })
  817. break;
  818. default:
  819. break;
  820. }
  821. },
  822. //选择打印机
  823. toggle(value) {
  824. for (let i = 0; i < this.selectPrintType.length; i++) {
  825. if (this.selectPrintType[i]['value'] == value) {
  826. this.printerForm.brand = this.selectPrintType[i]['label'];
  827. }
  828. }
  829. this.$refs.printerForm.clearValidate()
  830. },
  831. }
  832. })
  833. </script>