add.vue 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585
  1. <template>
  2. <base-page>
  3. <view class="common-wrap common-form body-overhide">
  4. <view class="common-title">打印机设置</view>
  5. <view class="common-form-item">
  6. <label class="form-label">
  7. <text class="required">*</text>
  8. 打印机名称
  9. </label>
  10. <view class="form-input-inline"><input type="text" v-model="savedata.printer_name" class="form-input" /></view>
  11. <text class="form-word-aux"></text>
  12. </view>
  13. <view class="common-form-item">
  14. <label class="form-label">
  15. <text class="required">*</text>
  16. 打印机品牌
  17. </label>
  18. <view class="form-input-inline"><view class="form-input">易联云</view></view>
  19. <text class="form-word-aux"></text>
  20. </view>
  21. <view class="common-form-item">
  22. <label class="form-label">
  23. <text class="required">*</text>
  24. 打印机编号
  25. </label>
  26. <view class="form-input-inline"><input type="text" v-model="savedata.printer_code" class="form-input" /></view>
  27. <text class="form-word-aux"></text>
  28. </view>
  29. <view class="common-form-item">
  30. <label class="form-label">
  31. <text class="required">*</text>
  32. 打印机密钥
  33. </label>
  34. <view class="form-input-inline"><input type="text" v-model="savedata.printer_key" class="form-input" /></view>
  35. <text class="form-word-aux"></text>
  36. </view>
  37. <view class="common-form-item">
  38. <label class="form-label">
  39. <text class="required">*</text>
  40. 应用id
  41. </label>
  42. <view class="form-input-inline"><input type="text" v-model="savedata.open_id" class="form-input" /></view>
  43. <text class="form-word-aux-line">应用id(易联云-开发者中心后台应用中心里获取)</text>
  44. </view>
  45. <view class="common-form-item">
  46. <label class="form-label">
  47. <text class="required">*</text>
  48. apiKey
  49. </label>
  50. <view class="form-input-inline"><input type="text" v-model="savedata.apikey" class="form-input" /></view>
  51. <text class="form-word-aux-line">apiKey(易联云-开发者中心后台应用中心里获取)</text>
  52. </view>
  53. <view class="common-title">支付打印</view>
  54. <view class="common-form-item">
  55. <label class="form-label">支付打印</label>
  56. <view class="form-inline">
  57. <radio-group @change="orderPayChange" class="form-radio-group">
  58. <label class="radio form-radio-item">
  59. <radio value="1" :checked="savedata.order_pay_open == 1" />
  60. 开启
  61. </label>
  62. <label class="radio form-radio-item">
  63. <radio value="0" :checked="savedata.order_pay_open == 0" />
  64. 关闭
  65. </label>
  66. </radio-group>
  67. </view>
  68. </view>
  69. <view class="common-form-item" v-if="savedata.order_pay_open == 1">
  70. <label class="form-label">打印模板</label>
  71. <view class="form-input-inline " v-if="template.goodsorder && template.goodsorder.length"><uni-data-select v-model="orderPayTempIndex" :localdata="template.goodsorder"></uni-data-select></view>
  72. </view>
  73. <view class="common-form-item" v-if="savedata.order_pay_open == 1">
  74. <label class="form-label">打印联数</label>
  75. <view class="form-inline">
  76. <radio-group @change="orderPayNumChange" class="form-radio-group">
  77. <label class="radio form-radio-item">
  78. <radio value="1" :checked="savedata.order_pay_print_num == 1" />
  79. 1
  80. </label>
  81. <label class="radio form-radio-item">
  82. <radio value="2" :checked="savedata.order_pay_print_num == 2" />
  83. 2
  84. </label>
  85. <label class="radio form-radio-item">
  86. <radio value="3" :checked="savedata.order_pay_print_num == 3" />
  87. 3
  88. </label>
  89. <label class="radio form-radio-item">
  90. <radio value="4" :checked="savedata.order_pay_print_num == 4" />
  91. 4
  92. </label>
  93. </radio-group>
  94. </view>
  95. </view>
  96. <view class="common-form-item" v-if="savedata.order_pay_open == 1">
  97. <label class="form-label">订单类型</label>
  98. <view class="form-block">
  99. <checkbox-group class="form-checkbox-group" @change="orderPayTypeChange">
  100. <label class="form-checkbox-item" v-for="(item, index) in orderType">
  101. <checkbox
  102. :value="item.type.toString()"
  103. :checked="savedata.order_pay_order_type.includes(item.type.toString()) || savedata.order_pay_order_type.includes(parseInt(item.type))"
  104. />
  105. {{ item.name }}
  106. </label>
  107. </checkbox-group>
  108. </view>
  109. </view>
  110. <view class="common-title">收货打印</view>
  111. <view class="common-form-item">
  112. <label class="form-label">收货打印</label>
  113. <view class="form-inline">
  114. <radio-group @change="takeDeliveryChange" class="form-radio-group">
  115. <label class="radio form-radio-item">
  116. <radio value="1" :checked="savedata.take_delivery_open == 1" />
  117. 开启
  118. </label>
  119. <label class="radio form-radio-item">
  120. <radio value="0" :checked="savedata.take_delivery_open == 0" />
  121. 关闭
  122. </label>
  123. </radio-group>
  124. </view>
  125. </view>
  126. <view class="common-form-item" v-if="savedata.take_delivery_open == 1">
  127. <label class="form-label">打印模板</label>
  128. <view class="form-input-inline" v-if="template.goodsorder && template.goodsorder.length"><uni-data-select v-model="takeDeliveryTempIndex" :localdata="template.goodsorder"></uni-data-select></view>
  129. </view>
  130. <view class="common-form-item" v-if="savedata.take_delivery_open == 1">
  131. <label class="form-label">打印联数</label>
  132. <view class="form-inline">
  133. <radio-group @change="takeDeliveryNumChange" class="form-radio-group">
  134. <label class="radio form-radio-item">
  135. <radio value="1" :checked="savedata.take_delivery_print_num == 1" />
  136. 1
  137. </label>
  138. <label class="radio form-radio-item">
  139. <radio value="2" :checked="savedata.take_delivery_print_num == 2" />
  140. 2
  141. </label>
  142. <label class="radio form-radio-item">
  143. <radio value="3" :checked="savedata.take_delivery_print_num == 3" />
  144. 3
  145. </label>
  146. <label class="radio form-radio-item">
  147. <radio value="4" :checked="savedata.take_delivery_print_num == 4" />
  148. 4
  149. </label>
  150. </radio-group>
  151. </view>
  152. </view>
  153. <view class="common-form-item" v-if="savedata.take_delivery_open == 1">
  154. <label class="form-label">订单类型</label>
  155. <view class="form-block">
  156. <checkbox-group class="form-checkbox-group" @change="takeDeliveryTypeChange">
  157. <label class="form-checkbox-item" v-for="(item, index) in orderType">
  158. <checkbox
  159. :value="item.type.toString()"
  160. :checked="savedata.take_delivery_order_type.includes(item.type.toString()) || savedata.take_delivery_order_type.includes(parseInt(item.type))"
  161. />
  162. {{ item.name }}
  163. </label>
  164. </checkbox-group>
  165. </view>
  166. </view>
  167. <view class="common-title">手动打印</view>
  168. <view class="common-form-item">
  169. <label class="form-label">手动打印</label>
  170. <view class="form-inline">
  171. <radio-group @change="manualChange" class="form-radio-group">
  172. <label class="radio form-radio-item">
  173. <radio value="1" :checked="savedata.manual_open == 1" />
  174. 开启
  175. </label>
  176. <label class="radio form-radio-item">
  177. <radio value="0" :checked="savedata.manual_open == 0" />
  178. 关闭
  179. </label>
  180. </radio-group>
  181. </view>
  182. </view>
  183. <view class="common-form-item" v-if="savedata.manual_open == 1">
  184. <label class="form-label">打印模板</label>
  185. <view class="form-input-inline" v-if="template.goodsorder && template.goodsorder.length"><uni-data-select v-model="manualTempIndex" :localdata="template.goodsorder"></uni-data-select></view>
  186. </view>
  187. <view class="common-form-item" v-if="savedata.manual_open == 1">
  188. <label class="form-label">打印联数</label>
  189. <view class="form-inline">
  190. <radio-group @change="manualNumChange" class="form-radio-group">
  191. <label class="radio form-radio-item">
  192. <radio value="1" :checked="savedata.print_num == 1" />
  193. 1
  194. </label>
  195. <label class="radio form-radio-item">
  196. <radio value="2" :checked="savedata.print_num == 2" />
  197. 2
  198. </label>
  199. <label class="radio form-radio-item">
  200. <radio value="3" :checked="savedata.print_num == 3" />
  201. 3
  202. </label>
  203. <label class="radio form-radio-item">
  204. <radio value="4" :checked="savedata.print_num == 4" />
  205. 4
  206. </label>
  207. </radio-group>
  208. </view>
  209. </view>
  210. <view class="common-title">充值打印</view>
  211. <view class="common-form-item">
  212. <label class="form-label">充值打印</label>
  213. <view class="form-inline">
  214. <radio-group @change="rechargeChange" class="form-radio-group">
  215. <label class="radio form-radio-item">
  216. <radio value="1" :checked="savedata.recharge_open == 1" />
  217. 开启
  218. </label>
  219. <label class="radio form-radio-item">
  220. <radio value="0" :checked="savedata.recharge_open == 0" />
  221. 关闭
  222. </label>
  223. </radio-group>
  224. </view>
  225. </view>
  226. <view class="common-form-item" v-if="savedata.recharge_open == 1">
  227. <label class="form-label">打印模板</label>
  228. <view class="form-input-inline" v-if="template.recharge && template.recharge.length"><uni-data-select v-model="rechargeTempIndex" :localdata="template.recharge"></uni-data-select></view>
  229. </view>
  230. <view class="common-form-item" v-if="savedata.recharge_open == 1">
  231. <label class="form-label">打印联数</label>
  232. <view class="form-inline">
  233. <radio-group @change="rechargeNumChange" class="form-radio-group">
  234. <label class="radio form-radio-item">
  235. <radio value="1" :checked="savedata.recharge_print_num == 1" />
  236. 1
  237. </label>
  238. <label class="radio form-radio-item">
  239. <radio value="2" :checked="savedata.recharge_print_num == 2" />
  240. 2
  241. </label>
  242. <label class="radio form-radio-item">
  243. <radio value="3" :checked="savedata.recharge_print_num == 3" />
  244. 3
  245. </label>
  246. <label class="radio form-radio-item">
  247. <radio value="4" :checked="savedata.recharge_print_num == 4" />
  248. 4
  249. </label>
  250. </radio-group>
  251. </view>
  252. </view>
  253. <view class="common-title">收银交班打印</view>
  254. <view class="common-form-item">
  255. <label class="form-label">收银交班打印</label>
  256. <view class="form-inline">
  257. <radio-group @change="changeShiftsChange" class="form-radio-group">
  258. <label class="radio form-radio-item">
  259. <radio value="1" :checked="savedata.change_shifts_open == 1" />
  260. 开启
  261. </label>
  262. <label class="radio form-radio-item">
  263. <radio value="0" :checked="savedata.change_shifts_open == 0" />
  264. 关闭
  265. </label>
  266. </radio-group>
  267. </view>
  268. </view>
  269. <view class="common-form-item" v-if="savedata.change_shifts_open == 1">
  270. <label class="form-label">打印模板</label>
  271. <view class="form-input-inline" v-if="template.change_shifts && template.change_shifts.length"><uni-data-select v-model="changeShiftsTempIndex" :localdata="template.change_shifts"></uni-data-select></view>
  272. </view>
  273. <view class="common-form-item" v-if="savedata.change_shifts_open == 1">
  274. <label class="form-label">打印联数</label>
  275. <view class="form-inline">
  276. <radio-group @change="changeShiftsNumChange" class="form-radio-group">
  277. <label class="radio form-radio-item">
  278. <radio value="1" :checked="savedata.change_shifts_print_num == 1" />
  279. 1
  280. </label>
  281. <label class="radio form-radio-item">
  282. <radio value="2" :checked="savedata.change_shifts_print_num == 2" />
  283. 2
  284. </label>
  285. <label class="radio form-radio-item">
  286. <radio value="3" :checked="savedata.change_shifts_print_num == 3" />
  287. 3
  288. </label>
  289. <label class="radio form-radio-item">
  290. <radio value="4" :checked="savedata.change_shifts_print_num == 4" />
  291. 4
  292. </label>
  293. </radio-group>
  294. </view>
  295. </view>
  296. <view class="common-btn-wrap">
  297. <button type="default" class="screen-btn" @click="saveFn">保存</button>
  298. <button type="primary" class="screen-btn" @click="back">返回</button>
  299. </view>
  300. <!-- <nc-loading :layer-background="{ background: 'rgba(255,255,255,.8)' }" ref="loading"></nc-loading> -->
  301. </view>
  302. </base-page>
  303. </template>
  304. <script>
  305. import uniDataSelect from '@/components/uni-data-select/uni-data-select.vue';
  306. export default {
  307. components: {
  308. uniDataSelect
  309. },
  310. data() {
  311. return {
  312. printer_id: 0,
  313. savedata: {
  314. printer_name: '',
  315. brand: 'yilianyun',
  316. printer_code: '',
  317. printer_key: '',
  318. open_id: '',
  319. apikey: '',
  320. order_pay_open: 0,
  321. order_pay_template_id: 0,
  322. order_pay_print_num: 1,
  323. order_pay_order_type: [],
  324. take_delivery_open: 0,
  325. take_delivery_template_id: 0,
  326. take_delivery_print_num: 1,
  327. take_delivery_order_type: [],
  328. manual_open: 0,
  329. template_id: 0,
  330. print_num: 1,
  331. recharge_open: 0,
  332. recharge_template_id: 0,
  333. recharge_print_num: 1,
  334. change_shifts_open: 0,
  335. change_shifts_template_id: 0,
  336. change_shifts_print_num: 1
  337. },
  338. time: {
  339. start: '08:30',
  340. end: '23:30'
  341. },
  342. interval: 30,
  343. advance: '',
  344. max: '',
  345. week: [],
  346. flag: false,
  347. template: {},
  348. orderPayTempIndex: 0,
  349. takeDeliveryTempIndex: 0,
  350. manualTempIndex: 0,
  351. rechargeTempIndex: 0,
  352. changeShiftsTempIndex: 0,
  353. orderType: []
  354. };
  355. },
  356. onLoad(option) {
  357. if (option.printer_id) {
  358. this.printer_id = option.printer_id;
  359. }
  360. },
  361. onShow() {
  362. // this.$refs.loading.hide();
  363. uni.setLocale('zh-Hans');
  364. this.getTemplate();
  365. this.getOrderType();
  366. },
  367. methods: {
  368. getData() {
  369. this.$api.sendRequest({
  370. url: '/printer/storeapi/printer/info',
  371. data: { printer_id: this.printer_id },
  372. success: res => {
  373. if (res.code >= 0) {
  374. this.savedata = res.data;
  375. this.orderPayTempIndex = this.savedata.order_pay_template_id;
  376. this.takeDeliveryTempIndex = this.savedata.take_delivery_template_id;
  377. this.manualTempIndex = this.savedata.template_id;
  378. this.rechargeTempIndex = this.savedata.recharge_template_id;
  379. this.changeShiftsTempIndex = this.savedata.change_shifts_template_id;
  380. } else {
  381. this.$util.showToast({
  382. title: res.message
  383. });
  384. }
  385. }
  386. });
  387. },
  388. back() {
  389. this.$util.redirectTo('/pages/printer/list');
  390. },
  391. getTemplate() {
  392. this.$api.sendRequest({
  393. url: '/printer/storeapi/printer/template',
  394. success: res => {
  395. if (res.code == 0) {
  396. let template = {};
  397. res.data.map((item, index) => {
  398. if (!template[ item.type ]) template[ item.type ] = [];
  399. var obj = {};
  400. obj.text = item.template_name;
  401. obj.value = item.template_id;
  402. template[ item.type ].push(obj);
  403. });
  404. this.template = template;
  405. if (this.printer_id) {
  406. this.getData();
  407. }
  408. }
  409. }
  410. });
  411. },
  412. getOrderType() {
  413. this.$api.sendRequest({
  414. url: '/printer/storeapi/printer/getordertype',
  415. success: res => {
  416. if (res.code == 0) {
  417. this.orderType = res.data;
  418. }
  419. }
  420. });
  421. },
  422. orderPayChange(e) {
  423. this.savedata.order_pay_open = e.detail.value;
  424. },
  425. orderPayNumChange(e) {
  426. this.savedata.order_pay_print_num = e.detail.value;
  427. },
  428. orderPayTypeChange(e) {
  429. this.savedata.order_pay_order_type = e.detail.value;
  430. },
  431. takeDeliveryChange(e) {
  432. this.savedata.take_delivery_open = e.detail.value;
  433. },
  434. takeDeliveryNumChange(e) {
  435. this.savedata.take_delivery_print_num = e.detail.value;
  436. },
  437. takeDeliveryTypeChange(e) {
  438. this.savedata.take_delivery_order_type = e.detail.value;
  439. },
  440. manualChange(e) {
  441. this.savedata.manual_open = e.detail.value;
  442. },
  443. manualNumChange(e) {
  444. this.savedata.print_num = e.detail.value;
  445. },
  446. rechargeChange(e) {
  447. this.savedata.recharge_open = e.detail.value;
  448. },
  449. rechargeNumChange(e) {
  450. this.savedata.recharge_print_num = e.detail.value;
  451. },
  452. changeShiftsChange(e) {
  453. this.savedata.change_shifts_open = e.detail.value;
  454. },
  455. changeShiftsNumChange(e) {
  456. this.savedata.change_shifts_print_num = e.detail.value;
  457. },
  458. check() {
  459. let data = Object.assign({}, this.savedata);
  460. if (!data.printer_name) {
  461. this.$util.showToast({
  462. title: '请输入打印机名称'
  463. });
  464. return false;
  465. }
  466. if (!data.printer_code) {
  467. this.$util.showToast({
  468. title: '请输入打印机编号'
  469. });
  470. return false;
  471. }
  472. if (!data.printer_key) {
  473. this.$util.showToast({
  474. title: '请输入打印机密钥'
  475. });
  476. return false;
  477. }
  478. if (!data.open_id) {
  479. this.$util.showToast({
  480. title: '请输入应用id'
  481. });
  482. return false;
  483. }
  484. if (!data.apikey) {
  485. this.$util.showToast({
  486. title: '请输入apikey'
  487. });
  488. return false;
  489. }
  490. return true;
  491. },
  492. saveFn() {
  493. if (this.check()) {
  494. let data = this.savedata;
  495. data.take_delivery_order_type = data.take_delivery_order_type.toString();
  496. data.order_pay_order_type = data.order_pay_order_type.toString();
  497. data.order_pay_template_id = this.orderPayTempIndex;
  498. data.take_delivery_template_id = this.takeDeliveryTempIndex;
  499. data.template_id = this.manualTempIndex;
  500. data.recharge_template_id = this.rechargeTempIndex;
  501. data.change_shifts_template_id = this.changeShiftsTempIndex;
  502. let url = '/printer/storeapi/printer/add';
  503. if (this.printer_id > 0) {
  504. url = '/printer/storeapi/printer/edit';
  505. data.printer_id = this.printer_id;
  506. }
  507. if (this.flag) return false;
  508. this.flag = true;
  509. this.$api.sendRequest({
  510. url: url,
  511. data: data,
  512. success: res => {
  513. this.flag = false;
  514. this.$util.showToast({
  515. title: res.message
  516. });
  517. if (res.code >= 0) {
  518. setTimeout(() => {
  519. this.$util.redirectTo('/pages/printer/list');
  520. }, 1500);
  521. }
  522. }
  523. });
  524. }
  525. },
  526. timeTurnTimeStamp(time) {
  527. let data = time.split(':');
  528. return data[0] * 3600 + data[1] * 60;
  529. },
  530. timeFormat(time) {
  531. let h = time / 3600;
  532. let i = (time % 3600) / 60;
  533. h = h < 10 ? '0' + h : h;
  534. i = i < 10 ? '0' + i : i;
  535. return h + ':' + i;
  536. }
  537. }
  538. };
  539. </script>
  540. <style lang="scss">
  541. .common-wrap {
  542. padding: 30rpx;
  543. background-color: #fff;
  544. @extend %body-overhide;
  545. }
  546. .common-title {
  547. font-size: 0.18rem;
  548. margin-bottom: 0.2rem;
  549. }
  550. </style>