fine.vue 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627
  1. <template>
  2. <div class="app-container organization-index">
  3. <div class="title-container">
  4. <breadcrumb id="breadcrumb-container" class="breadcrumb-container" />
  5. </div>
  6. <el-tabs v-model="activeName" @tab-click="handleClick" type="border-card" style="margin-top: 10px;">
  7. <el-tab-pane v-if="!personalLeader" label="资产业务" name="ASSET_BUSINESS">
  8. <y-page-list-layout :page-list="pageData" :page-para="queryDTO" :get-page-list="page">
  9. <template slot="left">
  10. <el-input v-model="queryDTO.keyWord" placeholder="关键字(项⽬编号或产品号)" clearable style="width: 300px;float: left;"></el-input>
  11. <el-input v-model="queryDTO.invoiceNo" placeholder="发票号" clearable style="margin-left: 20px;width: 150px;float: left;"></el-input>
  12. <el-input v-model="queryDTO.clientManagerName" placeholder="客户经理" clearable style="margin-left: 20px;width: 150px;float: left;"></el-input>
  13. <el-select v-model="queryDTO.status" filterable placeholder="是否确认" clearable style="margin-left: 20px;width: 150px;float: left;">
  14. <el-option label="已确认" value="true"></el-option>
  15. <el-option label="未确认" value="false"></el-option>
  16. </el-select>
  17. <el-date-picker
  18. v-model="findDate"
  19. type="daterange"
  20. align="center"
  21. unlink-panels
  22. range-separator="至"
  23. start-placeholder="罚款⽇期(开始)"
  24. end-placeholder="罚款⽇期(结束)"
  25. :picker-options="pickerOptions"
  26. value-format="yyyy-MM-dd"
  27. style="margin-left: 20px;width: 300px;float: left;"
  28. ></el-date-picker>
  29. <el-button class="filter-item" style="margin-left:20px;float: left;" type="primary" @click="page()" round>搜索</el-button>
  30. <el-button class="filter-item" style="float: left;" round type="success" @click="resetSearch()">重置</el-button>
  31. <el-button class="filter-item" style="float: left;" round type="warning" @click="fineListExport()">导出</el-button>
  32. <PermissionButton menu-code="_views_finance_fine_confirm_batch" class="filter-item" style="float: left;" round type="danger" @click="batchConfirmFineAmount()" />
  33. </template>
  34. <parentTable ref="table" v-loading="listLoading" :data="pageData.records" :selectionChange="handleSelectionChange" slot="table" style="width: 100%;">
  35. <el-table-column type="selection" align="center" width="40"></el-table-column>
  36. <el-table-column label="项⽬编号" align="center" width="120">
  37. <template slot-scope="{row}">
  38. <span>{{ row.orderId }}</span>
  39. </template>
  40. </el-table-column>
  41. <el-table-column label="项⽬名称" align="center" width="150" show-overflow-tooltip>
  42. <template slot-scope="{row}">
  43. <span>{{ row.orderName}}</span>
  44. </template>
  45. </el-table-column>
  46. <el-table-column label="产品号" align="center" width="250">
  47. <template slot-scope="{row}">
  48. <span>{{ row.productionNo}}</span>
  49. </template>
  50. </el-table-column>
  51. <el-table-column label="产品类型" align="center">
  52. <template slot-scope="{row}">
  53. <span>{{ row.productionType }}</span>
  54. </template>
  55. </el-table-column>
  56. <el-table-column label="发票号" align="center" width="150">
  57. <template slot-scope="{row}">
  58. <span>{{ row.invoiceNo?row.invoiceNo:'未开票' }}</span>
  59. </template>
  60. </el-table-column>
  61. <el-table-column label="罚款⾦额" align="center">
  62. <template slot-scope="{row}">
  63. <span style="color: #dca550; font-weight: bold;">{{ row.fineAmount }}</span>
  64. </template>
  65. </el-table-column>
  66. <el-table-column label="实际罚款⾦额" align="center" width="120">
  67. <template slot-scope="{row}">
  68. <span style="color: red; font-weight: bold;">{{ row.realFineAmount !== null ? row.realFineAmount:'待确认' }}</span>
  69. </template>
  70. </el-table-column>
  71. <el-table-column label="客户经理" align="center">
  72. <template slot-scope="{row}">
  73. <span>{{ row.clientManagerName}}</span>
  74. </template>
  75. </el-table-column>
  76. <el-table-column label="是否确认" align="center">
  77. <template slot-scope="{row}">
  78. <span>{{ row.status ? '已确认' : '待确认' }}</span>
  79. </template>
  80. </el-table-column>
  81. <el-table-column label="罚款⽇期" align="center" width="130">
  82. <template slot-scope="{row}">
  83. <span>{{ row.punishDate }}</span>
  84. </template>
  85. </el-table-column>
  86. <el-table-column label="客户经理情况说明" align="center" width="250" show-overflow-tooltip>
  87. <template slot-scope="{row}">
  88. <span>{{ row.explain }}</span>
  89. </template>
  90. </el-table-column>
  91. <el-table-column label="应收⾦额" align="center">
  92. <template slot-scope="{row}">
  93. <span>{{ row.shouldAmount }}</span>
  94. </template>
  95. </el-table-column>
  96. <el-table-column label="标准收费" align="center">
  97. <template slot-scope="{row}">
  98. <span>{{ row.standardAmount }}</span>
  99. </template>
  100. </el-table-column>
  101. <el-table-column label="超期天数" align="center">
  102. <template slot-scope="{row}">
  103. <span>{{ row.overdueDay}}</span>
  104. </template>
  105. </el-table-column>
  106. <el-table-column label="客户名称" align="center">
  107. <template slot-scope="{row}">
  108. <span>{{ row.customerName }}</span>
  109. </template>
  110. </el-table-column>
  111. <el-table-column label="业务来源" align="center">
  112. <template slot-scope="{row}">
  113. <span>{{ row.customerSubName }}</span>
  114. </template>
  115. </el-table-column>
  116. <el-table-column label="委托方" align="center">
  117. <template slot-scope="{row}">
  118. <span>{{ row.bailor}}</span>
  119. </template>
  120. </el-table-column>
  121. <el-table-column label="操作" align="center" width="160" fixed="right">
  122. <template slot-scope="{row}">
  123. <PermissionButton menu-code="_views_finance_fine_explain" class-name="filter-item" name type="text" @click="openExplain(row)" />
  124. <PermissionButton menu-code="_views_finance_fine_confirm" class-name="filter-item" name type="text" @click="confirmFineAmount(row.id)" />
  125. <PermissionButton menu-code="_views_finance_fine_edit_amount" class-name="filter-item" name type="text" @click="openEditFineAmount(row)" />
  126. </template>
  127. </el-table-column>
  128. </parentTable>
  129. </y-page-list-layout>
  130. </el-tab-pane>
  131. <el-tab-pane v-if="!personalLeader" label="大中型业务" name="MAJOR_BUSINESS">
  132. <y-page-list-layout :page-list="pageData" :page-para="queryDTO" :get-page-list="page">
  133. <template slot="left">
  134. <el-input v-model="queryDTO.keyWord" placeholder="关键字(项⽬编号或产品号)" clearable style="width: 300px;float: left;"></el-input>
  135. <el-input v-model="queryDTO.invoiceNo" placeholder="发票号" clearable style="margin-left: 20px;width: 150px;float: left;"></el-input>
  136. <el-input v-model="queryDTO.clientManagerName" placeholder="客户经理" clearable style="margin-left: 20px;width: 150px;float: left;"></el-input>
  137. <el-select v-model="queryDTO.status" filterable placeholder="是否确认" clearable style="margin-left: 20px;width: 150px;float: left;">
  138. <el-option label="已确认" value="true"></el-option>
  139. <el-option label="未确认" value="false"></el-option>
  140. </el-select>
  141. <el-date-picker
  142. v-model="findDate"
  143. type="daterange"
  144. align="center"
  145. unlink-panels
  146. range-separator="至"
  147. start-placeholder="罚款⽇期(开始)"
  148. end-placeholder="罚款⽇期(结束)"
  149. :picker-options="pickerOptions"
  150. value-format="yyyy-MM-dd"
  151. style="margin-left: 20px;width: 300px;float: left;"
  152. ></el-date-picker>
  153. <el-button class="filter-item" style="margin-left:20px;float: left;" type="primary" @click="page()" round>搜索</el-button>
  154. <el-button class="filter-item" style="float: left;" round type="success" @click="resetSearch()">重置</el-button>
  155. <el-button class="filter-item" style="float: left;" round type="warning" @click="fineListExport()">导出</el-button>
  156. <PermissionButton menu-code="_views_finance_fine_confirm_batch" class="filter-item" style="float: left;" round type="danger" @click="batchConfirmFineAmount()" />
  157. </template>
  158. <parentTable ref="table" v-loading="listLoading" :data="pageData.records" :selectionChange="handleSelectionChange" slot="table" style="width: 100%;">
  159. <el-table-column type="selection" align="center" width="40"></el-table-column>
  160. <el-table-column label="项⽬编号" align="center" width="120">
  161. <template slot-scope="{row}">
  162. <span>{{ row.orderId }}</span>
  163. </template>
  164. </el-table-column>
  165. <el-table-column label="项⽬名称" align="center" width="150" show-overflow-tooltip>
  166. <template slot-scope="{row}">
  167. <span>{{ row.orderName}}</span>
  168. </template>
  169. </el-table-column>
  170. <el-table-column label="产品号" align="center" width="250">
  171. <template slot-scope="{row}">
  172. <span>{{ row.productionNo}}</span>
  173. </template>
  174. </el-table-column>
  175. <el-table-column label="产品类型" align="center">
  176. <template slot-scope="{row}">
  177. <span>{{ row.productionType }}</span>
  178. </template>
  179. </el-table-column>
  180. <el-table-column label="发票号" align="center" width="150">
  181. <template slot-scope="{row}">
  182. <span>{{ row.invoiceNo?row.invoiceNo:'未开票' }}</span>
  183. </template>
  184. </el-table-column>
  185. <el-table-column label="罚款⾦额" align="center">
  186. <template slot-scope="{row}">
  187. <span style="color: #dca550; font-weight: bold;">{{ row.fineAmount }}</span>
  188. </template>
  189. </el-table-column>
  190. <el-table-column label="实际罚款⾦额" align="center" width="120">
  191. <template slot-scope="{row}">
  192. <span style="color: red; font-weight: bold;">{{ row.realFineAmount !== null ? row.realFineAmount:'待确认' }}</span>
  193. </template>
  194. </el-table-column>
  195. <el-table-column label="客户经理" align="center">
  196. <template slot-scope="{row}">
  197. <span>{{ row.clientManagerName}}</span>
  198. </template>
  199. </el-table-column>
  200. <el-table-column label="是否确认" align="center">
  201. <template slot-scope="{row}">
  202. <span>{{ row.status ? '已确认' : '待确认' }}</span>
  203. </template>
  204. </el-table-column>
  205. <el-table-column label="罚款⽇期" align="center" width="130">
  206. <template slot-scope="{row}">
  207. <span>{{ row.punishDate }}</span>
  208. </template>
  209. </el-table-column>
  210. <el-table-column label="客户经理情况说明" align="center" width="250" show-overflow-tooltip>
  211. <template slot-scope="{row}">
  212. <span>{{ row.explain }}</span>
  213. </template>
  214. </el-table-column>
  215. <el-table-column label="应收⾦额" align="center">
  216. <template slot-scope="{row}">
  217. <span>{{ row.shouldAmount }}</span>
  218. </template>
  219. </el-table-column>
  220. <el-table-column label="标准收费" align="center">
  221. <template slot-scope="{row}">
  222. <span>{{ row.standardAmount }}</span>
  223. </template>
  224. </el-table-column>
  225. <el-table-column label="超期天数" align="center">
  226. <template slot-scope="{row}">
  227. <span>{{ row.overdueDay}}</span>
  228. </template>
  229. </el-table-column>
  230. <el-table-column label="客户名称" align="center">
  231. <template slot-scope="{row}">
  232. <span>{{ row.customerName }}</span>
  233. </template>
  234. </el-table-column>
  235. <el-table-column label="业务来源" align="center">
  236. <template slot-scope="{row}">
  237. <span>{{ row.customerSubName }}</span>
  238. </template>
  239. </el-table-column>
  240. <el-table-column label="委托方" align="center">
  241. <template slot-scope="{row}">
  242. <span>{{ row.bailor}}</span>
  243. </template>
  244. </el-table-column>
  245. <el-table-column label="操作" align="center" width="160" fixed="right">
  246. <template slot-scope="{row}">
  247. <PermissionButton menu-code="_views_finance_fine_explain" class-name="filter-item" name type="text" @click="openExplain(row)" />
  248. <PermissionButton menu-code="_views_finance_fine_confirm" class-name="filter-item" name type="text" @click="confirmFineAmount(row.id)" />
  249. <PermissionButton menu-code="_views_finance_fine_edit_amount" class-name="filter-item" name type="text" @click="openEditFineAmount(row)" />
  250. </template>
  251. </el-table-column>
  252. </parentTable>
  253. </y-page-list-layout>
  254. </el-tab-pane>
  255. <el-tab-pane label="个贷业务" name="PERSONAL_BUSINESS">
  256. <y-page-list-layout :page-list="pageData" :page-para="queryDTO" :get-page-list="page">
  257. <template slot="left">
  258. <el-input v-model="queryDTO.keyWord" placeholder="关键字(项⽬编号)" clearable style="width: 300px;float: left;"></el-input>
  259. <el-input v-model="queryDTO.invoiceNo" placeholder="发票号" clearable style="margin-left: 20px;width: 150px;float: left;"></el-input>
  260. <el-input v-model="queryDTO.clientManagerName" placeholder="客户经理" clearable style="margin-left: 20px;width: 150px;float: left;"></el-input>
  261. <el-select v-model="queryDTO.status" filterable placeholder="是否确认" clearable style="margin-left: 20px;width: 150px;float: left;">
  262. <el-option label="已确认" value="true"></el-option>
  263. <el-option label="未确认" value="false"></el-option>
  264. </el-select>
  265. <el-date-picker
  266. v-model="findDate"
  267. type="daterange"
  268. align="center"
  269. unlink-panels
  270. range-separator="至"
  271. start-placeholder="罚款⽇期(开始)"
  272. end-placeholder="罚款⽇期(结束)"
  273. :picker-options="pickerOptions"
  274. value-format="yyyy-MM-dd"
  275. style="margin-left: 20px;width: 300px;float: left;"
  276. ></el-date-picker>
  277. <el-button class="filter-item" style="margin-left:20px;float: left;" type="primary" @click="page()" round>搜索</el-button>
  278. <el-button class="filter-item" style="float: left;" round type="success" @click="resetSearch()">重置</el-button>
  279. <el-button class="filter-item" style="float: left;" round type="warning" @click="fineListExport()">导出</el-button>
  280. <PermissionButton menu-code="_views_finance_fine_confirm_batch" class="filter-item" style="float: left;" round type="danger" @click="batchConfirmFineAmount()" />
  281. </template>
  282. <parentTable ref="table" v-loading="listLoading" :data="pageData.records" :selectionChange="handleSelectionChange" slot="table" style="width: 100%;">
  283. <el-table-column type="selection" align="center" width="40"></el-table-column>
  284. <el-table-column label="项⽬编号" align="center" width="120">
  285. <template slot-scope="{row}">
  286. <span>{{ row.orderId }}</span>
  287. </template>
  288. </el-table-column>
  289. <el-table-column label="项⽬名称" align="center" width="450" show-overflow-tooltip>
  290. <template slot-scope="{row}">
  291. <span>{{ row.orderName}}</span>
  292. </template>
  293. </el-table-column>
  294. <el-table-column label="产品类型" align="center">
  295. <template slot-scope="{row}">
  296. <span>{{ row.productionType }}</span>
  297. </template>
  298. </el-table-column>
  299. <el-table-column label="发票号" align="center" width="150">
  300. <template slot-scope="{row}">
  301. <span>{{ row.invoiceNo?row.invoiceNo:'未开票' }}</span>
  302. </template>
  303. </el-table-column>
  304. <el-table-column label="罚款⾦额" align="center">
  305. <template slot-scope="{row}">
  306. <span style="color: #dca550; font-weight: bold;">{{ row.fineAmount }}</span>
  307. </template>
  308. </el-table-column>
  309. <el-table-column label="实际罚款⾦额" align="center" width="120">
  310. <template slot-scope="{row}">
  311. <span style="color: red; font-weight: bold;">{{ row.realFineAmount !== null ? row.realFineAmount:'待确认' }}</span>
  312. </template>
  313. </el-table-column>
  314. <el-table-column label="客户经理" align="center">
  315. <template slot-scope="{row}">
  316. <span>{{ row.clientManagerName}}</span>
  317. </template>
  318. </el-table-column>
  319. <el-table-column label="是否确认" align="center">
  320. <template slot-scope="{row}">
  321. <span>{{ row.status ? '已确认' : '待确认' }}</span>
  322. </template>
  323. </el-table-column>
  324. <el-table-column label="罚款⽇期" align="center" width="130">
  325. <template slot-scope="{row}">
  326. <span>{{ row.punishDate }}</span>
  327. </template>
  328. </el-table-column>
  329. <el-table-column label="客户经理情况说明" align="center" width="250" show-overflow-tooltip>
  330. <template slot-scope="{row}">
  331. <span>{{ row.explain }}</span>
  332. </template>
  333. </el-table-column>
  334. <el-table-column label="应收⾦额" align="center">
  335. <template slot-scope="{row}">
  336. <span>{{ row.shouldAmount }}</span>
  337. </template>
  338. </el-table-column>
  339. <el-table-column label="标准收费" align="center">
  340. <template slot-scope="{row}">
  341. <span>{{ row.standardAmount }}</span>
  342. </template>
  343. </el-table-column>
  344. <el-table-column label="超期天数" align="center">
  345. <template slot-scope="{row}">
  346. <span>{{ row.overdueDay}}</span>
  347. </template>
  348. </el-table-column>
  349. <el-table-column label="客户名称" align="center">
  350. <template slot-scope="{row}">
  351. <span>{{ row.customerName }}</span>
  352. </template>
  353. </el-table-column>
  354. <el-table-column label="业务来源" align="center">
  355. <template slot-scope="{row}">
  356. <span>{{ row.customerSubName }}</span>
  357. </template>
  358. </el-table-column>
  359. <el-table-column label="操作" align="center" width="160" fixed="right">
  360. <template slot-scope="{row}">
  361. <PermissionButton menu-code="_views_finance_fine_explain" class-name="filter-item" name type="text" @click="openExplain(row)" />
  362. <PermissionButton menu-code="_views_finance_fine_confirm" class-name="filter-item" name type="text" @click="confirmFineAmount(row.id)" />
  363. <PermissionButton menu-code="_views_finance_fine_edit_amount" class-name="filter-item" name type="text" @click="openEditFineAmount(row)" />
  364. </template>
  365. </el-table-column>
  366. </parentTable>
  367. </y-page-list-layout>
  368. </el-tab-pane>
  369. </el-tabs>
  370. <el-dialog title="情况说明" :visible.sync="explainVisible" width="40%">
  371. <el-form :model="updateFineForm">
  372. <el-form-item label="情况说明:">
  373. <el-input v-model="updateFineForm.explain" type="textarea" :rows="5"></el-input>
  374. </el-form-item>
  375. </el-form>
  376. <div slot="footer" class="dialog-footer">
  377. <el-button @click="explainVisible = false">取 消</el-button>
  378. <el-button type="primary" @click="updateFine(updateFineForm)">确 定</el-button>
  379. </div>
  380. </el-dialog>
  381. <el-dialog title="修改罚款金额" :visible.sync="editFineAmountVisible" width="40%">
  382. <el-form :model="updateFineForm">
  383. <el-form-item label="情况说明:">
  384. <el-input v-model="updateFineForm.explain" type="textarea" :rows="5" disabled></el-input>
  385. </el-form-item>
  386. <el-form-item label="罚款金额:">
  387. <el-input v-model="updateFineForm.fineAmount" type="number"></el-input>
  388. </el-form-item>
  389. </el-form>
  390. <div slot="footer" class="dialog-footer">
  391. <el-button @click="editFineAmountVisible = false">取 消</el-button>
  392. <el-button type="primary" @click="updateFine(updateFineForm)">确 定</el-button>
  393. </div>
  394. </el-dialog>
  395. </div>
  396. </template>
  397. <script>
  398. import Breadcrumb from '@/components/Breadcrumb';
  399. import YPageListLayout from '@/components/YPageListLayout';
  400. import { mapGetters } from 'vuex';
  401. export default {
  402. name: 'fine',
  403. components: {
  404. Breadcrumb,
  405. YPageListLayout,
  406. },
  407. computed: {
  408. ...mapGetters([
  409. 'userInfo'
  410. ]),
  411. },
  412. watch:{
  413. userInfo: {
  414. immediate: true, // immediate选项可以开启首次赋值监听
  415. deep: true,
  416. handler(newv) {
  417. if (newv) {
  418. const postList = newv.postList.map(item => item.name)
  419. const marketPosts = ['部门经理']
  420. postList.forEach(element => {
  421. if (marketPosts.includes(element)) {
  422. this.personalLeader = true;
  423. this.activeName = 'PERSONAL_BUSINESS'
  424. }
  425. });
  426. }
  427. }
  428. },
  429. },
  430. data() {
  431. return {
  432. activeName: 'ASSET_BUSINESS',
  433. listLoading: false,
  434. explainVisible: false,
  435. editFineAmountVisible: false,
  436. personalLeader:false,
  437. findDate: null,
  438. // 分页查询条件
  439. queryDTO: {
  440. page: 1,
  441. size: 10,
  442. businessType: 'ASSET_BUSINESS',
  443. keyWord: null,
  444. invoiceNo: null,
  445. clientManagerName: null,
  446. status: null,
  447. startPunishDate: null,
  448. endPunishDate: null,
  449. },
  450. pageData: { records: [] },
  451. pickerOptions: {
  452. shortcuts: [
  453. {
  454. text: '最近一周',
  455. onClick(picker) {
  456. const end = new Date();
  457. const start = new Date();
  458. start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
  459. picker.$emit('pick', [start, end]);
  460. },
  461. },
  462. {
  463. text: '最近一个月',
  464. onClick(picker) {
  465. const end = new Date();
  466. const start = new Date();
  467. start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
  468. picker.$emit('pick', [start, end]);
  469. },
  470. },
  471. {
  472. text: '最近三个月',
  473. onClick(picker) {
  474. const end = new Date();
  475. const start = new Date();
  476. start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
  477. picker.$emit('pick', [start, end]);
  478. },
  479. },
  480. ],
  481. },
  482. updateFineForm: {
  483. id: null,
  484. explain: null,
  485. fineAmount: null,
  486. },
  487. batchConfirmFineIds: [],
  488. };
  489. },
  490. created() {
  491. this.page();
  492. },
  493. methods: {
  494. handleClick() {
  495. this.queryDTO = {
  496. page: 1,
  497. size: 10,
  498. businessType: this.activeName,
  499. keyWord: null,
  500. invoiceNo: null,
  501. clientManagerName: null,
  502. status: null,
  503. startPunishDate: null,
  504. endPunishDate: null,
  505. };
  506. this.page();
  507. },
  508. // 重置条件
  509. resetSearch() {
  510. this.findDate = null;
  511. this.queryDTO = {
  512. page: 1,
  513. size: 10,
  514. businessType: this.activeName,
  515. keyWord: null,
  516. invoiceNo: null,
  517. clientManagerName: null,
  518. status: null,
  519. startPunishDate: null,
  520. endPunishDate: null,
  521. };
  522. this.page();
  523. },
  524. // 查询罚款记录
  525. page() {
  526. this.listLoading = true;
  527. if (this.findDate) {
  528. this.queryDTO.startPunishDate = this.findDate[0] + ' 00:00:00';
  529. this.queryDTO.endPunishDate = this.findDate[1] + ' 23:59:59';
  530. }
  531. this.$api.financeFine.page(this.queryDTO).then((res) => {
  532. this.pageData = res.data;
  533. this.listLoading = false;
  534. });
  535. },
  536. fineListExport() {
  537. this.$utils.exportUtil('/financeFine/export', this.queryDTO, '导出');
  538. },
  539. // 打开情况说明dialog
  540. openExplain(row) {
  541. this.explainVisible = true;
  542. this.updateFineForm.id = row.id;
  543. this.updateFineForm.explain = row.explain;
  544. },
  545. // 打开修改罚款金额dialog
  546. openEditFineAmount(row) {
  547. this.editFineAmountVisible = true;
  548. this.updateFineForm.id = row.id;
  549. this.updateFineForm.explain = row.explain;
  550. this.updateFineForm.fineAmount = row.fineAmount;
  551. },
  552. // 更新罚款记录
  553. updateFine(financeFine) {
  554. this.$api.financeFine.update(financeFine).then((res) => {
  555. if (res.code === 200 && res.data) {
  556. this.$notify({
  557. title: '成功',
  558. message: '请求成功!',
  559. type: 'success',
  560. duration: 3000,
  561. });
  562. // 判断开的哪一个dialog并关闭
  563. if (this.explainVisible) {
  564. this.explainVisible = false;
  565. }
  566. if (this.editFineAmountVisible) {
  567. this.editFineAmountVisible = false;
  568. }
  569. this.page();
  570. }
  571. });
  572. },
  573. // 确认罚款金额
  574. confirmFineAmount(id) {
  575. this.$api.financeFine.confirm(id).then((res) => {
  576. if (res.code === 200 && res.data) {
  577. this.$notify({
  578. title: '成功',
  579. message: '请求成功!',
  580. type: 'success',
  581. duration: 3000,
  582. });
  583. this.page();
  584. }
  585. });
  586. },
  587. // 多选触发
  588. handleSelectionChange(selection) {
  589. this.batchConfirmFineIds = selection.map((item) => item.id);
  590. },
  591. // 批量确认罚款金额
  592. batchConfirmFineAmount() {
  593. if (this.batchConfirmFineIds && this.batchConfirmFineIds.length > 0) {
  594. this.$confirm('请仔细确认要进行批量操作的数据, 是否继续?', '警告', {
  595. confirmButtonText: '确定',
  596. cancelButtonText: '取消',
  597. type: 'warning',
  598. }).then(() => {
  599. this.$api.financeFine.batchConfirm(this.batchConfirmFineIds).then((res) => {
  600. if (res.code === 200 && res.data) {
  601. this.$notify({
  602. title: '成功',
  603. message: '批量请求成功!',
  604. type: 'success',
  605. duration: 3000,
  606. });
  607. this.page();
  608. }
  609. });
  610. });
  611. } else {
  612. this.$notify({
  613. title: '警告',
  614. message: '请至少选择一条罚款记录!',
  615. type: 'warning',
  616. duration: 3000,
  617. });
  618. }
  619. },
  620. },
  621. };
  622. </script>
  623. <style scoped lang="scss"></style>