deliver.vue 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281
  1. <template>
  2. <base-page>
  3. <view class="deliverlist">
  4. <view class="deliverlist-box">
  5. <view class="deliverlist-left">
  6. <view class="deliver-title">
  7. 配送员
  8. <text class="iconfont icongengduo1"></text>
  9. </view>
  10. <view class="deliver-list-wrap">
  11. <block v-if="list.length > 0">
  12. <scroll-view scroll-y="true" class="deliver-list-scroll all-scroll" @scrolltolower="getDeliverList">
  13. <view
  14. class="item"
  15. @click="deliverSelect(item, index)"
  16. v-for="(item, index) in list"
  17. :key="index"
  18. :class="index == selectdeliverKeys ? 'itemhover' : ''"
  19. >
  20. <view class="item-right">
  21. <view class="deliver-name">{{ item.deliver_name }}</view>
  22. <view class="deliver-money">{{ item.deliver_mobile }}</view>
  23. </view>
  24. </view>
  25. </scroll-view>
  26. </block>
  27. <view class="notYet" v-else-if="!one_judge && list.length == 0">暂无配送员</view>
  28. </view>
  29. <view class="add-deliver"><button type="default" class="primary-btn" @click="addDeliver">添加配送员</button></view>
  30. </view>
  31. <view class="deliverlist-right" v-show="!one_judge">
  32. <view class="deliver-title">配送员详情</view>
  33. <view class="deliver-information">
  34. <block v-if="detail && Object.keys(detail).length">
  35. <view class="title">基本信息</view>
  36. <view class="information-box">
  37. <view class="box-left">
  38. <view class="information">
  39. <view>姓名:</view>
  40. <view>{{ detail.deliver_name }}</view>
  41. </view>
  42. <view class="information">
  43. <view>电话:</view>
  44. <view>{{ detail.deliver_mobile }}</view>
  45. </view>
  46. <view class="information">
  47. <view>添加时间:</view>
  48. <view>{{ detail.create_time ? $util.timeFormat(detail.create_time) : '--' }}</view>
  49. </view>
  50. <view class="information">
  51. <view>最后修改时间:</view>
  52. <view>{{ detail.modify_time ? $util.timeFormat(detail.modify_time) : '--' }}</view>
  53. </view>
  54. </view>
  55. </view>
  56. <view class="button-box">
  57. <view class="button" @click="deletedeliver(detail.deliver_id)">删除</view>
  58. <view class="button" @click="editdeliver(detail.deliver_id)">修改</view>
  59. </view>
  60. </block>
  61. <block v-else><image class="cart-empty" :src="$util.img('public/uniapp/cashier/goods_empty.png')" mode="widthFix"></image></block>
  62. </view>
  63. </view>
  64. <unipopup ref="deliverpop" type="center">
  65. <view class="common-wrap common-form">
  66. <view class="common-title">{{ deliverData.deliver_id > 0 ? '修改' : '添加' }}配送员</view>
  67. <view class="common-form-item">
  68. <label class="form-label">
  69. <text class="required">*</text>
  70. 姓名
  71. </label>
  72. <view class="form-input-inline"><input type="text" v-model="deliverData.deliver_name" class="form-input" /></view>
  73. <text class="form-word-aux"></text>
  74. </view>
  75. <view class="common-form-item">
  76. <label class="form-label">
  77. <text class="required">*</text>
  78. 手机号
  79. </label>
  80. <view class="form-input-inline"><input type="number" v-model="deliverData.deliver_mobile" class="form-input" /></view>
  81. <text class="form-word-aux"></text>
  82. </view>
  83. <view class="common-btn-wrap">
  84. <button type="default" class="screen-btn" @click="addDeliverSave">{{ deliverData.deliver_id > 0 ? '修改' : '添加' }}</button>
  85. <button type="primary" class="default-btn btn save" @click="addDeliverClose()">取消</button>
  86. </view>
  87. </view>
  88. </unipopup>
  89. <nc-loading :layer-background="{ background: 'rgba(255,255,255,.8)' }" ref="loading"></nc-loading>
  90. </view>
  91. </view>
  92. </base-page>
  93. </template>
  94. <script>
  95. import unipopup from '@/components/uni-popup/uni-popup.vue';
  96. export default {
  97. components: { unipopup },
  98. data() {
  99. return {
  100. search_text: '',
  101. page: 1,
  102. // 每次返回数据数
  103. page_size: 8,
  104. // 第一次请求列表做详情渲染判断
  105. one_judge: true,
  106. //详情数据
  107. detail: {},
  108. list: [],
  109. selectdeliverKeys: 0,
  110. flag: false,
  111. deliverData: {
  112. deliver_id: 0,
  113. deliver_name: '',
  114. deliver_mobile: ''
  115. }
  116. };
  117. },
  118. onLoad() {
  119. this.getDeliverList();
  120. },
  121. methods: {
  122. deliverSelect(item, keys) {
  123. this.selectdeliverKeys = keys;
  124. this.getDeliverDetail(item.deliver_id);
  125. },
  126. // 搜索员工
  127. search() {
  128. this.page = 1;
  129. this.list = [];
  130. this.one_judge = true;
  131. this.getDeliverList();
  132. },
  133. addDeliver() {
  134. this.$refs.deliverpop.open();
  135. },
  136. addDeliverClose() {
  137. this.$refs.deliverpop.close();
  138. },
  139. addDeliverSave() {
  140. if (this.deliverData.deliver_name == '') {
  141. this.$util.showToast({
  142. title: '请输入配送员名称'
  143. });
  144. return false;
  145. }
  146. if (this.deliverData.deliver_mobile == '') {
  147. this.$util.showToast({
  148. title: '请输入配送员电话'
  149. });
  150. return false;
  151. }
  152. if (this.flag) return false;
  153. this.flag = true;
  154. let url = '/cashier/storeapi/store/adddeliver';
  155. if (this.deliverData.deliver_id > 0) url = '/cashier/storeapi/store/editdeliver';
  156. this.$api.sendRequest({
  157. url: url,
  158. data: this.deliverData,
  159. success: res => {
  160. this.$util.showToast({
  161. title: res.message
  162. });
  163. if (res.code == 0) {
  164. this.page = 1;
  165. this.list = [];
  166. this.one_judge = true;
  167. this.getDeliverList();
  168. this.addDeliverClose();
  169. this.deliverData = {
  170. deliver_id: 0,
  171. deliver_name: '',
  172. deliver_mobile: ''
  173. };
  174. }
  175. this.flag = false;
  176. }
  177. });
  178. },
  179. editdeliver(deliver_id) {
  180. this.$api.sendRequest({
  181. url: '/cashier/storeapi/store/deliverinfo',
  182. data: { deliver_id },
  183. success: res => {
  184. if (res.code == 0) {
  185. this.deliverData = res.data;
  186. this.$refs.deliverpop.open();
  187. }
  188. }
  189. });
  190. },
  191. /**
  192. * 请求的列表数据
  193. */
  194. getDeliverList() {
  195. this.$api.sendRequest({
  196. url: '/cashier/storeapi/store/deliverlists',
  197. data: {
  198. page: this.page,
  199. page_size: this.page_size
  200. },
  201. success: res => {
  202. if (res.data.list.length == 0 && this.one_judge) {
  203. this.detail = {};
  204. this.one_judge = false;
  205. }
  206. this.$refs.loading.hide();
  207. if (res.code >= 0 && res.data.list.length != 0) {
  208. this.page += 1;
  209. if (this.list.length == 0) {
  210. this.list = res.data.list;
  211. } else {
  212. this.list = this.list.concat(res.data.list);
  213. }
  214. //初始时加载一遍详情数据
  215. if (this.one_judge) {
  216. this.getDeliverDetail(this.list[0].deliver_id);
  217. }
  218. }
  219. }
  220. });
  221. },
  222. getDeliverDetail(deliver_id) {
  223. this.$api.sendRequest({
  224. url: '/cashier/storeapi/store/deliverinfo',
  225. data: { deliver_id },
  226. success: res => {
  227. if (res.code == 0) {
  228. this.detail = res.data;
  229. this.one_judge = false;
  230. }
  231. }
  232. });
  233. },
  234. deletedeliver(deliver_id) {
  235. let that = this;
  236. uni.showModal({
  237. title: '',
  238. content: '确定要删除该配送员吗',
  239. success: function(res) {
  240. if (res.confirm) {
  241. that.$api.sendRequest({
  242. url: '/cashier/storeapi/store/deletedeliver',
  243. data: {
  244. deliver_id
  245. },
  246. success: res => {
  247. if (res.code >= 0) {
  248. that.page = 1;
  249. that.list = [];
  250. that.one_judge = true;
  251. that.getDeliverList();
  252. } else {
  253. that.$util.showToast({ title: res.message });
  254. }
  255. }
  256. });
  257. } else if (res.cancel) {
  258. console.log('用户点击取消');
  259. }
  260. }
  261. });
  262. }
  263. }
  264. };
  265. </script>
  266. <style scoped lang="scss">
  267. @import './public/css/deliver.scss';
  268. </style>
  269. <style>
  270. /deep/ .uni-modal__hd {
  271. padding: 0.2em 0.3em 0.3em !important;
  272. }
  273. </style>