ExpenseManagement.vue 44 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486
  1. <template>
  2. <!--布局容器-->
  3. <div class="container" style="width: 99%; margin-top: 0px">
  4. <!-- 顶部查询 -->
  5. <el-row class="top">
  6. <el-form v-model="queryFrom" size="small" label-width="95px" class="form">
  7. <el-form-item label="账户类别" label-width="95px" prop="outerFlag">
  8. <el-select
  9. v-model="queryFrom.outerFlag"
  10. placeholder="请选择账户类别"
  11. clearable
  12. >
  13. <el-option label="内部账户" value="0"></el-option>
  14. <el-option label="外部账户" value="1"></el-option>
  15. </el-select>
  16. </el-form-item>
  17. <!-- <el-form-item label="账户性质" label-width="95px" prop="accountQuality">
  18. <el-select
  19. v-model="queryFrom.accountQuality"
  20. placeholder="请选择账户性质"
  21. clearable
  22. >
  23. <el-option
  24. v-for="item in account_qualityData"
  25. :key="item.value + 'aa'"
  26. :label="item.label"
  27. :value="item.value"
  28. ></el-option>
  29. </el-select>
  30. </el-form-item> -->
  31. <el-form-item label="户名" label-width="95px" prop="invCompanyName">
  32. <el-input
  33. v-model="queryFrom.accountName"
  34. placeholder="请输入户名"
  35. class="widths"
  36. clearable
  37. ></el-input>
  38. </el-form-item>
  39. <el-form-item label="银行卡号" label-width="95px" prop="invCompanyName">
  40. <el-input
  41. v-model="queryFrom.bankCardNum"
  42. placeholder="请输入银行卡号"
  43. class="widths"
  44. clearable
  45. ></el-input>
  46. </el-form-item>
  47. <el-form-item>
  48. <el-button type="primary" size="small" @click="queryStaffInfo"
  49. >查询</el-button
  50. >
  51. </el-form-item>
  52. </el-form>
  53. </el-row>
  54. <!-- 新增 -->
  55. <el-button
  56. class="operation"
  57. type="primary"
  58. plain
  59. size="medium"
  60. @click="addAmount"
  61. >新增账户</el-button
  62. >
  63. <el-button
  64. class="operation"
  65. type="primary"
  66. plain
  67. size="medium"
  68. @click="expentData"
  69. >费用支出明细导出</el-button
  70. >
  71. <el-button
  72. class="operation"
  73. type="primary"
  74. plain
  75. size="medium"
  76. @click="userInfoExpentData"
  77. >账户信息导出</el-button
  78. >
  79. <!-- 表格 -->
  80. <el-table
  81. :data="accountData"
  82. border
  83. size="small"
  84. ref="account"
  85. :header-cell-style="{
  86. background: '#F2F7FC',
  87. fontWeight: '900',
  88. color: '#606266',
  89. }"
  90. height="600px"
  91. style="width: 100%; margin-top: 30px"
  92. @expand-change="handleRowChange"
  93. >
  94. <el-table-column type="expand">
  95. <template slot-scope="scope">
  96. <el-table
  97. :data="scope.row.invAccountCardList"
  98. size="small"
  99. :header-cell-style="{
  100. background: '#ccc',
  101. fontWeight: '900',
  102. color: '#606266',
  103. }"
  104. style="width: 100%"
  105. >
  106. <el-table-column
  107. type="index"
  108. width="50"
  109. align="center"
  110. label="序号"
  111. >
  112. </el-table-column>
  113. <el-table-column
  114. v-for="(childItem, index) in childColums"
  115. :key="'child' + index"
  116. :prop="childItem.prop"
  117. align="center"
  118. :label="childItem.label"
  119. :min-width="childItem.minWidth"
  120. >
  121. </el-table-column>
  122. <el-table-column
  123. fixed="right"
  124. label="操作"
  125. align="center"
  126. width="300"
  127. >
  128. <template slot-scope="scopes">
  129. <el-button size="mini" @click="childEdit(scopes.row)"
  130. >编辑</el-button
  131. >
  132. <el-button
  133. size="mini"
  134. type="danger"
  135. @click="cardDelete(scopes.row)"
  136. >删除</el-button
  137. >
  138. <el-button
  139. size="mini"
  140. type="success"
  141. @click="handleTableIncome(scope.row, scopes.row)"
  142. >收入</el-button
  143. >
  144. <el-button
  145. size="mini"
  146. type="warning"
  147. @click="handleTableExpend(scopes.row)"
  148. >支出</el-button
  149. >
  150. </template>
  151. </el-table-column>
  152. </el-table>
  153. </template>
  154. </el-table-column>
  155. <el-table-column
  156. v-for="(dataItem, dataIndex) in columns"
  157. :key="dataIndex"
  158. :label="dataItem.label"
  159. :prop="dataItem.prop"
  160. :min-width="dataItem.minWidth"
  161. align="center"
  162. >
  163. </el-table-column>
  164. <el-table-column fixed="right" label="操作" align="center" width="240">
  165. <template slot-scope="scope">
  166. <el-button
  167. size="mini"
  168. @click.native.prevent="handleTableEdit(scope.row, scope)"
  169. >编辑</el-button
  170. >
  171. <el-button
  172. size="mini"
  173. type="danger"
  174. @click.native.prevent="handleTableDelete(scope.row)"
  175. >删除</el-button
  176. >
  177. <el-tooltip
  178. class="item"
  179. effect="dark"
  180. content="新增卡信息"
  181. placement="bottom-end"
  182. >
  183. <el-button
  184. size="mini"
  185. type="success"
  186. @click.native.prevent="handleTableAdd(scope.row)"
  187. >新增</el-button
  188. >
  189. </el-tooltip>
  190. </template>
  191. </el-table-column>
  192. </el-table>
  193. <el-pagination
  194. @size-change="handleSizeChange"
  195. layout="total, sizes, prev, pager, next, jumper"
  196. @current-change="refreshPageRequest"
  197. :current-page="pageRequest.pageNo"
  198. :page-size="pageRequest.pageSize"
  199. :page-sizes="[10, 20, 50, 100, 200, 300, 400, 500]"
  200. :total="pageRequest.totalSize"
  201. style="float: left; margin-left: 20px; margin-top: 20px"
  202. >
  203. </el-pagination>
  204. <!-- 新增修改弹框 -->
  205. <expense-component
  206. ref="expenseComponent"
  207. :type="type"
  208. :formData="type == 1 ? accountFormData : accountCardFormData"
  209. :formDataId="formDataId"
  210. :title="title"
  211. :dialogFormVisible="dialogFormVisible"
  212. :nature_businessData="nature_businessData"
  213. @resetForm="resetForm"
  214. @submitForm="submitForm"
  215. @setDateInterval="setDateInterval"
  216. ></expense-component>
  217. <!-- 支出弹框 -->
  218. <el-dialog
  219. class="dialog expendDialog"
  220. title="支出信息"
  221. :close-on-click-modal="false"
  222. :before-close="expendResetForm"
  223. :visible.sync="expendDialogVisible"
  224. width="60%"
  225. >
  226. <!-- 支出表格 -->
  227. <kt-common-table
  228. :operationWidth="130"
  229. class="ktTable expendTable"
  230. ref="expendTable"
  231. :data="expendPageResult"
  232. :columns="expendColumns"
  233. :showBatchDelete="false"
  234. :showOperation="true"
  235. :button1Name="expendButton1Name"
  236. button2Background="#92D050"
  237. button3Background="#f56c6c"
  238. button1Icon="el-icon-s-finance"
  239. @handleButton1="handleTableConfirm"
  240. @findPage="getExpendData"
  241. :isshowpagination="true"
  242. ></kt-common-table>
  243. </el-dialog>
  244. <!-- 收入弹框 -->
  245. <el-dialog
  246. class="dialog expendDialog"
  247. title="收入信息"
  248. :close-on-click-modal="false"
  249. :before-close="incomeResetForm"
  250. :visible.sync="incomeDialogVisible"
  251. width="60%"
  252. >
  253. <el-form
  254. :model="inComeFormData"
  255. :rules="inComeFormRules"
  256. ref="inComeFormData"
  257. label-width="130px"
  258. size="small"
  259. class="inComeForm"
  260. >
  261. <el-row>
  262. <el-col :span="12">
  263. <el-form-item label="转账方" prop="company">
  264. <el-select
  265. v-model="inComeFormData.company"
  266. filterable
  267. placeholder=""
  268. @change="companyChange"
  269. >
  270. <el-option
  271. v-for="item in collectionData"
  272. :key="item.bankCardNum"
  273. :label="item.name"
  274. :value="item.nameValue"
  275. >
  276. </el-option>
  277. </el-select>
  278. </el-form-item>
  279. </el-col>
  280. <el-col :span="12">
  281. <el-form-item label="收款方" prop="collectionMessage">
  282. <el-input
  283. disabled
  284. v-model="inComeFormData.collectionMessage"
  285. autocomplete="off"
  286. ></el-input>
  287. </el-form-item>
  288. </el-col>
  289. </el-row>
  290. <el-row>
  291. <el-col :span="12">
  292. <el-form-item label="金额" prop="outerFlag">
  293. <el-input-number
  294. v-model="inComeFormData.applyAmount"
  295. :min="0"
  296. :precision="2"
  297. @blur="chageAppl"
  298. :max="99999999999999999"
  299. label=""
  300. ></el-input-number>
  301. </el-form-item>
  302. </el-col>
  303. <el-col :span="12">
  304. <el-form-item label="大写金额" prop="bigApplyAmount">
  305. <el-input
  306. v-model="inComeFormData.bigApplyAmount"
  307. disabled
  308. autocomplete="off"
  309. ></el-input>
  310. </el-form-item>
  311. </el-col>
  312. </el-row>
  313. <el-row class="collec">
  314. <el-col :span="24">
  315. <el-form-item label="资金流向" style="width: 100%">
  316. <el-input
  317. v-model="inComeFormData.company"
  318. disabled
  319. autocomplete="off"
  320. ></el-input>
  321. <i class="el-icon-right"></i>
  322. <el-input
  323. disabled
  324. v-model="inComeFormData.collectionMessage"
  325. autocomplete="off"
  326. ></el-input>
  327. </el-form-item>
  328. </el-col>
  329. <el-col :span="12"> </el-col>
  330. </el-row>
  331. <el-row>
  332. <el-col :span="12">
  333. <el-form-item label="支付方式" prop="payMethod">
  334. <el-select
  335. v-model="inComeFormData.payMethod"
  336. multiple
  337. placeholder=""
  338. >
  339. <el-option
  340. v-for="item in payment_methodsData"
  341. :key="item.value"
  342. :label="item.label"
  343. :value="item.value"
  344. >
  345. </el-option>
  346. </el-select>
  347. </el-form-item>
  348. </el-col>
  349. <el-col :span="12">
  350. <el-form-item label="资金用途" prop="fundUse">
  351. <el-cascader
  352. v-model="inComeFormData.fundUse"
  353. :show-all-levels="true"
  354. :clearable="true"
  355. :checkStrictly="true"
  356. :emitPath="false"
  357. placeholder=""
  358. :options="fundFlowData"
  359. filterable
  360. :props="{
  361. children: 'child',
  362. label: 'category',
  363. value: 'category',
  364. checkStrictly: false,
  365. }"
  366. ></el-cascader>
  367. </el-form-item>
  368. </el-col>
  369. </el-row>
  370. <el-row>
  371. <el-col :span="12" style="text-align: center"
  372. ><h3>支出方资金归属(%)</h3>
  373. <span>(请输入资金归属百分比)</span></el-col
  374. >
  375. <el-col :span="12" style="text-align: center"
  376. ><h3>收入方资金归属(%)</h3>
  377. <span>(请输入资金归属百分比)</span></el-col
  378. >
  379. </el-row>
  380. <el-row class="profit_box">
  381. <el-col :span="12">
  382. <el-form-item
  383. v-for="item in affiliationData2"
  384. :key="item.profitId + 'sr'"
  385. :label="item.profitName"
  386. prop="entProfit"
  387. >
  388. <el-input-number
  389. v-model="item.profit"
  390. :min="0"
  391. placeholder="请输入利润(%)"
  392. :max="100"
  393. label=""
  394. ></el-input-number>
  395. </el-form-item>
  396. </el-col>
  397. <el-col :span="12">
  398. <el-form-item
  399. v-for="item in affiliationData"
  400. :key="item.profitId + 'zc'"
  401. :label="item.profitName"
  402. prop="entProfit"
  403. >
  404. <el-input-number
  405. v-model="item.profit"
  406. :min="0"
  407. placeholder="请输入利润(%)"
  408. :max="100"
  409. label=""
  410. ></el-input-number>
  411. </el-form-item>
  412. </el-col>
  413. </el-row>
  414. </el-form>
  415. <div slot="footer" class="dialog-footer">
  416. <el-button @click="incomeResetForm()" size="small">取 消</el-button>
  417. <el-button type="primary" @click="submitIncomeForm()" size="small"
  418. >确 定</el-button
  419. >
  420. </div>
  421. </el-dialog>
  422. </div>
  423. </template>
  424. <script>
  425. import KtCommonTable from "@/views/Core/KtCommonTable.vue"; //表格组件
  426. import KtButton from "@/views/Core/KtButton"; // 按钮权限组件
  427. import ExpenseComponent from "./ExpenseComponent.vue"; //新增账户信息弹框
  428. import { toChies } from "../../../utils/moneyTransition";
  429. export default {
  430. name: "ExpenseManagement",
  431. components: { KtCommonTable, KtButton, ExpenseComponent },
  432. created() {
  433. this.business("account_quality"); //账户性质字典;
  434. this.business("payment_methods"); //支付方式字典
  435. this.business("nature_business"); //营业性质字典
  436. this.getTreeList(); //获取资金用途字典
  437. },
  438. mounted() {},
  439. data() {
  440. return {
  441. type: 1, //1为账户信息,2为卡信息
  442. /**
  443. * 账户收入模块
  444. */
  445. incomeDialogVisible: false, //收入 弹出框状态
  446. collectionData: [], //收入 转账方下拉菜单数组
  447. fundFlowData: [], //资金用途字典数据
  448. payment_methodsData: [], //收入 支付方式字典数据
  449. inComeFormData: {
  450. //收入form表单
  451. collectionMessage: "", //收款名字
  452. fundFlow: "", //资金流向
  453. applyAmount: "", //金额
  454. bigApplyAmount: "", //大写金额
  455. company: "", //转账方
  456. payMethod: [], //转账方
  457. fundUse: "", //资金用途
  458. },
  459. inComeFormRules: {
  460. //收入规则
  461. company: [
  462. { required: true, message: "转账方不能为空", trigger: "change" },
  463. ],
  464. payMethod: [
  465. { required: true, message: "请选择支付方式", trigger: "change" },
  466. ],
  467. },
  468. enterCardId: "", //收入id
  469. /**
  470. * 账户模块
  471. */
  472. title: "新增账户信息",
  473. accountData: [], //账户信息数据
  474. dialogFormVisible: false, //弹出框状态
  475. operationWidth: 200, //操作列宽度
  476. account_qualityData: [], //账户性质数据字典
  477. nature_businessData: [], //营业性质数据字典
  478. queryFrom: {
  479. //查询条件
  480. // accountQuality: "", //账户性质查询
  481. bankCardNum: "", //银行卡号查询
  482. accountName: "", //户名查询
  483. },
  484. button1Name: "支出", //按钮内容
  485. button3Name: "删除",
  486. button2Name: "收入",
  487. expendButton1Name: "确认已转账",
  488. formDataId: "", //数据Id
  489. pageRequest: {
  490. // 列表查询条件
  491. pageNo: 1,
  492. pageSize: 10,
  493. },
  494. // 数据列
  495. columns: [
  496. {
  497. prop: "outerFlagName",
  498. label: "账户类别",
  499. minWidth: 80,
  500. sortable: false,
  501. },
  502. {
  503. prop: "businessQualityName",
  504. label: "营业性质",
  505. minWidth: 80,
  506. sortable: false,
  507. },
  508. {
  509. prop: "accountName",
  510. label: "户名",
  511. minWidth: 240,
  512. sortable: false,
  513. },
  514. {
  515. prop: "juridicalPerson",
  516. label: "法人",
  517. minWidth: 80,
  518. sortable: false,
  519. },
  520. {
  521. prop: "owned",
  522. label: "所属地",
  523. minWidth: 80,
  524. sortable: false,
  525. },
  526. {
  527. prop: "biller",
  528. label: "开票员",
  529. minWidth: 80,
  530. sortable: false,
  531. },
  532. {
  533. prop: "invoicingAmount",
  534. label: "开票额度",
  535. minWidth: 80,
  536. sortable: false,
  537. },
  538. {
  539. prop: "invoicingAmountExcess",
  540. label: "剩余开票额度",
  541. minWidth: 90,
  542. sortable: false,
  543. },
  544. {
  545. prop: "establishTime",
  546. label: "成立日期",
  547. minWidth: 90,
  548. sortable: false,
  549. },
  550. {
  551. prop: "quarterAmountExcess",
  552. label: "季度开票额度",
  553. minWidth: 120,
  554. sortable: false,
  555. },
  556. {
  557. prop: "sumInvoicingAmount",
  558. label: "总开票额度",
  559. minWidth: 120,
  560. sortable: false,
  561. },
  562. {
  563. prop: "tentativeEstimates",
  564. label: "暂估",
  565. minWidth: 120,
  566. sortable: false,
  567. },
  568. ],
  569. //子部数据列
  570. childColums: [
  571. {
  572. prop: "accountQualityName",
  573. label: "账户性质",
  574. minWidth: 80,
  575. sortable: false,
  576. },
  577. {
  578. prop: "bankCardNum",
  579. label: "银行卡号",
  580. minWidth: 170,
  581. sortable: false,
  582. },
  583. { prop: "bank", label: "开户行", minWidth: 100, sortable: false },
  584. {
  585. prop: "bankName",
  586. label: "开户行名称",
  587. minWidth: 190,
  588. sortable: false,
  589. },
  590. { prop: "bankNum", label: "开户行号", minWidth: 150, sortable: false },
  591. {
  592. prop: "balance",
  593. label: "余额",
  594. minWidth: 100,
  595. sortable: false,
  596. },
  597. {
  598. prop: "startCertExpirationDate",
  599. label: "证书有效开始日期",
  600. minWidth: 120,
  601. sortable: false,
  602. },
  603. {
  604. prop: "endCertExpirationDate",
  605. label: "证书有效结束日期",
  606. minWidth: 120,
  607. sortable: false,
  608. },
  609. {
  610. prop: "dayStrokeNum",
  611. label: "单日转账笔数限制",
  612. minWidth: 120,
  613. sortable: false,
  614. },
  615. {
  616. prop: "insuranceProfit",
  617. label: "保险公司回款",
  618. minWidth: 120,
  619. sortable: false,
  620. },
  621. {
  622. prop: "priDayLines",
  623. label: "对私单日限额",
  624. minWidth: 120,
  625. sortable: false,
  626. },
  627. {
  628. prop: "priSingleLines",
  629. label: "对私单笔限额",
  630. minWidth: 120,
  631. sortable: false,
  632. },
  633. {
  634. prop: "priYearExcess",
  635. label: "对私年剩余额度",
  636. minWidth: 120,
  637. sortable: false,
  638. },
  639. {
  640. prop: "priYearLines",
  641. label: "对私年额度",
  642. minWidth: 120,
  643. sortable: false,
  644. },
  645. {
  646. prop: "pubDayLines",
  647. label: "对公单日限额",
  648. minWidth: 120,
  649. sortable: false,
  650. },
  651. {
  652. prop: "pubSingleLines",
  653. label: "对公单笔限额",
  654. minWidth: 120,
  655. sortable: false,
  656. },
  657. {
  658. prop: "pubYearExcess",
  659. label: "对公年剩余额度",
  660. minWidth: 120,
  661. sortable: false,
  662. },
  663. {
  664. prop: "pubYearLines",
  665. label: "对公年额度",
  666. minWidth: 120,
  667. sortable: false,
  668. },
  669. ],
  670. //账户信息form
  671. accountFormData: {
  672. outerFlag: "0", //账户类别
  673. accountName: "", //户名
  674. businessQuality: "", //营业性质
  675. establishTime: "", //成立日期
  676. invoicingAmount: 0, //开票额度
  677. // invoicingAmountExcess:0,//剩余开票额度
  678. juridicalPerson: "", //法人
  679. owned: "", //所属地
  680. biller: "", //开票员
  681. tentativeEstimates: "", //暂估值
  682. },
  683. //账户卡信息form
  684. accountCardFormData: {
  685. accountQuality: "", //账户性质
  686. bankCardNum: "", //银行卡号
  687. bank: "", //开户行
  688. bankName: "", //开户行名称
  689. bankNum: "", //开户行号
  690. balance: "", //余额
  691. certExpirationDate: "", //证书有效期
  692. dayStrokeNum: 0, //单日转账笔数限制
  693. dayStrokeNumExcess: 0, //单日转账笔数剩余
  694. fiscalProfit: 0, // 财务公司利润
  695. insuranceProfit: 0, //保险公司回款
  696. priDayLines: 0, //对私单日限额
  697. priDayLinesExcess: 0, //对私单日限额剩余
  698. priSingleLines: 0, //对私单笔限额
  699. priYearExcess: 0, //对私年剩余额度
  700. priYearLines: 0, //对私年额度
  701. pubDayLines: 0, //对公单日限额
  702. pubDayLinesExcess: 0, //对公单日限额剩余
  703. pubSingleLines: 0, //对公单笔限额
  704. pubYearExcess: 0, //对公年剩余额度
  705. pubYearLines: 0, //对公年额度
  706. spend: 0, //支出金额
  707. },
  708. /**
  709. * 支出模块
  710. */
  711. expendColumns: [
  712. // 支出数据列
  713. {
  714. prop: "company",
  715. label: "转账方",
  716. minWidth: 160,
  717. sortable: false,
  718. },
  719. {
  720. prop: "collectionMessage",
  721. label: "收账方",
  722. minWidth: 80,
  723. sortable: false,
  724. },
  725. {
  726. prop: "applyAmount",
  727. label: "金额",
  728. minWidth: 150,
  729. sortable: false,
  730. },
  731. {
  732. prop: "applyTime",
  733. label: "转账日期",
  734. minWidth: 150,
  735. sortable: false,
  736. },
  737. {
  738. prop: "transferFlagName",
  739. label: "转账状态",
  740. minWidth: 150,
  741. sortable: false,
  742. },
  743. ],
  744. expendPageResult: {
  745. //支出表格参数
  746. pageNo: 1,
  747. pageSize: 10,
  748. },
  749. expendDialogVisible: false, //支出弹出框状态
  750. outCardNum: "", //点击支出按钮当条数据支出id
  751. companyItem: {}, //选择单位整条数据
  752. typeName: "card", //账户信息 跟 卡信息
  753. affiliationData: [], //归属字典数据
  754. affiliationData2: [], //归属字典数据
  755. };
  756. },
  757. watch: {
  758. expendDialogVisible(n) {
  759. if (n == false) {
  760. this.outCardNum = "";
  761. }
  762. },
  763. //收入去除form表单信息
  764. incomeDialogVisible(n) {
  765. if (n == false) {
  766. this.enterCardId = "";
  767. this.$refs.inComeFormData.clearValidate();
  768. this.inComeFormData = {
  769. //收入form数据
  770. collectionMessage: "", //收款名字
  771. fundFlow: "", //资金流向
  772. applyAmount: "", //金额
  773. bigApplyAmount: "", //大写金额
  774. company: "", //转账方
  775. payMethod: [], //支付方式
  776. };
  777. }
  778. },
  779. },
  780. methods: {
  781. //获取归属数据
  782. getAffiliationData() {
  783. this.$api.expense.getList().then((res) => {
  784. if (res.code == 200) {
  785. res.data.forEach((item) => {
  786. item.profit = 0;
  787. });
  788. this.affiliationData = JSON.parse(JSON.stringify(res.data));
  789. this.affiliationData2 = JSON.parse(JSON.stringify(res.data));
  790. } else {
  791. this.$message.error(res.msg);
  792. }
  793. });
  794. },
  795. //账户信息导出
  796. userInfoExpentData() {
  797. this.$api.expense.updateAccountExcel(this.queryFrom).then((res) => {
  798. if (res.code == 200) {
  799. if (res.data == null) {
  800. this.$message.error("暂无导出数据,请重试!");
  801. return;
  802. }
  803. let url = process.env.BASE_URL + "/upload/" + res.data; // 3.创建一个临时的url指向blob对象
  804. // 4.创建url之后可以模拟对此文件对象的一系列操作,例如:预览、下载
  805. let a = document.createElement("a");
  806. a.href = url;
  807. a.download = "导出订单.xlsx";
  808. a.click();
  809. // 5.释放这个临时的对象url
  810. window.URL.revokeObjectURL(url);
  811. } else {
  812. this.$message.error(res.msg);
  813. }
  814. });
  815. },
  816. //费用支出明细导出
  817. expentData() {
  818. this.$api.expense.updateUserExcel(this.queryFrom).then((res) => {
  819. if (res.code == 200) {
  820. if (res.data == null) {
  821. this.$message.error("暂无导出数据,请重试!");
  822. return;
  823. }
  824. let url = process.env.BASE_URL + "/upload/" + res.data; // 3.创建一个临时的url指向blob对象
  825. // 4.创建url之后可以模拟对此文件对象的一系列操作,例如:预览、下载
  826. let a = document.createElement("a");
  827. a.href = url;
  828. a.download = "导出订单.xlsx";
  829. a.click();
  830. // 5.释放这个临时的对象url
  831. window.URL.revokeObjectURL(url);
  832. } else {
  833. this.$message.error(res.msg);
  834. }
  835. });
  836. },
  837. //获取资金用途树数据
  838. getTreeList() {
  839. this.$api.expense.getAccountExpensesTreeList().then((res) => {
  840. if (res.code == 200) {
  841. this.fundFlowData = res.data;
  842. this.fundFlowSet();
  843. } else {
  844. this.$message.error(res.msg);
  845. }
  846. });
  847. },
  848. //资金用途数据转换 如果最后一项child数组长度为0把值变为null
  849. fundFlowSet(data) {
  850. data = data || this.fundFlowData;
  851. for (var i = 0; i < data.length; i++) {
  852. if (data[i].child.length) {
  853. this.fundFlowSet(data[i].child);
  854. } else {
  855. data[i].child = null;
  856. }
  857. }
  858. },
  859. //展开事件
  860. handleRowChange(e, row) {
  861. if (row.length > 0) {
  862. //展开
  863. if (
  864. e.invAccountCardList != null &&
  865. e.invAccountCardList != "" &&
  866. e.invAccountCardList != undefined &&
  867. e.invAccountCardList.length > 0
  868. ) {
  869. } else {
  870. this.$message.error("暂无数据");
  871. this.$refs.account.toggleRowExpansion(e, false);
  872. }
  873. }
  874. },
  875. // 换页刷新
  876. refreshPageRequest: function (pageNum) {
  877. this.pageRequest.pageNo = pageNum;
  878. this.findPage();
  879. },
  880. // 每页条数发生改变
  881. handleSizeChange(pageSize) {
  882. this.pageRequest.pageSize = pageSize;
  883. this.findPage();
  884. },
  885. //申请金额填写完成后
  886. chageAppl(e) {
  887. this.inComeFormData.bigApplyAmount = toChies(
  888. this.inComeFormData.applyAmount
  889. );
  890. },
  891. //获取所有外部账户信息
  892. getAllUser() {
  893. this.$api.expense.getAccountByAccountName().then((res) => {
  894. if (res.code == 200) {
  895. let arr = [];
  896. /**获取所有外部用户 */
  897. // let outArr = res.data.filter((item) => item.outerFlag == 1);
  898. res.data.forEach((item) => {
  899. if (item.invAccountCardList != null) {
  900. item.invAccountCardList.forEach((it) => {
  901. it.outerFlag = item.outerFlag;
  902. it.name =
  903. (item.outerFlag == 0 ? "内部用户" : "外部用户") +
  904. " " +
  905. (it.accountQuality == 0 ? "公户" : "私户") +
  906. " " +
  907. item.accountName +
  908. " " +
  909. it.bankCardNum +
  910. " " +
  911. it.bank;
  912. it.nameValue =
  913. item.accountName + " " + it.bankCardNum + " " + it.bank;
  914. });
  915. arr.push(...item.invAccountCardList);
  916. }
  917. });
  918. this.collectionData = arr;
  919. }
  920. });
  921. },
  922. //选择收款单位change事件
  923. companyChange(val) {
  924. const item = this.collectionData.find((item) => item.nameValue === val);
  925. if(item.outerFlag==0&&item.bankCardNum!=this.enterCardId){
  926. this.$message.error('转账方必须为外部账户或与收款方账户一致')
  927. this.inComeFormData.company=""
  928. return
  929. }
  930. this.companyItem = item;
  931. },
  932. //点击确认收入事件
  933. submitIncomeForm() {
  934. let obj = JSON.parse(JSON.stringify(this.inComeFormData));
  935. obj.enterCardId = this.enterCardId; //收入银行卡号
  936. obj.outCardId = this.companyItem.bankCardNum; //支出银行卡号
  937. obj.fundFlow = obj.company + "→" + obj.collectionMessage; //资金流向
  938. obj.payMethod = obj.payMethod.join(",");//支付方式
  939. obj.revenueOutlay = "0";
  940. obj.fundUse = this.inComeFormData.fundUse[this.inComeFormData.fundUse.length - 2]; //资金用途
  941. obj.fundFen = this.inComeFormData.fundUse[this.inComeFormData.fundUse.length - 1]; //资金用途分项
  942. //转化资金归属
  943. obj.entProfit = {};
  944. obj.outProfit = {};
  945. this.affiliationData.forEach((item) => {
  946. obj.entProfit[item.profitEng] = item.profit;
  947. });
  948. this.affiliationData2.forEach((item) => {
  949. obj.outProfit[item.profitEng] = item.profit;
  950. });
  951. //转化资金归属
  952. this.$refs.inComeFormData.validate((valid) => {
  953. if (valid) {
  954. this.$api.expense.insertAccountOperate(obj).then((res) => {
  955. if (res.code == 200) {
  956. this.$message.success("转账成功!");
  957. this.findPage();
  958. this.incomeDialogVisible = false;
  959. } else {
  960. this.$message.error(res.msg);
  961. }
  962. });
  963. } else {
  964. return false;
  965. }
  966. });
  967. },
  968. //点击页面收入按钮
  969. handleTableIncome(row, rows) {
  970. this.getAffiliationData(); //获取归属数据
  971. if (row.outerFlag == 1) {
  972. this.$message.error("请选择内部账户");
  973. return;
  974. }
  975. this.getAllUser();
  976. this.enterCardId = rows.bankCardNum;
  977. this.inComeFormData.collectionMessage =
  978. row.accountName + " " + rows.bankCardNum + " " + rows.bank;
  979. this.incomeDialogVisible = true;
  980. },
  981. //点击页面支出按钮
  982. handleTableExpend(row) {
  983. if (row.outerFlag == 1) {
  984. this.$message.error("请选择内部账户");
  985. return;
  986. }
  987. this.expendDialogVisible = true;
  988. this.outCardNum = row.bankCardNum;
  989. this.getExpendData();
  990. },
  991. //获取支出信息列表
  992. getExpendData(data) {
  993. if (data && data.pageRequest) {
  994. this.expendPageResult.pageNo = data.pageRequest.pageNum;
  995. this.expendPageResult.pageSize = data.pageRequest.pageSize;
  996. }
  997. let obj = {
  998. pageNo: this.expendPageResult.pageNo,
  999. pageSize: this.expendPageResult.pageSize,
  1000. transferFlag: 1,
  1001. outCardNum: this.outCardNum,
  1002. };
  1003. this.$api.expense
  1004. .getAccountExcel(obj)
  1005. .then((res) => {
  1006. res.data.records.forEach((element) => {
  1007. element.transferFlagName =
  1008. element.transferFlag == 0 ? "已转账" : "未转账";
  1009. });
  1010. this.expendPageResult = {
  1011. content: res.data.records,
  1012. pageNum: res.data.current,
  1013. pageSize: res.data.size,
  1014. totalPages: res.data.pages,
  1015. totalSize: res.data.total,
  1016. };
  1017. })
  1018. .then(data != null ? data.callback : "");
  1019. },
  1020. //弹框确认支出按钮事件
  1021. handleTableConfirm(index) {
  1022. this.$confirm("确认把该条数据设为已转账状态吗?", "提示", {
  1023. type: "warning",
  1024. })
  1025. .then(() => {
  1026. this.$api.expense
  1027. .updateTransferFlag(index.row.excelAccountOperateId)
  1028. .then((res) => {
  1029. if (res.code == 200) {
  1030. this.$message.success("确认转账成功");
  1031. this.getExpendData();
  1032. this.findPage();
  1033. } else {
  1034. this.$message.error(res.msg);
  1035. }
  1036. });
  1037. })
  1038. .catch(() => {});
  1039. },
  1040. //选择证书有效日期区间
  1041. setDateInterval(e) {
  1042. if (e != null && e != "") {
  1043. this.accountCardFormData.startCertExpirationDate = e[0];
  1044. this.accountCardFormData.endCertExpirationDate = e[1];
  1045. } else {
  1046. this.accountCardFormData.startCertExpirationDate = "";
  1047. this.accountCardFormData.endCertExpirationDate = "";
  1048. }
  1049. },
  1050. //获取支出页面列表数据
  1051. expendFindPage(data) {},
  1052. //获取页面列表数据
  1053. findPage(data) {
  1054. if (data && data.pageRequest) {
  1055. this.pageRequest.pageNo = data.pageRequest.pageNum;
  1056. this.pageRequest.pageSize = data.pageRequest.pageSize;
  1057. }
  1058. let obj = { ...this.queryFrom, ...this.pageRequest };
  1059. this.$api.expense
  1060. .getAccount(obj)
  1061. .then((res) => {
  1062. if (res.code == 200) {
  1063. res.data.records.forEach((element) => {
  1064. if (element != null && element != "" && element != undefined) {
  1065. //转化营业性质
  1066. let quality = this.nature_businessData.find(
  1067. (item) => item.value == element.businessQuality
  1068. );
  1069. if (quality != null && quality != "" && quality != undefined) {
  1070. element.businessQualityName = quality.label;
  1071. } else {
  1072. element.businessQualityName = "";
  1073. }
  1074. element.outerFlagName =
  1075. element.outerFlag == 0 ? "内部账户" : "外部账户";
  1076. if (element.invAccountCardList != null) {
  1077. element.invAccountCardList.forEach((inv) => {
  1078. inv.outerFlag = element.outerFlag;
  1079. inv.accountQualityName = this.dictFn(inv, 1); //转化账户性质
  1080. });
  1081. }
  1082. }
  1083. });
  1084. this.accountData = res.data.records;
  1085. this.pageRequest.pageNo = res.data.current;
  1086. this.pageRequest.pageSize = res.data.size;
  1087. this.pageRequest.totalPages = res.data.pages;
  1088. this.pageRequest.totalSize = res.data.total;
  1089. }
  1090. })
  1091. .then(data != null ? data.callback : "");
  1092. },
  1093. //数据字典
  1094. business(typeName) {
  1095. this.$api.dict.findByLableName(typeName).then((res) => {
  1096. // this.account_qualityData = res.data;
  1097. this[typeName + "Data"] = res.data;
  1098. if (typeName == "account_quality" && this.accountData.length == 0) {
  1099. this.findPage();
  1100. }
  1101. });
  1102. },
  1103. //用户性质转换
  1104. dictFn(obj, type) {
  1105. if (obj.accountQuality == null) {
  1106. return;
  1107. }
  1108. if (type == 1) {
  1109. return this.account_qualityData.find(
  1110. (item) => item.value == obj.accountQuality
  1111. ).label;
  1112. } else {
  1113. return this.account_qualityData.find(
  1114. (item) => item.label == obj.accountQuality
  1115. ).value;
  1116. }
  1117. },
  1118. // 查询
  1119. queryStaffInfo() {
  1120. this.findPage();
  1121. },
  1122. //新增事件
  1123. addAmount() {
  1124. this.title = "新增账户信息";
  1125. this.type = 1;
  1126. this.dialogFormVisible = true;
  1127. },
  1128. //卡删除数据事件
  1129. cardDelete(row) {
  1130. this.$confirm("确认删除该条数据吗?", "提示", {
  1131. type: "warning",
  1132. })
  1133. .then(() => {
  1134. this.$api.expense.deleteAccountCard(row.bankCardNum).then((res) => {
  1135. if (res.code == 200) {
  1136. this.$message.success("删除成功");
  1137. this.findPage();
  1138. } else {
  1139. this.$message.error(res.msg);
  1140. }
  1141. });
  1142. })
  1143. .catch(() => {});
  1144. },
  1145. //账户删除数据事件
  1146. handleTableDelete(row) {
  1147. this.$confirm("确认删除该记录吗?", "提示", {
  1148. type: "warning",
  1149. })
  1150. .then(() => {
  1151. this.$api.expense.deleteAccount(row.accountId).then((res) => {
  1152. if (res.code == 200) {
  1153. this.$message.success("删除成功");
  1154. this.findPage();
  1155. } else {
  1156. this.$message.error(res.msg);
  1157. }
  1158. });
  1159. })
  1160. .catch(() => {});
  1161. },
  1162. //收入弹框取消重置
  1163. incomeResetForm() {
  1164. this.incomeDialogVisible = false;
  1165. },
  1166. //支出弹框取消重置
  1167. expendResetForm() {
  1168. this.expendDialogVisible = false;
  1169. },
  1170. //弹框取消重置
  1171. resetForm() {
  1172. this.dialogFormVisible = false;
  1173. this.formDataId = "";
  1174. if (this.type == 1) {
  1175. this.accountFormData = {
  1176. outerFlag: "0", //账户类别
  1177. accountName: "", //户名
  1178. businessQuality: "", //营业性质
  1179. establishTime: "", //成立日期
  1180. invoicingAmount: 0, //开票额度
  1181. // invoicingAmountExcess:0,//剩余开票额度
  1182. juridicalPerson: "", //法人
  1183. owned: "", //所属地
  1184. tentativeEstimates: "", //暂估值
  1185. };
  1186. } else {
  1187. this.accountCardFormData = {
  1188. accountQuality: "", //账户性质
  1189. bankCardNum: "", //银行卡号
  1190. bank: "", //开户行
  1191. bankName: "", //开户行名称
  1192. bankNum: "", //开户行号
  1193. balance: 0, //余额
  1194. certExpirationDate: "", //证书有效期
  1195. dayStrokeNum: 0, //单日转账笔数限制
  1196. dayStrokeNumExcess: 0, //单日转账笔数剩余
  1197. fiscalProfit: 0, // 财务公司利润
  1198. insuranceProfit: 0, //保险公司回款
  1199. priDayLines: 0, //对私单日限额
  1200. priDayLinesExcess: 0, //对私单日限额剩余
  1201. priSingleLines: 0, //对私单笔限额
  1202. priYearExcess: 0, //对私年剩余额度
  1203. priYearLines: 0, //对私年额度
  1204. pubDayLines: 0, //对公单日限额
  1205. pubDayLinesExcess: 0, //对公单日限额剩余
  1206. pubSingleLines: 0, //对公单笔限额
  1207. pubYearExcess: 0, //对公年剩余额度
  1208. pubYearLines: 0, //对公年额度
  1209. spend: 0, //支出金额
  1210. };
  1211. }
  1212. },
  1213. //卡信息修改事件
  1214. childEdit(row) {
  1215. this.type = 2; //卡信息
  1216. this.title = "编辑账户卡信息";
  1217. this.formDataId = row.accountId;
  1218. this.$api.expense
  1219. .getAccountCardList({
  1220. accountId: row.accountId,
  1221. bankCardNum: row.bankCardNum,
  1222. bank: row.bank,
  1223. })
  1224. .then((res) => {
  1225. if (res.code == 200) {
  1226. if (
  1227. res.data[0].startCertExpirationDate &&
  1228. res.data[0].startCertExpirationDate != null &&
  1229. res.data[0].endCertExpirationDate &&
  1230. res.data[0].endCertExpirationDate != null
  1231. ) {
  1232. res.data[0].certExpirationDate = [
  1233. res.data[0].startCertExpirationDate,
  1234. res.data[0].endCertExpirationDate,
  1235. ];
  1236. } else {
  1237. res.data[0].certExpirationDate = [];
  1238. }
  1239. this.accountCardFormData = res.data[0];
  1240. this.accountCardFormData.outerFlag = row.outerFlag;
  1241. this.dialogFormVisible = true;
  1242. } else {
  1243. this.$message.error(res.msg);
  1244. }
  1245. });
  1246. },
  1247. //账户卡信息增加
  1248. handleTableAdd(row) {
  1249. this.type = 2; //卡信息
  1250. this.title = "新增账户卡信息";
  1251. this.dialogFormVisible = true;
  1252. this.accountCardFormData.accountId = row.accountId;
  1253. this.accountCardFormData.outerFlag = row.outerFlag;
  1254. },
  1255. //账户信息修改
  1256. handleTableEdit(row, scope) {
  1257. this.type = 1; //账户类型
  1258. this.formDataId = row.accountId;
  1259. this.$api.expense
  1260. .getAccount({ accountId: this.formDataId, pageNo: 1, pageSize: 10 })
  1261. .then((res) => {
  1262. if (res.code == 200) {
  1263. this.accountFormData = JSON.parse(
  1264. JSON.stringify(res.data.records[0])
  1265. );
  1266. } else {
  1267. this.$message.error(res.msg);
  1268. }
  1269. });
  1270. this.title = "编辑账户信息";
  1271. this.dialogFormVisible = true;
  1272. },
  1273. //提交
  1274. submitForm() {
  1275. if (this.type == 1) {
  1276. //新增修改账户信息
  1277. let params = JSON.parse(JSON.stringify(this.accountFormData));
  1278. if (this.formDataId) {
  1279. //修改
  1280. params.accountId = this.formDataId;
  1281. this.$api.expense.updateAccoount(params).then((res) => {
  1282. if (res.code == 200) {
  1283. this.$message({
  1284. message: "修改成功",
  1285. type: "success",
  1286. });
  1287. this.findPage();
  1288. this.resetForm();
  1289. } else {
  1290. this.$message({
  1291. message: `修改失败, ${res.msg}`,
  1292. type: "error",
  1293. });
  1294. }
  1295. });
  1296. } else {
  1297. //新增
  1298. this.$api.expense.insertAccount(params).then((res) => {
  1299. if (res.code == 200) {
  1300. this.$message({
  1301. message: "添加成功",
  1302. type: "success",
  1303. });
  1304. this.findPage();
  1305. this.resetForm();
  1306. } else {
  1307. this.$message({
  1308. message: `添加失败, ${res.msg}`,
  1309. type: "error",
  1310. });
  1311. }
  1312. });
  1313. }
  1314. } else {
  1315. //新增修改卡信息
  1316. let params = JSON.parse(JSON.stringify(this.accountCardFormData));
  1317. delete params.certExpirationDate;
  1318. //修改
  1319. if (this.formDataId) {
  1320. this.$api.expense.updateAccountCard(params).then((res) => {
  1321. if (res.code == 200) {
  1322. this.$message({
  1323. message: "修改成功",
  1324. type: "success",
  1325. });
  1326. this.findPage();
  1327. this.resetForm();
  1328. } else {
  1329. this.$message({
  1330. message: `修改失败, ${res.msg}`,
  1331. type: "error",
  1332. });
  1333. }
  1334. });
  1335. //新增
  1336. } else {
  1337. this.$api.expense.insertAccountCard(params).then((res) => {
  1338. if (res.code == 200) {
  1339. this.$message({
  1340. message: "添加成功",
  1341. type: "success",
  1342. });
  1343. this.findPage();
  1344. this.resetForm();
  1345. } else {
  1346. this.$message.error(res.msg);
  1347. }
  1348. });
  1349. }
  1350. }
  1351. },
  1352. },
  1353. };
  1354. </script>
  1355. <style scoped>
  1356. .operation {
  1357. margin-left: 14px !important;
  1358. margin-top: 15px !important ;
  1359. }
  1360. .form {
  1361. display: flex;
  1362. margin-top: 14px;
  1363. align-items: center;
  1364. margin-left: -12px;
  1365. margin-bottom: 20px;
  1366. }
  1367. .el-pagination {
  1368. font-weight: normal;
  1369. }
  1370. .el-card__body {
  1371. padding: 12px !important;
  1372. }
  1373. .footer .footerdiv {
  1374. display: flex;
  1375. align-items: center;
  1376. }
  1377. .container .el-form-item {
  1378. margin-bottom: -14px !important;
  1379. }
  1380. .form .el-form-item__label {
  1381. font-size: 15px !important;
  1382. font-weight: 600 !important;
  1383. }
  1384. .ktTable {
  1385. margin-top: 20px;
  1386. }
  1387. .el-row {
  1388. margin-top: 18px;
  1389. }
  1390. .top {
  1391. margin-top: 0px;
  1392. }
  1393. .el-date-editor--daterange.el-input__inner {
  1394. width: 300px;
  1395. }
  1396. /deep/ .el-select--small {
  1397. width: 100%;
  1398. }
  1399. .frame {
  1400. width: 100%;
  1401. background-color: #fff;
  1402. padding: 20px;
  1403. -webkit-box-sizing: border-box;
  1404. box-sizing: border-box;
  1405. margin-bottom: 15px;
  1406. border-radius: 6px;
  1407. border: 1px solid #ebeef5;
  1408. -webkit-transition: all 0.2s ease-in-out;
  1409. transition: all 0.2s ease-in-out;
  1410. -webkit-box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
  1411. box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
  1412. }
  1413. /deep/ .el-dialog__body {
  1414. overflow-y: scroll;
  1415. max-height: 500px;
  1416. }
  1417. .addremove-box {
  1418. width: 100%;
  1419. display: flex;
  1420. justify-content: center;
  1421. align-items: center;
  1422. font-size: 25px;
  1423. margin-top: 10px;
  1424. /* position: absolute;
  1425. bottom:0;
  1426. left: 0; */
  1427. }
  1428. .addremove-box > i {
  1429. cursor: pointer;
  1430. }
  1431. .frame >>> .el-date-editor {
  1432. width: 100%;
  1433. }
  1434. .frame .el-input-number--small {
  1435. width: 200px;
  1436. }
  1437. .ktTable >>> .el-button span {
  1438. margin-left: 0;
  1439. }
  1440. .expendTable >>> .bottomFixed {
  1441. position: static;
  1442. margin-top: 20px;
  1443. }
  1444. .expendTable >>> .el-table {
  1445. height: 400px !important;
  1446. }
  1447. .expendDialog >>> .el-dialog__body {
  1448. overflow-y: auto;
  1449. height: 500px;
  1450. }
  1451. .collec >>> .el-form-item__content {
  1452. display: flex;
  1453. align-items: center;
  1454. }
  1455. .inComeForm >>> .el-input-number__decrease,
  1456. .inComeForm >>> .el-input-number__increase {
  1457. display: none;
  1458. }
  1459. .inComeForm >>> .el-input-number,
  1460. .inComeForm >>> .el-cascader {
  1461. width: 100%;
  1462. }
  1463. .inComeForm >>> .el-input.is-disabled .el-input__inner {
  1464. background-color: #fff;
  1465. color: #606266;
  1466. }
  1467. .el-icon-right {
  1468. margin: 0 10px;
  1469. font-size: 20px;
  1470. }
  1471. .ktTable >>> .cell .el-button {
  1472. width: 80px;
  1473. }
  1474. .expendDialog >>> .cell .el-button {
  1475. width: auto;
  1476. }
  1477. .profit_box .el-form-item {
  1478. margin-bottom: 15px !important;
  1479. }
  1480. </style>