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.

761 lines
29 KiB

2 months ago
  1. <!-- 总部财务&管理员 -->
  2. <!-- 客服 -->
  3. <template>
  4. <el-card style="margin-bottom: 0.5vh;">
  5. <div class="condition">
  6. <div class="item1">
  7. <el-text size="large" style="width:4vw;">精网号</el-text>
  8. <el-input v-model="searchForm.jwcode" placeholder="请输入精网号" style="width:9vw;" clearable />
  9. </div>
  10. <div class="item1">
  11. <el-text size="large" style="width:4vw;">客户姓名</el-text>
  12. <el-input v-model="searchForm.name" placeholder="请输入客户姓名" style="width:9vw;" clearable />
  13. </div>
  14. <div class="item1">
  15. <el-text size="large" style="width:4vw;">所属地区</el-text>
  16. <el-input v-model="searchForm.market" placeholder="请输入所属地区" style="width:9vw;" clearable />
  17. </div>
  18. <div class="item1">
  19. <el-text size="large" style="width:4vw;">产品名称</el-text>
  20. <el-input v-model="searchForm.goodsName" placeholder="请输入产品名称" style="width:9vw;" clearable />
  21. </div>
  22. <div class="item1">
  23. <el-text size="large" style="width:4vw;">订单状态</el-text>
  24. <el-select v-model="searchForm.status" style="width:9vw;">
  25. <el-option v-for="item in statusList" :key="item.value" :label="item.label" :value="item.value" />
  26. </el-select>
  27. </div>
  28. </div>
  29. <div class="condition">
  30. <div class="item2">
  31. <el-text size="large" style="width:4vw;">付款币种</el-text>
  32. <el-input v-model="searchForm.payCurrency" placeholder="请输入付款币种" style="width:9vw;" clearable />
  33. </div>
  34. <div class="item2">
  35. <el-text size="large" style="width:4vw;">支付方式</el-text>
  36. <el-input v-model="searchForm.payType" placeholder="请输入支付方式" style="width:9vw;" clearable />
  37. </div>
  38. <div class="item2" style="width: 28.5vw;">
  39. <el-text size="large" style="width:4vw;">付款时间</el-text>
  40. <el-date-picker v-model="dateRange" type="datetimerange" range-separator="" start-placeholder="起始时间"
  41. end-placeholder="结束时间" style="width:22vw;" @change="handleDatePickerChange"
  42. :disabled-date="disabledDate" />
  43. </div>
  44. <div>
  45. <el-button type="success">重置</el-button>
  46. <el-button type="primary">查询</el-button>
  47. <el-button type="warning">导出excel</el-button>
  48. <el-button type="primary">查看导出列表</el-button>
  49. </div>
  50. </div>
  51. </el-card>
  52. <div style="display: flex;">
  53. <el-button type="primary" @click="showAdd = true">地区客服编辑</el-button>
  54. <el-button type="primary" @click="showAudit1 = true">审核1</el-button>
  55. <el-button type="primary" @click="showAudit2 = true">审核2</el-button>
  56. <el-button type="primary" @click="showSteps = true">看看步骤条</el-button>
  57. <el-button type="primary" @click="showBack = true">看看撤回</el-button>
  58. <el-button type="primary" @click="showError = true">退款金额有误</el-button>
  59. </div>
  60. <el-card style="margin-top: 0.5vh;">
  61. <el-table :data="tableData" style="height:64vh;width:82vw">
  62. <el-table-column type="index" label="序号" width="60" fixed="left" />
  63. <el-table-column prop="name" label="Homily ID" width="120" fixed="left" />
  64. <el-table-column prop="jwcode" label="姓名" width="120" fixed="left" show-overflow-tooltip />
  65. <el-table-column prop="market" label="所属地区" width="120" />
  66. <el-table-column prop="orderCode" label="活动名称" width="120px" v-if="isKF" show-overflow-tooltip />
  67. <el-table-column prop="refundType" label="产品名称" width="120" />
  68. <el-table-column prop="refundType" label="产品数量" width="120" />
  69. <el-table-column prop="refundType" label="退款方式" width="120" v-if="!isKF" />
  70. <el-table-column prop="refundType" label="提交人" width="120" v-if="!isKF" />
  71. <el-table-column prop="refundType" label="退款理由" width="120" v-if="!isKF" />
  72. <el-table-column prop="refundType" label="付款币种" width="120" v-if="isKF" />
  73. <el-table-column prop="refundType" label="付款金额" width="120" v-if="isKF" />
  74. <el-table-column prop="refundType" label="支付方式" width="120" v-if="isKF" />
  75. <el-table-column prop="refundType" label="付款时间" width="120" v-if="isKF" />
  76. <el-table-column prop="refundType" label="转账凭证" width="120" v-if="isKF" />
  77. <el-table-column prop="remark" label="备注" width="150" show-overflow-tooltip />
  78. <el-table-column prop="adminName" label="订单状态" width="120" />
  79. <el-table-column prop="operation" label="操作" fixed="right" width="150px" v-if="!isKF">
  80. <template #default="scope">
  81. <div class="operation">
  82. <el-popconfirm title="确定要通过此条记录吗?" @confirm="handleApprove(scope.row)">
  83. <template #reference>
  84. <el-button v-if="hasrefundWaitThough" :disabled="clicked || cancelClicked"
  85. type="primary" text>
  86. 通过
  87. </el-button>
  88. </template>
  89. <template #actions="{ confirm, cancel }">
  90. <el-button size="small" @click="cancel">取消</el-button>
  91. <el-button type="primary" size="small" :disabled="clicked" @click="confirm">
  92. 确认
  93. </el-button>
  94. </template>
  95. </el-popconfirm>
  96. <el-button v-if="hasrefundWaitReject" :disabled="clicked || cancelClicked" type="primary" text
  97. @click="showRejectDialog(scope.row)">
  98. 驳回
  99. </el-button>
  100. </div>
  101. </template>
  102. </el-table-column>
  103. </el-table>
  104. <el-pagination v-model:current-page="pagination.pageNum" v-model:page-size="pagination.pageSize"
  105. layout="total, sizes, prev, pager, next, jumper" :total="pagination.total"
  106. @size-change="handlePageSizeChange" @current-change="handleCurrentChange"
  107. style="margin-top: 1vh;"></el-pagination>
  108. </el-card>
  109. <el-dialog v-model="showAudit1" title="审核" overflow draggable width="20vw">
  110. <div class="audit1">
  111. <div class="audit-item">
  112. <el-text style="width:4vw;">精网号</el-text>
  113. <el-input v-model="addForm.jwcode" placeholder="请输入精网号" style="width:10vw;" clearable />
  114. </div>
  115. <div class="audit-item">
  116. <el-text style="width:4vw;">姓名</el-text>
  117. <el-input v-model="addForm.name" placeholder="请输入客户姓名" style="width:10vw;" clearable />
  118. </div>
  119. <div class="audit-item">
  120. <el-text style="width:4vw;">所属地区</el-text>
  121. <el-input v-model="addForm.market" placeholder="请输入所属地区" style="width:10vw;" clearable />
  122. </div>
  123. <div class="audit-item">
  124. <el-text style="width:4vw;">活动名称</el-text>
  125. <el-input v-model="addForm.orderCode" placeholder="请输入活动名称" style="width:10vw;" clearable />
  126. </div>
  127. <div class="audit-item">
  128. <el-text style="width:4vw;">商品名称</el-text>
  129. <el-input v-model="addForm.orderCode" placeholder="请输入活动名称" style="width:10vw;" clearable />
  130. </div>
  131. <div class="audit-item">
  132. <el-text style="width:4vw;">付款币种</el-text>
  133. <el-input v-model="addForm.refundAmount" placeholder="请输入付款金额" style="width:10vw;" clearable />
  134. </div>
  135. <div class="audit-item">
  136. <el-text style="width:4vw;">付款金额</el-text>
  137. <el-input v-model="addForm.refundAmount" placeholder="请输入付款金额" style="width:10vw;" clearable />
  138. </div>
  139. <div class="audit-item">
  140. <el-text style="width:4vw;">支付方式</el-text>
  141. <el-input v-model="addForm.refundAmount" placeholder="请输入付款金额" style="width:10vw;" clearable />
  142. </div>
  143. <div class="audit-item">
  144. <el-text style="width:4vw;">付款时间</el-text>
  145. <el-input v-model="addForm.refundAmount" placeholder="请输入付款金额" style="width:10vw;" clearable />
  146. </div>
  147. <div class="audit-item">
  148. <el-text style="width:4vw;">银行流水订单号</el-text>
  149. <el-input v-model="addForm.refundAmount" placeholder="请输入付款金额" style="width:10vw;" clearable />
  150. </div>
  151. </div>
  152. <div style="display:flex;justify-content: center;">
  153. <el-button type="primary" @click="">驳回</el-button>
  154. <el-button type="primary" @click="">通过</el-button>
  155. </div>
  156. </el-dialog>
  157. <el-dialog v-model="showAudit2" title="审核" class="audit2" overflow draggable>
  158. <div class="top">
  159. <el-button @click="" class="smallTitle" size="small">退款申请信息</el-button>
  160. <div class="top-item">
  161. <el-text style="width:4vw;" size="small">退款类型</el-text>
  162. <el-input v-model="auditForm.refundType" placeholder="请输入退款类型" size="small" style="width:10vw;"
  163. clearable></el-input>
  164. </div>
  165. <div class="top-item">
  166. <el-text style="width:4vw;" size="small">退款金额</el-text>
  167. <el-input v-model="auditForm.refundAmount" placeholder="请输入退款金额" size="small" style="width:10vw;"
  168. clearable></el-input>
  169. </div>
  170. <div class="top-item">
  171. <el-text style="width:4vw;" size="small">退款备注</el-text>
  172. <el-input v-model="auditForm.refundReason" placeholder="请输入退款备注" size="small" style="width:10vw;"
  173. :rows="3" maxlength="100" show-word-limit type="textarea" />
  174. </div>
  175. </div>
  176. <el-button @click="" class="smallTitle" size="small">原订单信息</el-button>
  177. <div class="center">
  178. <div class="center-left">
  179. <div class="center-item">
  180. <el-text style="width:4vw;" size="small">精网号</el-text>
  181. <el-input v-model="addForm.jwcode" placeholder="请输入精网号" size="small" style="width:10vw;"
  182. clearable />
  183. </div>
  184. <div class="center-item">
  185. <el-text style="width:4vw;" size="small">所属地区</el-text>
  186. <el-input v-model="addForm.name" placeholder="请输入所属地区" size="small" style="width:10vw;" clearable />
  187. </div>
  188. <div class="center-item">
  189. <el-text style="width:4vw;" size="small">产品名称</el-text>
  190. <el-input v-model="addForm.productName" placeholder="请输入产品名称" size="small" style="width:10vw;"
  191. clearable />
  192. </div>
  193. <div class="center-item">
  194. <el-text style="width:4vw;" size="small">付款金额</el-text>
  195. <el-input v-model="addForm.orderCode" placeholder="请输入付款金额" size="small" style="width:10vw;"
  196. clearable />
  197. </div>
  198. <div class="center-item">
  199. <el-text style="width:4vw;" size="small">到账金额</el-text>
  200. <el-input v-model="addForm.orderCode" placeholder="请输入到账金额" size="small" style="width:10vw;"
  201. clearable />
  202. </div>
  203. <div class="center-item">
  204. <el-text style="width:4vw;" size="small">支付方式</el-text>
  205. <el-input v-model="addForm.refundAmount" placeholder="请输入支付方式" size="small" style="width:10vw;"
  206. clearable />
  207. </div>
  208. <div class="center-item">
  209. <el-text style="width:4vw;" size="small">付款金额</el-text>
  210. <el-input v-model="addForm.refundAmount" placeholder="请输入付款金额" size="small" style="width:10vw;"
  211. clearable />
  212. </div>
  213. <div class="center-item">
  214. <el-text style="width:3vw;padding-right: 1vw;" size="small">银行流水订单号</el-text>
  215. <el-input size="small" v-model="addForm.bankOrderNo" placeholder="请输入银行流水订单号" style="width:10vw;"
  216. clearable />
  217. </div>
  218. <div class="center-item">
  219. <el-text style="width:4vw;" size="small">审核人</el-text>
  220. <el-input v-model="addForm.auditUser" placeholder="请输入审核人" size="small" style="width:10vw;"
  221. clearable />
  222. </div>
  223. <div class="center-item">
  224. <el-text style="width:4vw;" size="small">转账凭证</el-text>
  225. <el-form-item :rules="{ required: true, message: '请上传图片', trigger: 'change' }">
  226. <el-upload ref="uploadRef" :auto-upload="false" :http-request="customUpload"
  227. list-type="picture-card" :on-change="handleImageChange" class="image"
  228. :on-success="handleUploadSuccess" :on-error="handleUploadError"
  229. :before-upload="beforeUpload" :show-file-list="false">
  230. <template #default>
  231. <img v-if="addForm.imageUrl" :src="addForm.imageUrl"
  232. style="width: 100%; height: 100%; object-fit: cover;">
  233. <el-icon v-else>
  234. <Plus />
  235. </el-icon>
  236. </template>
  237. </el-upload>
  238. </el-form-item>
  239. </div>
  240. </div>
  241. <div class="center-right">
  242. <div class="right-item">
  243. <el-text style="width:4vw;" size="small">客户姓名</el-text>
  244. <el-input v-model="addForm.customerName" placeholder="请输入客户姓名" size="small" style="width:10vw;"
  245. clearable />
  246. </div>
  247. <div class="right-item">
  248. <el-text style="width:4vw;" size="small">活动名称</el-text>
  249. <el-input v-model="addForm.activityName" placeholder="请输入活动名称" size="small" style="width:10vw;"
  250. clearable />
  251. </div>
  252. <div class="right-item">
  253. <el-text style="width:4vw;" size="small">付款币种</el-text>
  254. <el-input v-model="addForm.paymentCurrency" placeholder="请输入付款币种" size="small" style="width:10vw;"
  255. clearable />
  256. </div>
  257. <div class="right-item">
  258. <el-text style="width:4vw;" size="small">到账币种</el-text>
  259. <el-input v-model="addForm.receiveCurrency" placeholder="请输入到账币种" size="small" style="width:10vw;"
  260. clearable />
  261. </div>
  262. <div class="right-item">
  263. <el-text style="width:4vw;" size="small">手续费</el-text>
  264. <el-input v-model="addForm.fee" placeholder="请输入手续费" size="small" style="width:10vw;" clearable />
  265. </div>
  266. <div class="right-item">
  267. <el-text style="width:4vw;" size="small">付款时间</el-text>
  268. <el-input v-model="addForm.paymentTime" placeholder="请输入付款时间" size="small" style="width:10vw;"
  269. clearable />
  270. </div>
  271. <div class="right-item">
  272. <el-text style="width:4vw;" size="small">提交人</el-text>
  273. <el-input v-model="addForm.submitUser" placeholder="请输入提交人" size="small" style="width:10vw;"
  274. clearable />
  275. </div>
  276. <div class="right-item">
  277. <el-text style="width:4vw;" size="small">到账时间</el-text>
  278. <el-input v-model="addForm.receiveTime" placeholder="请输入到账时间" size="small" style="width:10vw;"
  279. clearable />
  280. </div>
  281. <div class="right-item">
  282. <el-text style="width:4vw;" size="small">备注</el-text>
  283. <el-input v-model="addForm.remark" placeholder="请输入备注" size="small" style="width:10vw;" :row="3"
  284. clearable />
  285. </div>
  286. </div>
  287. </div>
  288. <el-button @click="" class="smallTitle" size="small">转交信息</el-button>
  289. <div class="bottom">
  290. <div class="bottom-item">
  291. <el-text style="width:4vw;" size="small">执行人</el-text>
  292. <el-select v-model="addForm.executor" size="small" placeholder="请选择执行人" style="width:10vw;">
  293. <el-option v-for="item in executor" :key="item.value" :label="item.label" :value="item.value" />
  294. </el-select>
  295. </div>
  296. </div>
  297. </el-dialog>
  298. <el-dialog v-model="showSteps" title="唉!!!" overflow draggable width="1206px" height="506px" :style="{
  299. backgroundImage: 'url(/src/assets/images/背景图.png)',
  300. backgroundSize: 'cover',
  301. backgroundPosition: 'center'
  302. }">
  303. <div class="steps">
  304. <div class="steps-content">
  305. <el-steps style="min-width: 60vw" :active="1" align-center>
  306. <el-step> <template #title>
  307. <div>提交人<br>你是死的</div>
  308. </template>
  309. <template #icon>
  310. <img src="@/assets/images/已审核.png" alt="已审核图标">
  311. </template>
  312. </el-step>
  313. <el-step title="地区财务">
  314. <template #icon>
  315. <img src="@/assets/images/待审核.png" alt="待审核图标">
  316. </template>
  317. </el-step>
  318. <el-step title="地区负责人">
  319. <template #icon>
  320. <img src="@/assets/images/还没传到.png" alt="还没传到图标">
  321. </template>
  322. </el-step>
  323. <el-step title="总部财务">
  324. <template #icon>
  325. <img src="@/assets/images/还没传到.png" alt="还没传到图标">
  326. </template>
  327. </el-step>
  328. <el-step title="指定执行人">
  329. <template #icon>
  330. <img src="@/assets/images/还没传到.png" alt="还没传到图标">
  331. </template>
  332. </el-step>
  333. </el-steps>
  334. </div>
  335. <div class="steps-status">
  336. <el-steps style="min-width: 50vw" :active="1" finish-status="success" simple>
  337. <el-step title="已通过" />
  338. <el-step title="待审核" />
  339. <el-step title="待审核" />
  340. <el-step title="待审核" />
  341. <el-step title="待审核" />
  342. </el-steps>
  343. </div>
  344. <div class="steps-btn">
  345. <el-button type="primary">确定</el-button>
  346. </div>
  347. </div>
  348. </el-dialog>
  349. </template>
  350. <script setup>
  351. import { ref, onMounted } from 'vue'
  352. import { ElMessage } from 'element-plus'
  353. import API from '@/util/http.js'
  354. const uploadUrl = 'https://api.homilychart.com/hljw/api/aws/upload'
  355. import { useAdminStore } from "@/store/index.js"
  356. import { storeToRefs } from "pinia"
  357. import dayjs from 'dayjs'
  358. const adminStore = useAdminStore()
  359. const { adminData, menuTree } = storeToRefs(adminStore)
  360. import { permissionMapping, findMenuById } from "@/utils/menuTreePermission.js"
  361. //客服
  362. const isKF = ref(adminData.value.adminName.includes('客服'))
  363. // 地区
  364. const isDQ = ref(adminData.value.adminName.includes('财务') || adminData.value.adminName.includes('经理') && !adminData.value.adminName.includes('总部'))
  365. // 总部
  366. const isZB = ref(adminData.value.adminName.includes('总部') || adminData.value.adminName.includes('管理员'))
  367. const searchForm = ref({
  368. jwcode: ''
  369. })
  370. const addForm = ref({
  371. jwcode: ''
  372. })
  373. const auditForm = ref({
  374. refundType: ''
  375. })
  376. const pagination = ref({
  377. pageNum: 1,
  378. pageSize: 50,
  379. total: 0
  380. })
  381. const tableData = ref([])
  382. const showAdd = ref(false)
  383. const showAudit1 = ref(false)
  384. const showAudit2 = ref(false)
  385. const showSteps = ref(false)
  386. const uploadRef = ref(null)
  387. const showBack = ref(false)
  388. const showError = ref(false)
  389. const executor = ref([
  390. {
  391. value: '305485',
  392. label: '新:Zoe'
  393. },
  394. {
  395. value: '200723',
  396. label: '马:Jennifer'
  397. },
  398. {
  399. value: '301388',
  400. label: '港:林育平'
  401. },
  402. {
  403. value: '839448',
  404. label: '加:Mandy'
  405. },
  406. {
  407. value: '304904',
  408. label: '泰:杨丽娇'
  409. },
  410. {
  411. value: '315915',
  412. label: '越:范秋霞'
  413. }
  414. ])
  415. const products = ref([
  416. {
  417. value: '1',
  418. label: '产品1'
  419. },
  420. {
  421. value: '2',
  422. label: '产品2'
  423. }
  424. ])
  425. const currencies = ref([
  426. {
  427. value: 'CNY',
  428. label: '人民币'
  429. },
  430. {
  431. value: 'USD',
  432. label: '美元'
  433. }
  434. ])
  435. const payments = ref([{
  436. value: '银行转账',
  437. label: '银行转账'
  438. },
  439. {
  440. value: '现金',
  441. label: '现金'
  442. },
  443. {
  444. value: '支票',
  445. label: '支票'
  446. },
  447. {
  448. value: '刷卡',
  449. label: '刷卡'
  450. },
  451. {
  452. value: 'Grabpay',
  453. label: 'Grabpay'
  454. },
  455. {
  456. value: 'Nets',
  457. label: 'Nets'
  458. },
  459. {
  460. value: 'PayPal',
  461. label: 'PayPal'
  462. },
  463. {
  464. value: 'Stripe-链接收款',
  465. label: 'Stripe-链接收款'
  466. },
  467. {
  468. value: 'Ipay88-链接收款',
  469. label: 'Ipay88-链接收款'
  470. },
  471. {
  472. value: 'PaymentAsia-链接收款',
  473. label: 'PaymentAsia-链接收款'
  474. },
  475. {
  476. value: 'Stripe-Link平台',
  477. label: 'Stripe-Link平台'
  478. },
  479. {
  480. value: 'PaymentAsia-Link平台',
  481. label: 'PaymentAsia-Link平台'
  482. },
  483. {
  484. value: 'FirstData-Link平台-Link平台',
  485. label: 'FirstData-Link平台-Link平台'
  486. },
  487. {
  488. value: 'IOS-Link平台',
  489. label: 'IOS-Link平台'
  490. },
  491. {
  492. value: 'Ipay88-Link平台',
  493. label: 'Ipay88-Link平台'
  494. }
  495. ])
  496. const statusList = ref([
  497. {
  498. value: '10',
  499. label: '地区财务待审核'
  500. },
  501. {
  502. value: '12',
  503. label: '地区财务驳回'
  504. },
  505. {
  506. value: '20',
  507. label: '地区负责人待审核'
  508. },
  509. {
  510. value: '22',
  511. label: '地区负责人驳回'
  512. },
  513. {
  514. value: '30',
  515. label: '总部财务待审核'
  516. },
  517. {
  518. value: '32',
  519. label: '总部财务驳回'
  520. },
  521. {
  522. value: '40',
  523. label: '执行人待处理'
  524. },
  525. {
  526. value: '41',
  527. label: '退款完成'
  528. }
  529. ])
  530. // 查全部
  531. const getRefund = async function () {
  532. try {
  533. const params = {
  534. cashCollection: {
  535. status: null,
  536. //10:地区财务待审核;12:地区财务驳回;
  537. // 20:地区负责人待审核;22:地区负责人驳回;
  538. // 30:总部财务待审核;32:总部财务驳回;
  539. // 40:执行人待处理;41:执行人已处理,退款完成;
  540. orderCode: null,//订单号
  541. name: null,//姓名
  542. jwcode: null,//精网号
  543. market: null,//地区
  544. goodsName: null,//商品名
  545. refundModel: null,//退款类型,
  546. startTime: "",
  547. endTime: ""
  548. }
  549. }
  550. const result = await API({
  551. url: '/hljw/api/refund/query',
  552. method: 'POST',
  553. data: params
  554. })
  555. tableData.value = result.data || []
  556. } catch (error) {
  557. ElMessage.error(error.message || '查询失败')
  558. }
  559. }
  560. const handleImageChange = (file) => {
  561. uploadRef.value.submit()
  562. }
  563. const beforeUpload = (file) => {
  564. const isJPG = file.type === 'image/jpeg'
  565. const isPNG = file.type === 'image/png'
  566. const isLt1 = file.size / 1024 < 1024
  567. if (!isJPG && !isPNG) {
  568. ElMessage.error('上传图片只能是 JPG 或 PNG 格式')
  569. return false
  570. }
  571. if (!isLt1) {
  572. ElMessage.error('上传图片大小不能超过1MB')
  573. return false
  574. }
  575. return true
  576. }
  577. const handleUploadSuccess = (response, file, fileList) => {
  578. try {
  579. addForm.value.imageUrl = response.data.url
  580. console.log('==========================', response.data.url)
  581. } catch (error) {
  582. console.log('看看报错信息', error)
  583. ElMessage.error(response.data.msg || '图片上传失败')
  584. }
  585. }
  586. const handleUploadError = (error) => {
  587. console.error('上传失败:', error)
  588. addForm.value.imageUrl = null
  589. ElMessage.error('图片上传失败,请重试')
  590. }
  591. const customUpload = async (options) => {
  592. try {
  593. const formData = new FormData()
  594. formData.append('file', options.file)
  595. const response = await API({
  596. url: uploadUrl,
  597. method: 'POST',
  598. data: formData,
  599. headers: {
  600. 'Content-Type': 'multipart/form-data'
  601. }
  602. })
  603. if (response.code === 200 && response.data) {
  604. handleUploadSuccess(response, options.file, [options.file])
  605. ElMessage.success(response.msg || '上传成功')
  606. } else {
  607. ElMessage.error(response.msg || '上传失败')
  608. }
  609. } catch (error) {
  610. console.error('上传错误:', error)
  611. ElMessage.error(`上传失败: ${error.msg || error.message || '网络异常'}`)
  612. }
  613. }
  614. onMounted(() => {
  615. console.log('???????????????????', adminData.value)
  616. })
  617. </script>
  618. <style scoped lang="scss">
  619. .condition {
  620. width: 82vw;
  621. display: flex;
  622. align-items: center;
  623. height: 4vh;
  624. .item1 {
  625. width: 18%;
  626. display: flex;
  627. align-items: center;
  628. margin-bottom: 1vh;
  629. margin-right: 0.5vw;
  630. }
  631. .item2 {
  632. width: 18%;
  633. display: flex;
  634. align-items: center;
  635. margin-right: 0.5vw;
  636. }
  637. }
  638. .audit1 {
  639. height: 47vh;
  640. .audit-item {
  641. display: flex;
  642. align-items: center;
  643. margin-bottom: 1vh;
  644. }
  645. }
  646. .audit2 {
  647. width: 30vw;
  648. height: auto;
  649. .top {
  650. width: 30vw;
  651. height: 17vh;
  652. .top-item {
  653. display: flex;
  654. align-items: center;
  655. margin-bottom: 1vh;
  656. }
  657. }
  658. .smallTitle {
  659. background-color: white;
  660. color: rgb(64, 158, 255);
  661. border-color: rgb(64, 158, 255);
  662. margin-bottom: 0.5vh;
  663. }
  664. .center {
  665. display: flex;
  666. width: 30vw;
  667. height: 41vh;
  668. .dialog-item {
  669. display: flex;
  670. align-items: center;
  671. margin-bottom: 1vh;
  672. }
  673. .center-left {
  674. width: 60%;
  675. .image {
  676. width: 4vw !important;
  677. height: 4vw !important;
  678. }
  679. :deep(.el-upload--picture-card) {
  680. width: 4vw !important;
  681. height: 4vw !important;
  682. padding: 0 !important;
  683. }
  684. .center-item {
  685. display: flex;
  686. align-items: center;
  687. margin-bottom: 1vh;
  688. }
  689. }
  690. .center-right {
  691. .right-item {
  692. display: flex;
  693. align-items: center;
  694. margin-bottom: 1vh;
  695. }
  696. }
  697. }
  698. .bottom {
  699. width: 30vw;
  700. height: 5vh;
  701. .bottom-item {
  702. display: flex;
  703. align-items: center;
  704. margin-bottom: 1vh;
  705. }
  706. }
  707. }
  708. .steps {
  709. .steps-content {
  710. width: 45vw;
  711. height: 15vh;
  712. display: flex;
  713. justify-content: center;
  714. padding-top: 15vw;
  715. padding-left: 8vw;
  716. }
  717. .steps-status {
  718. display: flex;
  719. align-items: center;
  720. justify-content: center;
  721. }
  722. .steps-btn {
  723. height: 15vh;
  724. display: flex;
  725. justify-content: center;
  726. align-items: center;
  727. }
  728. }
  729. </style>