detail.vue 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883
  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. v-model="form.month"
  29. value-format="yyyy-MM-dd"
  30. type="month"
  31. clearable
  32. >
  33. </el-date-picker>
  34. </el-form-item>
  35. </el-col>
  36. <el-col :span="1.5">
  37. <el-form-item label="客户" prop="customer">
  38. <dr-popover-select
  39. size="mini"
  40. v-model="form.customerName"
  41. title="客户选择"
  42. type="CUSTOMER_PARAM_ZT"
  43. :dataMapping="{
  44. customer: 'id',
  45. customerName: 'name',
  46. }"
  47. :source.sync="form"
  48. >
  49. </dr-popover-select>
  50. </el-form-item>
  51. </el-col>
  52. <el-col :span="1.5">
  53. <el-form-item label="创建日期" prop="createTime">
  54. <el-date-picker
  55. v-model="form.createTime"
  56. clearable
  57. type="date"
  58. value-format="yyyy-MM-dd"
  59. readonly
  60. >
  61. </el-date-picker>
  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="eleventh"
  338. >
  339. <template slot-scope="scope">
  340. <el-input
  341. size="mini"
  342. v-model.number="scope.row.eleventh"
  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="twentySecond"
  514. >
  515. <template slot-scope="scope">
  516. <el-input
  517. size="mini"
  518. v-model.number="scope.row.twentySecond"
  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="twentyFifth"
  562. >
  563. <template slot-scope="scope">
  564. <el-input
  565. size="mini"
  566. v-model.number="scope.row.twentyFifth"
  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="twentyEighth"
  611. v-if="numDay > '28'"
  612. >
  613. <template slot-scope="scope">
  614. <el-input
  615. size="mini"
  616. v-model.number="scope.row.twentyEighth"
  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. <el-table-column
  658. fixed="right"
  659. label="操作"
  660. align="center"
  661. width="50"
  662. >
  663. <template slot-scope="scope">
  664. <el-button
  665. type="text"
  666. size="mini"
  667. @click="useRowRemove(scope.$index, scope.row)"
  668. >删行</el-button
  669. >
  670. </template>
  671. </el-table-column>
  672. </el-table>
  673. </el-tab-pane>
  674. </el-tabs>
  675. <div style="position: absolute; right: 10px; top: 5px; display: flex">
  676. <Choosematerial @addRow="addRow" :form="form"></Choosematerial>
  677. <Addmaterial @addRow="addRow"></Addmaterial>
  678. </div>
  679. </div>
  680. </el-card>
  681. <el-card>
  682. <div class="btn_group">
  683. <el-col :span="1.5">
  684. <el-button size="mini" plain @click="useBack">取消</el-button>
  685. </el-col>
  686. <el-col :span="1.5" style="margin: 0 10px">
  687. <el-button type="primary" size="mini" plain @click="useSave"
  688. >保存</el-button
  689. >
  690. </el-col>
  691. </div>
  692. </el-card>
  693. </div>
  694. </template>
  695. <script>
  696. import {
  697. addAssess,
  698. updateAssess,
  699. getAssess,
  700. } from "@/api/business/spd/fillin/dailysale_quantity_assess";
  701. import Addmaterial from "./addmaterial";
  702. import Choosematerial from "./choosematerial";
  703. export default {
  704. name: "dailysaleQuantityAssessDetail",
  705. components: { Addmaterial, Choosematerial },
  706. props: ["openMode", "row"],
  707. data() {
  708. return {
  709. form: {
  710. customer: null,
  711. customerName: null,
  712. items: [],
  713. //所选月份天数
  714. numDay:31,
  715. },
  716. //表单校验
  717. rules: {
  718. month: [{ required: true, message: "月份不能为空", trigger: "blur" }],
  719. customer: [
  720. { required: true, message: "客户不能为空", trigger: "blur" },
  721. ],
  722. },
  723. activeName: "item",
  724. };
  725. },
  726. watch: {
  727. 'form.month': {
  728. handler(newVal) {
  729. var curDate = new Date(newVal);
  730. console.log('curDate',curDate);
  731. /* 获取当前月份 */
  732. var curMonth = curDate.getMonth();
  733. /* 生成实际的月份: 由于curMonth会比实际月份小1, 故需加1 */
  734. curDate.setMonth(curMonth + 1);
  735. /* 将日期设置为0, 这里为什么要这样设置, 我不知道原因, 这是从网上学来的 */
  736. curDate.setDate(0);
  737. /* 返回当月的天数 */
  738. this.numDay = curDate.getDate();
  739. },
  740. immediate:true,
  741. }
  742. },
  743. computed: {
  744. items() {
  745. return this.form.items.filter(({ delFlag }) => delFlag !== "2");
  746. },
  747. },
  748. async created() {
  749. switch (this.openMode) {
  750. case "add":
  751. var now = new Date(); // 当前日期
  752. var nowYear = now.getFullYear(); //当前年
  753. var nowMonth = now.getMonth() ;
  754. this.form.month = new Date(nowYear,nowMonth,1,"00","00");
  755. // this.form.createTime = new Date();
  756. this.form.createByName = this.$store.state.user.nickName;
  757. this.form.dept = this.$store.state.user.deptId;
  758. this.form.deptName = this.$store.state.user.deptName;
  759. break;
  760. case "edit":
  761. await this.fetchAssess(this.row.id);
  762. break;
  763. case "see":
  764. await this.fetchAssess(this.row.id);
  765. break;
  766. }
  767. },
  768. methods: {
  769. //保存
  770. async useSave() {
  771. this.$refs["form"].validate(async (valid) => {
  772. if (valid) {
  773. try {
  774. let checkRes = this.checkBeforeSave(this.form);
  775. if (!checkRes) {
  776. return;
  777. }
  778. this.loading = true;
  779. let res = null;
  780. if (this.openMode === "add") {
  781. res = await addAssess(this.form);
  782. }
  783. if (this.openMode === "edit") {
  784. res = await updateAssess(this.form);
  785. }
  786. if (res.code === 200) {
  787. this.$modal.msgSuccess("保存成功");
  788. this.useBack();
  789. }
  790. } catch (err) {
  791. console.error(err);
  792. } finally {
  793. this.loading = false;
  794. }
  795. } else {
  796. return false;
  797. }
  798. });
  799. },
  800. //保存前校验
  801. checkBeforeSave(form) {
  802. return true;
  803. },
  804. //查询详情
  805. async fetchAssess(id) {
  806. try {
  807. // try
  808. this.loading = true;
  809. const { code, data } = await getAssess(id);
  810. if (code === 200) {
  811. this.form = data;
  812. return true;
  813. } else {
  814. return false;
  815. }
  816. } catch (err) {
  817. // catch
  818. console.error(err);
  819. } finally {
  820. // finally
  821. this.loading = false;
  822. }
  823. },
  824. //增行
  825. addRow(rows) {
  826. console.log("rows", rows);
  827. for (let i in rows) {
  828. this.form.items.push({
  829. delFlag: "0",
  830. $index: new Date().getTime(),
  831. ...rows[i],
  832. });
  833. }
  834. },
  835. //删行
  836. async useRowRemove(index, row) {
  837. console.log("index", index);
  838. console.log("row", row);
  839. if (row.id) {
  840. this.form.items.forEach((e) => {
  841. if (e.id == row.id) {
  842. e.delFlag = "2";
  843. }
  844. });
  845. } else {
  846. this.form.items.splice(index, 1);
  847. }
  848. },
  849. //切换多页签
  850. useSwitchTab() {},
  851. //返回
  852. useBack() {
  853. this.$parent.useOpenDetail();
  854. this.$parent.useSearch();
  855. },
  856. //获取当月天数
  857. getCountDays(val) {
  858. console.log('val',val);
  859. var curDate = new Date(val);
  860. console.log('curDate',curDate);
  861. /* 获取当前月份 */
  862. var curMonth = curDate.getMonth();
  863. /* 生成实际的月份: 由于curMonth会比实际月份小1, 故需加1 */
  864. curDate.setMonth(curMonth + 1);
  865. /* 将日期设置为0, 这里为什么要这样设置, 我不知道原因, 这是从网上学来的 */
  866. curDate.setDate(0);
  867. /* 返回当月的天数 */
  868. return curDate.getDate();
  869. }
  870. },
  871. };
  872. </script>
  873. <style scoped lang="scss">
  874. .btn_group {
  875. width: 100%;
  876. margin: 20px 0;
  877. display: flex;
  878. justify-content: right;
  879. }
  880. </style>