ExpenseManagement.vue 44 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484
  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.incomeDialogVisible = false;
  958. } else {
  959. this.$message.error(res.msg);
  960. }
  961. });
  962. } else {
  963. return false;
  964. }
  965. });
  966. },
  967. //点击页面收入按钮
  968. handleTableIncome(row, rows) {
  969. this.getAffiliationData(); //获取归属数据
  970. if (row.outerFlag == 1) {
  971. this.$message.error("请选择内部账户");
  972. return;
  973. }
  974. this.getAllUser();
  975. this.enterCardId = rows.bankCardNum;
  976. this.inComeFormData.collectionMessage =
  977. row.accountName + " " + rows.bankCardNum + " " + rows.bank;
  978. this.incomeDialogVisible = true;
  979. },
  980. //点击页面支出按钮
  981. handleTableExpend(row) {
  982. if (row.outerFlag == 1) {
  983. this.$message.error("请选择内部账户");
  984. return;
  985. }
  986. this.expendDialogVisible = true;
  987. this.outCardNum = row.bankCardNum;
  988. this.getExpendData();
  989. },
  990. //获取支出信息列表
  991. getExpendData(data) {
  992. if (data && data.pageRequest) {
  993. this.expendPageResult.pageNo = data.pageRequest.pageNum;
  994. this.expendPageResult.pageSize = data.pageRequest.pageSize;
  995. }
  996. let obj = {
  997. pageNo: this.expendPageResult.pageNo,
  998. pageSize: this.expendPageResult.pageSize,
  999. transferFlag: 1,
  1000. outCardNum: this.outCardNum,
  1001. };
  1002. this.$api.expense
  1003. .getAccountExcel(obj)
  1004. .then((res) => {
  1005. res.data.records.forEach((element) => {
  1006. element.transferFlagName =
  1007. element.transferFlag == 0 ? "已转账" : "未转账";
  1008. });
  1009. this.expendPageResult = {
  1010. content: res.data.records,
  1011. pageNum: res.data.current,
  1012. pageSize: res.data.size,
  1013. totalPages: res.data.pages,
  1014. totalSize: res.data.total,
  1015. };
  1016. })
  1017. .then(data != null ? data.callback : "");
  1018. },
  1019. //弹框确认支出按钮事件
  1020. handleTableConfirm(index) {
  1021. this.$confirm("确认把该条数据设为已转账状态吗?", "提示", {
  1022. type: "warning",
  1023. })
  1024. .then(() => {
  1025. this.$api.expense
  1026. .updateTransferFlag(index.row.excelAccountOperateId)
  1027. .then((res) => {
  1028. if (res.code == 200) {
  1029. this.$message.success("确认转账成功");
  1030. this.getExpendData();
  1031. } else {
  1032. this.$message.error(res.msg);
  1033. }
  1034. });
  1035. })
  1036. .catch(() => {});
  1037. },
  1038. //选择证书有效日期区间
  1039. setDateInterval(e) {
  1040. if (e != null && e != "") {
  1041. this.accountCardFormData.startCertExpirationDate = e[0];
  1042. this.accountCardFormData.endCertExpirationDate = e[1];
  1043. } else {
  1044. this.accountCardFormData.startCertExpirationDate = "";
  1045. this.accountCardFormData.endCertExpirationDate = "";
  1046. }
  1047. },
  1048. //获取支出页面列表数据
  1049. expendFindPage(data) {},
  1050. //获取页面列表数据
  1051. findPage(data) {
  1052. if (data && data.pageRequest) {
  1053. this.pageRequest.pageNo = data.pageRequest.pageNum;
  1054. this.pageRequest.pageSize = data.pageRequest.pageSize;
  1055. }
  1056. let obj = { ...this.queryFrom, ...this.pageRequest };
  1057. this.$api.expense
  1058. .getAccount(obj)
  1059. .then((res) => {
  1060. if (res.code == 200) {
  1061. res.data.records.forEach((element) => {
  1062. if (element != null && element != "" && element != undefined) {
  1063. //转化营业性质
  1064. let quality = this.nature_businessData.find(
  1065. (item) => item.value == element.businessQuality
  1066. );
  1067. if (quality != null && quality != "" && quality != undefined) {
  1068. element.businessQualityName = quality.label;
  1069. } else {
  1070. element.businessQualityName = "";
  1071. }
  1072. element.outerFlagName =
  1073. element.outerFlag == 0 ? "内部账户" : "外部账户";
  1074. if (element.invAccountCardList != null) {
  1075. element.invAccountCardList.forEach((inv) => {
  1076. inv.outerFlag = element.outerFlag;
  1077. inv.accountQualityName = this.dictFn(inv, 1); //转化账户性质
  1078. });
  1079. }
  1080. }
  1081. });
  1082. this.accountData = res.data.records;
  1083. this.pageRequest.pageNo = res.data.current;
  1084. this.pageRequest.pageSize = res.data.size;
  1085. this.pageRequest.totalPages = res.data.pages;
  1086. this.pageRequest.totalSize = res.data.total;
  1087. }
  1088. })
  1089. .then(data != null ? data.callback : "");
  1090. },
  1091. //数据字典
  1092. business(typeName) {
  1093. this.$api.dict.findByLableName(typeName).then((res) => {
  1094. // this.account_qualityData = res.data;
  1095. this[typeName + "Data"] = res.data;
  1096. if (typeName == "account_quality" && this.accountData.length == 0) {
  1097. this.findPage();
  1098. }
  1099. });
  1100. },
  1101. //用户性质转换
  1102. dictFn(obj, type) {
  1103. if (obj.accountQuality == null) {
  1104. return;
  1105. }
  1106. if (type == 1) {
  1107. return this.account_qualityData.find(
  1108. (item) => item.value == obj.accountQuality
  1109. ).label;
  1110. } else {
  1111. return this.account_qualityData.find(
  1112. (item) => item.label == obj.accountQuality
  1113. ).value;
  1114. }
  1115. },
  1116. // 查询
  1117. queryStaffInfo() {
  1118. this.findPage();
  1119. },
  1120. //新增事件
  1121. addAmount() {
  1122. this.title = "新增账户信息";
  1123. this.type = 1;
  1124. this.dialogFormVisible = true;
  1125. },
  1126. //卡删除数据事件
  1127. cardDelete(row) {
  1128. this.$confirm("确认删除该条数据吗?", "提示", {
  1129. type: "warning",
  1130. })
  1131. .then(() => {
  1132. this.$api.expense.deleteAccountCard(row.bankCardNum).then((res) => {
  1133. if (res.code == 200) {
  1134. this.$message.success("删除成功");
  1135. this.findPage();
  1136. } else {
  1137. this.$message.error(res.msg);
  1138. }
  1139. });
  1140. })
  1141. .catch(() => {});
  1142. },
  1143. //账户删除数据事件
  1144. handleTableDelete(row) {
  1145. this.$confirm("确认删除该记录吗?", "提示", {
  1146. type: "warning",
  1147. })
  1148. .then(() => {
  1149. this.$api.expense.deleteAccount(row.accountId).then((res) => {
  1150. if (res.code == 200) {
  1151. this.$message.success("删除成功");
  1152. this.findPage();
  1153. } else {
  1154. this.$message.error(res.msg);
  1155. }
  1156. });
  1157. })
  1158. .catch(() => {});
  1159. },
  1160. //收入弹框取消重置
  1161. incomeResetForm() {
  1162. this.incomeDialogVisible = false;
  1163. },
  1164. //支出弹框取消重置
  1165. expendResetForm() {
  1166. this.expendDialogVisible = false;
  1167. },
  1168. //弹框取消重置
  1169. resetForm() {
  1170. this.dialogFormVisible = false;
  1171. this.formDataId = "";
  1172. if (this.type == 1) {
  1173. this.accountFormData = {
  1174. outerFlag: "0", //账户类别
  1175. accountName: "", //户名
  1176. businessQuality: "", //营业性质
  1177. establishTime: "", //成立日期
  1178. invoicingAmount: 0, //开票额度
  1179. // invoicingAmountExcess:0,//剩余开票额度
  1180. juridicalPerson: "", //法人
  1181. owned: "", //所属地
  1182. tentativeEstimates: "", //暂估值
  1183. };
  1184. } else {
  1185. this.accountCardFormData = {
  1186. accountQuality: "", //账户性质
  1187. bankCardNum: "", //银行卡号
  1188. bank: "", //开户行
  1189. bankName: "", //开户行名称
  1190. bankNum: "", //开户行号
  1191. balance: 0, //余额
  1192. certExpirationDate: "", //证书有效期
  1193. dayStrokeNum: 0, //单日转账笔数限制
  1194. dayStrokeNumExcess: 0, //单日转账笔数剩余
  1195. fiscalProfit: 0, // 财务公司利润
  1196. insuranceProfit: 0, //保险公司回款
  1197. priDayLines: 0, //对私单日限额
  1198. priDayLinesExcess: 0, //对私单日限额剩余
  1199. priSingleLines: 0, //对私单笔限额
  1200. priYearExcess: 0, //对私年剩余额度
  1201. priYearLines: 0, //对私年额度
  1202. pubDayLines: 0, //对公单日限额
  1203. pubDayLinesExcess: 0, //对公单日限额剩余
  1204. pubSingleLines: 0, //对公单笔限额
  1205. pubYearExcess: 0, //对公年剩余额度
  1206. pubYearLines: 0, //对公年额度
  1207. spend: 0, //支出金额
  1208. };
  1209. }
  1210. },
  1211. //卡信息修改事件
  1212. childEdit(row) {
  1213. this.type = 2; //卡信息
  1214. this.title = "编辑账户卡信息";
  1215. this.formDataId = row.accountId;
  1216. this.$api.expense
  1217. .getAccountCardList({
  1218. accountId: row.accountId,
  1219. bankCardNum: row.bankCardNum,
  1220. bank: row.bank,
  1221. })
  1222. .then((res) => {
  1223. if (res.code == 200) {
  1224. if (
  1225. res.data[0].startCertExpirationDate &&
  1226. res.data[0].startCertExpirationDate != null &&
  1227. res.data[0].endCertExpirationDate &&
  1228. res.data[0].endCertExpirationDate != null
  1229. ) {
  1230. res.data[0].certExpirationDate = [
  1231. res.data[0].startCertExpirationDate,
  1232. res.data[0].endCertExpirationDate,
  1233. ];
  1234. } else {
  1235. res.data[0].certExpirationDate = [];
  1236. }
  1237. this.accountCardFormData = res.data[0];
  1238. this.accountCardFormData.outerFlag = row.outerFlag;
  1239. this.dialogFormVisible = true;
  1240. } else {
  1241. this.$message.error(res.msg);
  1242. }
  1243. });
  1244. },
  1245. //账户卡信息增加
  1246. handleTableAdd(row) {
  1247. this.type = 2; //卡信息
  1248. this.title = "新增账户卡信息";
  1249. this.dialogFormVisible = true;
  1250. this.accountCardFormData.accountId = row.accountId;
  1251. this.accountCardFormData.outerFlag = row.outerFlag;
  1252. },
  1253. //账户信息修改
  1254. handleTableEdit(row, scope) {
  1255. this.type = 1; //账户类型
  1256. this.formDataId = row.accountId;
  1257. this.$api.expense
  1258. .getAccount({ accountId: this.formDataId, pageNo: 1, pageSize: 10 })
  1259. .then((res) => {
  1260. if (res.code == 200) {
  1261. this.accountFormData = JSON.parse(
  1262. JSON.stringify(res.data.records[0])
  1263. );
  1264. } else {
  1265. this.$message.error(res.msg);
  1266. }
  1267. });
  1268. this.title = "编辑账户信息";
  1269. this.dialogFormVisible = true;
  1270. },
  1271. //提交
  1272. submitForm() {
  1273. if (this.type == 1) {
  1274. //新增修改账户信息
  1275. let params = JSON.parse(JSON.stringify(this.accountFormData));
  1276. if (this.formDataId) {
  1277. //修改
  1278. params.accountId = this.formDataId;
  1279. this.$api.expense.updateAccoount(params).then((res) => {
  1280. if (res.code == 200) {
  1281. this.$message({
  1282. message: "修改成功",
  1283. type: "success",
  1284. });
  1285. this.findPage();
  1286. this.resetForm();
  1287. } else {
  1288. this.$message({
  1289. message: `修改失败, ${res.msg}`,
  1290. type: "error",
  1291. });
  1292. }
  1293. });
  1294. } else {
  1295. //新增
  1296. this.$api.expense.insertAccount(params).then((res) => {
  1297. if (res.code == 200) {
  1298. this.$message({
  1299. message: "添加成功",
  1300. type: "success",
  1301. });
  1302. this.findPage();
  1303. this.resetForm();
  1304. } else {
  1305. this.$message({
  1306. message: `添加失败, ${res.msg}`,
  1307. type: "error",
  1308. });
  1309. }
  1310. });
  1311. }
  1312. } else {
  1313. //新增修改卡信息
  1314. let params = JSON.parse(JSON.stringify(this.accountCardFormData));
  1315. delete params.certExpirationDate;
  1316. //修改
  1317. if (this.formDataId) {
  1318. this.$api.expense.updateAccountCard(params).then((res) => {
  1319. if (res.code == 200) {
  1320. this.$message({
  1321. message: "修改成功",
  1322. type: "success",
  1323. });
  1324. this.findPage();
  1325. this.resetForm();
  1326. } else {
  1327. this.$message({
  1328. message: `修改失败, ${res.msg}`,
  1329. type: "error",
  1330. });
  1331. }
  1332. });
  1333. //新增
  1334. } else {
  1335. this.$api.expense.insertAccountCard(params).then((res) => {
  1336. if (res.code == 200) {
  1337. this.$message({
  1338. message: "添加成功",
  1339. type: "success",
  1340. });
  1341. this.findPage();
  1342. this.resetForm();
  1343. } else {
  1344. this.$message.error(res.msg);
  1345. }
  1346. });
  1347. }
  1348. }
  1349. },
  1350. },
  1351. };
  1352. </script>
  1353. <style scoped>
  1354. .operation {
  1355. margin-left: 14px !important;
  1356. margin-top: 15px !important ;
  1357. }
  1358. .form {
  1359. display: flex;
  1360. margin-top: 14px;
  1361. align-items: center;
  1362. margin-left: -12px;
  1363. margin-bottom: 20px;
  1364. }
  1365. .el-pagination {
  1366. font-weight: normal;
  1367. }
  1368. .el-card__body {
  1369. padding: 12px !important;
  1370. }
  1371. .footer .footerdiv {
  1372. display: flex;
  1373. align-items: center;
  1374. }
  1375. .container .el-form-item {
  1376. margin-bottom: -14px !important;
  1377. }
  1378. .form .el-form-item__label {
  1379. font-size: 15px !important;
  1380. font-weight: 600 !important;
  1381. }
  1382. .ktTable {
  1383. margin-top: 20px;
  1384. }
  1385. .el-row {
  1386. margin-top: 18px;
  1387. }
  1388. .top {
  1389. margin-top: 0px;
  1390. }
  1391. .el-date-editor--daterange.el-input__inner {
  1392. width: 300px;
  1393. }
  1394. /deep/ .el-select--small {
  1395. width: 100%;
  1396. }
  1397. .frame {
  1398. width: 100%;
  1399. background-color: #fff;
  1400. padding: 20px;
  1401. -webkit-box-sizing: border-box;
  1402. box-sizing: border-box;
  1403. margin-bottom: 15px;
  1404. border-radius: 6px;
  1405. border: 1px solid #ebeef5;
  1406. -webkit-transition: all 0.2s ease-in-out;
  1407. transition: all 0.2s ease-in-out;
  1408. -webkit-box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
  1409. box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
  1410. }
  1411. /deep/ .el-dialog__body {
  1412. overflow-y: scroll;
  1413. max-height: 500px;
  1414. }
  1415. .addremove-box {
  1416. width: 100%;
  1417. display: flex;
  1418. justify-content: center;
  1419. align-items: center;
  1420. font-size: 25px;
  1421. margin-top: 10px;
  1422. /* position: absolute;
  1423. bottom:0;
  1424. left: 0; */
  1425. }
  1426. .addremove-box > i {
  1427. cursor: pointer;
  1428. }
  1429. .frame >>> .el-date-editor {
  1430. width: 100%;
  1431. }
  1432. .frame .el-input-number--small {
  1433. width: 200px;
  1434. }
  1435. .ktTable >>> .el-button span {
  1436. margin-left: 0;
  1437. }
  1438. .expendTable >>> .bottomFixed {
  1439. position: static;
  1440. margin-top: 20px;
  1441. }
  1442. .expendTable >>> .el-table {
  1443. height: 400px !important;
  1444. }
  1445. .expendDialog >>> .el-dialog__body {
  1446. overflow-y: auto;
  1447. height: 500px;
  1448. }
  1449. .collec >>> .el-form-item__content {
  1450. display: flex;
  1451. align-items: center;
  1452. }
  1453. .inComeForm >>> .el-input-number__decrease,
  1454. .inComeForm >>> .el-input-number__increase {
  1455. display: none;
  1456. }
  1457. .inComeForm >>> .el-input-number,
  1458. .inComeForm >>> .el-cascader {
  1459. width: 100%;
  1460. }
  1461. .inComeForm >>> .el-input.is-disabled .el-input__inner {
  1462. background-color: #fff;
  1463. color: #606266;
  1464. }
  1465. .el-icon-right {
  1466. margin: 0 10px;
  1467. font-size: 20px;
  1468. }
  1469. .ktTable >>> .cell .el-button {
  1470. width: 80px;
  1471. }
  1472. .expendDialog >>> .cell .el-button {
  1473. width: auto;
  1474. }
  1475. .profit_box .el-form-item {
  1476. margin-bottom: 15px !important;
  1477. }
  1478. </style>