index.vue 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220
  1. <template>
  2. <!-- 首页 -->
  3. <view class="card_index_bgc">
  4. <view class="card_gas_cylinder">气瓶安全追溯管理系统</view>
  5. <view class="card_port center_in">{{genreTitle}}</view>
  6. <view class="card_cylinder">
  7. <view class="card_bottle" v-for="(item,index) in dataList" :key="index" @click="scanCodes(item)">
  8. <view class="card_fiche" :style="{backgroundColor:item.color}">
  9. <span class="iconfont icon_image" :class="item.icon"></span>
  10. </view>
  11. <view class="title_hint">{{item.title}}</view>
  12. </view>
  13. <!-- <view class="card_bottle" @click="scanning">
  14. <view class="card_fiche" :style="{backgroundColor:'#67C23A'}">
  15. <span class="iconfont icon_image icon-saomachaxun"></span>
  16. <view class="title_hint">扫码查询气瓶流转信息</view>
  17. </view>
  18. </view> -->
  19. <view style="width: 25%;"></view>
  20. <view style="width: 25%;"></view>
  21. <view style="width: 25%;"></view>
  22. </view>
  23. <view class="card_cylinder border_top">
  24. <view class="card_bottle" v-for="(item,index) in addList" :key="index" @click="scanCodes(item)">
  25. <view class="card_fiche" :style="{backgroundColor:item.color}">
  26. <span class="iconfont icon_image" :class="item.icon"></span>
  27. </view>
  28. <view class="title_hint">{{item.title}}</view>
  29. </view>
  30. <view style="width: 25%;"></view>
  31. <view style="width: 25%;"></view>
  32. </view>
  33. </view>
  34. </template>
  35. <script>
  36. export default {
  37. props: {
  38. dataList: {
  39. type: Array,
  40. default: []
  41. },
  42. genreTitle: {
  43. type: String,
  44. default: ''
  45. },
  46. },
  47. data() {
  48. return {
  49. addList: [{
  50. id: 'add',
  51. title: '扫码添加钢瓶',
  52. icon: 'icon-saoyisao',
  53. color: '#1ee94d',
  54. }, {
  55. id: 'step',
  56. title: '气瓶流转信息',
  57. icon: 'icon-saomachaxun',
  58. color: '#195eea',
  59. }, {
  60. id: 'allot',
  61. title: '钢瓶调拨',
  62. icon: 'icon-tiaobo',
  63. color: '#19baea',
  64. }],
  65. }
  66. },
  67. mounted() {},
  68. methods: {
  69. scanCodes(value) {
  70. if (['25', '27', '11', '12', '17', '19'].includes(value.id)) {
  71. uni.navigateTo({
  72. url: '/pages/home/selectStore?id=' + value.id + '&title=' + value.title
  73. });
  74. } else if (value.id == 'add') {
  75. uni.navigateTo({
  76. url: '/pages/order/quickMark?id=' + value.id + '&title=' + value.title
  77. });
  78. } else if (value.id == 'step') {
  79. this.getInformation()
  80. } else if (value.id == 'allot') {
  81. uni.navigateTo({
  82. url: '/pages/order/cylinderTransfer'
  83. });
  84. } else {
  85. uni.navigateTo({
  86. url: '/pages/order/delivery?id=' + value.id + '&title=' + value.title
  87. });
  88. }
  89. },
  90. // 扫码溯源
  91. scanning() {
  92. uni.navigateTo({
  93. url: '/pages/index/codeTracing'
  94. });
  95. },
  96. getInformation() {
  97. // 允许从相机和相册扫码
  98. uni.scanCode({
  99. scanType: ['qrCode'],
  100. autoZoom: false,
  101. success: (res) => {
  102. console.log(res, '--------');
  103. if (res.result) {
  104. let url = res.result;
  105. const arrf = url.split('=')
  106. this.unitCoding(arrf[1])
  107. } else {
  108. console.log('请重新扫描');
  109. return false;
  110. }
  111. },
  112. fail: (res) => {
  113. console.log('未识别到二维码1');
  114. }
  115. })
  116. },
  117. // 单位内编码获取
  118. unitCoding(qrid) {
  119. uni.showLoading({
  120. title: '加载中'
  121. });
  122. uni.request({
  123. url: 'http://qr.uinshine.com:9000/CommonAPI/product/getDetails', //仅为示例,并非真实接口地址。
  124. method: 'POST',
  125. header: {
  126. 'content-type': 'application/x-www-form-urlencoded', // 默认值
  127. },
  128. data: {
  129. qr_id: qrid,
  130. },
  131. success: (res) => {
  132. if (res.data.code == 0) {
  133. var arr = res.data.data
  134. // this.frequencyCoding = arr.inner_code
  135. uni.hideLoading();
  136. uni.navigateTo({
  137. url: '/pages/index/codeTracing?code=' + arr.inner_code
  138. });
  139. }
  140. }
  141. });
  142. },
  143. }
  144. }
  145. </script>
  146. <style lang="scss">
  147. .card_index_bgc {
  148. padding-top: constant(safe-area-inset-top);
  149. padding-top: env(safe-area-inset-top);
  150. background-image: linear-gradient(#a9e3f1, #f3f4f6, #ffffff);
  151. }
  152. .card_gas_cylinder {
  153. display: flex;
  154. justify-content: center;
  155. align-items: center;
  156. font-size: 46rpx;
  157. font-weight: bold;
  158. color: #027DB4;
  159. padding: 50rpx 20rpx 0rpx 20rpx;
  160. }
  161. .card_port {
  162. font-size: 40rpx;
  163. font-weight: bold;
  164. color: #027DB4;
  165. padding-bottom: 20rpx;
  166. }
  167. .card_cylinder {
  168. display: flex;
  169. flex-direction: row;
  170. flex-wrap: wrap;
  171. justify-content: space-between;
  172. margin: 30rpx;
  173. background-color: #fff;
  174. border-radius: 20rpx;
  175. padding: 20rpx 0rpx;
  176. box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
  177. }
  178. .card_bottle {
  179. width: 25%;
  180. margin: 10rpx 0rpx;
  181. display: flex;
  182. flex-direction: column;
  183. align-items: center;
  184. }
  185. .card_fiche {
  186. display: flex;
  187. align-items: center;
  188. flex-direction: column;
  189. justify-content: center;
  190. width: 120rpx;
  191. height: 120rpx;
  192. background-color: #027DB4;
  193. border-radius: 26rpx;
  194. }
  195. .icon_image {
  196. color: #fff;
  197. font-size: 70rpx;
  198. }
  199. .title_hint {
  200. // height: 78rpx;
  201. margin-top: 10rpx;
  202. color: #606266;
  203. width: 90%;
  204. text-align: center;
  205. font-size: 26rpx;
  206. }
  207. .border_top {
  208. padding-top: 30rpx;
  209. }
  210. </style>