PaymentManagement.vue 45 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402
  1. <template>
  2. <!--布局容器-->
  3. <div class="container" style="width: 99%; margin-top: 0px">
  4. <!-- 顶部查询 -->
  5. <el-row class="top">
  6. <el-form v-model="pageRequest" size="small" class="form" label-width="100px">
  7. <el-form-item label="发票类型" prop="invoiceType">
  8. <el-select
  9. v-model="pageRequest.invoiceType"
  10. placeholder="请选择发票类型"
  11. clearable
  12. >
  13. <el-option
  14. v-for="item in invoice_typeData"
  15. :key="item.value + 'km'"
  16. :label="item.label"
  17. :value="item.value"
  18. ></el-option>
  19. </el-select>
  20. </el-form-item>
  21. <el-form-item label="开票员" prop="biller">
  22. <el-input
  23. v-model="pageRequest.biller"
  24. placeholder="请输入开票员"
  25. class=""
  26. clearable
  27. ></el-input>
  28. </el-form-item>
  29. <el-form-item label="开票方" prop="invoiceBy">
  30. <el-input
  31. v-model="pageRequest.invoiceBy"
  32. placeholder="请输入开票方"
  33. class=""
  34. clearable
  35. ></el-input>
  36. </el-form-item>
  37. <el-form-item label="对方单位名称" prop="otherUnit">
  38. <el-input
  39. v-model="pageRequest.otherUnit"
  40. placeholder="请输入对方单位名称"
  41. class=""
  42. clearable
  43. ></el-input>
  44. </el-form-item>
  45. <el-form-item label="开票日期" prop="invoiceTime">
  46. <el-date-picker
  47. v-model="pageRequest.invoiceTime"
  48. type="daterange"
  49. range-separator="至"
  50. start-placeholder="开始日期"
  51. end-placeholder="结束日期"
  52. value-format="yyyy-MM-dd"
  53. >
  54. </el-date-picker>
  55. </el-form-item>
  56. <el-form-item label="进账日期" prop="applyTime">
  57. <el-date-picker
  58. v-model="pageRequest.applyTime"
  59. type="daterange"
  60. range-separator="至"
  61. start-placeholder="开始日期"
  62. end-placeholder="结束日期"
  63. value-format="yyyy-MM-dd"
  64. >
  65. </el-date-picker>
  66. </el-form-item>
  67. <el-form-item>
  68. <kt-button label="查询" type="primary" perms="expenseManagement:invoiceManagement:query"
  69. @click="queryStaffInfo" />
  70. </el-form-item>
  71. <kt-button class="operation" label="开票新增" type="primary" :plain="true" perms="expenseManagement:invoiceManagement:add"
  72. @click="addPayment" />
  73. <kt-button class="operation" label="导出" type="primary" :plain="true" perms="expenseManagement:invoiceManagement:excel"
  74. @click="expentData" />
  75. </el-form>
  76. <!-- 合计 -->
  77. <div style="margin-top: 20px">
  78. <el-descriptions title="" size="mini" border>
  79. <el-descriptions-item label="开票金额总和">{{
  80. allNumObj.invoiceMoneySum
  81. }}</el-descriptions-item>
  82. <el-descriptions-item label="进账金额总和">{{
  83. allNumObj.payoutMoneySum
  84. }}</el-descriptions-item>
  85. <el-descriptions-item label="未进账金额总和">{{
  86. allNumObj.notPayoutMoneySum
  87. }}</el-descriptions-item>
  88. <el-descriptions-item label="开票数总和">{{
  89. allNumObj.invoiceNumSum
  90. }}</el-descriptions-item>
  91. <el-descriptions-item label="税额总和">{{
  92. allNumObj.taxSum
  93. }}</el-descriptions-item>
  94. <el-descriptions-item label="不含税金额总和">{{
  95. allNumObj.noHasTaxSum
  96. }}</el-descriptions-item>
  97. </el-descriptions>
  98. </div>
  99. </el-row>
  100. <!-- 表格 -->
  101. <kt-common-table
  102. v-loading="loading"
  103. element-loading-text="拼命加载中..."
  104. element-loading-spinner="el-icon-loading"
  105. :operationWidth="operationWidth"
  106. class="ktTable"
  107. permsEdit="expenseManagement:invoiceManagement:income"
  108. ref="dataTable"
  109. :data="pageResult"
  110. :columns="columns"
  111. :showBatchDelete="false"
  112. :showOperation="true"
  113. editButtonName="进账"
  114. button3Name="撤销"
  115. button2Name="编辑"
  116. button4Name="记录"
  117. permsButton2="expenseManagement:invoiceManagement:update"
  118. permsButton3="expenseManagement:invoiceManagement:revoke"
  119. permsButton4="expenseManagement:invoiceManagement:record"
  120. button3Icon="fa fa-trash"
  121. button4Icon="el-icon-s-order"
  122. button4Background="#67C23A"
  123. button3Background="#f56c6c"
  124. button2Background="#E6A23C"
  125. @handleButton4="handleTableDetail"
  126. @handleButton3="handleTableDelete"
  127. @handleButton2="handleDetail($event, 1)"
  128. @handleEdit="handleDetail($event, 2)"
  129. @findPage="findPage"
  130. :isshowpagination="true"
  131. ></kt-common-table>
  132. <!-- 新增编辑弹框 -->
  133. <el-dialog
  134. class="dialog detailtTable"
  135. :title="title"
  136. :close-on-click-modal="false"
  137. :before-close="resetForm"
  138. :visible.sync="detailDialog"
  139. width="60%"
  140. v-dialogDrag
  141. >
  142. <div class="dialog-body">
  143. <el-form
  144. :model="formData"
  145. :rules="rules"
  146. ref="formData"
  147. label-width="130px"
  148. size="small"
  149. :class="formDataId ? 'data_form' : 'frame data_form'"
  150. >
  151. <div v-if="!formDataId || (typeStatus == 1 && formDataId)">
  152. <el-row>
  153. <el-col :span="12">
  154. <el-form-item label="开票方" prop="invoiceBy">
  155. <el-select
  156. v-model="formData.invoiceBy"
  157. filterable
  158. placeholder=""
  159. clearable
  160. value-key="bankCardNum"
  161. @change="companyChange"
  162. >
  163. <el-option
  164. v-for="(item, index) in collectionData"
  165. :key="index + 'kpf'"
  166. :label="item.name"
  167. :value="item"
  168. >
  169. </el-option>
  170. </el-select>
  171. </el-form-item>
  172. </el-col>
  173. <el-col :span="12">
  174. <el-form-item label="收入卡号" prop="revBankCardNum">
  175. <el-input
  176. disabled
  177. v-model="formData.revBankCardNum"
  178. autocomplete="off"
  179. ></el-input>
  180. </el-form-item>
  181. </el-col>
  182. </el-row>
  183. <el-row>
  184. <el-col :span="12">
  185. <el-form-item label="公司类型" prop="businessQuality">
  186. <el-input
  187. disabled
  188. v-model="formData.businessQuality"
  189. autocomplete="off"
  190. ></el-input>
  191. </el-form-item>
  192. </el-col>
  193. <el-col :span="12">
  194. <el-form-item label="开票员" prop="biller">
  195. <el-input
  196. disabled
  197. v-model="formData.biller"
  198. autocomplete="off"
  199. ></el-input>
  200. </el-form-item>
  201. </el-col>
  202. </el-row>
  203. <el-row>
  204. <el-col :span="12">
  205. <el-form-item label="开票金额" prop="invoiceMoney">
  206. <el-input-number
  207. v-model="formData.invoiceMoney"
  208. :min="-99999999999999999"
  209. :max="99999999999999999"
  210. label=""
  211. ></el-input-number>
  212. </el-form-item>
  213. </el-col>
  214. <el-col :span="12">
  215. <el-form-item label="发票数" prop="invoiceNum">
  216. <el-input-number
  217. v-model="formData.invoiceNum"
  218. :min="0"
  219. :max="99999999999999999"
  220. label=""
  221. ></el-input-number>
  222. </el-form-item>
  223. </el-col>
  224. </el-row>
  225. <el-row>
  226. <el-col class="invoic" :span="12">
  227. <el-form-item label="开票科目" prop="invoiceSubjectsValue">
  228. <el-input
  229. v-model="formData.invoiceSubjects1"
  230. autocomplete="off"
  231. ></el-input>
  232. <span>*</span>
  233. <el-input
  234. v-model="formData.invoiceSubjects2"
  235. autocomplete="off"
  236. ></el-input>
  237. </el-form-item>
  238. </el-col>
  239. <el-col :span="12">
  240. <el-form-item label="发票类型" prop="invoiceType">
  241. <el-select
  242. v-model="formData.invoiceType"
  243. placeholder="请选择发票类型"
  244. clearable
  245. @change="invoiceTypeChange"
  246. >
  247. <el-option
  248. v-for="item in invoice_typeData"
  249. :key="item.value + 'km'"
  250. :label="item.label"
  251. :value="item.value"
  252. ></el-option>
  253. </el-select>
  254. </el-form-item>
  255. </el-col>
  256. </el-row>
  257. <el-row>
  258. <el-col :span="12">
  259. <el-form-item label="开票日期" prop="invoiceTime">
  260. <el-date-picker
  261. v-model="formData.invoiceTime"
  262. value-format="yyyy-MM-dd"
  263. type="date"
  264. placeholder="选择日期"
  265. >
  266. </el-date-picker>
  267. </el-form-item>
  268. </el-col>
  269. <el-col :span="12">
  270. <el-form-item label="对方单位" prop="otherUnit">
  271. <el-select
  272. v-model="formData.otherUnit"
  273. filterable
  274. placeholder=""
  275. clearable
  276. value-key="bankCardNum"
  277. @change="outherChange"
  278. >
  279. <el-option
  280. v-for="(item, index) in allCollectionData"
  281. :key="index + 'kpf'"
  282. :label="item.name"
  283. :value="item"
  284. >
  285. </el-option>
  286. </el-select>
  287. </el-form-item>
  288. </el-col>
  289. </el-row>
  290. <el-row>
  291. <el-col :span="12">
  292. <el-form-item label="支出卡号" prop="outBankCardNum">
  293. <el-input
  294. disabled
  295. v-model="formData.outBankCardNum"
  296. autocomplete="off"
  297. ></el-input>
  298. </el-form-item>
  299. </el-col>
  300. <el-col :span="12">
  301. <el-form-item label="税率(%)" prop="rate">
  302. <el-input-number
  303. v-model="formData.rate"
  304. :min="0"
  305. :max="60"
  306. label=""
  307. ></el-input-number>
  308. </el-form-item>
  309. </el-col>
  310. </el-row>
  311. </div>
  312. <div v-if="typeStatus == 2 && formDataId">
  313. <el-row>
  314. <el-col :span="12">
  315. <el-form-item label="进账金额" prop="payoutMoney">
  316. <el-input-number
  317. v-model="formData.payoutMoney"
  318. :min="1"
  319. :max="99999999999999999"
  320. label=""
  321. ></el-input-number>
  322. </el-form-item>
  323. </el-col>
  324. <el-col :span="12">
  325. <el-form-item label="进账日期" prop="payoutTime">
  326. <el-date-picker
  327. v-model="formData.payoutTime"
  328. type="date"
  329. value-format="yyyy-MM-dd"
  330. placeholder="选择日期"
  331. >
  332. </el-date-picker>
  333. </el-form-item>
  334. </el-col>
  335. </el-row>
  336. <el-row>
  337. <el-col :span="12">
  338. <el-form-item label="支付方式" prop="payMethod">
  339. <el-select
  340. v-model="formData.payMethod"
  341. multiple
  342. placeholder=""
  343. >
  344. <el-option
  345. v-for="item in payment_methodsData"
  346. :key="item.value"
  347. :label="item.label"
  348. :value="item.value"
  349. >
  350. </el-option>
  351. </el-select>
  352. </el-form-item>
  353. </el-col>
  354. <el-col :span="12">
  355. <el-form-item label="资金用途" prop="fundUse">
  356. <el-cascader
  357. v-model="formData.fundUse"
  358. :show-all-levels="true"
  359. :clearable="true"
  360. :checkStrictly="true"
  361. :emitPath="false"
  362. placeholder=""
  363. :options="fundFlowData"
  364. filterable
  365. :props="{
  366. children: 'child',
  367. label: 'category',
  368. value: 'category',
  369. checkStrictly: false,
  370. }"
  371. ></el-cascader>
  372. </el-form-item>
  373. </el-col>
  374. </el-row>
  375. <el-row>
  376. <el-col :span="12" style="text-align: center"
  377. ><h3 style="margin-left: 120px">收入方资金归属</h3>
  378. </el-col>
  379. <el-col :span="12" style="text-align: center"
  380. ><h3 style="margin-left: 120px">支出方资金归属</h3>
  381. </el-col>
  382. </el-row>
  383. <el-row class="profit_box">
  384. <el-col :span="12">
  385. <el-form-item
  386. v-for="item in affiliationData"
  387. :key="item.profitId + 'sr'"
  388. :label="item.profitName"
  389. prop="entProfit"
  390. >
  391. <el-input-number
  392. v-model="item.profit"
  393. :min="0"
  394. placeholder="请输入利润"
  395. :max="9999999999999"
  396. label=""
  397. ></el-input-number>
  398. </el-form-item>
  399. </el-col>
  400. <el-col :span="12">
  401. <el-form-item
  402. v-for="item in affiliationData2"
  403. :key="item.profitId + 'zc'"
  404. :label="item.profitName"
  405. prop="entProfit"
  406. >
  407. <el-input-number
  408. v-model="item.profit"
  409. :min="0"
  410. placeholder="请输入利润"
  411. :max="9999999999999"
  412. label=""
  413. ></el-input-number>
  414. </el-form-item>
  415. </el-col>
  416. </el-row>
  417. </div>
  418. </el-form>
  419. </div>
  420. <div slot="footer" class="dialog-footer">
  421. <el-button @click="resetForm" size="small">取 消</el-button>
  422. <el-button @click="submitInfo" type="primary" size="small">{{
  423. modelText
  424. }}</el-button>
  425. </div>
  426. </el-dialog>
  427. <!-- 记录弹框 -->
  428. <el-dialog
  429. class="dialog expendDialog"
  430. title="进账记录"
  431. :close-on-click-modal="false"
  432. :before-close="expendResetForm"
  433. :visible.sync="expendDialogVisible"
  434. width="70%"
  435. >
  436. <!-- 记录表格 -->
  437. <kt-common-table
  438. :operationWidth="160"
  439. class="ktTable expendTable"
  440. ref="expendTable"
  441. :data="expendPageResult"
  442. :columns="expendColumns"
  443. :showBatchDelete="false"
  444. :showOperation="true"
  445. button3Name="撤销"
  446. button2Name="详情"
  447. permsButton3="expenseManagement:invoiceManagement:revoke"
  448. button3Icon="fa fa-trash"
  449. button3Background="#f56c6c"
  450. @handleButton3="handleTableRepeal"
  451. @handleButton2="handleTablerecordDetail"
  452. @findPage="getRecordData"
  453. :isshowpagination="true"
  454. ></kt-common-table>
  455. </el-dialog>
  456. <el-dialog
  457. title="详情"
  458. :close-on-click-modal="false"
  459. :visible.sync="detailDialogVisible"
  460. width="40%"
  461. >
  462. <el-form :model="tableForm"
  463. ref="tableForm1"
  464. label-width="155px"
  465. size="small"
  466. class="tableForm"
  467. disabled>
  468. <el-row >
  469. <el-col :span="12" v-for="item in affiliationData"
  470. :key="item.profitId + 'sr'">
  471. <el-form-item
  472. style="margin-bottom: 18px !important;"
  473. :label="item.profitName"
  474. prop="entProfit"
  475. >
  476. <el-input-number
  477. v-model="item.profit"
  478. :min="0"
  479. placeholder="请输入利润"
  480. :max="999999999999999"
  481. label=""
  482. ></el-input-number>
  483. </el-form-item>
  484. </el-col>
  485. </el-row>
  486. </el-form>
  487. <span slot="footer" class="dialog-footer">
  488. <el-button size="small" @click="detailDialogVisible = false">关闭</el-button>
  489. </span>
  490. </el-dialog>
  491. </div>
  492. </template>
  493. <script>
  494. import KtCommonTable from "@/views/Core/KtCommonTable.vue"; //表格组件
  495. import KtButton from "@/views/Core/KtButton"; // 按钮权限组件
  496. import { toChies, convertPositive } from "../../../utils/moneyTransition";
  497. export default {
  498. name: "InvoiceInformation",
  499. components: { KtCommonTable, KtButton },
  500. created() {
  501. // this.business("subjects"); //开票科目
  502. this.business("invoice_type"); //开票类型
  503. this.business("payment_methods"); //支付方式字典
  504. this.getTreeList(); //资金用途字典数据
  505. this.getAffiliationData(); //获取归属数据
  506. },
  507. mounted() {
  508. this.getAllUser();
  509. },
  510. data() {
  511. let invoiceSubjectsRules = (rule, value, callback) => {
  512. if (!this.formData.invoiceSubjects1 || !this.formData.invoiceSubjects2) {
  513. callback(new Error("开票科目不能为空!"));
  514. } else {
  515. callback();
  516. }
  517. };
  518. return {
  519. tableForm:{},
  520. detailDialogVisible:false,
  521. affiliationData: [], //归属字典数据
  522. affiliationData2: [], //归属字典数据
  523. allNumObj: {}, //合计对象
  524. subjectsData: [], //开票科目数据
  525. invoice_typeData: [], //发票类型数据
  526. fundFlowData: [], //资金用途字典数据
  527. payment_methodsData: [], //支付方式数据
  528. title: "开票新增",
  529. loading: true,
  530. detailDialog: false,
  531. operationWidth: 180, //操作列宽度
  532. queryFrom: {
  533. //查询条件
  534. },
  535. pageResult: {
  536. content: [],
  537. }, //表格参数
  538. pageRequest: {
  539. // 列表查询条件
  540. pageNo: 1,
  541. pageSize: 20,
  542. invoiceTime: "", //开票日期
  543. applyTime: "", //进账日期
  544. invoiceBy: "", //开票方
  545. biller: "", //开票员
  546. invoiceType: "", //开票类型
  547. },
  548. columns: [
  549. { prop: "invoiceId", label: "发票号码", type: "text", minWidth: 160 },
  550. { prop: "invoiceNum", label: "发票数", type: "text", minWidth: 60 },
  551. { prop: "invoiceBy", label: "开票方", type: "text", minWidth: 360 },
  552. { prop: "businessQuality", label: "公司类型", type: "text", minWidth: 80 },
  553. {
  554. prop: "otherUnit",
  555. label: "对方单位名称",
  556. type: "text",
  557. minWidth: 360,
  558. },
  559. {
  560. prop: "invoiceTypeName",
  561. label: "发票类型",
  562. type: "text",
  563. minWidth: 80,
  564. },
  565. {
  566. prop: "invoiceMoney",
  567. label: "开票金额",
  568. type: "text",
  569. minWidth: 100,
  570. },
  571. { prop: "invoiceTime", label: "开票日期", type: "text", minWidth: 100 },
  572. { prop: "biller", label: "开票员", type: "text", minWidth: 70 },
  573. {
  574. prop: "invoiceSubjects",
  575. label: "开票科目",
  576. type: "text",
  577. minWidth: 120,
  578. },
  579. {
  580. prop: "payoutMoney",
  581. label: "进账金额",
  582. type: "text",
  583. minWidth: 100,
  584. },
  585. {
  586. prop: "notPayoutMoney",
  587. label: "未进账金额",
  588. type: "text",
  589. minWidth: 100,
  590. },
  591. {
  592. prop: "rate",
  593. label: "税率(%)",
  594. type: "text",
  595. minWidth: 70,
  596. },
  597. {
  598. prop: "tax",
  599. label: "税额",
  600. type: "text",
  601. minWidth: 100,
  602. },
  603. {
  604. prop: "noHasTax",
  605. label: "不含税金额",
  606. type: "text",
  607. minWidth: 100,
  608. },
  609. {
  610. prop: "clearFlagName",
  611. label: "转账状态",
  612. type: "text",
  613. minWidth: 100,
  614. },
  615. ],
  616. detailData: [],
  617. detailParams: {
  618. pageNo: 1,
  619. pageSize: 20,
  620. teamOrUserFlag: "2",
  621. },
  622. modelText: "提 交",
  623. formData: {
  624. accountName:"",
  625. revBankCardNum: "", //收入卡号
  626. outBankCardNum: "", //支出卡号
  627. biller: "", //开票员
  628. invoiceBy: "", //开票方
  629. invoiceMoney: "", //开票金额
  630. invoiceNum: 1, //发票数
  631. invoiceSubjects: "", //开票科目
  632. invoiceSubjects1: "", //开票科目
  633. invoiceSubjects2: "", //开票科目
  634. invoiceTime: "", //开票日期
  635. invoiceType: "", //发票类型
  636. otherUnit: "", //对方单位
  637. payoutMoney: 0, //进账金额
  638. rate: 0, //税率
  639. payoutTime: "", //进账日期
  640. payMethod: [], //支付方式
  641. fundUse: "", //资金用途
  642. },
  643. rules: {
  644. //内部表单规则
  645. invoiceBy: [
  646. { required: true, message: "请选择开票方", trigger: "change" },
  647. ],
  648. invoiceMoney: [
  649. { required: true, message: "开票金额不能为空", trigger: "change" },
  650. ],
  651. invoiceNum: [
  652. { required: true, message: "发票数不能为空", trigger: "blur" },
  653. ],
  654. invoiceSubjects1: [
  655. { required: true, message: "开票科目不能为空", trigger: "change" },
  656. ],
  657. invoiceSubjectsValue: [
  658. { validator: invoiceSubjectsRules, trigger: "blur" },
  659. ],
  660. invoiceType: [
  661. { required: true, message: "请选择发票类型", trigger: "blur" },
  662. ],
  663. otherUnit: [
  664. { required: true, message: "对方单位不能为空", trigger: "blur" },
  665. ],
  666. payoutMoney: [
  667. { required: true, message: "进账金额不能为空", trigger: "blur" },
  668. ],
  669. rate: [{ required: true, message: "税率不能为空", trigger: "blur" }],
  670. payoutTime: [
  671. {
  672. required: true,
  673. message: "请选择进账日期",
  674. trigger: "change",
  675. },
  676. ],
  677. payMethod: [
  678. { required: true, message: "请选择支付方式", trigger: "change" },
  679. ],
  680. fundUse: [
  681. { required: true, message: "请选择资金用途", trigger: "change" },
  682. ],
  683. invoiceTime: [
  684. {
  685. required: true,
  686. message: "请选择开票日期",
  687. trigger: "change",
  688. },
  689. ],
  690. },
  691. collectionData: [], //所有内部账户信息列表
  692. allCollectionData: [], //所有账户信息列表
  693. formDataId: "", //编辑数据id
  694. profitObj: {},
  695. typeStatus: "", //1是编辑 2是进账
  696. /**
  697. * 记录模块
  698. */
  699. expendColumns: [
  700. //记录表格数据列
  701. {
  702. prop: "revenueOutlayName",
  703. label: "转账类型",
  704. minWidth: 80,
  705. sortable: false,
  706. },
  707. {
  708. prop: "company",
  709. label: "支出单位",
  710. minWidth: 350,
  711. sortable: false,
  712. },
  713. {
  714. prop: "payMethod",
  715. label: "支付方式",
  716. minWidth: 100,
  717. sortable: false,
  718. },
  719. {
  720. prop: "payoutTime",
  721. label: "支付时间",
  722. minWidth: 100,
  723. sortable: false,
  724. },
  725. { prop: "applyAmount", label: "金额", minWidth: 100, sortable: false },
  726. {
  727. prop: "fundUse",
  728. label: "资金用途",
  729. minWidth: 150,
  730. sortable: false,
  731. },
  732. {
  733. prop: "fundFen",
  734. label: "资金用途分项",
  735. minWidth: 150,
  736. sortable: false,
  737. },
  738. ],
  739. expendDialogVisible: false, //记录弹框显示状态
  740. expendPageResult: {
  741. //记录表格参数
  742. pageNo: 1,
  743. pageSize: 20,
  744. },
  745. invoiceId: "", //记录id
  746. num: 1,
  747. };
  748. },
  749. watch: {
  750. expendDialogVisible(n) {
  751. if (!n) {
  752. this.invoiceId = "";
  753. }
  754. },
  755. detailDialog(n) {
  756. if (!n) {
  757. this.formData = {
  758. revBankCardNum: "", //收入卡号
  759. outBankCardNum: "", //支出卡号
  760. biller: "", //开票员
  761. invoiceBy: "", //开票方
  762. invoiceMoney: 0, //开票金额
  763. invoiceNum: 1, //发票数
  764. invoiceSubjects: "", //开票科目
  765. invoiceTime: "", //开票日期
  766. invoiceType: "", //发票类型
  767. otherUnit: "", //对方单位
  768. payoutMoney: 0, //进账金额
  769. rate: 0, //税率
  770. payoutTime: "", //进账日期
  771. payMethod: [], //支付方式
  772. };
  773. //支出收入资金归属值清空
  774. this.affiliationData.forEach((item) => {
  775. item.profit = 0;
  776. });
  777. this.affiliationData2.forEach((item) => {
  778. item.profit = 0;
  779. });
  780. //支出收入资金归属值清空
  781. this.formDataId = "";
  782. this.$nextTick(() => {
  783. this.$refs.formData.clearValidate();
  784. });
  785. }
  786. },
  787. },
  788. methods: {
  789. handleTablerecordDetail({row}){
  790. for (let key in row.entProfit) {
  791. this.affiliationData.forEach((item) => {
  792. if (item.profitEng == key) {
  793. item.profit = convertPositive(row.entProfit[key]);
  794. }
  795. });
  796. }
  797. this.detailDialogVisible=true
  798. },
  799. /**
  800. * 撤销转账记录
  801. */
  802. handleTableRepeal(index) {
  803. let row = index.row;
  804. console.log(row);
  805. this.$confirm("确认撤销该 “"+row.revenueOutlayName+"” 记录吗?", "提示", {
  806. type: "warning",
  807. })
  808. .then(() => {
  809. this.$api.expense
  810. .accountOperateDelete(row.accountOperateId)
  811. .then((res) => {
  812. if (res.code == 200) {
  813. this.$message.success("撤销成功");
  814. this.getRecordData();
  815. this.expendDialogVisible=false;
  816. this.findPage();
  817. } else {
  818. this.$message.error(res.msg);
  819. }
  820. });
  821. })
  822. .catch(() => {});
  823. },
  824. //记录弹框取消重置
  825. expendResetForm() {
  826. this.expendDialogVisible = false;
  827. },
  828. //获取记录列表
  829. getRecordData(data) {
  830. if (data && data.pageRequest) {
  831. this.expendPageResult.pageNo = data.pageRequest.pageNum;
  832. this.expendPageResult.pageSize = data.pageRequest.pageSize;
  833. }
  834. let obj = {
  835. pageNo: this.expendPageResult.pageNo,
  836. pageSize: this.expendPageResult.pageSize,
  837. invoiceId: this.invoiceId,
  838. };
  839. this.$api.expense
  840. .getAccountOperate(obj)
  841. .then((res) => {
  842. res.data.records.forEach((item) => {
  843. if (
  844. item.revenueOutlay != null &&
  845. item.revenueOutlay != undefined &&
  846. item.revenueOutlay != ""
  847. ) {
  848. item.revenueOutlayName =
  849. item.revenueOutlay == 0 ? "收入" : "支出";
  850. }
  851. });
  852. this.expendPageResult = {
  853. content: res.data.records,
  854. pageNo: res.data.current,
  855. pageSize: res.data.size,
  856. totalPages: res.data.pages,
  857. totalSize: res.data.total,
  858. };
  859. })
  860. .then(data != null ? data.callback : "");
  861. },
  862. //点击记录方法
  863. handleTableDetail(e) {
  864. let row = e.row;
  865. this.expendDialogVisible = true;
  866. this.invoiceId = row.invoiceId;
  867. if (this.num > 1) {
  868. //第一次渲染页面表格组件会自动调用列表方法,所以给个值判断是否是第一次渲染页面只让执行一次
  869. this.getRecordData();
  870. }
  871. this.num++;
  872. },
  873. //转换
  874. businessZh(data, label, value) {
  875. let obj = data.find((item) => item[value] == label);
  876. if (obj) {
  877. return obj;
  878. } else {
  879. return {};
  880. }
  881. },
  882. //获取归属数据
  883. getAffiliationData() {
  884. this.$api.expense.getList().then((res) => {
  885. if (res.code == 200) {
  886. res.data.forEach((item) => {
  887. item.profit = 0;
  888. });
  889. this.affiliationData = JSON.parse(JSON.stringify(res.data));
  890. this.affiliationData2 = JSON.parse(JSON.stringify(res.data));
  891. } else {
  892. this.$message.error(res.msg);
  893. }
  894. });
  895. },
  896. //导出开票记录
  897. expentData() {
  898. let params = {
  899. ...JSON.parse(JSON.stringify(this.pageRequest)),
  900. };
  901. if (params.invoiceTime != null && params.invoiceTime.length > 0) {
  902. params.invoiceTimeStart = params.invoiceTime[0];
  903. params.invoiceTimeEnd = params.invoiceTime[1];
  904. }
  905. if (params.applyTime != null && params.applyTime.length > 0) {
  906. params.applyTimeStart = params.applyTime[0];
  907. params.applyTimeEnd = params.applyTime[1];
  908. }
  909. delete params.applyTime;
  910. delete params.invoiceTime;
  911. delete params.pageNo;
  912. delete params.pageSize;
  913. this.$api.expense.invAccountExcel(params).then((res) => {
  914. if (res.code == 200) {
  915. if (res.data == null) {
  916. this.$message.error("暂无导出数据,请重试!");
  917. return;
  918. }
  919. let url = process.env.BASE_URL + "/upload/" + res.data; // 3.创建一个临时的url指向blob对象
  920. // 4.创建url之后可以模拟对此文件对象的一系列操作,例如:预览、下载
  921. let a = document.createElement("a");
  922. a.href = url;
  923. a.download = "导出文件.xlsx";
  924. a.click();
  925. // 5.释放这个临时的对象url
  926. window.URL.revokeObjectURL(url);
  927. } else {
  928. this.$message.error(res.msg);
  929. }
  930. });
  931. },
  932. //获取资金用途树数据
  933. getTreeList() {
  934. this.$api.expense.getAccountExpensesTreeList().then((res) => {
  935. if (res.code == 200) {
  936. this.fundFlowData = res.data;
  937. this.fundFlowSet();
  938. } else {
  939. this.$message.error(res.msg);
  940. }
  941. });
  942. },
  943. //资金用途数据转换 如果最后一项child数组长度为0把值变为null
  944. fundFlowSet(data) {
  945. data = data || this.fundFlowData;
  946. for (var i = 0; i < data.length; i++) {
  947. if (data[i].child.length) {
  948. this.fundFlowSet(data[i].child);
  949. } else {
  950. data[i].child = null;
  951. }
  952. }
  953. },
  954. //撤销开票数据
  955. handleTableDelete(index) {
  956. let row = index.row;
  957. this.$confirm("确认撤销该记录吗?", "提示", {
  958. type: "warning",
  959. })
  960. .then(() => {
  961. this.$api.expense
  962. .deleteInvAccountIncoice(row.invoiceId)
  963. .then((res) => {
  964. if (res.code == 200) {
  965. this.$message.success("撤销成功");
  966. this.findPage();
  967. } else {
  968. this.$message.error(res.msg);
  969. }
  970. });
  971. })
  972. .catch(() => {});
  973. },
  974. invoiceTypeChange(item){
  975. // if(item==2){
  976. // this.formData.rate='6'
  977. // }
  978. // else{
  979. // this.formData.rate=''
  980. // }
  981. },
  982. //选择开票方change事件
  983. companyChange(item) {
  984. if(item.accountName=="太原天勤保险代理有限公司"){
  985. this.formData.invoiceSubjects1 ='经纪代理服务'
  986. this.formData.invoiceSubjects2 ='保险代理手续费'
  987. }
  988. // else{
  989. // this.formData.invoiceSubjects1 =''
  990. // this.formData.invoiceSubjects2 =''
  991. // }
  992. this.formData.revBankCardNum = item.bankCardNum;
  993. this.formData.biller = item.biller;
  994. this.formData.accountId = item.accountId;
  995. this.formData.businessQuality = item.businessQuality;
  996. },
  997. //选择开票方change事件
  998. outherChange(item) {
  999. this.formData.outBankCardNum = item.bankCardNum;
  1000. },
  1001. //获取所有内部账户信息
  1002. getAllUser() {
  1003. this.$api.expense.getAccountByAccountName().then((res) => {
  1004. if (res.code == 200) {
  1005. let arr = [];
  1006. res.data.forEach((item, index) => {
  1007. if (item.invAccountCardList != null) {
  1008. item.invAccountCardList.forEach((it) => {
  1009. it = { ...it, ...item };
  1010. it.name =
  1011. (it.outerFlag == 0 ? "内部用户" : "外部用户") +
  1012. " " +
  1013. (it.accountQuality == 0 ? "公户" : "私户") +
  1014. " " +
  1015. it.accountName +
  1016. " " +
  1017. it.bankCardNum +
  1018. " " +
  1019. it.bank;
  1020. it.nameValue = it.name;
  1021. // it.nameValue =
  1022. // it.accountName + " " + it.bankCardNum + " " + it.bank;
  1023. arr.push(it);
  1024. });
  1025. }
  1026. });
  1027. let outArr = arr.filter((item) => item.outerFlag == 0);
  1028. this.allCollectionData = arr;
  1029. this.collectionData = outArr;
  1030. }
  1031. });
  1032. },
  1033. //数据字典
  1034. business(typeName) {
  1035. this.$api.dict.findByLableName(typeName).then((res) => {
  1036. this[typeName + "Data"] = res.data;
  1037. if (
  1038. (typeName == "account_quality" || typeName == "invoice_type") &&
  1039. this.pageResult.content.length == 0
  1040. ) {
  1041. this.findPage();
  1042. }
  1043. });
  1044. },
  1045. //新增开票
  1046. addPayment() {
  1047. this.title = "开票新增";
  1048. this.formData={}
  1049. this.formData.invoiceTime= this.getTodayDate()
  1050. this.detailDialog = true;
  1051. console.log(this.formData,222222222);
  1052. },
  1053. getTodayDate() {
  1054. const today = new Date();
  1055. const year = today.getFullYear();
  1056. const month = today.getMonth() + 1; // 月份是从0开始的
  1057. const day = today.getDate();
  1058. return `${year}-${month.toString().padStart(2, '0')}-${day.toString().padStart(2, '0')}`;
  1059. },
  1060. //新增编辑开票信息
  1061. submitInfo() {
  1062. let params = JSON.parse(JSON.stringify(this.formData));
  1063. this.$refs.formData.validate((valid) => {
  1064. if (valid) {
  1065. //进账
  1066. if (this.formDataId && this.typeStatus == 2) {
  1067. console.log(params.payoutTime)
  1068. //转化资金归属
  1069. params.entProfit = {};
  1070. params.outProfit = {};
  1071. this.affiliationData.forEach((item) => {
  1072. params.entProfit[item.profitEng] =
  1073. item.profit == null ? 0 : item.profit;
  1074. });
  1075. this.affiliationData2.forEach((item) => {
  1076. params.outProfit[item.profitEng] =
  1077. item.profit == 0 || item.profit == null ? 0 : item.profit * -1;
  1078. });
  1079. // this.affiliationData.forEach((item) => {
  1080. // params.entProfit[item.profitEng] = item.profit;
  1081. // });
  1082. // this.affiliationData2.forEach((item) => {
  1083. // params.outProfit[item.profitEng] = item.profit * -1;
  1084. // });
  1085. //转化资金归属
  1086. let obj = {
  1087. invoiceId: this.formDataId, //id
  1088. payoutMoney: this.formData.payoutMoney, //进账金额
  1089. fundFlow:
  1090. params.otherUnit.nameValue +
  1091. "→" +
  1092. this.formData.invoiceBy.nameValue, //资金流向
  1093. payMethod: params.payMethod.join(","), //支付方式
  1094. fundUse: this.formData.fundUse[this.formData.fundUse.length - 2], //资金用途
  1095. fundFen: this.formData.fundUse[this.formData.fundUse.length - 1], //资金用途分项
  1096. payoutTime: params.payoutTime, //进账日期
  1097. entProfit: params.entProfit, //收入方资金归属
  1098. outProfit: params.outProfit, //支出方资金归属
  1099. };
  1100. this.$api.expense.putInvAccountIncoice(obj).then((res) => {
  1101. if (res.code == 200) {
  1102. this.detailDialog = false;
  1103. this.findPage();
  1104. } else {
  1105. this.$message.error(res.msg);
  1106. }
  1107. });
  1108. //编辑
  1109. } else if (this.formDataId && this.typeStatus == 1) {
  1110. params.invoiceBy = this.formData.invoiceBy.nameValue; //开票方
  1111. // params.bigApplyAmount = toChies(params.invoiceMoney); //大写金额
  1112. params.invoiceSubjects =
  1113. params.invoiceSubjects1 + "*" + params.invoiceSubjects2; //开票科目
  1114. params.otherUnit = params.otherUnit.nameValue; //对方单位名称
  1115. params.company = params.otherUnit; //单位
  1116. delete params.payMethod;
  1117. delete params.payoutTime;
  1118. this.$api.expense.updateIncoice(params).then((res) => {
  1119. if (res.code == 200) {
  1120. this.detailDialog = false;
  1121. this.findPage();
  1122. } else {
  1123. this.$message.error(res.msg);
  1124. }
  1125. });
  1126. //新增
  1127. } else {
  1128. params.invoiceBy = this.formData.invoiceBy.nameValue; //开票方
  1129. // params.bigApplyAmount = toChies(params.invoiceMoney); //大写金额
  1130. params.invoiceSubjects =
  1131. params.invoiceSubjects1 + "*" + params.invoiceSubjects2; //开票科目
  1132. params.otherUnit = params.otherUnit.nameValue; //对方单位名称
  1133. params.company = params.otherUnit; //单位
  1134. delete params.payMethod;
  1135. delete params.payoutTime;
  1136. this.$api.expense.addInvAccountIncoice(params).then((res) => {
  1137. if (res.code == 200) {
  1138. this.detailDialog = false;
  1139. this.findPage();
  1140. } else {
  1141. this.$message.error(res.msg);
  1142. }
  1143. });
  1144. }
  1145. } else {
  1146. return false;
  1147. }
  1148. });
  1149. },
  1150. //选择时间区间
  1151. dateChange(e) {
  1152. if (e == null) {
  1153. this.pageRequest.createTimeStart = "";
  1154. this.pageRequest.createTimeEnd = "";
  1155. } else {
  1156. this.pageRequest.createTimeStart = e[0];
  1157. this.pageRequest.createTimeEnd = e[1];
  1158. }
  1159. },
  1160. // 换页刷新
  1161. refreshPageRequest: function (pageNum) {
  1162. this.detailParams.pageNo = pageNum;
  1163. this.getDetailData();
  1164. },
  1165. // 每页条数发生改变
  1166. handleSizeChange(pageSize) {
  1167. this.detailParams.pageSize = pageSize;
  1168. this.getDetailData();
  1169. },
  1170. //取消隐藏弹框
  1171. resetForm() {
  1172. this.detailDialog = false;
  1173. this.detailParams.pageNo = 1;
  1174. this.detailParams.pageSize = 20;
  1175. },
  1176. //编辑按钮
  1177. handleDetail(index, type) {
  1178. this.typeStatus = type;
  1179. let row = index.row;
  1180. if (row.invoiceMoney < 0) {
  1181. this.$message.error("对冲票据,无法进账");
  1182. return;
  1183. }
  1184. this.formDataId = row.invoiceId;
  1185. this.title = type == 1 ? "开票编辑" : "开票进账";
  1186. this.getDetailData(row.invoiceId);
  1187. this.detailDialog = true;
  1188. },
  1189. // 详情接口
  1190. getDetailData(id) {
  1191. this.$api.expense.detailInvAccountIncoice(id).then((res) => {
  1192. if (res.code == 200) {
  1193. let obj = this.collectionData.find(
  1194. (item) => item.bankCardNum == res.data.revBankCardNum
  1195. );
  1196. let obj2 = this.collectionData.find(
  1197. (item) => item.bankCardNum == res.data.outBankCardNum
  1198. );
  1199. if (obj) {
  1200. res.data.invoiceBy = obj;
  1201. }
  1202. if (obj2) {
  1203. res.data.otherUnit = obj2;
  1204. }
  1205. if (this.typeStatus == 1) {
  1206. res.data.invoiceSubjects1 = res.data.invoiceSubjects.split("*")[0];
  1207. res.data.invoiceSubjects2 = res.data.invoiceSubjects.split("*")[1];
  1208. }
  1209. this.formData = JSON.parse(JSON.stringify(res.data));
  1210. } else {
  1211. this.$message.error(res.msg);
  1212. }
  1213. });
  1214. },
  1215. //获取页面数据
  1216. findPage(data) {
  1217. this.loading = true;
  1218. if (data && data.pageRequest) {
  1219. this.pageRequest.pageNo = data.pageRequest.pageNum;
  1220. this.pageRequest.pageSize = data.pageRequest.pageSize;
  1221. }
  1222. let params = JSON.parse(JSON.stringify(this.pageRequest));
  1223. if (params.invoiceTime != null && params.invoiceTime.length > 0) {
  1224. params.invoiceTimeStart = params.invoiceTime[0];
  1225. params.invoiceTimeEnd = params.invoiceTime[1];
  1226. }
  1227. if (params.applyTime != null && params.applyTime.length > 0) {
  1228. params.applyTimeStart = params.applyTime[0];
  1229. params.applyTimeEnd = params.applyTime[1];
  1230. }
  1231. delete params.invoiceTime;
  1232. delete params.applyTime;
  1233. this.$api.expense
  1234. .getInvAccountIncoice(params)
  1235. .then((res) => {
  1236. if (res.code == 200) {
  1237. res.data.records.forEach((item) => {
  1238. item.clearFlagName = item.clearFlag == 0 ? "未清" : "已清";
  1239. item.invoiceTypeName = this.businessZh(
  1240. this.invoice_typeData,
  1241. item.invoiceType,
  1242. "value"
  1243. )
  1244. ? this.businessZh(
  1245. this.invoice_typeData,
  1246. item.invoiceType,
  1247. "value"
  1248. ).label
  1249. : "";
  1250. });
  1251. this.pageResult = {
  1252. content: res.data.records,
  1253. pageNum: res.data.current,
  1254. pageSize: res.data.size,
  1255. totalPages: res.data.pages,
  1256. totalSize: res.data.total,
  1257. };
  1258. this.allNumObj = {
  1259. invoiceMoneySum: res.data.invoiceMoneySum,
  1260. invoiceNumSum: res.data.invoiceNumSum,
  1261. noHasTaxSum: res.data.noHasTaxSum,
  1262. notPayoutMoneySum: res.data.notPayoutMoneySum,
  1263. payoutMoneySum: res.data.payoutMoneySum,
  1264. taxSum: res.data.taxSum,
  1265. };
  1266. this.loading = false;
  1267. } else {
  1268. this.$message.error(res.msg);
  1269. }
  1270. })
  1271. .then(data != null ? data.callback : "");
  1272. },
  1273. // 查询
  1274. queryStaffInfo() {
  1275. this.pageRequest.pageNo = 1;
  1276. this.pageRequest.pageSize = 20;
  1277. this.findPage();
  1278. },
  1279. },
  1280. };
  1281. </script>
  1282. <style scoped>
  1283. .operation {
  1284. margin-left: 14px !important;
  1285. margin-top: 15px !important ;
  1286. }
  1287. .form {
  1288. display: flex;
  1289. align-items: center;
  1290. margin-top: 14px;
  1291. flex-wrap: wrap;
  1292. height: 100px;
  1293. }
  1294. .el-pagination {
  1295. font-weight: normal;
  1296. }
  1297. .el-card__body {
  1298. padding: 12px !important;
  1299. }
  1300. .footer .footerdiv {
  1301. display: flex;
  1302. align-items: center;
  1303. }
  1304. .container .el-form-item {
  1305. margin-bottom: -14px !important;
  1306. }
  1307. .form .el-form-item__label {
  1308. font-size: 15px !important;
  1309. font-weight: 600 !important;
  1310. }
  1311. .ktTable {
  1312. margin-top: 20px;
  1313. }
  1314. .el-row {
  1315. margin-top: 18px;
  1316. }
  1317. .top {
  1318. margin-top: 0px;
  1319. }
  1320. .el-date-editor--daterange.el-input__inner {
  1321. width: 300px;
  1322. }
  1323. .data_form >>> .el-select--small,
  1324. .data_form >>> .el-cascader--small {
  1325. width: 100%;
  1326. }
  1327. .frame {
  1328. width: 100%;
  1329. background-color: #fff;
  1330. padding: 20px;
  1331. -webkit-box-sizing: border-box;
  1332. box-sizing: border-box;
  1333. margin-bottom: 15px;
  1334. border-radius: 6px;
  1335. border: 1px solid #ebeef5;
  1336. -webkit-transition: all 0.2s ease-in-out;
  1337. transition: all 0.2s ease-in-out;
  1338. -webkit-box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
  1339. box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
  1340. }
  1341. .dialog__body {
  1342. height: 450px;
  1343. }
  1344. .addremove-box {
  1345. width: 100%;
  1346. display: flex;
  1347. justify-content: center;
  1348. align-items: center;
  1349. font-size: 25px;
  1350. margin-top: 10px;
  1351. }
  1352. .addremove-box > i {
  1353. cursor: pointer;
  1354. }
  1355. .data_form >>> .el-date-editor {
  1356. width: 100%;
  1357. }
  1358. .detailtTable >>> .bottomFixed {
  1359. position: relative !important;
  1360. }
  1361. .detailtTable >>> .el-table__body-wrapper {
  1362. overflow-y: auto;
  1363. height: 500px;
  1364. }
  1365. .detailtTable >>> .el-dialog {
  1366. margin-top: 10vh !important;
  1367. }
  1368. .data_form >>> .el-input-number--small {
  1369. width: 100%;
  1370. }
  1371. .invoic >>> .el-input {
  1372. width: 45%;
  1373. }
  1374. .profit_box .el-form-item {
  1375. margin-bottom: 15px !important;
  1376. }
  1377. .expendDialog >>> .el-dialog__body {
  1378. overflow-y: auto;
  1379. height: 500px;
  1380. }
  1381. .expendDialog >>> .cell .el-button {
  1382. width: auto;
  1383. }
  1384. .expendTable >>> .bottomFixed {
  1385. position: static;
  1386. margin-top: 20px;
  1387. }
  1388. .expendTable >>> .el-table {
  1389. height: 400px !important;
  1390. }
  1391. .ktTable >>> .el-button span {
  1392. margin-left: 0 !important;
  1393. }
  1394. </style>