detail.vue 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919
  1. <template>
  2. <div>
  3. <el-card>
  4. <el-button size="mini" plain @click="useBack">返回</el-button>
  5. <el-divider></el-divider>
  6. <el-form
  7. size="mini"
  8. :model="form"
  9. :rules="rules"
  10. ref="form"
  11. label-width="auto"
  12. >
  13. <el-row :gutter="10">
  14. <el-col :span="1.5">
  15. <el-form-item label="编码" prop="code">
  16. <el-input
  17. placeholder="自动生成"
  18. readonly
  19. v-model="form.code"
  20. style="width: 200px"
  21. clearable
  22. />
  23. </el-form-item>
  24. </el-col>
  25. <el-col :span="1.5">
  26. <el-form-item label="月份" prop="month">
  27. <el-date-picker
  28. :readonly="this.openMode == 'edit' || this.openMode == 'see'"
  29. v-model="form.month"
  30. value-format="yyyy-MM"
  31. type="month"
  32. clearable
  33. >
  34. </el-date-picker>
  35. </el-form-item>
  36. </el-col>
  37. <el-col :span="1.5">
  38. <el-form-item label="客户" prop="customer">
  39. <dr-popover-select
  40. :readonly="this.openMode == 'edit' || this.openMode == 'see'"
  41. size="mini"
  42. v-model="form.customerName"
  43. title="客户选择"
  44. type="CUSTOMER_PARAM_ZT"
  45. :dataMapping="{
  46. customer: 'id',
  47. customerName: 'name',
  48. }"
  49. :source.sync="form"
  50. >
  51. </dr-popover-select>
  52. </el-form-item>
  53. </el-col>
  54. <el-col :span="1.5">
  55. <el-form-item label="创建日期" prop="createTime">
  56. <el-input
  57. v-model="form.createTime"
  58. style="width: 200px"
  59. clearable
  60. readonly
  61. />
  62. </el-form-item>
  63. </el-col>
  64. <el-col :span="1.5">
  65. <el-form-item label="创建人" prop="createByName">
  66. <el-input
  67. v-model="form.createByName"
  68. style="width: 200px"
  69. clearable
  70. readonly
  71. />
  72. </el-form-item>
  73. </el-col>
  74. <el-col :span="1.5">
  75. <el-form-item label="部门" prop="deptName">
  76. <el-input
  77. v-model="form.deptName"
  78. style="width: 200px"
  79. clearable
  80. readonly
  81. />
  82. </el-form-item>
  83. </el-col>
  84. </el-row>
  85. </el-form>
  86. </el-card>
  87. <el-card style="height: 800px">
  88. <div style="position: relative">
  89. <el-tabs v-model="activeName" @tab-click="useSwitchTab">
  90. <el-tab-pane label="明细" name="item">
  91. <el-table :data="items" height="700px" size="size">
  92. <el-table-column
  93. label="序号"
  94. type="index"
  95. width="50"
  96. align="center"
  97. fixed
  98. />
  99. <el-table-column
  100. show-overflow-tooltip
  101. label="一级品类"
  102. align="center"
  103. width="150"
  104. prop="oneClassName"
  105. />
  106. <el-table-column
  107. show-overflow-tooltip
  108. label="二级品类"
  109. align="center"
  110. width="150"
  111. prop="twoClassName"
  112. />
  113. <el-table-column
  114. show-overflow-tooltip
  115. label="物料编号"
  116. align="center"
  117. width="150"
  118. prop="materialCode"
  119. />
  120. <el-table-column
  121. show-overflow-tooltip
  122. label="物料名称"
  123. align="center"
  124. width="150"
  125. prop="materialName"
  126. />
  127. <el-table-column
  128. show-overflow-tooltip
  129. label="单位"
  130. align="center"
  131. width="150"
  132. prop="unitName"
  133. />
  134. <el-table-column
  135. show-overflow-tooltip
  136. label="价格(元)"
  137. align="center"
  138. width="150"
  139. prop="price"
  140. >
  141. <template slot-scope="scope">
  142. <el-input-number
  143. size="mini"
  144. style="width: 130px"
  145. v-model="scope.row.price"
  146. :controls="false"
  147. >
  148. </el-input-number>
  149. </template>
  150. </el-table-column>
  151. <el-table-column
  152. show-overflow-tooltip
  153. label="日 销 售 数 据 填 报"
  154. align="center"
  155. >
  156. <el-table-column
  157. show-overflow-tooltip
  158. label="1"
  159. align="center"
  160. width="100"
  161. prop="first"
  162. >
  163. <template slot-scope="scope">
  164. <el-input
  165. size="mini"
  166. v-model.number="scope.row.first"
  167. class="input-view"
  168. oninput="value=value.replace(/[^0-9]/g,'')"
  169. />
  170. </template>
  171. </el-table-column>
  172. <el-table-column
  173. show-overflow-tooltip
  174. label="2"
  175. align="center"
  176. width="100"
  177. prop="second"
  178. >
  179. <template slot-scope="scope">
  180. <el-input
  181. size="mini"
  182. v-model.number="scope.row.second"
  183. class="input-view"
  184. oninput="value=value.replace(/[^0-9]/g,'')"
  185. />
  186. </template>
  187. </el-table-column>
  188. <el-table-column
  189. show-overflow-tooltip
  190. label="3"
  191. align="center"
  192. width="100"
  193. prop="third"
  194. >
  195. <template slot-scope="scope">
  196. <el-input
  197. size="mini"
  198. v-model.number="scope.row.third"
  199. class="input-view"
  200. oninput="value=value.replace(/[^0-9]/g,'')"
  201. />
  202. </template>
  203. </el-table-column>
  204. <el-table-column
  205. show-overflow-tooltip
  206. label="4"
  207. align="center"
  208. width="100"
  209. prop="fourth"
  210. >
  211. <template slot-scope="scope">
  212. <el-input
  213. size="mini"
  214. v-model.number="scope.row.fourth"
  215. class="input-view"
  216. oninput="value=value.replace(/[^0-9]/g,'')"
  217. />
  218. </template>
  219. </el-table-column>
  220. <el-table-column
  221. show-overflow-tooltip
  222. label="5"
  223. align="center"
  224. width="100"
  225. prop="fifth"
  226. >
  227. <template slot-scope="scope">
  228. <el-input
  229. size="mini"
  230. v-model.number="scope.row.fifth"
  231. class="input-view"
  232. oninput="value=value.replace(/[^0-9]/g,'')"
  233. />
  234. </template>
  235. </el-table-column>
  236. <el-table-column
  237. show-overflow-tooltip
  238. label="6"
  239. align="center"
  240. width="100"
  241. prop="sixth"
  242. >
  243. <template slot-scope="scope">
  244. <el-input
  245. size="mini"
  246. v-model.number="scope.row.sixth"
  247. class="input-view"
  248. oninput="value=value.replace(/[^0-9]/g,'')"
  249. />
  250. </template>
  251. </el-table-column>
  252. <el-table-column
  253. show-overflow-tooltip
  254. label="7"
  255. align="center"
  256. width="100"
  257. prop="seventh"
  258. >
  259. <template slot-scope="scope">
  260. <el-input
  261. size="mini"
  262. v-model.number="scope.row.seventh"
  263. class="input-view"
  264. oninput="value=value.replace(/[^0-9]/g,'')"
  265. />
  266. </template>
  267. </el-table-column>
  268. <el-table-column
  269. show-overflow-tooltip
  270. label="8"
  271. align="center"
  272. width="100"
  273. prop="eighth"
  274. >
  275. <template slot-scope="scope">
  276. <el-input
  277. size="mini"
  278. v-model.number="scope.row.eighth"
  279. class="input-view"
  280. oninput="value=value.replace(/[^0-9]/g,'')"
  281. />
  282. </template>
  283. </el-table-column>
  284. <el-table-column
  285. show-overflow-tooltip
  286. label="9"
  287. align="center"
  288. width="100"
  289. prop="ninth"
  290. >
  291. <template slot-scope="scope">
  292. <el-input
  293. size="mini"
  294. v-model.number="scope.row.ninth"
  295. class="input-view"
  296. oninput="value=value.replace(/[^0-9]/g,'')"
  297. />
  298. </template>
  299. </el-table-column>
  300. <el-table-column
  301. show-overflow-tooltip
  302. label="10"
  303. align="center"
  304. width="100"
  305. prop="tenth"
  306. >
  307. <template slot-scope="scope">
  308. <el-input
  309. size="mini"
  310. v-model.number="scope.row.tenth"
  311. class="input-view"
  312. oninput="value=value.replace(/[^0-9]/g,'')"
  313. />
  314. </template>
  315. </el-table-column>
  316. <el-table-column
  317. show-overflow-tooltip
  318. label="11"
  319. align="center"
  320. width="100"
  321. prop="eleventh"
  322. >
  323. <template slot-scope="scope">
  324. <el-input
  325. size="mini"
  326. v-model.number="scope.row.eleventh"
  327. class="input-view"
  328. oninput="value=value.replace(/[^0-9]/g,'')"
  329. />
  330. </template>
  331. </el-table-column>
  332. <el-table-column
  333. show-overflow-tooltip
  334. label="12"
  335. align="center"
  336. width="100"
  337. prop="twelfth"
  338. >
  339. <template slot-scope="scope">
  340. <el-input
  341. size="mini"
  342. v-model.number="scope.row.twelfth"
  343. class="input-view"
  344. oninput="value=value.replace(/[^0-9]/g,'')"
  345. />
  346. </template>
  347. </el-table-column>
  348. <el-table-column
  349. show-overflow-tooltip
  350. label="13"
  351. align="center"
  352. width="100"
  353. prop="thirteenth"
  354. >
  355. <template slot-scope="scope">
  356. <el-input
  357. size="mini"
  358. v-model.number="scope.row.thirteenth"
  359. class="input-view"
  360. oninput="value=value.replace(/[^0-9]/g,'')"
  361. />
  362. </template>
  363. </el-table-column>
  364. <el-table-column
  365. show-overflow-tooltip
  366. label="14"
  367. align="center"
  368. width="100"
  369. prop="fourteenth"
  370. >
  371. <template slot-scope="scope">
  372. <el-input
  373. size="mini"
  374. v-model.number="scope.row.fourteenth"
  375. class="input-view"
  376. oninput="value=value.replace(/[^0-9]/g,'')"
  377. />
  378. </template>
  379. </el-table-column>
  380. <el-table-column
  381. show-overflow-tooltip
  382. label="15"
  383. align="center"
  384. width="100"
  385. prop="fifteenth"
  386. >
  387. <template slot-scope="scope">
  388. <el-input
  389. size="mini"
  390. v-model.number="scope.row.fifteenth"
  391. class="input-view"
  392. oninput="value=value.replace(/[^0-9]/g,'')"
  393. />
  394. </template>
  395. </el-table-column>
  396. <el-table-column
  397. show-overflow-tooltip
  398. label="16"
  399. align="center"
  400. width="100"
  401. prop="sixteenth"
  402. >
  403. <template slot-scope="scope">
  404. <el-input
  405. size="mini"
  406. v-model.number="scope.row.sixteenth"
  407. class="input-view"
  408. oninput="value=value.replace(/[^0-9]/g,'')"
  409. />
  410. </template>
  411. </el-table-column>
  412. <el-table-column
  413. show-overflow-tooltip
  414. label="17"
  415. align="center"
  416. width="100"
  417. prop="seventeenth"
  418. >
  419. <template slot-scope="scope">
  420. <el-input
  421. size="mini"
  422. v-model.number="scope.row.seventeenth"
  423. class="input-view"
  424. oninput="value=value.replace(/[^0-9]/g,'')"
  425. />
  426. </template>
  427. </el-table-column>
  428. <el-table-column
  429. show-overflow-tooltip
  430. label="18"
  431. align="center"
  432. width="100"
  433. prop="eighteenth"
  434. >
  435. <template slot-scope="scope">
  436. <el-input
  437. size="mini"
  438. v-model.number="scope.row.eighteenth"
  439. class="input-view"
  440. oninput="value=value.replace(/[^0-9]/g,'')"
  441. />
  442. </template>
  443. </el-table-column>
  444. <el-table-column
  445. show-overflow-tooltip
  446. label="19"
  447. align="center"
  448. width="100"
  449. prop="nineteenth"
  450. >
  451. <template slot-scope="scope">
  452. <el-input
  453. size="mini"
  454. v-model.number="scope.row.nineteenth"
  455. class="input-view"
  456. oninput="value=value.replace(/[^0-9]/g,'')"
  457. />
  458. </template>
  459. </el-table-column>
  460. <el-table-column
  461. show-overflow-tooltip
  462. label="20"
  463. align="center"
  464. width="100"
  465. prop="twentieth"
  466. >
  467. <template slot-scope="scope">
  468. <el-input
  469. size="mini"
  470. v-model.number="scope.row.twentieth"
  471. class="input-view"
  472. oninput="value=value.replace(/[^0-9]/g,'')"
  473. />
  474. </template>
  475. </el-table-column>
  476. <el-table-column
  477. show-overflow-tooltip
  478. label="21"
  479. align="center"
  480. width="100"
  481. prop="twentyFirst"
  482. >
  483. <template slot-scope="scope">
  484. <el-input
  485. size="mini"
  486. v-model.number="scope.row.twentyFirst"
  487. class="input-view"
  488. oninput="value=value.replace(/[^0-9]/g,'')"
  489. />
  490. </template>
  491. </el-table-column>
  492. <el-table-column
  493. show-overflow-tooltip
  494. label="22"
  495. align="center"
  496. width="100"
  497. prop="twentySecond"
  498. >
  499. <template slot-scope="scope">
  500. <el-input
  501. size="mini"
  502. v-model.number="scope.row.twentySecond"
  503. class="input-view"
  504. oninput="value=value.replace(/[^0-9]/g,'')"
  505. />
  506. </template>
  507. </el-table-column>
  508. <el-table-column
  509. show-overflow-tooltip
  510. label="23"
  511. align="center"
  512. width="100"
  513. prop="twentyThird"
  514. >
  515. <template slot-scope="scope">
  516. <el-input
  517. size="mini"
  518. v-model.number="scope.row.twentyThird"
  519. class="input-view"
  520. oninput="value=value.replace(/[^0-9]/g,'')"
  521. />
  522. </template>
  523. </el-table-column>
  524. <el-table-column
  525. show-overflow-tooltip
  526. label="24"
  527. align="center"
  528. width="100"
  529. prop="twentyFourth"
  530. >
  531. <template slot-scope="scope">
  532. <el-input
  533. size="mini"
  534. v-model.number="scope.row.twentyFourth"
  535. class="input-view"
  536. oninput="value=value.replace(/[^0-9]/g,'')"
  537. />
  538. </template>
  539. </el-table-column>
  540. <el-table-column
  541. show-overflow-tooltip
  542. label="25"
  543. align="center"
  544. width="100"
  545. prop="twentyFifth"
  546. >
  547. <template slot-scope="scope">
  548. <el-input
  549. size="mini"
  550. v-model.number="scope.row.twentyFifth"
  551. class="input-view"
  552. oninput="value=value.replace(/[^0-9]/g,'')"
  553. />
  554. </template>
  555. </el-table-column>
  556. <el-table-column
  557. show-overflow-tooltip
  558. label="26"
  559. align="center"
  560. width="100"
  561. prop="twentySixth"
  562. >
  563. <template slot-scope="scope">
  564. <el-input
  565. size="mini"
  566. v-model.number="scope.row.twentySixth"
  567. class="input-view"
  568. oninput="value=value.replace(/[^0-9]/g,'')"
  569. />
  570. </template>
  571. </el-table-column>
  572. <el-table-column
  573. show-overflow-tooltip
  574. label="27"
  575. align="center"
  576. width="100"
  577. prop="twentySeventh"
  578. >
  579. <template slot-scope="scope">
  580. <el-input
  581. size="mini"
  582. v-model.number="scope.row.twentySeventh"
  583. class="input-view"
  584. oninput="value=value.replace(/[^0-9]/g,'')"
  585. />
  586. </template>
  587. </el-table-column>
  588. <el-table-column
  589. show-overflow-tooltip
  590. label="28"
  591. align="center"
  592. width="100"
  593. prop="twentyEighth"
  594. v-if="numDay > '27'"
  595. >
  596. <template slot-scope="scope">
  597. <el-input
  598. size="mini"
  599. v-model.number="scope.row.twentyEighth"
  600. class="input-view"
  601. oninput="value=value.replace(/[^0-9]/g,'')"
  602. />
  603. </template>
  604. </el-table-column>
  605. <el-table-column
  606. show-overflow-tooltip
  607. label="29"
  608. align="center"
  609. width="100"
  610. prop="twentyNinth"
  611. v-if="numDay > '28'"
  612. >
  613. <template slot-scope="scope">
  614. <el-input
  615. size="mini"
  616. v-model.number="scope.row.twentyNinth"
  617. class="input-view"
  618. oninput="value=value.replace(/[^0-9]/g,'')"
  619. />
  620. </template>
  621. </el-table-column>
  622. <el-table-column
  623. show-overflow-tooltip
  624. label="30"
  625. align="center"
  626. width="100"
  627. prop="thirtieth"
  628. v-if="numDay > '29'"
  629. >
  630. <template slot-scope="scope">
  631. <el-input
  632. size="mini"
  633. v-model.number="scope.row.thirtieth"
  634. class="input-view"
  635. oninput="value=value.replace(/[^0-9]/g,'')"
  636. />
  637. </template>
  638. </el-table-column>
  639. <el-table-column
  640. show-overflow-tooltip
  641. label="31"
  642. align="center"
  643. width="100"
  644. prop="thirtyFirst"
  645. v-if="numDay > '30'"
  646. >
  647. <template slot-scope="scope">
  648. <el-input
  649. size="mini"
  650. v-model.number="scope.row.thirtyFirst"
  651. class="input-view"
  652. oninput="value=value.replace(/[^0-9]/g,'')"
  653. />
  654. </template>
  655. </el-table-column>
  656. <el-table-column
  657. show-overflow-tooltip
  658. label="合计数量"
  659. align="center"
  660. width="100"
  661. prop="amount"
  662. />
  663. <el-table-column
  664. show-overflow-tooltip
  665. label="合计金额"
  666. align="center"
  667. width="100"
  668. prop="money"
  669. />
  670. </el-table-column>
  671. <el-table-column
  672. fixed="right"
  673. label="操作"
  674. align="center"
  675. width="50"
  676. >
  677. <template slot-scope="scope">
  678. <el-button
  679. type="text"
  680. size="mini"
  681. @click="useRowRemove(scope.$index, scope.row)"
  682. >删行</el-button
  683. >
  684. </template>
  685. </el-table-column>
  686. </el-table>
  687. </el-tab-pane>
  688. </el-tabs>
  689. <div style="position: absolute; right: 10px; top: 5px; display: flex">
  690. <Choosematerial @addRow="addRow" :form="form"></Choosematerial>
  691. <Addmaterial @addRow="addRow"></Addmaterial>
  692. </div>
  693. </div>
  694. </el-card>
  695. <el-card>
  696. <div class="btn_group">
  697. <el-col :span="1.5">
  698. <el-button size="mini" plain @click="useBack">取消</el-button>
  699. </el-col>
  700. <el-col :span="1.5" style="margin: 0 10px">
  701. <el-button type="primary" size="mini" plain @click="useSave"
  702. >保存</el-button
  703. >
  704. </el-col>
  705. </div>
  706. </el-card>
  707. </div>
  708. </template>
  709. <script>
  710. import {
  711. addAssess,
  712. updateAssess,
  713. getAssess,
  714. } from "@/api/business/spd/fillin/dailysale_quantity_assess";
  715. import Addmaterial from "./addmaterial";
  716. import Choosematerial from "./choosematerial";
  717. export default {
  718. name: "dailysaleQuantityAssessDetail",
  719. components: { Addmaterial, Choosematerial },
  720. props: ["openMode", "row"],
  721. data() {
  722. return {
  723. form: {
  724. month: null,
  725. customer: null,
  726. customerName: null,
  727. items: [],
  728. //所选月份天数
  729. numDay:31,
  730. },
  731. //表单校验
  732. rules: {
  733. month: [{ required: true, message: "月份不能为空", trigger: "blur" }],
  734. customer: [
  735. { required: true, message: "客户不能为空", trigger: "blur" },
  736. ],
  737. },
  738. activeName: "item",
  739. };
  740. },
  741. watch: {
  742. 'form.month': {
  743. handler(newVal) {
  744. let arr = newVal.split('-');
  745. this.numDay = this.getDays(arr[0],arr[1]);
  746. },
  747. immediate:true,
  748. }
  749. },
  750. computed: {
  751. items() {
  752. return this.form.items.filter(({ delFlag }) => delFlag !== "2");
  753. },
  754. },
  755. async created() {
  756. switch (this.openMode) {
  757. case "add":
  758. this.form.createTime = this.getCurrentTime();
  759. this.form.month = this.getCurrentMonth();
  760. this.form.createByName = this.$store.state.user.nickName;
  761. this.form.dept = this.$store.state.user.deptId;
  762. this.form.deptName = this.$store.state.user.deptName;
  763. break;
  764. case "edit":
  765. await this.fetchAssess(this.row.id);
  766. this.total();
  767. console.log('this.form.items',this.form.items);
  768. break;
  769. case "see":
  770. await this.fetchAssess(this.row.id);
  771. this.total();
  772. break;
  773. }
  774. },
  775. methods: {
  776. //保存
  777. async useSave() {
  778. this.$refs["form"].validate(async (valid) => {
  779. if (valid) {
  780. try {
  781. let checkRes = this.checkBeforeSave(this.form);
  782. if (!checkRes) {
  783. return;
  784. }
  785. this.loading = true;
  786. let res = null;
  787. if (this.openMode === "add") {
  788. res = await addAssess(this.form);
  789. }
  790. if (this.openMode === "edit") {
  791. res = await updateAssess(this.form);
  792. }
  793. if (res.code === 200) {
  794. this.$modal.msgSuccess("保存成功");
  795. this.useBack();
  796. }
  797. } catch (err) {
  798. console.error(err);
  799. } finally {
  800. this.loading = false;
  801. }
  802. } else {
  803. return false;
  804. }
  805. });
  806. },
  807. //保存前校验
  808. checkBeforeSave(form) {
  809. return true;
  810. },
  811. //查询详情
  812. async fetchAssess(id) {
  813. try {
  814. // try
  815. this.loading = true;
  816. const { code, data } = await getAssess(id);
  817. if (code === 200) {
  818. this.form = data;
  819. return true;
  820. } else {
  821. return false;
  822. }
  823. } catch (err) {
  824. // catch
  825. console.error(err);
  826. } finally {
  827. // finally
  828. this.loading = false;
  829. }
  830. },
  831. //增行
  832. addRow(rows) {
  833. console.log("rows", rows);
  834. for (let i in rows) {
  835. this.form.items.push({
  836. delFlag: "0",
  837. $index: new Date().getTime(),
  838. ...rows[i],
  839. });
  840. }
  841. },
  842. //删行
  843. async useRowRemove(index, row) {
  844. if (row.id) {
  845. this.form.items.forEach((e) => {
  846. if (e.id == row.id) {
  847. e.delFlag = "2";
  848. }
  849. });
  850. } else {
  851. this.form.items.splice(index, 1);
  852. }
  853. },
  854. //切换多页签
  855. useSwitchTab() {},
  856. //返回
  857. useBack() {
  858. this.$parent.useOpenDetail();
  859. this.$parent.useSearch();
  860. },
  861. //获取当月
  862. getCurrentMonth () {
  863. const date = new Date()
  864. let year = date.getFullYear()
  865. let month = date.getMonth() + 1
  866. month = month > 9 ? month : '0' + month
  867. return `${year}-${month}`
  868. },
  869. getDays(year, month){
  870. return new Date(year, month, 0).getDate()
  871. },
  872. getCurrentTime() {
  873. var date = new Date();//当前时间
  874. var year = date.getFullYear() //年
  875. var month = this.repair(date.getMonth() + 1);//月
  876. var day = this.repair(date.getDate());//日
  877. var hour = this.repair(date.getHours());//时
  878. var minute = this.repair(date.getMinutes());//分
  879. var second = this.repair(date.getSeconds());//秒
  880. //当前时间
  881. var curTime = year + "-" + month + "-" + day
  882. + " " + hour + ":" + minute + ":" + second;
  883. return curTime;
  884. },
  885. repair(i){
  886. if (i >= 0 && i <= 9) {
  887. return "0" + i;
  888. } else {
  889. return i;
  890. }
  891. },
  892. //计算合计
  893. total(){
  894. let num = ["first","second","third","fourth","fifth","sixth","seventh","eighth","ninth","tenth","eleventh","twelfth","thirteenth","fourteenth","fifteenth"
  895. ,"twentyFirst","seventeenth","eighteenth","nineteenth","twentieth","twentyFirst","twentySecond","twentyThird","twentyFourth","twentyFifth","twentySixth","twentySeventh","twentyEighth","twentyNinth","thirtieth","thirtyFirst"];
  896. for(let i in this.form.items){
  897. let c = 0;
  898. for(let j in num){
  899. c = (this.form.items[i][num[j]] || 0) - 0 + c;
  900. }
  901. console.log('c',c);
  902. this.form.items[i].amount = c;
  903. this.form.items[i].money = c * (this.form.items[i].price || 0);
  904. }
  905. }
  906. },
  907. };
  908. </script>
  909. <style scoped lang="scss">
  910. .btn_group {
  911. width: 100%;
  912. margin: 20px 0;
  913. display: flex;
  914. justify-content: right;
  915. }
  916. </style>