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.

919 lines
38 KiB

2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
  1. <template>
  2. <div class="content">
  3. <div class="card1">
  4. <el-card style="margin-bottom: 0.5vh; min-height: 110px;">
  5. <div class="row">
  6. <div class="rowItem">
  7. <el-text style="width: 4vw;">精网号</el-text>
  8. <el-input placeholder="请输入精网号" style="width:10vw;" clearable></el-input>
  9. </div>
  10. <div class="rowItem">
  11. <el-text style="width: 4vw;">客户姓名</el-text>
  12. <el-input placeholder="请输入客户姓名" style="width:10vw;" clearable></el-input>
  13. </div>
  14. <div class="rowItem">
  15. <el-text style="width: 4vw;">所属地区</el-text>
  16. <el-select placeholder="请选择所属地区" style="width:10vw;" clearable></el-select>
  17. </div>
  18. <div class="rowItem">
  19. <el-text style="width: 4vw;">订单状态</el-text>
  20. <el-select placeholder="请选择订单状态" style="width: 10vw;" clearable></el-select>
  21. </div>
  22. <div class="rowItem">
  23. <el-text style="width: 4vw;">支付方式</el-text>
  24. <el-select placeholder="请选择支付方式" style="width: 10vw;" clearable></el-select>
  25. </div>
  26. </div>
  27. <div class="row" style="margin-top: 10px;">
  28. <div class="rowItem">
  29. <el-text style="width: 4vw;">活动名称</el-text>
  30. <el-select placeholdert="请选择活动方式" style="width: 10vw;" clearable></el-select>
  31. </div>
  32. <div class="rowItem">
  33. <el-text style="width: 4vw;">产品名称</el-text>
  34. <el-select placeholder="请选择产品名称" style="width: 10vw;" clearable></el-select>
  35. </div>
  36. <div class="rowItem" style="width: 30vw">
  37. <el-text style="width: 4vw; margin-left: 0.5vw;">付款时间</el-text>
  38. <el-date-picker v-model="getTime" type="datetimerange" range-separator=""
  39. start-placeholder="起始时间" end-placeholder="结束时间" style="width: 22vw; "
  40. @change="handleDatePickerChange" :default-time="defaultTime"
  41. :disabled-date="disabledDate" />
  42. </div>
  43. </div>
  44. <div class="row" style="margin-top: 10px;">
  45. <div class="buttons">
  46. <el-button type="primary">查询</el-button>
  47. <el-button type="success">重置</el-button>
  48. <el-button type="primary">导出excel</el-button>
  49. <el-button type="primary" style="background-color: #5870FF;">导出列表</el-button>
  50. <el-button type="primary" @click="checkKefu">切换客服</el-button>
  51. <el-button type="success" @click="checkCaiwu">切换财务</el-button>
  52. </div>
  53. </div>
  54. </el-card>
  55. </div>
  56. <div class="card2">
  57. <el-card>
  58. <div class="btns">
  59. <div class="tabs" v-if="caiwu">
  60. <el-button-group>
  61. <el-button class="btnItem"
  62. :style="{ backgroundColor: activeTab === 'wait' ? '#2741DE' : '#E5EBFE', color: activeTab === 'wait' ? 'white' : '#666' }"
  63. @click="navigateTo('wait')">
  64. 待审核
  65. </el-button>
  66. <el-button class="btnItem"
  67. :style="{ backgroundColor: activeTab === 'pass' ? '#2741DE' : '#E5EBFE', color: activeTab === 'pass' ? 'white' : '#666' }"
  68. @click="navigateTo('pass')">
  69. 已通过
  70. </el-button>
  71. <el-button class="btnItem"
  72. :style="{ backgroundColor: activeTab === 'reject' ? '#2741DE' : '#E5EBFE', color: activeTab === 'reject' ? 'white' : '#666' }"
  73. @click="navigateTo('reject')">
  74. 已驳回
  75. </el-button>
  76. </el-button-group>
  77. </div>
  78. <div class="btnAdd">
  79. <el-button @click="openAddForm" type="success" v-if="kefu">添加收款</el-button>
  80. </div>
  81. </div>
  82. <div class="table">
  83. <el-table :data="tableData" style="width: 80vw;height:54vh;" @sort-change="handleSortChange"
  84. :row-style="{ height: '60px' }" :header-cell-style="{ textAlign: 'center' }"
  85. :cell-style="{ textAlign: 'center' }">
  86. <el-table-column type="index" label="序号" width="100px" fixed="left">
  87. <template #default="scope">
  88. <span>{{ scope.$index + 1 + (pageInfo.pageNum - 1) * pageInfo.pageSize }}</span>
  89. </template>
  90. </el-table-column>
  91. <el-table-column fixed="left" prop="jwcode" label="Homily ID" width="110px" />
  92. <el-table-column fixed="left" prop="name" label="姓名" width="110px" />
  93. <el-table-column prop="market" label="所属地区" width="80px" />
  94. <el-table-column prop="activity" label="活动名称" width="120px" />
  95. <el-table-column prop="rateName" label="产品名称" width="120px" />
  96. <el-table-column prop="money" label="付款币种" width="100px">
  97. </el-table-column>
  98. <el-table-column prop="permanentGold" label="付款金额" width="120px">
  99. </el-table-column>
  100. <el-table-column prop="moneyType" label="到账币种" v-if="caiwu && activeTab == 'pass'" width="150px" ></el-table-column>
  101. <el-table-column prop="getMoney" label="到账金额" v-if="caiwu && activeTab == 'pass'" width="150px" >
  102. <template #default="scope">
  103. <div v-if="!scope.row.getMoney">
  104. <text style="color: #FA5A1E;">待补充</text>
  105. </div>
  106. </template>
  107. </el-table-column>
  108. <el-table-column prop="shouxufei" label="手续费" v-if="caiwu && activeTab == 'pass'" width="150px" >
  109. <template #default="scope">
  110. <div v-if="!scope.row.shouxufei">
  111. <text style="color: #FA5A1E;">待补充</text>
  112. </div>
  113. </template>
  114. </el-table-column>
  115. <el-table-column prop="pastType" label="支付方式" width="110px">
  116. </el-table-column>
  117. <el-table-column prop="remark" label="付款时间" width="100px" />
  118. <el-table-column prop="payModel" label="转账凭证" width="110px">
  119. <template #default="scope">
  120. <div v-if="scope.row.voucher"
  121. style="display: flex; justify-content: center; align-items: center; cursor: pointer;"
  122. @click="previewImage(scope.row.voucher)">
  123. <img :src="scope.row.payModel" alt="支付凭证" style="width: auto; height: 40px;">
  124. </div>
  125. <div v-else
  126. style="display: flex; justify-content: center; align-items: center; height: 40px;">
  127. --
  128. </div>
  129. </template>
  130. </el-table-column>
  131. <el-table-column prop="bankOrder" label="银行流水订单号" v-if="caiwu && activeTab == 'pass'" width="150px" show-overflow-tooltip></el-table-column>
  132. <el-table-column prop="submiter" label="提交人" width="150px" show-overflow-tooltip></el-table-column>
  133. <el-table-column prop="auditor" label="审核人" v-if="caiwu && activeTab == 'pass'" width="150px" show-overflow-tooltip></el-table-column>
  134. <el-table-column prop="mask" label="备注" width="150px" show-overflow-tooltip></el-table-column>
  135. <el-table-column prop="getMoneyTime" label="到账时间" v-if="caiwu && activeTab == 'pass'" width="150px" show-overflow-tooltip>
  136. </el-table-column>
  137. <el-table-column v-if="kefu" fixed="right" prop="orderStatus" label="订单状态" width="100px" />
  138. <el-table-column fixed="right" label="操作" width="100px" v-if="activeTab != 'reject'">
  139. <template #default=scope>
  140. <span v-if="kefu && scope.row.orderStatus == '已通过'" style="color: #FA5A1E;">退款</span>
  141. <span v-else-if="kefu && scope.row.orderStatus == '已撤回'"
  142. style="color: #2741DE;">编辑</span>
  143. <span v-else-if="kefu && scope.row.orderStatus == '待审核'"
  144. style="color: #FA5A1E;">撤回</span>
  145. <span v-else-if="activeTab == 'wait' && !kefu" style="color: #2741DE;"
  146. @click="openAuditForm">审核</span>
  147. <span v-else-if="activeTab == 'pass' && !kefu" style="color: #2741DE;"
  148. @click="openEditForm(scope.row)">编辑</span>
  149. </template>
  150. </el-table-column>
  151. </el-table>
  152. </div>
  153. <div class="pagination">
  154. <el-pagination :page-size="pageInfo.pageSize" :page-sizes="[5, 10, 20, 50, 100]"
  155. layout="total, sizes, prev, pager, next, jumper" :total="total"
  156. @size-change="handlePagination('size', $event)"
  157. @current-change="handlePagination('page', $event)"></el-pagination>
  158. </div>
  159. </el-card>
  160. </div>
  161. <el-dialog class="adddialog" v-model="addFormisible" width="20vw" :before-close="closeAddForm">
  162. <el-form class="addForm" label-width="4vw" label-position="left">
  163. <el-form-item label="精网号" required>
  164. <el-input v-model="addFormData.jwcode" placeholder="请输入驳回理由" />
  165. </el-form-item>
  166. <el-form-item label="客户姓名" required>
  167. <el-input v-model="addFormData.userName" placeholder="请输入客户姓名" />
  168. </el-form-item>
  169. <el-form-item label="所属地区" required>
  170. <el-input disabled="true" v-model="addFormData.market" placeholder="请输入所属地区" />
  171. </el-form-item>
  172. <el-form-item label="活动名称" required>
  173. <el-input v-model="addFormData.jwcode" placeholder="请输入活动名称" />
  174. </el-form-item>
  175. <el-form-item label="产品名称" required>
  176. <el-select placeholder="请选择产品名称" clearable></el-select>
  177. </el-form-item>
  178. <el-form-item label="付款币种" required>
  179. <el-select placeholder="请选择付款币种" clearable></el-select>
  180. </el-form-item>
  181. <el-form-item label="付款金额" required>
  182. <el-input v-model="addFormData.jwcode" placeholder="请输入付款金额" />
  183. </el-form-item>
  184. <el-form-item label="支付方式" required>
  185. <el-select placeholder="请选择支付方式" clearable></el-select>
  186. </el-form-item>
  187. <el-form-item label="付款时间" required>
  188. <el-time-picker v-model="addFormData.time" placeholder="请选择付款时间" />
  189. </el-form-item>
  190. <el-form-item label="转账凭证" required>
  191. <el-upload ref="uploadRef" class="uploader" :show-file-list="false" list-type="picture-card"
  192. :auto-upload="false" :before-upload="beforeUpload" :on-error="handelImgErr"
  193. :on-change="handleImageChange" :http-request="customUpload">
  194. <img v-if="addFormData.imageUrl" :src="addFormData.imageUrl" class="avatar"
  195. style="height: 100%; width: 100%; object-fit: cover;" />
  196. <el-icon v-else class="avatar-uploader-icon">
  197. <Plus />
  198. </el-icon>
  199. </el-upload>
  200. </el-form-item>
  201. <el-form-item label="备注" required>
  202. <el-input v-model="addFormData.mask" type="textarea" :rows="4" placeholder="请输入备注" maxlength="100"
  203. show-word-limit />
  204. </el-form-item>
  205. </el-form>
  206. <template #footer>
  207. <span class="dialog-footer">
  208. <el-button style="background-color: #7E91FF;" @click="closeAddForm">取消</el-button>
  209. <el-button style="background-color: #2741DE; margin-left: 2.5vw;" type="primary"
  210. @click="handleReject">确定</el-button>
  211. </span>
  212. </template>
  213. </el-dialog>
  214. <!-- 审核弹窗 -->
  215. <el-dialog class="adddialog" v-model="auditFormisible" width="20vw" :before-close="closeAuditForm">
  216. <el-form class="addForm" label-width="4vw" label-position="left">
  217. <el-form-item label="精网号">
  218. <el-input v-model="auditFormData.jwcode" placeholder="请输入驳回理由" />
  219. </el-form-item>
  220. <el-form-item label="客户姓名">
  221. <el-input v-model="auditFormData.userName" placeholder="请输入客户姓名" />
  222. </el-form-item>
  223. <el-form-item label="所属地区">
  224. <el-input disabled="true" v-model="auditFormData.market" />
  225. </el-form-item>
  226. <el-form-item label="活动名称">
  227. <el-input v-model="auditFormData.jwcode" placeholder="请输入活动名称" />
  228. </el-form-item>
  229. <el-form-item label="产品名称">
  230. <el-select placeholder="请选择产品名称" clearable></el-select>
  231. </el-form-item>
  232. <el-form-item label="付款币种">
  233. <el-select placeholder="请选择付款币种" clearable></el-select>
  234. </el-form-item>
  235. <el-form-item label="付款金额">
  236. <el-input v-model="auditFormData.jwcode" placeholder="请输入付款金额" />
  237. </el-form-item>
  238. <el-form-item label="支付方式">
  239. <el-select placeholder="请选择支付方式" clearable></el-select>
  240. </el-form-item>
  241. <el-form-item label="付款时间">
  242. <el-time-picker v-model="auditFormData.time" placeholder="请选择付款时间" />
  243. </el-form-item>
  244. <el-form-item label="转账凭证">
  245. <div class="pic">
  246. <el-upload ref="uploadRef" class="uploader" :show-file-list="false" list-type="picture-card"
  247. :auto-upload="false" :before-upload="beforeUpload" :on-error="handelImgErr"
  248. :on-change="handleImageChange" :http-request="customUpload">
  249. <img v-if="auditFormData.imageUrl" :src="auditFormData.imageUrl" class="avatar"
  250. style="height: 100%; width: 100%; object-fit: cover;" />
  251. <el-icon v-else class="avatar-uploader-icon">
  252. <Plus />
  253. </el-icon>
  254. </el-upload>
  255. <el-text class="picText">
  256. 仅支持.jpg .png格式文件 1 MB
  257. </el-text>
  258. </div>
  259. </el-form-item>
  260. <el-form-item label="备注">
  261. <el-input v-model="auditFormData.mask" type="textarea" :rows="3" placeholder="请输入备注" maxlength="100"
  262. show-word-limit />
  263. </el-form-item>
  264. <el-form-item label="驳回理由" v-if="ifReject" required>
  265. <el-input v-model="auditFormData.mask" type="textarea" :rows="3" placeholder="请输入驳回理由"
  266. maxlength="100" show-word-limit />
  267. </el-form-item>
  268. </el-form>
  269. <template #footer>
  270. <span class="dialog-footer" v-if="!ifReject">
  271. <el-button style="background-color: #7E91FF;" @click="ifReject = true">驳回</el-button>
  272. <el-button :style="{
  273. backgroundColor: isBtnDisabled ? '#E5E5E5FF' : '#2741DEFF',
  274. marginLeft: '60px',
  275. color: isBtnDisabled ? '#8A8A8A' : '#F3FAFE'
  276. }" @click="handleReject" :disabled="isBtnDisabled">{{ btnText }}</el-button>
  277. </span>
  278. <span class="dialog-footer" v-if="ifReject">
  279. <el-button style="background-color: #7E91FF;" @click="closeAuditForm">取消</el-button>
  280. <el-button style="background-color: #2741DE; margin-left: 2.5vw;" type="primary"
  281. @click="handleReject">确定</el-button>
  282. </span>
  283. </template>
  284. </el-dialog>
  285. <!-- 编辑弹窗 -->
  286. <el-dialog class="editdialog" v-model="editFormisible" width="20vw" :before-close="closeEditForm">
  287. <div class="content">
  288. <div class="left">
  289. <el-form class="editForm" label-width="4.5vw" label-position="left">
  290. <el-form-item label="精网号">
  291. <el-input v-model="editFormData.jwcode" placeholder="请输入驳回理由" />
  292. </el-form-item>
  293. <el-form-item label="客户姓名">
  294. <el-input v-model="editFormData.userName" placeholder="请输入客户姓名" />
  295. </el-form-item>
  296. <el-form-item label="所属地区">
  297. <el-input disabled="true" v-model="editFormData.market" placeholder="请输入所属地区" />
  298. </el-form-item>
  299. <el-form-item label="活动名称">
  300. <el-input v-model="editFormData.jwcode" placeholder="请输入活动名称" />
  301. </el-form-item>
  302. <el-form-item label="产品名称">
  303. <el-select placeholder="请选择产品名称" clearable></el-select>
  304. </el-form-item>
  305. <el-form-item label="付款币种">
  306. <el-select placeholder="请选择付款币种" clearable></el-select>
  307. </el-form-item>
  308. <el-form-item label="付款金额">
  309. <el-input v-model="editFormData.jwcode" placeholder="请输入付款金额" />
  310. </el-form-item>
  311. <el-form-item label="支付方式">
  312. <el-select placeholder="请选择支付方式" clearable></el-select>
  313. </el-form-item>
  314. <el-form-item label="付款时间">
  315. <el-time-picker v-model="editFormData.time" placeholder="请选择付款时间" />
  316. </el-form-item>
  317. <el-form-item label="转账凭证">
  318. <div class="pic">
  319. <el-upload ref="uploadRef" class="uploader" :show-file-list="false"
  320. list-type="picture-card" :auto-upload="false" :before-upload="beforeUpload"
  321. :on-error="handelImgErr" :on-change="handleImageChange"
  322. :http-request="customUpload">
  323. <img v-if="editFormData.imageUrl" :src="editFormData.imageUrl" class="avatar"
  324. style="height: 100%; width: 100%; object-fit: cover;" />
  325. <el-icon v-else class="avatar-uploader-icon">
  326. <Plus />
  327. </el-icon>
  328. </el-upload>
  329. <el-text class="picText">
  330. 仅支持.jpg .png格式文件 1 MB
  331. </el-text>
  332. </div>
  333. </el-form-item>
  334. <el-form-item label="驳回理由">
  335. <el-input v-model="addFormData.mask" type="textarea" :rows="4" placeholder="请输入驳回理由"
  336. maxlength="100" show-word-limit />
  337. </el-form-item>
  338. </el-form>
  339. </div>
  340. <div class="right">
  341. <el-form class="editFormRighrt" label-width="4.5vw" label-position="left">
  342. <el-form-item label="到账货币">
  343. <el-select placeholder="请选择产品名称" clearable></el-select>
  344. </el-form-item>
  345. <el-form-item label="到账金额">
  346. <el-input v-model="addFormData.userName" placeholder="请输入到账金额" />
  347. </el-form-item>
  348. <el-form-item label="手续费">
  349. <el-input disabled="true" v-model="addFormData.market" placeholder="请输入手续费" />
  350. </el-form-item>
  351. <el-form-item label="银行流水订单号">
  352. <el-input v-model="addFormData.jwcode" placeholder="请输入银行流水订单号" />
  353. </el-form-item>
  354. <el-form-item label="到账时间">
  355. <el-input v-model="addFormData.jwcode" placeholder="请输入到账时间" />
  356. </el-form-item>
  357. </el-form>
  358. <span class="editBtns">
  359. <button class="editBtn1">
  360. <text class="txt">
  361. 取消
  362. </text>
  363. </button>
  364. <button class="editBtn2">
  365. <text class="txt">
  366. 提交
  367. </text>
  368. </button>
  369. </span>
  370. </div>
  371. </div>
  372. </el-dialog>
  373. </div>
  374. </template>
  375. <script setup>
  376. import { ref, watch } from 'vue';
  377. import { ElMessage } from 'element-plus'
  378. import API from '@/util/http.js'
  379. import { color } from 'echarts';
  380. import { template } from 'lodash';
  381. //==================== 标签切换 =========================
  382. const activeTab = ref('wait')
  383. const navigateTo = (tab) => {
  384. if (tab === 'wait') {
  385. activeTab.value = 'wait'
  386. } else if (tab === 'pass') {
  387. activeTab.value = 'pass'
  388. }
  389. else if (tab === 'reject') {
  390. activeTab.value = 'reject'
  391. }
  392. }
  393. const kefu = ref(true)
  394. const caiwu = ref(true)
  395. const checkKefu = () => {
  396. kefu.value = true
  397. caiwu.value = false
  398. }
  399. const checkCaiwu = () => {
  400. kefu.value = false
  401. caiwu.value = true
  402. }
  403. //================= 客服新增弹窗 ==================
  404. const addFormData = ref({
  405. })
  406. const addFormisible = ref(false)
  407. const uploadRef = ref()
  408. const openAddForm = () => {
  409. addFormisible.value = true
  410. }
  411. const closeAddForm = () => {
  412. addFormisible.value = false
  413. addFormData.value = {}
  414. }
  415. const handleImgSuccess = (response, uploadFile) => {
  416. try {
  417. console.log('11', response)
  418. addFormData.value.imageUrl = response.data.url
  419. console.log('22', response.data.url)
  420. } catch (error) {
  421. console.log('报错信息', error)
  422. ElMessage.error(response.msg || '图片上传失败')
  423. }
  424. }
  425. const handelImgErr = (err) => {
  426. console.log(err);
  427. addFormData.value.imageUrl = null
  428. ElMessage.error("图片上传失败")
  429. }
  430. const beforeUpload = (rawFile) => {
  431. if (rawFile.type !== 'image/jpeg' && rawFile.type !== 'image/png') {
  432. ElMessage.error('图片必须是jpg或png类型!')
  433. return false
  434. } else if (rawFile.size / 1024 / 1024 > 1) {
  435. ElMessage.error('图片大小不能超过 1MB!')
  436. return false
  437. }
  438. return true
  439. }
  440. const handleImageChange = (file) => {
  441. uploadRef.value.submit()
  442. }
  443. const customUpload = async (options) => {
  444. try {
  445. const formData = new FormData()
  446. formData.append('file', options.file)
  447. const response = await API({
  448. url: 'https://api.homilychart.com/hljw/api/aws/upload',
  449. method: 'POST',
  450. data: formData,
  451. headers: {
  452. 'Content-Type': 'multipart/form-data'
  453. }
  454. })
  455. if (response.code === 100 && response.data) {
  456. handleImgSuccess(response, options.file)
  457. ElMessage.success(response.msg || '上传成功')
  458. } else {
  459. options.onError(response)
  460. ElMessage.error(response.msg || '上传失败')
  461. }
  462. } catch (error) {
  463. console.error('上传错误:', error)
  464. ElMessage.error(`上传失败: ${error.msg || error.message || '网络异常'}`)
  465. }
  466. }
  467. //================== 财务编辑相关 =========================
  468. const editFormData = ref({
  469. })
  470. const editFormisible = ref(false)
  471. const openEditForm = (row) => {
  472. console.log('编辑时该行数据:',row);
  473. editFormData.value = row
  474. editFormisible.value = true
  475. }
  476. const closeEditForm = () => {
  477. editFormisible.value = false
  478. editFormData.value = {}
  479. }
  480. //================== 审核相关 =========================
  481. const auditFormData = ref({
  482. })
  483. const auditFormisible = ref(false)
  484. //判断弹窗中是否展示驳回
  485. const ifReject = ref(false)
  486. const openAuditForm = () => {
  487. auditFormisible.value = true
  488. }
  489. const countdown = ref(0); // 倒计时秒数(示例设为 5 秒)
  490. const isBtnDisabled = ref(false); // 按钮是否禁用
  491. const btnText = ref('通过(3)'); // 按钮显示的文字(含倒计时)
  492. const closeAuditForm = () => {
  493. ifReject.value = false
  494. auditFormisible.value = false
  495. auditFormData.value = {}
  496. }
  497. //倒计时控制通过按钮
  498. watch(auditFormisible, (val) => {
  499. if (val) {
  500. countdown.value = 3
  501. isBtnDisabled.value = true
  502. btnText.value = `通过(${countdown.value})`
  503. const timer = setInterval(() => {
  504. countdown.value--
  505. btnText.value = `通过(${countdown.value})`
  506. console.log(btnText.value);
  507. if (countdown.value <= 0) {
  508. isBtnDisabled.value = false
  509. clearInterval(timer)
  510. btnText.value = '通过'
  511. }
  512. }, 1000);
  513. }
  514. })
  515. //========================分页相关==================
  516. const pageInfo = ref({
  517. pageSize: 10,
  518. pageNum: 1
  519. })
  520. const total = ref(0)
  521. const tableData = [
  522. {
  523. "jwcode": "HM2024001",
  524. "name": "张三",
  525. "market": "华东区",
  526. "activity": "2024春季促销活动",
  527. "rateName": "年度会员套餐A",
  528. "money": "人民币",
  529. "permanentGold": 2980.00,
  530. "moneyType": "人民币",
  531. "getMoney": 2980.00,
  532. "shouxufei": 59.60,
  533. "pastType": "支付宝转账",
  534. "remark": "2024-05-10 09:23",
  535. "voucher": "https://example.com/voucher/1.jpg",
  536. "payModel": "https://example.com/icon/alipay.png",
  537. "bankOrder": "ALIPAY2024051000001",
  538. "submiter": "李四(运营部)",
  539. "auditor": "王五(财务部)",
  540. "mask": "客户主动购买,无特殊备注",
  541. "getMoneyTime": "2024-05-10 10:05",
  542. "orderStatus": "已通过"
  543. },
  544. {
  545. "jwcode": "HM2024002",
  546. "name": "李四",
  547. "market": "华北区",
  548. "activity": "新客首单优惠",
  549. "rateName": "季度体验套餐B",
  550. "money": "美元",
  551. "permanentGold": 99.00,
  552. "moneyType": "人民币",
  553. "getMoney": 712.00,
  554. "shouxufei": 14.24,
  555. "pastType": "PayPal",
  556. "remark": "2024-05-11 14:56",
  557. "voucher": "https://example.com/voucher/2.jpg",
  558. "payModel": "https://example.com/icon/paypal.png",
  559. "bankOrder": "PAYPAL2024051100002",
  560. "submiter": "赵六(国际部)",
  561. "auditor": "孙七(财务部)",
  562. "mask": "跨境支付,汇率按当日中间价计算",
  563. "getMoneyTime": "2024-05-12 08:30",
  564. "orderStatus": "待审核"
  565. },
  566. {
  567. "jwcode": "HM2024003",
  568. "name": "王五",
  569. "market": "华南区",
  570. "activity": "老客召回活动",
  571. "rateName": "月度续费套餐C",
  572. "money": "人民币",
  573. "permanentGold": 399.00,
  574. "moneyType": "人民币",
  575. "getMoney": null,
  576. "shouxufei": null,
  577. "pastType": "微信支付",
  578. "remark": "2024-05-12 11:18",
  579. "voucher": "https://example.com/voucher/3.jpg",
  580. "payModel": "https://example.com/icon/wechat.png",
  581. "bankOrder": "WECHAT2024051200003",
  582. "submiter": "钱八(客服部)",
  583. "auditor": null,
  584. "mask": "到账信息待财务补充",
  585. "getMoneyTime": null,
  586. "orderStatus": "已撤回"
  587. },
  588. {
  589. "jwcode": "HM2024004",
  590. "name": "赵六",
  591. "market": "西区",
  592. "activity": "企业团购活动",
  593. "rateName": "企业定制套餐D",
  594. "money": "人民币",
  595. "permanentGold": 15800.00,
  596. "moneyType": "人民币",
  597. "getMoney": 15800.00,
  598. "shouxufei": 316.00,
  599. "pastType": "银行对公转账",
  600. "remark": "2024-05-13 09:45",
  601. "voucher": "https://example.com/voucher/4.jpg",
  602. "payModel": "https://example.com/icon/bank.png",
  603. "bankOrder": "BANK2024051300004",
  604. "submiter": "周九(销售部)",
  605. "auditor": "吴十(财务部)",
  606. "mask": "10人企业团单,享受95折优惠",
  607. "getMoneyTime": "2024-05-13 11:20",
  608. "orderStatus": "已通过"
  609. },
  610. {
  611. "jwcode": "HM2024005",
  612. "name": "孙七",
  613. "market": "东北区",
  614. "activity": "节日特惠活动",
  615. "rateName": "年度会员套餐A",
  616. "money": "人民币",
  617. "permanentGold": 2780.00,
  618. "moneyType": "人民币",
  619. "getMoney": 2780.00,
  620. "shouxufei": 55.60,
  621. "pastType": "银联支付",
  622. "remark": "2024-05-14 15:30",
  623. "voucher": null,
  624. "payModel": null,
  625. "bankOrder": "UNIONPAY2024051400005",
  626. "submiter": "郑一(市场部)",
  627. "auditor": "王二(财务部)",
  628. "mask": "凭证暂未上传,已提醒客户补充",
  629. "getMoneyTime": "2024-05-14 16:45",
  630. "orderStatus": "待审核"
  631. }
  632. ]
  633. </script>
  634. <style scoped lang="scss">
  635. .content { //整体内容
  636. height: 100%;
  637. width: 83vw;
  638. .card1 { // 筛选框
  639. width: 100%;
  640. .row {
  641. height: 4vh;
  642. width: 80vw;
  643. display: flex;
  644. min-height: 40px;
  645. .rowItem {
  646. display: flex;
  647. width: 15vw;
  648. align-items: center;
  649. justify-content: center;
  650. margin-right: 0.5vw;
  651. }
  652. .buttons {
  653. display: flex;
  654. justify-content: center;
  655. align-items: center;
  656. margin-left: 10px;
  657. }
  658. }
  659. }
  660. .card2 { // 下方数据展示card
  661. width: 100%;
  662. margin-top: 2vh;
  663. .btns { //切换标签
  664. display: flex;
  665. align-items: center;
  666. justify-content: space-between;
  667. padding-bottom: 10px;
  668. .tabs {
  669. min-width: 300px;
  670. .btnItem {
  671. margin-left: 10px;
  672. border-radius: 5px;
  673. }
  674. }
  675. .btnAdd {
  676. margin-right: 5vw;
  677. padding-left: 10px;
  678. }
  679. }
  680. .table {
  681. margin: 10px 3vw;
  682. border-radius: 20px;
  683. }
  684. .pagination {
  685. margin-top: 10px;
  686. padding: 10px 10px;
  687. }
  688. }
  689. :deep(.adddialog) { //客服新增弹窗
  690. min-width: 500px;
  691. background-color: #F3FAFE !important;
  692. margin-top: 8vh;
  693. border-radius: 8px;
  694. .addForm {
  695. padding: 0 60px 1vh 60px;
  696. .el-date-editor {
  697. display: flex;
  698. flex: 1;
  699. }
  700. .pic {
  701. display: flex;
  702. align-items: center;
  703. .uploader {
  704. height: 80px;
  705. width: 80px;
  706. .el-upload {
  707. height: 100%;
  708. width: 100%;
  709. }
  710. }
  711. .picText {
  712. color: #999999;
  713. font-family: "PingFang SC";
  714. font-size: 10px;
  715. font-style: normal;
  716. font-weight: 400;
  717. line-height: 20px;
  718. margin-left: 10px;
  719. }
  720. }
  721. }
  722. .dialog-footer {
  723. display: flex;
  724. justify-content: center;
  725. padding-bottom: 1.5vh;
  726. }
  727. }
  728. :deep(.editdialog) { //编辑弹窗
  729. min-width: 990px;
  730. background-color: #F3FAFE !important;
  731. margin-top: 8vh;
  732. border-radius: 8px;
  733. .editForm {
  734. padding: 0 60px 1vh 60px;
  735. .el-date-editor {
  736. display: flex;
  737. flex: 1;
  738. }
  739. .pic {
  740. display: flex;
  741. align-items: center;
  742. .uploader {
  743. height: 80px;
  744. width: 80px;
  745. .el-upload {
  746. height: 100%;
  747. width: 100%;
  748. }
  749. }
  750. .picText {
  751. color: #999999;
  752. font-family: "PingFang SC";
  753. font-size: 10px;
  754. font-style: normal;
  755. font-weight: 400;
  756. line-height: 20px;
  757. margin-left: 10px;
  758. }
  759. }
  760. }
  761. .content { //编辑弹窗内容
  762. display: flex;
  763. height: 100%;
  764. width: 100%;
  765. .left {
  766. min-width: 500px;
  767. }
  768. .right {
  769. flex: 1;
  770. .editFormRighrt {
  771. padding: 0 60px 0 40px;
  772. .el-date-editor {
  773. display: flex;
  774. flex: 1;
  775. }
  776. .pic {
  777. display: flex;
  778. align-items: center;
  779. .uploader {
  780. height: 80px;
  781. width: 80px;
  782. .el-upload {
  783. height: 100%;
  784. width: 100%;
  785. }
  786. }
  787. .picText {
  788. color: #999999;
  789. font-family: "PingFang SC";
  790. font-size: 10px;
  791. font-style: normal;
  792. font-weight: 400;
  793. line-height: 20px;
  794. margin-left: 10px;
  795. }
  796. }
  797. }
  798. .editBtns {
  799. display: flex;
  800. justify-content: center;
  801. margin-top: 60px;
  802. .txt {
  803. color: #f3fafe;
  804. text-align: center;
  805. font-family: "PingFang SC";
  806. font-size: 14px;
  807. font-style: normal;
  808. font-weight: 700;
  809. line-height: 22px;
  810. }
  811. .editBtn1 {
  812. min-width: 80px;
  813. padding: 5px 12px;
  814. justify-content: center;
  815. align-items: center;
  816. gap: 4px;
  817. border-radius: 4px;
  818. background: #7E91FF;
  819. border: none;
  820. box-shadow: 0 0 4px 0 #00000040;
  821. }
  822. .editBtn2 {
  823. display: flex;
  824. width: 80px;
  825. min-width: 80px;
  826. padding: 5px 12px;
  827. justify-content: center;
  828. align-items: center;
  829. gap: 4px;
  830. border-radius: 4px;
  831. background: #2741DE;
  832. border: none;
  833. box-shadow: 0 0 4px 0 #00000040;
  834. margin-left: 60px;
  835. }
  836. }
  837. }
  838. }
  839. }
  840. :deep(.adddialog .el-form-item__label) { //设置新增弹窗表头
  841. min-width: 80px;
  842. width: auto;
  843. font-weight: 800;
  844. padding-bottom: 15px;
  845. }
  846. }
  847. </style>