inventoryTable.vue 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806
  1. <template>
  2. <el-form ref="form" :model="form" :rules="rules">
  3. <ele-pro-table
  4. ref="table"
  5. :needPage="false"
  6. :columns="columns"
  7. :toolkit="[]"
  8. :datasource="form.datasource"
  9. cache-key="systemRoleTable17"
  10. class="time-form"
  11. >
  12. <!-- 表头工具栏 -->
  13. <template v-slot:toolbar>
  14. <div class="headbox" v-if="!contractId">
  15. <el-button
  16. size="small"
  17. type="primary"
  18. icon="el-icon-plus"
  19. class="ele-btn-icon"
  20. @click="handlAdd"
  21. >
  22. 新增
  23. </el-button>
  24. </div>
  25. </template>
  26. <template v-slot:technicalDrawings="{ row, $index }">
  27. <el-form-item
  28. style="margin-bottom: 20px"
  29. :prop="'datasource.' + $index + '.technicalDrawings'"
  30. >
  31. <fileMain v-model="row.technicalDrawings" type="view"></fileMain>
  32. </el-form-item>
  33. </template>
  34. <template v-slot:remark="{ row, $index }">
  35. <el-form-item
  36. style="margin-bottom: 20px"
  37. :prop="'datasource.' + $index + '.remark'"
  38. >
  39. <el-input
  40. clearable
  41. v-model="row.remark"
  42. type="textarea"
  43. placeholder="请输入"
  44. />
  45. </el-form-item>
  46. </template>
  47. <template v-slot:totalCount="scope">
  48. <el-form-item
  49. style="margin-bottom: 20px"
  50. :prop="'datasource.' + scope.$index + '.totalCount'"
  51. :rules="[
  52. { required: true, message: '请输入数字', trigger: 'blur' },
  53. { validator: validateTotalCount(scope.row), trigger: 'blur' }
  54. ]"
  55. >
  56. <el-input
  57. v-model="scope.row.totalCount"
  58. @input="(val) => changeNum(val, scope.$index)"
  59. ></el-input>
  60. </el-form-item>
  61. </template>
  62. <template v-slot:warehouseId="scope">
  63. <el-form-item
  64. style="margin-bottom: 20px"
  65. :prop="'datasource.' + scope.$index + '.warehouseId'"
  66. :rules="[{ required: true, message: '请选择仓库', trigger: 'blur' }]"
  67. >
  68. <el-select
  69. v-model="scope.row.warehouseId"
  70. placeholder="请选择"
  71. @change="warehouseChange(scope.$index, scope.row)"
  72. >
  73. <el-option
  74. v-for="item in warehouseList"
  75. :key="item.id"
  76. :label="item.name"
  77. :value="item.id"
  78. >
  79. </el-option>
  80. </el-select>
  81. </el-form-item>
  82. </template>
  83. <template v-slot:industryArtFiles="{ row, $index }">
  84. <el-form-item
  85. style="margin-bottom: 20px"
  86. :prop="'datasource.' + $index + '.industryArtFiles'"
  87. >
  88. <fileMain v-model="row.industryArtFiles" type="view"></fileMain>
  89. <!-- <div v-if="row.industryArtFiles && row.industryArtFiles?.length">-->
  90. <!-- <el-link-->
  91. <!-- v-for="link in row.industryArtFiles"-->
  92. <!-- :key="link.id"-->
  93. <!-- type="primary"-->
  94. <!-- :underline="false"-->
  95. <!-- @click="downloadFile(link)"-->
  96. <!-- >-->
  97. <!-- {{ link.name }}</el-link-->
  98. <!-- >-->
  99. <!-- </div>-->
  100. </el-form-item>
  101. </template>
  102. <template v-slot:otherFiles="{ row, $index }">
  103. <el-form-item
  104. style="margin-bottom: 20px"
  105. :prop="'datasource.' + $index + '.otherFiles'"
  106. >
  107. <fileMain v-model="row.otherFiles" type="view"></fileMain>
  108. <!-- <div v-if="row.otherFiles && row.otherFiles?.length">-->
  109. <!-- <el-link-->
  110. <!-- v-for="link in row.otherFiles"-->
  111. <!-- :key="link.id"-->
  112. <!-- type="primary"-->
  113. <!-- :underline="false"-->
  114. <!-- @click="downloadFile(link)"-->
  115. <!-- >-->
  116. <!-- {{ link.name }}</el-link-->
  117. <!-- >-->
  118. <!-- </div>-->
  119. </el-form-item>
  120. </template>
  121. <template v-slot:warehouseNum="scope">
  122. <el-form-item style="margin-bottom: 20px">
  123. {{ scope.row.warehouseNum }}
  124. </el-form-item>
  125. </template>
  126. <template v-slot:headerTotalCount="{ column }">
  127. <span class="is-required">{{ column.label }}</span>
  128. </template>
  129. <template v-slot:headerWarehouseId="{ column }">
  130. <span class="is-required">{{ column.label }}</span>
  131. </template>
  132. <template v-slot:stockLedger="scope">
  133. <el-form-item
  134. style="margin-bottom: 20px">
  135. <el-popover
  136. @hide="()=>selection=[]"
  137. placement="right"
  138. width="60%"
  139. trigger="hover">
  140. <ele-pro-table :ref="'childrenTable'+scope.$index"
  141. row-key="id"
  142. max-height="300px"
  143. :selection.sync="selection"
  144. :needPage="false" :columns="childrenColumns" :toolkit="[]"
  145. :datasource="scope.row.sendProductDetail"
  146. cache-key="stockLedgerRoleTable" class="time-form">
  147. <!-- 表头工具栏 -->
  148. <template v-slot:toolbar="childrenScope">
  149. <el-button
  150. size="small"
  151. type="primary"
  152. icon="el-icon-plus"
  153. class="ele-btn-icon"
  154. @click="stockLedgerSelect(scope.row,scope.$index)">
  155. 选择
  156. </el-button>
  157. <el-button
  158. size="small"
  159. type="danger"
  160. icon="el-icon-delete"
  161. class="ele-btn-icon"
  162. :disabled="!selection.length"
  163. @click="stockLedgerRemove(scope.$index)">
  164. 删除
  165. </el-button>
  166. </template>
  167. </ele-pro-table>
  168. <el-button type="text" slot="reference">明细</el-button>
  169. </el-popover>
  170. </el-form-item>
  171. </template>
  172. <!-- 操作列 -->
  173. <template v-slot:action="scope">
  174. <el-popconfirm
  175. class="ele-action"
  176. title="确定要删除吗?"
  177. @confirm="remove(scope.$index)"
  178. >
  179. <template v-slot:reference>
  180. <el-link type="danger" :underline="false" icon="el-icon-delete">
  181. 删除
  182. </el-link>
  183. </template>
  184. </el-popconfirm>
  185. </template>
  186. </ele-pro-table>
  187. <product-list
  188. ref="productListRef"
  189. :orderId="orderId"
  190. @changeParent="changeParent"
  191. ></product-list>
  192. <!-- 库存台账 -->
  193. <stock-ledger-dialog v-if="stockLedgerDialogFlag" :stock-ledger-dialog-flag.sync="stockLedgerDialogFlag"
  194. ref="stockLedgerDialogRef" @getStockLedger="getStockLedger"></stock-ledger-dialog>
  195. </el-form>
  196. </template>
  197. <script>
  198. import { numberReg } from 'ele-admin';
  199. import dictMixins from '@/mixins/dictMixins';
  200. import productList from './product-list.vue';
  201. import {
  202. getWarehouseList,
  203. getWarehouseOutStock
  204. } from '@/api/bpm/components/saleManage/saleorder';
  205. import { copyObj } from '@/utils/util';
  206. import StockLedgerDialog from "@/views/bpm/handleTask/components/saleOrder/invoice/stockLedger/stockLedgerDialog.vue";
  207. import fileMain from "@/components/addDoc/index.vue";
  208. import {lbjtList } from '@/enum/dict.js';
  209. export default {
  210. mixins: [dictMixins],
  211. props: {
  212. orderId: String
  213. },
  214. components: {
  215. fileMain,
  216. StockLedgerDialog,
  217. productList
  218. },
  219. data() {
  220. const defaultForm = {
  221. key: null,
  222. endTime: '',
  223. isFirst: 0,
  224. name: '',
  225. startTime: '',
  226. workHour: '',
  227. technicalDrawings: []
  228. // warehouseCode:"",
  229. // warehouseId:'',
  230. // warehouseName:'',
  231. };
  232. return {
  233. childrenColumns: [
  234. {
  235. width: 45,
  236. type: 'selection',
  237. columnKey: 'selection',
  238. align: 'center'
  239. },
  240. {
  241. width: 45,
  242. type: 'index',
  243. columnKey: 'index',
  244. align: 'center',
  245. fixed: 'left',
  246. },
  247. {
  248. minWidth: 100,
  249. prop: 'code',
  250. label: '编码',
  251. align: 'center',
  252. },
  253. {
  254. minWidth: 140,
  255. prop: 'barcodes',
  256. label: '发货条码',
  257. align: 'center',
  258. },
  259. {
  260. minWidth: 100,
  261. prop: 'engrave',
  262. label: '刻码',
  263. align: 'center',
  264. }
  265. ],
  266. selection: [],
  267. stockLedgerDialogFlag: false,
  268. discountTotalPrice: 0.0,
  269. allPrice: 0.0,
  270. curIndex: null,
  271. numberReg,
  272. defaultForm,
  273. warehouseList: [],
  274. form: {
  275. datasource: []
  276. },
  277. rules: {},
  278. };
  279. },
  280. created() {
  281. getWarehouseList().then((res) => {
  282. this.warehouseList = res;
  283. });
  284. this.requestDict('产地');
  285. this.requestDict('生产类型');
  286. },
  287. computed: {
  288. canHandl() {
  289. return this.form.datasource.length;
  290. },
  291. contractId() {
  292. return this.$store.state.order.contractId;
  293. },
  294. columns() {
  295. return [
  296. {
  297. width: 45,
  298. type: 'index',
  299. columnKey: 'index',
  300. align: 'center',
  301. fixed: 'left',
  302. },
  303. {
  304. width: 200,
  305. prop: 'productName',
  306. label: '名称',
  307. slot: 'productName',
  308. align: 'center',
  309. },
  310. {
  311. width: 120,
  312. prop: 'productCode',
  313. label: '编码',
  314. slot: 'productCode',
  315. align: 'center'
  316. },
  317. {
  318. width: 200,
  319. prop: 'productCategoryName',
  320. label: '类型',
  321. slot: 'productCategoryName',
  322. align: 'center'
  323. },
  324. {
  325. width: 160,
  326. prop: 'productBrand',
  327. label: '牌号',
  328. slot: 'productBrand',
  329. align: 'center'
  330. },
  331. {
  332. width: 120,
  333. prop: 'modelType',
  334. label: '型号',
  335. slot: 'modelType',
  336. align: 'center'
  337. },
  338. {
  339. width: 120,
  340. prop: 'customerMark',
  341. label: '客户代号',
  342. slot: 'customerMark',
  343. align: 'center',
  344. },
  345. {
  346. width: 120,
  347. prop: 'specification',
  348. label: '规格',
  349. slot: 'specification',
  350. align: 'center'
  351. },
  352. {
  353. width: 120,
  354. prop: 'imgCode',
  355. align: 'center',
  356. label: '图号/件号',
  357. showOverflowTooltip: true
  358. },
  359. {
  360. minWidth: 160,
  361. prop: 'productionCodes',
  362. label: '生产编码',
  363. align: 'center'
  364. },
  365. {
  366. width: 120,
  367. prop: 'produceType',
  368. align: 'center',
  369. label: '属性类型',
  370. formatter: (row, column) => {
  371. if(row.produceType){
  372. return row.produceType.map(item=>{
  373. return lbjtList[item]
  374. }).toString()
  375. }
  376. },
  377. showOverflowTooltip: true
  378. },
  379. {
  380. width: 200,
  381. prop: 'warehouseId',
  382. label: '仓库名称',
  383. slot: 'warehouseId',
  384. headerSlot: 'headerWarehouseId',
  385. align: 'center'
  386. },
  387. {
  388. width: 120,
  389. prop: 'totalCount',
  390. label: '发货数量',
  391. slot: 'totalCount',
  392. headerSlot: 'headerTotalCount',
  393. align: 'center'
  394. },
  395. {
  396. width: 120,
  397. prop: 'orderTotalCount',
  398. label: '订单总数量',
  399. slot: 'orderTotalCount',
  400. align: 'center',
  401. show: !!!this.entrustedCode
  402. },
  403. {
  404. width: 120,
  405. prop: 'orderTotalCount',
  406. label: '委外收货总数量',
  407. slot: 'orderTotalCount',
  408. align: 'center',
  409. show: !!this.entrustedCode
  410. },
  411. {
  412. width: 80,
  413. prop: 'measuringUnit',
  414. label: '计量单位',
  415. slot: 'measuringUnit',
  416. align: 'center'
  417. },
  418. {
  419. width: 120,
  420. prop: 'singleWeight',
  421. label: '单重',
  422. slot: 'singleWeight',
  423. align: "center"
  424. },
  425. {
  426. width: 200,
  427. prop: 'receiveTotalWeight',
  428. label: '收货总重',
  429. slot: 'receiveTotalWeight',
  430. align: "center",
  431. headerSlot: 'headerTotalCount'
  432. },
  433. {
  434. width: 100,
  435. prop: 'sendTotalWeight',
  436. label: '发货总重',
  437. slot: 'sendTotalWeight',
  438. align: "center",
  439. },
  440. {
  441. width: 100,
  442. prop: 'increaseTotalWeight',
  443. label: '增重重量',
  444. slot: 'increaseTotalWeight',
  445. align: "center"
  446. },
  447. {
  448. width: 100,
  449. prop: 'weightUnit',
  450. label: '重量单位',
  451. slot: 'weightUnit',
  452. align: "center"
  453. },
  454. {
  455. width: 160,
  456. prop: 'pricingWay',
  457. label: '计价方式',
  458. slot: 'pricingWay',
  459. align: 'center',
  460. formatter: (row, column) => {
  461. return row.pricingWay == 1 ? '按数量计费' : row.pricingWay == 2 ? '按重量计费':'';
  462. }
  463. },
  464. {
  465. width: 160,
  466. prop: 'singlePrice',
  467. label: '单价',
  468. slot: 'singlePrice',
  469. align: 'center'
  470. },
  471. {
  472. width: 160,
  473. prop: 'discountSinglePrice',
  474. label: '折后单价',
  475. slot: 'discountSinglePrice',
  476. align: 'center'
  477. },
  478. {
  479. width: 120,
  480. prop: 'totalPrice',
  481. label: '合计',
  482. slot: 'totalPrice',
  483. align: 'center'
  484. },
  485. {
  486. width: 120,
  487. prop: 'discountTotalPrice',
  488. label: '折后合计',
  489. slot: 'discountTotalPrice',
  490. align: 'center'
  491. },
  492. {
  493. width: 80,
  494. prop: 'deliveryDays',
  495. label: '交期(天)',
  496. slot: 'deliveryDays',
  497. align: 'center'
  498. },
  499. // {
  500. // width: 160,
  501. // prop: 'deliveryDeadline',
  502. // label: '交期截止日期',
  503. // slot: 'deliveryDeadline',
  504. // align: 'center'
  505. // },
  506. {
  507. width: 200,
  508. prop: 'guaranteePeriod',
  509. label: '质保期',
  510. slot: 'guaranteePeriod',
  511. formatter: (_row, _column, cellValue) => {
  512. return (_row.guaranteePeriod || '') + _row.guaranteePeriodUnitName;
  513. },
  514. align: 'center'
  515. },
  516. {
  517. prop: 'provenance',
  518. label: '产地',
  519. slot: 'provenance',
  520. align: 'center',
  521. // show:this.contractBookType==2,
  522. minWidth: 200,
  523. showOverflowTooltip: true,
  524. formatter: (row, column) => {
  525. return row.provenance && row.provenance.length
  526. ? row.provenance
  527. .map((item) => this.getDictValue('产地', item ))
  528. .join(',')
  529. : '';
  530. }
  531. },
  532. {
  533. width: 130,
  534. prop: 'technicalAnswerName',
  535. label: '技术答疑人',
  536. slot: 'technicalAnswerName',
  537. align: 'center'
  538. },
  539. {
  540. width: 220,
  541. prop: 'technicalParams',
  542. label: '技术参数',
  543. slot: 'technicalParams',
  544. align: 'center'
  545. },
  546. {
  547. width: 240,
  548. prop: 'technicalDrawings',
  549. label: '技术图纸',
  550. slot: 'technicalDrawings',
  551. align: 'center'
  552. },
  553. {
  554. width: 220,
  555. prop: 'remark',
  556. label: '备注',
  557. slot: 'remark',
  558. align: 'center'
  559. },
  560. {
  561. columnKey: 'action',
  562. label: '操作',
  563. width: 120,
  564. align: 'center',
  565. resizable: false,
  566. slot: 'action',
  567. fixed: 'right',
  568. showOverflowTooltip: true
  569. }
  570. ]
  571. }
  572. },
  573. methods: {
  574. //发货明细选择
  575. stockLedgerSelect(row, index) {
  576. this.curIndex = index
  577. this.stockLedgerDialogFlag = true
  578. this.$nextTick(() => {
  579. this.$refs.stockLedgerDialogRef.init(row.sendProductDetail,row)
  580. })
  581. },
  582. //获取
  583. getStockLedger(sendProductDetail) {
  584. if (!this.form.datasource[this.curIndex].sendProductDetail) this.form.datasource[this.curIndex].sendProductDetail = []
  585. let row = this.form.datasource[this.curIndex]
  586. row.sendProductDetail.push(...sendProductDetail)
  587. this.form.datasource[this.curIndex] = row
  588. this.$refs['childrenTable'+this.curIndex].reload()
  589. this.$refs.table.reload()
  590. },
  591. //删除发货明细
  592. stockLedgerRemove(PIndex) {
  593. let row = this.form.datasource[PIndex]
  594. this.selection.forEach(item => {
  595. let index = row.sendProductDetail.findIndex(i => i.id == item.id)
  596. row.sendProductDetail.splice(index, 1)
  597. })
  598. this.form.datasource[PIndex] = row
  599. this.$refs['childrenTable' + PIndex].reload()
  600. this.$refs.table.reload()
  601. this.selection = []
  602. },
  603. async warehouseChange(index, row) {
  604. let warehouseIds =
  605. this.form.datasource
  606. .filter(
  607. (item, i) => row.productCode == item.productCode && index != i
  608. )
  609. .map((item) => item.warehouseId) || [];
  610. const data = this.warehouseList.find(
  611. (item) => item.id == row.warehouseId
  612. );
  613. if (warehouseIds.length > 0 && warehouseIds.includes(row.warehouseId)) {
  614. row.warehouseId = '';
  615. return this.$message.error('同一个产品不能选择相同的仓库');
  616. }
  617. this.$set(this.form.datasource[index], 'warehouseName', data.name);
  618. this.$set(this.form.datasource[index], 'warehouseCode', data.code);
  619. const warehouseOutStock = await getWarehouseOutStock({
  620. warehouseId: data.id,
  621. code: row.productCode
  622. });
  623. this.$set(
  624. this.form.datasource[index],
  625. 'warehouseNum',
  626. warehouseOutStock
  627. );
  628. },
  629. //修改数量更新合计
  630. changeNum(val, index) {
  631. this.$set(
  632. this.form.datasource[index],
  633. 'totalPrice',
  634. (Number(this.form.datasource[index].singlePrice) * val).toFixed(2)
  635. );
  636. },
  637. //选择产品回调
  638. changeParent(obj, idx) {
  639. obj.orderTotalCount = obj.totalCount;
  640. obj.id = '';
  641. this.$set(
  642. this.form.datasource,
  643. this.form.datasource.length,
  644. copyObj(obj)
  645. );
  646. },
  647. validateTotalCount(row) {
  648. return (rule, value, callback) => {
  649. if (isNaN(value) || Number(value) <= 0) {
  650. this.$message.error('请输入大于0的数');
  651. callback(new Error('请输入大于0的数字'));
  652. } else if (Number(value) > row.warehouseNum) {
  653. // this.$message.error('输入的数字不能大于仓库物品数');
  654. // callback(new Error('输入的数字不能大于仓库物品数'));
  655. callback();
  656. } else if (Number(value) > row.orderTotalCount) {
  657. this.$message.error('输入的数字不能大于最大发货值');
  658. callback(new Error('输入的数字不能大于最大发货值'));
  659. } else {
  660. callback();
  661. }
  662. };
  663. },
  664. // 返回列表数据
  665. getTableValue() {
  666. let comitDatasource = this.form.datasource;
  667. if (comitDatasource.length === 0) return [];
  668. comitDatasource.forEach(async (v) => {
  669. v.totalCount = Number(v.totalCount);
  670. v.technicalDrawings = Array.isArray(v.technicalDrawings)
  671. ? v.technicalDrawings
  672. : [];
  673. v.customerReqFiles = Array.isArray(v.customerReqFiles)
  674. ? v.customerReqFiles
  675. : [];
  676. v.industryArtFiles = v.industryArtFiles || [];
  677. v.otherFiles = v.otherFiles || [];
  678. });
  679. return comitDatasource;
  680. },
  681. getPrice() {
  682. return [this.allPrice];
  683. },
  684. //修改回显
  685. putTableValue(data) {
  686. if (data) {
  687. this.form.datasource = data;
  688. data.forEach(async (item, index) => {
  689. if (item.warehouseId) {
  690. this.$set(
  691. this.form.datasource[index],
  692. 'warehouseNum',
  693. await getWarehouseOutStock({
  694. warehouseId: item.warehouseId,
  695. code: item.productCode
  696. })
  697. );
  698. }
  699. });
  700. }
  701. },
  702. //选择产品
  703. handParent(row, index) {
  704. let item = {
  705. id: row.productCode
  706. };
  707. this.$refs.productListRef.open(item, index);
  708. },
  709. //选择技术人回调
  710. changeAnswer(obj, idx) {
  711. this.$set(this.form.datasource[idx], 'technicalAnswerId', obj.id);
  712. this.$set(this.form.datasource[idx], 'technicalAnswerName', obj.name);
  713. },
  714. handHead(row, index) {
  715. let item = {
  716. id: row.technicalAnswerId
  717. };
  718. this.$refs.headRef.open(item, index);
  719. },
  720. remove(i) {
  721. this.form.datasource.splice(i, 1);
  722. this.setSort();
  723. },
  724. // 清空表格
  725. restTable() {
  726. this.form.datasource = [];
  727. },
  728. // 重新排序
  729. setSort() {
  730. this.form.datasource.forEach((n, index) => {
  731. n.key = index + 1;
  732. });
  733. },
  734. // 添加
  735. handlAdd() {
  736. if (!this.orderId) return this.$message.error('请先选择订单');
  737. this.$refs.productListRef.open(this.form.datasource);
  738. },
  739. validateForm(callback) {
  740. //开始表单校验
  741. this.$refs.form.validate((valid) => {
  742. callback(valid);
  743. });
  744. }
  745. }
  746. };
  747. </script>
  748. <style lang="scss" scoped>
  749. .headbox {
  750. display: flex;
  751. justify-content: space-between;
  752. align-items: center;
  753. .amount {
  754. font-size: 14px;
  755. font-weight: bold;
  756. padding-right: 30px;
  757. }
  758. }
  759. .time-form .el-form-item {
  760. margin-bottom: 0 !important;
  761. }
  762. ::v-deep .period {
  763. display: flex;
  764. .borderleftnone {
  765. .el-input--medium .el-input__inner {
  766. border-top-right-radius: 0;
  767. border-bottom-right-radius: 0;
  768. }
  769. }
  770. .borderrightnone {
  771. .el-input--medium .el-input__inner {
  772. border-top-left-radius: 0;
  773. border-bottom-left-radius: 0;
  774. }
  775. }
  776. }
  777. ::v-deep .time-form tbody > tr:hover > td {
  778. background-color: transparent !important;
  779. }
  780. ::v-deep .time-form .el-table tr {
  781. background-color: #ffffff;
  782. }
  783. .pricebox {
  784. display: flex;
  785. justify-content: flex-start;
  786. align-items: center;
  787. font-weight: bold;
  788. }
  789. </style>