detail.vue 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315
  1. <template>
  2. <v-page>
  3. <v-header
  4. :title="`${
  5. detail.cur_user_role == 'seller' ? $t('otc.f2') : $t('otc.f3')
  6. } ${$t('otc.f4')}`"
  7. ></v-header>
  8. <view class="layout-main">
  9. <view class="item bg-panel-3 rounded-sm p-md m-md">
  10. <view class="row m-t-sm d-flex align-center">
  11. <view class="label"> {{ $t("otc.f5") }} </view>
  12. <view class="flex-fill fn-right color-light">
  13. {{ detail.order_sn }}
  14. </view>
  15. </view>
  16. <view class="row m-t-sm d-flex align-center">
  17. <view class="label"> {{ $t("otc.c1") }} </view>
  18. <view class="flex-fill fn-right color-light">
  19. {{ detail.status_text }}
  20. </view>
  21. </view>
  22. <view class="row m-t-sm d-flex align-center">
  23. <view class="label"> {{ $t("otc.c3") }} </view>
  24. <view class="flex-fill fn-right color-light">
  25. {{ detail.money }}
  26. </view>
  27. </view>
  28. <view class="row m-t-sm d-flex align-center">
  29. <view class="label"> {{ $t("otc.b0") }} </view>
  30. <view class="flex-fill fn-right color-light">
  31. {{ detail.price }}
  32. </view>
  33. </view>
  34. <view class="row m-t-sm d-flex align-center">
  35. <view class="label"> {{ $t("otc.c4") }} </view>
  36. <view class="flex-fill fn-right color-light">
  37. {{ detail.amount }}
  38. </view>
  39. </view>
  40. <view class="row m-t-sm d-flex align-center">
  41. <view class="label"> {{ $t("otc.b1") }} </view>
  42. <view class="flex-fill fn-right color-light">
  43. <text class="text-primary">{{
  44. seller_payments.pay_type_text
  45. }}</text>
  46. </view>
  47. </view>
  48. <view class="row m-t-sm" v-if="seller_payments.pay_type == 'alipay'">
  49. <view class="m-b-sm"
  50. >{{ $t("otc.d9") }}:<text class="text-primary">{{
  51. seller_payments.pay_type_text
  52. }}</text></view
  53. >
  54. <view class="m-b-sm"
  55. >{{ $t("otc.f6") }}:{{ seller_payments.card_no }}</view
  56. >
  57. <view class="m-b-sm">
  58. <view
  59. class="upload-box d-flex justify-center align-center rounded-sm bg-panel-1 box-shadow w-7/12"
  60. >
  61. <img class="w-max" :src="seller_payments.full_code_img" alt />
  62. </view>
  63. </view>
  64. </view>
  65. <view class="row m-t-sm" v-if="seller_payments.pay_type == 'wechat'">
  66. <view class="m-b-sm"
  67. >{{ $t("otc.d9") }}:<text class="text-primary">{{
  68. seller_payments.pay_type_text
  69. }}</text></view
  70. >
  71. <view class="m-b-sm"
  72. >{{ $t("otc.f6") }}:{{ seller_payments.card_no }}</view
  73. >
  74. <view class="m-b-sm">
  75. <view
  76. class="upload-box d-flex justify-center align-center rounded-sm bg-panel-1 box-shadow w-7/12"
  77. >
  78. <img class="w-max" :src="seller_payments.full_code_img" alt />
  79. </view>
  80. </view>
  81. </view>
  82. <view class="row m-t-sm" v-if="seller_payments.pay_type == 'bank_card'">
  83. <view class="m-b-sm"
  84. >{{ $t("otc.d9") }}:<text class="color-primary">{{
  85. seller_payments.pay_type_text
  86. }}</text></view
  87. >
  88. <view class="m-b-sm"
  89. >{{ $t("otc.f6") }}:{{ seller_payments.card_no }}</view
  90. >
  91. <view class="m-b-sm"
  92. >{{ $t("otc.f7") }}:{{ seller_payments.bank_name }}</view
  93. >
  94. <view class="m-b-sm"
  95. >{{ $t("otc.e6") }}:{{ seller_payments.open_bank }}</view
  96. >
  97. </view>
  98. <view class="row m-t-sm d-flex align-center">
  99. <view class="label"> {{ $t("otc.f8") }} </view>
  100. <view class="flex-fill fn-right color-light">
  101. <text class="color-danger">{{ getTime(overed_time).m }}</text
  102. >{{ $t("otc.f9")
  103. }}<text class="color-danger">{{ getTime(overed_time).s }}</text
  104. >{{ $t("otc.g0") }}
  105. </view>
  106. </view>
  107. <view class="row m-t-sm">
  108. <view class="label color-warning"> {{ $t("otc.g1") }} </view>
  109. <view class="m-t-xs">
  110. <view
  111. class="upload-box d-flex justify-center align-center rounded-sm bg-panel-1 box-shadow"
  112. @click="getFile"
  113. >
  114. <van-icon
  115. v-if="!paid_img"
  116. class="color-light fn-30"
  117. name="photograph"
  118. />
  119. <img v-else :src="$imgUrl + '/' + paid_img" alt />
  120. </view>
  121. </view>
  122. </view>
  123. </view>
  124. <view class="m-md" v-if="detail.confirm_button == 'buyer'">
  125. <v-button
  126. type="green"
  127. class="rounded"
  128. block
  129. @click="ifConfirmPaidOrder"
  130. >{{ $t("otc.g2") }}</v-button
  131. >
  132. <view class="h-10"></view>
  133. <v-button type="red" class="rounded" block @click="ifCancelOrder">{{
  134. $t("otc.g3")
  135. }}</v-button>
  136. </view>
  137. <view class="m-md" v-if="detail.confirm_button == 'seller'">
  138. <v-button type="green" class="rounded" block @click="ifConfirmOrder">{{
  139. $t("otc.g4")
  140. }}</v-button>
  141. <view class="h-10"></view>
  142. <v-button type="red" class="rounded" block @click="ifNotConfirmOrder">{{
  143. $t("otc.g5")
  144. }}</v-button>
  145. </view>
  146. </view>
  147. </v-page>
  148. </template>
  149. <script>
  150. import Otc from "@/api/otc";
  151. import Member from "@/api/member";
  152. export default {
  153. name: "detail",
  154. data() {
  155. return {
  156. query: {},
  157. detail: {},
  158. seller_payments: {},
  159. overed_time: 0,
  160. dTime: undefined,
  161. paid_img: "",
  162. };
  163. },
  164. onLoad(query) {
  165. this.query = query;
  166. this.orderDetail();
  167. },
  168. methods: {
  169. getTime(s) {
  170. return {
  171. m: Math.floor(s / 60),
  172. s: s % 60,
  173. };
  174. },
  175. orderDetail() {
  176. let data = {
  177. order_id: this.query.id,
  178. };
  179. Otc.orderDetail(data).then((res) => {
  180. this.detail = res.data;
  181. this.seller_payments = res.data.seller_payments;
  182. this.overed_time = res.data.overed_time;
  183. if (this.overed_time) {
  184. this.lastTime();
  185. }
  186. });
  187. },
  188. // 倒计时
  189. lastTime() {
  190. this.dTime = setInterval(() => {
  191. this.overed_time--;
  192. if (!this.overed_time) {
  193. clearInterval(this.dTime);
  194. }
  195. }, 1000);
  196. },
  197. // 撤销订单
  198. ifCancelOrder() {
  199. this.$dialog
  200. .confirm({
  201. title: this.$t("otc.d0"),
  202. message: this.$t("otc.g6") + "?",
  203. confirmButtonText: this.$t("common.confirm"),
  204. cancelButtonText: this.$t("common.cancel"),
  205. type: "warning",
  206. })
  207. .then(() => {
  208. this.cancelOrder();
  209. });
  210. },
  211. cancelOrder() {
  212. let data = {
  213. order_id: this.query.id,
  214. };
  215. Otc.cancelOrder(data).then((res) => {
  216. this.$router.back();
  217. this.$toast.success(this.$t("otc.g7"));
  218. });
  219. },
  220. // 确认付款
  221. ifConfirmPaidOrder() {
  222. this.$dialog
  223. .confirm({
  224. title: this.$t("otc.d0"),
  225. message: this.$t("otc.g8") + "?",
  226. confirmButtonText: this.$t("common.confirm"),
  227. cancelButtonText: this.$t("common.cancel"),
  228. type: "warning",
  229. })
  230. .then(() => {
  231. this.confirmPaidOrder();
  232. });
  233. },
  234. confirmPaidOrder() {
  235. let data = {
  236. order_id: this.query.id,
  237. paid_img: this.paid_img,
  238. };
  239. Otc.confirmPaidOrder(data).then((res) => {
  240. this.orderDetail();
  241. this.$toast.success(this.$t("otc.g9"));
  242. });
  243. },
  244. // 确认收款
  245. ifConfirmOrder() {
  246. this.$dialog
  247. .confirm({
  248. title: this.$t("otc.d0"),
  249. message: this.$t("otc.h0") + "。",
  250. confirmButtonText: this.$t("common.confirm"),
  251. cancelButtonText: this.$t("common.cancel"),
  252. type: "warning",
  253. })
  254. .then(() => {
  255. this.confirmOrder();
  256. });
  257. },
  258. confirmOrder() {
  259. let data = {
  260. order_id: this.query.id,
  261. };
  262. Otc.confirmOrder(data).then((res) => {
  263. this.orderDetail();
  264. this.$toast.success(this.$t("otc.g9"));
  265. });
  266. },
  267. // 未到账
  268. ifNotConfirmOrder() {
  269. this.$dialog
  270. .confirm({
  271. title: this.$t("otc.d0"),
  272. message: this.$t('otc.h1')+"。",
  273. confirmButtonText: this.$t("common.confirm"),
  274. cancelButtonText: this.$t("common.cancel"),
  275. type: "warning",
  276. })
  277. .then(() => {
  278. this.notConfirmOrder();
  279. });
  280. },
  281. notConfirmOrder() {
  282. let data = {
  283. order_id: this.query.id,
  284. };
  285. Otc.notConfirmOrder(data).then((res) => {
  286. this.orderDetail();
  287. this.$toast.success(this.$t("otc.g9"));
  288. });
  289. },
  290. // 上传图片
  291. getFile() {
  292. this.$getFile({ count: 1 }).then((res) => {
  293. this.upLoadImg(res);
  294. });
  295. },
  296. // 上传图片
  297. upLoadImg(chooseImageRes) {
  298. Member.uploadImage(chooseImageRes).then((res) => {
  299. this.paid_img = res.data.path;
  300. this.$toast.success(this.$t("auth.c1"));
  301. });
  302. },
  303. },
  304. };
  305. </script>
  306. <style lang="scss" scoped>
  307. .upload-box {
  308. min-width: 100%;
  309. min-height: 100px;
  310. img {
  311. max-width: 100%;
  312. }
  313. }
  314. </style>