order.vue 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309
  1. <template>
  2. <view class="container">
  3. <view
  4. class="mark"
  5. v-show="showDetail || showLeaveMess"
  6. @click="markClose()"
  7. ></view>
  8. <view class="list">
  9. <template v-if="orderList.length !== 0">
  10. <view class="messCard" v-for="item in orderList">
  11. <view class="field">
  12. <view class="header">
  13. <text>订单号:{{ item.orderNo }}</text>
  14. <text v-if="item.status == 2">缴费成功</text>
  15. <text v-if="item.status == 1" style="color: #ff8b02"
  16. >缴费失败</text
  17. >
  18. </view>
  19. <view class="content">
  20. <view class="mess-itm">
  21. <text>姓名:</text>
  22. <text>{{ item.studentName }}</text>
  23. </view>
  24. <view class="mess-itm">
  25. <text>学号:</text>
  26. <text>{{ item.payForIdentify }}</text>
  27. </view>
  28. <view class="mess-itm">
  29. <text>班级:</text>
  30. <text>{{ item.className }}</text>
  31. </view>
  32. <view class="mess-itm">
  33. <text class="time">{{ item.createTime }}</text>
  34. <text class="amount">实付款¥{{ item.orderAmount }}</text>
  35. </view>
  36. </view>
  37. <view class="footer">
  38. <view class="bt-item">
  39. <view
  40. ><button
  41. @click="putMess(item.orderNo)"
  42. v-if="item.status == 1"
  43. >
  44. 订单反馈
  45. </button>
  46. </view>
  47. <view
  48. ><button @click="toPay()" v-if="item.status == 1">
  49. 继续支付
  50. </button></view
  51. >
  52. <view><button @click="searchDetail()">查看详情</button></view>
  53. </view>
  54. </view>
  55. </view>
  56. <view class="fieldBg"></view>
  57. </view>
  58. </template>
  59. </view>
  60. <view class="detail" v-show="showDetail">
  61. <view class="top">
  62. <text>订单详情</text>
  63. <view class="close" @click="toShowDetail()">
  64. <view class="image"></view>
  65. </view>
  66. </view>
  67. <view class="content">
  68. <view class="mess-itm">
  69. <text>收费单位:</text>
  70. <text>南昌交通学院</text>
  71. </view>
  72. <view class="mess-itm">
  73. <text>姓名:</text>
  74. <text>{{ studentName }}</text>
  75. </view>
  76. <view class="mess-itm">
  77. <text>学号:</text>
  78. <text>{{ payForIdentify }}</text>
  79. </view>
  80. <view class="mess-itm">
  81. <text>专业:</text>
  82. <text>{{ majorName }}</text>
  83. </view>
  84. <view class="mess-itm">
  85. <text>班级:</text>
  86. <text>{{ className }}</text>
  87. </view>
  88. <view class="mess-itm">
  89. <text>缴费学年:</text>
  90. <text>{{ years }}</text>
  91. </view>
  92. <view class="mess-itm-pay" v-for="item in Arr">
  93. <text>{{ item.id }}:</text>
  94. <text>¥{{ item.money }}</text>
  95. </view>
  96. <view class="mess-itm">
  97. <text>总金额:</text>
  98. <text>¥{{ orderAmount }}</text>
  99. </view>
  100. </view>
  101. </view>
  102. <!-- <view class="leaveMess" v-show="showLeaveMess">
  103. <view class="top">
  104. <text>信息反馈</text>
  105. <view class="close" @click="toShowLeaveMess()">
  106. <view class="image"></view>
  107. </view>
  108. </view>
  109. <view class="name">
  110. <text>姓&#12288;名 :</text>
  111. <input
  112. type="text"
  113. placeholder="请输入姓名"
  114. v-model="feedbackPersonName"
  115. placeholder-style="color: #B3B3B3;"
  116. />
  117. </view>
  118. <view class="tel">
  119. <text>联系人 :</text>
  120. <input
  121. type="text"
  122. placeholder="请输入联系人手机号码"
  123. v-model="feedbackPersonPhone"
  124. placeholder-style="color: #B3B3B3;"
  125. />
  126. </view>
  127. <text class="title">反馈信息 :</text>
  128. <textarea
  129. placeholder=""
  130. placeholder-class="textarea-placeholder"
  131. maxlength="512"
  132. v-model="feedbackInfo"
  133. />
  134. <button hover-class="button-hover" @click="putMess">提交</button>
  135. </view> -->
  136. </view>
  137. </template>
  138. <script>
  139. export default {
  140. data() {
  141. return {
  142. showDetail: false, //订单详情弹窗
  143. showLeaveMess: false, //订单反馈弹窗
  144. paySuccess: true, //缴费成功隐藏按钮
  145. feedbackPersonName: "", //订单反馈联系人姓名
  146. feedbackInfo: "", //订单反馈留言
  147. feedbackPersonPhone: "", //订单反馈联系人电话
  148. orderList: [],
  149. studentName: "",
  150. payForIdentify: "",
  151. majorName: "",
  152. className: "",
  153. years: "",
  154. Arr: [],
  155. orderAmount: "",
  156. status: "",
  157. homeUrl: "https://jtishfw.ncjti.edu.cn/jiaofei/backendApi",
  158. };
  159. },
  160. created() {
  161. this.getOrderList();
  162. },
  163. methods: {
  164. markClose() {
  165. this.showDetail = false;
  166. this.showLeaveMess = false;
  167. },
  168. toShowDetail() {
  169. this.showDetail = !this.showDetail;
  170. },
  171. toShowLeaveMess() {
  172. this.showLeaveMess = !this.showLeaveMess;
  173. },
  174. searchDetail() {
  175. this.detailMess();
  176. this.showDetail = !this.showDetail;
  177. },
  178. //获取订单列表
  179. getOrderList() {
  180. let cardNumber = sessionStorage.getItem("cardNumber");
  181. let url = this.homeUrl + "/tuitionpayment/payorder/currentUserList";
  182. uni.request({
  183. url: url,
  184. data: {},
  185. header: {
  186. card_number: cardNumber,
  187. Accept: "application/json",
  188. "Content-Type": " application/x-www-form-urlencoded;charset=utf-8",
  189. "X-Requested-With": "XMLHttpRequest",
  190. },
  191. method: "GET",
  192. sslVerify: true,
  193. success: ({ data, statusCode, header }) => {
  194. console.log(data.data.list);
  195. this.orderList = data.data.list;
  196. let res = data.data.list[0];
  197. this.studentName = res.studentName;
  198. this.payForIdentify = res.payForIdentify;
  199. },
  200. fail: (error) => {},
  201. });
  202. },
  203. //查看详情
  204. detailMess() {
  205. let cardNumber = sessionStorage.getItem("cardNumber");
  206. let url =
  207. this.homeUrl +
  208. `/tuitionpayment/payableinfo/payableInfo/${this.payForIdentify}/${this.studentName}`;
  209. uni.request({
  210. url: url,
  211. header: {
  212. card_number: cardNumber,
  213. Accept: "application/json",
  214. "Content-Type": "application/x-www-form-urlencoded;charset=utf-8",
  215. "X-Requested-With": "XMLHttpRequest",
  216. },
  217. method: "GET",
  218. sslVerify: true,
  219. success: ({ data, statusCode, header }) => {
  220. let res = data.data;
  221. this.years = res.years;
  222. this.majorName = res.majorName;
  223. this.className = res.className;
  224. this.orderAmount = res.realPayAmount;
  225. this.getPayDetail(res.payItemDetail);
  226. },
  227. fail: (error) => {},
  228. });
  229. },
  230. //提交订单反馈
  231. putMess(orderNo) {
  232. let cardNumber = sessionStorage.getItem("cardNumber");
  233. let url = this.homeUrl + `/tuitionpayment/payorder/${orderNo}/orderStatu`;
  234. uni.request({
  235. url: url,
  236. data: {},
  237. header: {
  238. card_number: cardNumber,
  239. Accept: "application/json",
  240. "Content-Type": "application/json",
  241. "X-Requested-With": "XMLHttpRequest",
  242. },
  243. method: "GET",
  244. sslVerify: true,
  245. success: ({ data, statusCode, header }) => {
  246. let res = data.data;
  247. if (res.status == 2) {
  248. uni.showToast({
  249. title: "支付成功",
  250. icon: "error",
  251. mask: true,
  252. duration: 1000,
  253. });
  254. } else {
  255. uni.showToast({
  256. title: "支付失败",
  257. icon: "error",
  258. mask: true,
  259. duration: 1000,
  260. });
  261. }
  262. },
  263. fail: (error) => {},
  264. });
  265. },
  266. //跳转支付页面
  267. toPay() {
  268. uni.navigateTo({ url: "/pages/Pay/pay" });
  269. },
  270. //获取学费明细
  271. getPayDetail(len) {
  272. //获取明细款项名称数组
  273. var arr = len.match(/[^\\u4e00-\\u9fa5]+/g);
  274. //过滤
  275. var itemIdArr = arr.filter(function (value) {
  276. return value !== ".";
  277. });
  278. //获取明细金额数组
  279. var itemMoneyArr = len.match(/([0-9]+\.[0-9]+)+/g);
  280. //拼接成对象数组
  281. var item = [];
  282. for (var i in (itemIdArr, itemMoneyArr)) {
  283. var c = {
  284. id: itemIdArr[i],
  285. money: itemMoneyArr[i],
  286. };
  287. item.push(c);
  288. }
  289. this.Arr = item;
  290. },
  291. },
  292. };
  293. </script>
  294. <style lang="less">
  295. @import url("./css/order.min.css");
  296. </style>