mch-detail.vue 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311
  1. <template>
  2. <app-layout>
  3. <view class="mch-detail" v-if="pageShow">
  4. <view class="title">
  5. 基本信息
  6. </view>
  7. <view class="information">
  8. <view class="line line-margin dir-left-nowrap">
  9. <view class="label">
  10. 申请人
  11. </view>
  12. <view class="expression">
  13. {{detail.user.nickname}}
  14. </view>
  15. </view>
  16. <view class="line line-margin dir-left-nowrap">
  17. <view class="label">
  18. 联系人
  19. </view>
  20. <view class="expression">
  21. {{detail.realname}}
  22. </view>
  23. </view>
  24. <view class="line line-margin dir-left-nowrap">
  25. <view class="label">
  26. 联系电话
  27. </view>
  28. <view class="expression">
  29. {{detail.mobile}}
  30. </view>
  31. </view>
  32. <view class="line line-margin dir-left-nowrap">
  33. <view class="label">
  34. 微信号
  35. </view>
  36. <view class="expression">
  37. {{detail.wechat}}
  38. </view>
  39. </view>
  40. <view class="line dir-left-nowrap cross-center">
  41. <view class="label have-icon dir-left-nowrap cross-center">
  42. <image class="icon" src="../image/price.png"></image>
  43. <text>手续费</text>
  44. </view>
  45. <view class="expression dir-left-nowrap cross-center">
  46. <input type="number" maxlength="4" max="1000" v-model="transfer_rate" @input="onInput" placeholder-style="color: #cdcdcd;" class="input" placeholder="设置0~1000整数商户交易手续费率">
  47. <view>‰</view>
  48. </view>
  49. </view>
  50. </view>
  51. <view class="title">
  52. 店铺信息
  53. </view>
  54. <view class="information">
  55. <view class="line line-margin dir-left-nowrap">
  56. <view class="label">
  57. 店铺名称
  58. </view>
  59. <view class="expression">
  60. {{detail.scope}}
  61. </view>
  62. </view>
  63. <view class="line line-margin dir-left-nowrap">
  64. <view class="label">
  65. 所在地区
  66. </view>
  67. <view class="expression">
  68. {{detail.districts}}
  69. </view>
  70. </view>
  71. <view class="line line-margin dir-left-nowrap">
  72. <view class="label">
  73. 详细地址
  74. </view>
  75. <view class="expression">
  76. {{detail.address}}
  77. </view>
  78. </view>
  79. <view class="line line-margin dir-left-nowrap">
  80. <view class="label">
  81. 所售类目
  82. </view>
  83. <view class="expression">
  84. {{detail.cat_name}}
  85. </view>
  86. </view>
  87. <view class="line dir-left-nowrap">
  88. <view class="label">
  89. 客服电话
  90. </view>
  91. <view class="expression">
  92. {{detail.service_mobile}}
  93. </view>
  94. </view>
  95. </view>
  96. <view class="title">
  97. 其他信息
  98. </view>
  99. <view class="information">
  100. <block v-for="(item, index) in detail.form_data" :key="index">
  101. <template
  102. v-if="item.key === 'text' || item.key === 'date' || item.key === 'radio'|| item.key === 'time'|| item.key === 'checkbox'"
  103. >
  104. <view class="line line-margin dir-left-nowrap" v-if="item.value">
  105. <view class="label">
  106. {{item.label}}
  107. </view>
  108. <view class="expression break-word">
  109. {{item.value}}
  110. </view>
  111. </view>
  112. </template>
  113. <template v-else-if="item.key === 'img_upload'">
  114. <view class="line line-margin dir-left-nowrap">
  115. <view class="label">
  116. {{item.label}}
  117. </view>
  118. <view class="expression dir-left-wrap">
  119. <template v-if="getTypeof(item.value) === 'string'" >
  120. <image class="image" v-if="item.value" :src="item.value" @click="preview(item.value)"></image>
  121. </template>
  122. <template v-if="getTypeof(item.value) === 'object'">
  123. <image class="image" v-if="image" v-for="(image, i) in item.value" @click="preview(image)" :key="i" :src="image"></image>
  124. </template>
  125. </view>
  126. </view>
  127. </template>
  128. </block>
  129. </view>
  130. <view class="button dir-left-nowrap main-between">
  131. <view class="fail" @click="fail">
  132. <app-form-id>
  133. 不通过
  134. </app-form-id>
  135. </view>
  136. <view class="by" @click="by">
  137. <app-form-id>
  138. 通过
  139. </app-form-id>
  140. </view>
  141. </view>
  142. <view @touchmove.stop.prevent="" class="model" v-if="model">
  143. <template v-if="modelType === 1">
  144. <view class="refuse">
  145. <view class="top">不通过申请</view>
  146. <view class="content">
  147. <textarea v-model="reasonRefusal" class="textarea" placeholder="请填写拒绝理由"></textarea>
  148. </view>
  149. <view class="buttons dir-left-nowrap cross-center">
  150. <view class="but cancel" @click="cancel">
  151. <app-form-id>
  152. 取消
  153. </app-form-id>
  154. </view>
  155. <view class="line"></view>
  156. <view class="but confirm" @click="confirm">
  157. <app-form-id>确认</app-form-id>
  158. </view>
  159. </view>
  160. </view>
  161. </template>
  162. <template v-if="modelType === 2">
  163. <view class="by">
  164. <view class="top">通过申请</view>
  165. <view class="content">
  166. 是否确认通过申请
  167. </view>
  168. <view class="buttons dir-left-nowrap cross-center">
  169. <view class="but cancel" @click="cancel">
  170. <app-form-id>
  171. 取消
  172. </app-form-id>
  173. </view>
  174. <view class="line"></view>
  175. <view class="but confirm" @click="confirm">
  176. <app-form-id>确认</app-form-id>
  177. </view>
  178. </view>
  179. </view>
  180. </template>
  181. </view>
  182. </view>
  183. </app-layout>
  184. </template>
  185. <script>
  186. export default {
  187. name: 'mch-detail',
  188. data() {
  189. return {
  190. detail: {
  191. user: {
  192. nickname: '',
  193. },
  194. realname: '',
  195. mobile: '',
  196. wechat: '',
  197. scope: '',
  198. districts: '',
  199. address: '',
  200. cat_name: '',
  201. service_mobile: '',
  202. form_data: [],
  203. },
  204. model: false,
  205. modelType: 0,
  206. reasonRefusal: null,
  207. transfer_rate: null,
  208. pageShow: false
  209. }
  210. },
  211. onLoad(options) {
  212. this.$showLoading({
  213. type: 'global',
  214. text: '加载中...'
  215. });
  216. this.$request({
  217. url: this.$api.app_admin.review_detail,
  218. data: {
  219. id: options.id
  220. }
  221. }).then(response => {
  222. this.$hideLoading();
  223. if (response.code === 0) {
  224. this.pageShow = true;
  225. this.detail = response.data.detail;
  226. }
  227. }).catch(() => {
  228. this.$hideLoading();
  229. });
  230. },
  231. methods: {
  232. getTypeof(data) {
  233. return typeof(data);
  234. },
  235. fail() {
  236. this.model = true;
  237. this.modelType = 1;
  238. },
  239. by() {
  240. this.model = true;
  241. this.modelType = 2;
  242. },
  243. cancel() {
  244. this.model = false;
  245. this.modelType = 0;
  246. },
  247. confirm() {
  248. if (this.modelType === 2) {
  249. this.detail.transfer_rate = this.transfer_rate;
  250. this.$request({
  251. url: this.$api.app_admin.review_switch,
  252. method: 'post',
  253. data: {
  254. type: 1,
  255. status: 1,
  256. form: JSON.stringify(this.detail),
  257. user_id: this.detail.id
  258. }
  259. }).then(response => {
  260. if (response.code === 0) {
  261. uni.navigateBack();
  262. this.model = false;
  263. } else if (response.code === 1) {
  264. uni.showToast({
  265. title: response.msg
  266. })
  267. }
  268. })
  269. } else if (this.modelType === 1) {
  270. this.detail.review_remark = this.reasonRefusal;
  271. this.$request({
  272. url: this.$api.app_admin.review_switch,
  273. method: 'post',
  274. data: {
  275. type: 1,
  276. status: 2,
  277. form: JSON.stringify(this.detail),
  278. user_id: this.detail.id
  279. }
  280. }).then(response => {
  281. if (response.code === 0) {
  282. uni.navigateBack();
  283. this.model = false;
  284. } else if (response.code === 1) {
  285. uni.showToast({
  286. title: response.msg
  287. })
  288. }
  289. });
  290. }
  291. },
  292. preview(data) {
  293. uni.previewImage({
  294. urls: [data]
  295. });
  296. },
  297. onInput(data) {
  298. if (Number(data.detail.value) > 1000) {
  299. setTimeout(() => {
  300. this.transfer_rate = 1000;
  301. });
  302. }
  303. }
  304. }
  305. }
  306. </script>
  307. <style scoped lang="scss">
  308. @import './mch-detail.scss';
  309. </style>