You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

282 lines
14 KiB

1 week ago
16 hours ago
1 week ago
16 hours ago
1 week ago
16 hours ago
1 week ago
16 hours ago
1 week ago
16 hours ago
1 week ago
16 hours ago
1 week ago
16 hours ago
1 week ago
16 hours ago
1 week ago
16 hours ago
1 week ago
1 week ago
1 week ago
1 week ago
16 hours ago
1 week ago
16 hours ago
1 week ago
  1. <template>
  2. <el-card style="margin-bottom: 0.5vh;">
  3. <div class="condition1">
  4. <div class="condition-item">
  5. <el-text size="large" style="width:4vw;">姓名</el-text>
  6. <el-input v-model="searchForm.username" placeholder="请输入姓名" style="width:9vw;" clearable />
  7. </div>
  8. <div class="condition-item">
  9. <el-text size="large" style="width:4vw;">精网号</el-text>
  10. <el-input v-model="searchForm.jwcode" placeholder="请输入精网号" style="width:9vw;" clearable />
  11. </div>
  12. <div class="condition-item">
  13. <el-text size="large" style="width:4vw;">所属地区</el-text>
  14. <el-input v-model="searchForm.area" placeholder="请输入所属地区" style="width:9vw;" clearable />
  15. </div>
  16. <div class="condition-item">
  17. <el-text size="large" style="width:4vw;">产品名称</el-text>
  18. <el-input v-model="searchForm.productName" placeholder="请输入产品名称" style="width:9vw;" clearable />
  19. </div>
  20. <div class="condition-item">
  21. <el-text size="large" style="width:4vw;">退款币种</el-text>
  22. <el-select v-model="searchForm.payType" style="width:9vw;">
  23. <el-option v-for="item in payments" :key="item" :label="item" :value="item" />
  24. </el-select>
  25. </div>
  26. </div>
  27. <div class="condition1">
  28. <div class="condition-item2">
  29. <el-text size="large" style="width:4vw;">退款途径</el-text>
  30. <el-select v-model="searchForm.auditStatus" style="width:9vw;">
  31. <el-option v-for="item in auditStatusOptions" :key="item.value" :label="item.label"
  32. :value="item.value" />
  33. </el-select>
  34. </div>
  35. <div class="condition-item2">
  36. <el-text size="large" style="width:4vw;">订单状态</el-text>
  37. <el-input v-model="searchForm.productName" placeholder="请输入订单状态" style="width:9vw;" clearable />
  38. </div>
  39. <div class="condition-item2" style="width: 28vw;">
  40. <el-text size="large" style="width:4vw;">付款时间</el-text>
  41. <el-date-picker v-model="dateRange" type="datetimerange" range-separator="" start-placeholder="起始时间"
  42. end-placeholder="结束时间" style="width:22vw;" @change="handleDatePickerChange"
  43. :disabled-date="disabledDate" />
  44. </div>
  45. <div>
  46. <el-button type="success">重置</el-button>
  47. <el-button type="primary">查询</el-button>
  48. <el-button type="warning">导出excel</el-button>
  49. <el-button type="primary">查看导出列表</el-button>
  50. </div>
  51. </div>
  52. </el-card>
  53. <div style="height:4vh;">
  54. <el-button type="primary" @click="showEdit = true">新增</el-button>
  55. </div>
  56. <el-card>
  57. <el-table :data="tableData" style="height:60vh;width:82vw">
  58. <el-table-column type="index" label="序号" width="60" fixed="left" />
  59. <el-table-column prop="name" label="Homily ID" width="120" fixed="left" />
  60. <el-table-column prop="jwcode" label="姓名" width="120" fixed="left" show-overflow-tooltip />
  61. <el-table-column prop="market" label="所属地区" width="120" />
  62. <el-table-column prop="refundType" label="产品名称" width="120" />
  63. <el-table-column prop="refundType" label="退款类型" width="120" />
  64. <el-table-column prop="refundType" label="退款币种" width="120" />
  65. <el-table-column prop="refundType" label="退款金额" width="120" />
  66. <el-table-column prop="refundType" label="退款途径" width="120" />
  67. <el-table-column prop="refundType" label="退款截图" width="120" />
  68. <el-table-column prop="refundType" label="退款时间" width="120" />
  69. <el-table-column prop="adminName" label="订单状态" width="120" />
  70. <el-table-column prop="operation" label="操作" fixed="right" width="150px">
  71. <template #default="scope">
  72. <div class="operation">
  73. <el-popconfirm title="确定要通过此条记录吗?" @confirm="handleApprove(scope.row)">
  74. <template #reference>
  75. <el-button v-if="hasrefundWaitThough" :disabled="clicked || cancelClicked"
  76. type="primary" text>
  77. 通过
  78. </el-button>
  79. </template>
  80. <template #actions="{ confirm, cancel }">
  81. <el-button size="small" @click="cancel">取消</el-button>
  82. <el-button type="primary" size="small" :disabled="clicked" @click="confirm">
  83. 确认
  84. </el-button>
  85. </template>
  86. </el-popconfirm>
  87. <el-button v-if="hasrefundWaitReject" :disabled="clicked || cancelClicked" type="primary" text
  88. @click="showRejectDialog(scope.row)">
  89. 驳回
  90. </el-button>
  91. </div>
  92. </template>
  93. </el-table-column>
  94. </el-table>
  95. <el-pagination v-model:current-page="pagination.pageNum" v-model:page-size="pagination.pageSize"
  96. layout="total, sizes, prev, pager, next, jumper" :total="pagination.total" style="margin-top: 1vh;"
  97. @size-change="handlePageSizeChange" @current-change="handleCurrentChange" />
  98. </el-card>
  99. <el-dialog v-model="showEdit" class="edit" overflow draggable style="width: 40vw;">
  100. <div style="display: flex;">
  101. <div class="left">
  102. <div class="dialog-item">
  103. <el-text style="width:4vw;">精网号</el-text>
  104. <el-input v-model="editForm.jwcode" placeholder="请输入精网号" style="width:10vw;" clearable />
  105. </div>
  106. <div class="dialog-item">
  107. <el-text style="width:4vw;">客户姓名</el-text>
  108. <el-input v-model="editForm.name" placeholder="请输入客户姓名" style="width:10vw;" clearable />
  109. </div>
  110. <div class="dialog-item">
  111. <el-text style="width:4vw;">所属地区</el-text>
  112. <el-input v-model="editForm.market" placeholder="请输入所属地区" style="width:10vw;" clearable />
  113. </div>
  114. <div class="dialog-item">
  115. <el-text style="width:4vw;">产品名称</el-text>
  116. <el-input v-model="editForm.orderCode" placeholder="请输入产品名称" style="width:10vw;" clearable />
  117. </div>
  118. <div class="dialog-item">
  119. <el-text style="width:4vw;">退款类型</el-text>
  120. <el-select v-model="editForm.refundType" placeholder="请选择退款类型" style="width:10vw;" clearable>
  121. <el-option v-for="item in products" :key="item.value" :label="item.label" :value="item.value" />
  122. </el-select>
  123. </div>
  124. <div class="dialog-item">
  125. <el-text style="width:4vw;">付款币种</el-text>
  126. <el-select v-model="editForm.refundCurrency" placeholder="请选择付款币种" style="width:10vw;" clearable>
  127. <el-option v-for="item in currencies" :key="item.value" :label="item.label"
  128. :value="item.value" />
  129. </el-select>
  130. </div>
  131. <div class="dialog-item">
  132. <el-text style="width:4vw;">付款金额</el-text>
  133. <el-input v-model="editForm.refundAmount" placeholder="请输入付款金额" style="width:10vw;" clearable />
  134. </div>
  135. <div class="dialog-item">
  136. <el-text style="width:4vw;">支付方式</el-text>
  137. <el-select v-model="editForm.paymentMethod" placeholder="请选择支付方式" style="width:10vw;">
  138. <el-option v-for="item in payments" :key="item.value" :label="item.label" :value="item.value" />
  139. </el-select>
  140. </div>
  141. <div class="dialog-item">
  142. <el-text style="width:4vw;">付款时间</el-text>
  143. <el-date-picker v-model="editForm.payTime" type="datetime" placeholder="请选择付款时间" style="width:10vw;" clearable />
  144. </div>
  145. <div class="dialog-item">
  146. <el-text style="width:4vw;">提交人</el-text>
  147. <el-input v-model="editForm.submitter" placeholder="请输入提交人" style="width:10vw;" clearable />
  148. </div>
  149. <div class="dialog-item">
  150. <el-text style="width:4vw;">转账凭证</el-text>
  151. <el-form-item :rules="{ required: true, message: '请上传图片', trigger: 'change' }">
  152. <el-upload ref="uploadRef" list-type="picture-card" :auto-upload="false"
  153. :http-request="customUpload" :on-change="handleImageChange"
  154. :on-success="handleUploadSuccess" :on-error="handleUploadError"
  155. :before-upload="beforeUpload" :show-file-list="false">
  156. <template #default>
  157. <img v-if="editForm.imageUrl" :src="editForm.imageUrl"
  158. style="width: 100%; height: 100%; object-fit: cover;">
  159. <el-icon v-else>
  160. <Plus />
  161. </el-icon>
  162. </template>
  163. </el-upload>
  164. </el-form-item>
  165. </div>
  166. <div class="dialog-item">
  167. <el-text style="width:4vw;">备注</el-text>
  168. <el-input v-model="editForm.remark" placeholder="请输入备注" style="width:10vw;" :row="3"
  169. maxlength="100" type="textarea" show-word-limit clearable />
  170. </div>
  171. </div>
  172. <div class="right">
  173. <div class="dialog-item">
  174. <el-text style="width:4vw;">退款币种</el-text>
  175. <el-select v-model="editForm.refundCurrency" placeholder="请选择退款币种" style="width:10vw;">
  176. <el-option v-for="item in currencies" :key="item.value" :label="item.label" :value="item.value" />
  177. </el-select>
  178. </div>
  179. <div class="dialog-item">
  180. <el-text style="width:4vw;">退款金额</el-text>
  181. <el-input v-model="editForm.refundAmount" placeholder="请输入退款金额" style="width:10vw;" clearable />
  182. </div>
  183. <div class="dialog-item">
  184. <el-text style="width:4vw;">退款途径</el-text>
  185. <el-select v-model="editForm.refundWay" placeholder="请选择退款途径" style="width:10vw;">
  186. <el-option v-for="item in refundWays" :key="item.value" :label="item.label" :value="item.value" />
  187. </el-select>
  188. </div>
  189. <div class="dialog-item">
  190. <el-text style="width:4vw;">退款时间</el-text>
  191. <el-date-picker v-model="editForm.refundTime" type="datetime" placeholder="请选择退款时间" style="width:10vw;" clearable />
  192. </div>
  193. <div class="dialog-item">
  194. <el-text style="width:4vw;">备注</el-text>
  195. <el-input v-model="editForm.remark" placeholder="请输入备注" style="width:10vw;" :rows="3"
  196. maxlength="100" show-word-limit type="textarea" clearable />
  197. </div>
  198. <div style="display:flex;justify-content: center;margin-top: 5vh;">
  199. <el-button type="default" @click="" style="margin-right: 2vw;">取消</el-button>
  200. <el-button type="primary" @click="">提交</el-button>
  201. </div>
  202. </div>
  203. </div>
  204. </el-dialog>
  205. </template>
  206. <script setup>
  207. import { ref } from 'vue'
  208. import { ElMessage } from 'element-plus'
  209. import API from '@/util/http.js'
  210. const tableData = ref([])
  211. const pagination = ref({
  212. pageNum: 1,
  213. pageSize: 50,
  214. total: 0
  215. })
  216. const searchForm = ref({
  217. jwcode: ''
  218. })
  219. const showEdit = ref(false)
  220. const editForm = ref({
  221. jwcode: ''
  222. })
  223. </script>
  224. <style scoped>
  225. .condition1 {
  226. width: 82vw;
  227. display: flex;
  228. align-items: center;
  229. height: 4vh;
  230. .condition-item {
  231. width: 18%;
  232. display: flex;
  233. align-items: center;
  234. margin-bottom: 1vh;
  235. margin-right: 0.5vw;
  236. }
  237. .condition-item2 {
  238. width: 18%;
  239. display: flex;
  240. align-items: center;
  241. margin-right: 0.5vw;
  242. }
  243. }
  244. .edit {
  245. .left {
  246. width: 45%;
  247. height: 60vh;
  248. padding: 0 2vw;
  249. .dialog-item {
  250. display: flex;
  251. align-items: center;
  252. margin-bottom: 1vh;
  253. }
  254. .image {
  255. width: 4vw !important;
  256. height: 4vw !important;
  257. }
  258. :deep(.el-upload--picture-card) {
  259. width: 4vw !important;
  260. height: 4vw !important;
  261. padding: 0 !important;
  262. }
  263. }
  264. .right {
  265. width: 50%;
  266. .dialog-item {
  267. display: flex;
  268. align-items: center;
  269. margin-bottom: 1vh;
  270. }
  271. }
  272. }
  273. </style>