create.vue 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782
  1. <template>
  2. <ele-modal
  3. :visible.sync="visible"
  4. :title="title"
  5. width="80vw"
  6. append-to-body
  7. @close="cancel"
  8. :maxable="true"
  9. >
  10. <el-form
  11. ref="form"
  12. :model="form"
  13. :rules="rules"
  14. label-width="90px"
  15. class="create-form"
  16. >
  17. <el-row :gutter="15">
  18. <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
  19. <el-form-item label="编码:">
  20. <el-input
  21. :maxlength="20"
  22. v-model="form.unqualifiedProductsCode"
  23. disabled
  24. />
  25. </el-form-item>
  26. </el-col>
  27. <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
  28. <el-form-item label="来源编码:">
  29. <el-input :maxlength="20" v-model="form.sourceCode" disabled />
  30. </el-form-item>
  31. </el-col>
  32. <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
  33. <el-form-item label="数量:">
  34. <el-input :maxlength="20" v-model="form.quantity" disabled />
  35. </el-form-item>
  36. </el-col>
  37. <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
  38. <el-form-item label="工艺路线:">
  39. <el-input
  40. @click.native="openVersion"
  41. clearable
  42. v-model="form.produceRoutingName"
  43. />
  44. </el-form-item>
  45. </el-col>
  46. <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
  47. <el-form-item label="工序:">
  48. <el-select
  49. style="width: 100%"
  50. v-model="form.taskId"
  51. placeholder="请选择"
  52. clearable
  53. @change="produceTaskChange"
  54. >
  55. <el-option
  56. v-for="item in produceTaskList"
  57. :key="item.id"
  58. :label="item.name"
  59. :value="item.id"
  60. >
  61. </el-option>
  62. </el-select>
  63. </el-form-item>
  64. </el-col>
  65. <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
  66. <el-form-item label="批次号:">
  67. <el-input :maxlength="20" v-model="form.batchNo" disabled />
  68. </el-form-item>
  69. </el-col>
  70. </el-row>
  71. <!-- -->
  72. <el-table :data="form.poList" border height="40vh">
  73. <el-table-column label="序号" align="center" width="60">
  74. <template slot-scope="scope">
  75. <span>{{ scope.$index + 1 }}</span>
  76. </template>
  77. </el-table-column>
  78. <el-table-column label="产品名称" align="center" prop="categoryName">
  79. </el-table-column>
  80. <el-table-column label="产品编码" align="center" prop="categoryCode">
  81. </el-table-column>
  82. <el-table-column label="牌号" align="center" prop="brandNum">
  83. </el-table-column>
  84. <el-table-column label="刻码" align="center" prop="engrave">
  85. <template slot-scope="scope">
  86. <el-form-item
  87. label-width="0px"
  88. :prop="'poList.' + scope.$index + '.engrave'"
  89. >
  90. <el-input
  91. v-model="scope.row.engrave"
  92. size="small"
  93. style="width: 100%"
  94. placeholder="输入刻码"
  95. ></el-input>
  96. </el-form-item>
  97. </template>
  98. </el-table-column>
  99. <!-- <el-table-column label="型号" align="center" prop="model">
  100. </el-table-column> -->
  101. <!-- <el-table-column label="规格" align="center" prop="specification">-->
  102. <!-- </el-table-column>-->
  103. <el-table-column label="数量" align="center" prop="unqualifiedQuantity">
  104. <template slot-scope="scope">
  105. <el-form-item
  106. label-width="0px"
  107. :prop="'poList.' + scope.$index + '.unqualifiedQuantity'"
  108. :rules="[
  109. {
  110. required: true,
  111. message: '请输入数量',
  112. trigger: 'blur'
  113. },
  114. { validator: validatePass, trigger: 'change' }
  115. ]"
  116. >
  117. <el-input
  118. v-model.number="scope.row.unqualifiedQuantity"
  119. size="small"
  120. style="width: 100%"
  121. placeholder="输入数量"
  122. @input="
  123. scope.row.measureQuantity = scope.row.unqualifiedQuantity
  124. "
  125. ></el-input>
  126. </el-form-item>
  127. </template>
  128. </el-table-column>
  129. <el-table-column
  130. label="工艺路线"
  131. align="center"
  132. prop="produceRoutingName"
  133. >
  134. </el-table-column>
  135. <el-table-column label="工序" align="center" prop="produceTaskName">
  136. </el-table-column>
  137. <el-table-column
  138. label="不良类型"
  139. align="center"
  140. prop="badTypeId"
  141. width="180"
  142. >
  143. <template v-slot="{ row, $index }">
  144. <el-form-item
  145. label-width="0px"
  146. :prop="'poList.' + $index + '.badTypeId'"
  147. :rules="{
  148. // required: true,
  149. message: '请选择不良类型',
  150. trigger: 'blur'
  151. }"
  152. >
  153. <el-select
  154. v-model="row.badTypeId"
  155. placeholder="请选择不良类型"
  156. size="small"
  157. style="width: 100%"
  158. remote
  159. filterable
  160. clearable
  161. @change="badTypeChange(row)"
  162. >
  163. <el-option
  164. v-for="item in badTypeList"
  165. :key="item.id"
  166. :label="item.name"
  167. :value="item.id"
  168. >
  169. </el-option>
  170. </el-select>
  171. </el-form-item>
  172. </template>
  173. </el-table-column>
  174. <el-table-column
  175. label="不良名称"
  176. align="center"
  177. prop="badNameId"
  178. width="180"
  179. >
  180. <template v-slot="{ row, $index }">
  181. <el-form-item
  182. label-width="0px"
  183. :prop="'poList.' + $index + '.badNameId'"
  184. :rules="{
  185. // required: true,
  186. message: '请选择不良名称',
  187. trigger: 'blur'
  188. }"
  189. >
  190. <el-select
  191. v-model="row.badNameId"
  192. placeholder="请选择不良名称"
  193. size="small"
  194. style="width: 100%"
  195. remote
  196. filterable
  197. clearable
  198. @change="badNameChange(row)"
  199. >
  200. <el-option
  201. v-for="item in badNameList"
  202. :key="item.id"
  203. :label="item.name"
  204. :value="item.id"
  205. >
  206. </el-option>
  207. </el-select>
  208. </el-form-item>
  209. </template>
  210. </el-table-column>
  211. <el-table-column
  212. label="原因类型"
  213. align="center"
  214. prop="reasonTypeId"
  215. width="180"
  216. >
  217. <template v-slot="{ row, $index }">
  218. <el-form-item
  219. label-width="0px"
  220. :prop="'poList.' + $index + '.reasonTypeId'"
  221. :rules="{
  222. // required: true,
  223. message: '请选择不良原因类型',
  224. trigger: 'blur'
  225. }"
  226. >
  227. <el-select
  228. v-model="row.reasonTypeId"
  229. placeholder="请选择原因类型"
  230. size="small"
  231. style="width: 100%"
  232. remote
  233. filterable
  234. clearable
  235. @change="reasonTypeChange(row)"
  236. >
  237. <el-option
  238. v-for="item in reasonTypeList"
  239. :key="item.id"
  240. :label="item.name"
  241. :value="item.id"
  242. >
  243. </el-option>
  244. </el-select>
  245. </el-form-item>
  246. </template>
  247. </el-table-column>
  248. <el-table-column
  249. label="原因"
  250. align="center"
  251. prop="unqualifiedReason"
  252. width="180"
  253. >
  254. <template slot-scope="scope">
  255. <el-form-item
  256. label-width="0px"
  257. :prop="'poList.' + scope.$index + '.unqualifiedReason'"
  258. :rules="{
  259. required: true,
  260. message: '请输入原因',
  261. trigger: 'blur'
  262. }"
  263. >
  264. <el-input
  265. v-model="scope.row.unqualifiedReason"
  266. size="small"
  267. style="width: 100%"
  268. placeholder="输入原因"
  269. ></el-input>
  270. </el-form-item>
  271. </template>
  272. </el-table-column>
  273. <el-table-column label="操作" align="center" width="70">
  274. <template slot-scope="scope">
  275. <el-link
  276. type="danger"
  277. :underline="false"
  278. @click="handleDeleteItem(scope.$index, scope.row.id)"
  279. >
  280. 删除
  281. </el-link>
  282. </template>
  283. </el-table-column>
  284. </el-table>
  285. <div class="add-product" @click="addEquipment">
  286. <i class="el-icon-circle-plus-outline"></i>
  287. </div>
  288. </el-form>
  289. <template v-slot:footer>
  290. <el-button @click="cancel">取消</el-button>
  291. <el-button type="primary" @click="save" :loading="loading">
  292. 确定
  293. </el-button>
  294. </template>
  295. <!-- 选择产品 -->
  296. <EquipmentDialog ref="equipmentRefs" @choose="confirmChoose">
  297. </EquipmentDialog>
  298. <ProductionVersion
  299. ref="versionRefs"
  300. @changeProduct="changeProduct"
  301. ></ProductionVersion>
  302. </ele-modal>
  303. </template>
  304. <script>
  305. import EquipmentDialog from '../components/EquipmentDialog.vue';
  306. import ProductionVersion from '@/components/ProductionVersion/ProductionVersion.vue';
  307. import { getProduceTaskList } from '@/api/aps';
  308. import {
  309. unqualifiedProductsAdd,
  310. updateData,
  311. getDetail,
  312. deleteUnacceptedProductDetail,
  313. getById
  314. } from '@/api/unacceptedProduct/index';
  315. import { getList as getBadNameList } from '@/api/unacceptedProduct/unqualifiedName';
  316. import { getList as getBadTypeList } from '@/api/unacceptedProduct/unqualifiedType';
  317. import { getList as getReasonTypeList } from '@/api/unacceptedProduct/reasonType';
  318. export default {
  319. components: {
  320. EquipmentDialog,
  321. ProductionVersion
  322. },
  323. data() {
  324. return {
  325. validatePass: (rule, value, callback) => {
  326. if (!value) {
  327. callback(new Error('数量不能为0'));
  328. } else {
  329. callback();
  330. }
  331. },
  332. id: '',
  333. visible: false,
  334. loading: false,
  335. produceTaskList: [],
  336. form: {
  337. poList: [],
  338. unqualifiedProductsCode: '',
  339. sourceCode: '',
  340. batchNo: '',
  341. brandNum: '',
  342. categoryCode: '',
  343. categoryId: '',
  344. categoryName: '',
  345. specification: '',
  346. modelType: '',
  347. produceRoutingId: '',
  348. produceRoutingName: '',
  349. taskId: '',
  350. taskName: '',
  351. quantity: '',
  352. measureQuantity: '',
  353. measureUnit: '',
  354. weight: '',
  355. weightUnit: '',
  356. qualityType: ''
  357. },
  358. // 表单验证规则
  359. rules: {
  360. deliveryTime: [
  361. { required: true, message: '请选择交付日期', trigger: 'change' }
  362. ]
  363. },
  364. title: '创建',
  365. // 不良品类型列表
  366. badTypeList: [],
  367. // 不良名称列表
  368. badNameList: [],
  369. // 原因类型列表
  370. reasonTypeList: []
  371. };
  372. },
  373. computed: {
  374. // 是否开启响应式布局
  375. styleResponsive() {
  376. return this.$store.state.theme.styleResponsive;
  377. }
  378. },
  379. created() {
  380. this.getBadTypeList();
  381. this.getBadNameList();
  382. this.getReasonTypeList();
  383. },
  384. methods: {
  385. open(row, type) {
  386. this.visible = true;
  387. if (type == 'add') {
  388. this.title = '创建';
  389. this.form = row;
  390. this.getProduceTaskList();
  391. return;
  392. }
  393. console.log(row, 'row');
  394. if (row) {
  395. this.title = '修改';
  396. this.getDetail(row);
  397. } else {
  398. this.title = '创建';
  399. }
  400. },
  401. //选择工艺路线
  402. openVersion() {
  403. this.$refs.versionRefs.open();
  404. },
  405. //工艺路线回调
  406. changeProduct(data) {
  407. this.form.produceRoutingId = data.id;
  408. this.form.produceRoutingName = data.name;
  409. this.form.taskId = '';
  410. this.form.taskName = '';
  411. if (this.title == '修改') {
  412. this.form.poList.forEach((item) => {
  413. item.produceRoutingId = data.id;
  414. item.produceRoutingName = data.name;
  415. item.produceTaskId = '';
  416. item.produceTaskName = '';
  417. });
  418. }
  419. this.getProduceTaskList();
  420. },
  421. async getProduceTaskList() {
  422. const res = await getProduceTaskList({
  423. isDetail: true,
  424. pageNum: 1,
  425. routingId: this.form.produceRoutingId,
  426. size: -1
  427. });
  428. this.produceTaskList = res.list;
  429. },
  430. produceTaskChange() {
  431. if (!this.form.taskId) {
  432. return;
  433. }
  434. this.form.taskName = this.produceTaskList.find(
  435. (item) => item.id == this.form.taskId
  436. ).name;
  437. this.form.poList.forEach((item, index) => {
  438. this.$set(
  439. this.form.poList[index],
  440. 'produceRoutingId',
  441. this.form.produceRoutingId
  442. );
  443. this.$set(
  444. this.form.poList[index],
  445. 'produceRoutingName',
  446. this.form.produceRoutingName
  447. );
  448. this.$set(this.form.poList[index], 'produceTaskId', this.form.taskId);
  449. this.$set(
  450. this.form.poList[index],
  451. 'produceTaskName',
  452. this.form.taskName
  453. );
  454. });
  455. },
  456. async getDetail(row) {
  457. console.log(row.id, 'row.id');
  458. // this.form = row;
  459. const data = await getById(row.id);
  460. this.form.id = row.id;
  461. this.form.unqualifiedProductsCode = data.unqualifiedProductsCode;
  462. this.form.sourceCode = data.sourceCode;
  463. this.form.batchNo = data.batchNo;
  464. this.form.brandNum = data.brandNum;
  465. this.form.categoryCode = data.categoryCode;
  466. this.form.categoryId = data.categoryId;
  467. this.form.categoryName = data.categoryName;
  468. this.form.specification = data.specification;
  469. this.form.modelType = data.modelType;
  470. this.form.produceRoutingId = data.produceRoutingId;
  471. this.form.produceRoutingName = data.produceRoutingName;
  472. this.form.taskId = data.taskId;
  473. this.form.taskName = data.taskName;
  474. this.form.quantity = data.quantity;
  475. this.form.measureQuantity = data.measureQuantity;
  476. this.form.measureUnit = data.measureUnit;
  477. this.form.weight = data.weight;
  478. this.form.weightUnit = data.weightUnit;
  479. this.form.poList = data.poList;
  480. console.log(this.form);
  481. // getDetail(row.id).then((res) => {
  482. // // this.getProduceTaskList();
  483. // // this.form.poList = res;
  484. // });
  485. },
  486. cancel() {
  487. this.form = {
  488. poList: [],
  489. unqualifiedProductsCode: '',
  490. sourceCode: '',
  491. batchNo: '',
  492. brandNum: '',
  493. categoryCode: '',
  494. categoryId: '',
  495. categoryName: '',
  496. weight: '',
  497. specification: '',
  498. modelType: '',
  499. produceRoutingId: '',
  500. produceRoutingName: '',
  501. taskId: '',
  502. taskName: '',
  503. measureQuantity: '',
  504. measureUnit: '',
  505. weight: '',
  506. weightUnit: ''
  507. };
  508. this.$refs.form.clearValidate();
  509. this.visible = false;
  510. },
  511. // 删除产品
  512. handleDeleteItem(index, id) {
  513. this.$confirm('确认删除吗?', '提示', {
  514. confirmButtonText: '确定',
  515. cancleButtonText: '取消',
  516. type: 'warning'
  517. })
  518. .then((res) => {
  519. if (id) {
  520. deleteUnacceptedProductDetail([id]).then((res) => {
  521. this.form.poList.splice(index, 1);
  522. });
  523. } else {
  524. this.form.poList.splice(index, 1);
  525. }
  526. })
  527. .catch(() => {});
  528. // this.inputNumber();
  529. },
  530. addEquipment() {
  531. this.$refs.equipmentRefs.open();
  532. },
  533. /* 保存编辑 */
  534. save() {
  535. console.log(this.form.poList);
  536. this.$refs.form.validate((valid) => {
  537. if (!valid) {
  538. return false;
  539. }
  540. if (!this.form.poList.length) {
  541. return this.$message.warning('产品列表不能为空!');
  542. }
  543. for (let key in this.form) {
  544. if (key.includes('create')) {
  545. this.form[key] = '';
  546. }
  547. }
  548. this.form.poList.forEach((item) => {
  549. for (let key in item) {
  550. if (key.includes('create')) {
  551. item[key] = '';
  552. }
  553. }
  554. });
  555. this.loading = true;
  556. if (this.title == '创建') {
  557. unqualifiedProductsAdd(this.form)
  558. .then((res) => {
  559. this.loading = false;
  560. this.$message.success('成功');
  561. this.cancel();
  562. this.$emit('refresh');
  563. })
  564. .catch((e) => {
  565. this.loading = false;
  566. });
  567. }
  568. if (this.title == '修改') {
  569. updateData({ ...this.form, id: this.id })
  570. .then((res) => {
  571. this.loading = false;
  572. this.$message.success('成功');
  573. this.cancel();
  574. this.$emit('refresh');
  575. })
  576. .catch((e) => {
  577. this.loading = false;
  578. });
  579. }
  580. });
  581. },
  582. // 确定选择
  583. confirmChoose(data) {
  584. console.log(data);
  585. this.form.poList = [];
  586. let list = [];
  587. list = data.map((item, index) => {
  588. if (item.productCode) {
  589. return {
  590. // 不良品类型
  591. badTypeId: null,
  592. // 不良类型名称
  593. badTypeName: null,
  594. // 不良品名称id
  595. badNameId: null,
  596. // 不良品名称
  597. badNameName: null,
  598. // 原因类型id
  599. reasonTypeId: null,
  600. // 原因类型名称
  601. reasonTypeName: null,
  602. // 原因
  603. unqualifiedReason: '',
  604. ...item
  605. };
  606. } else {
  607. return {
  608. categoryCode: item.code,
  609. categoryName: item.name,
  610. categoryId: item.id,
  611. brandNum: item.brandNum,
  612. batchNo: item.batchNo,
  613. specification: item.specification,
  614. modelType: item.modelType,
  615. engrave: '',
  616. unqualifiedQuantity: '',
  617. produceRoutingId: '',
  618. produceRoutingName: '',
  619. produceTaskId: '',
  620. produceTaskName: '',
  621. measureQuantity: '',
  622. measureUnit: item.measuringUnit,
  623. weight: item.netWeight,
  624. weightUnit: item.weightUnit,
  625. // 不良品类型
  626. badTypeId: null,
  627. // 不良类型名称
  628. badTypeName: null,
  629. // 不良品名称id
  630. badNameId: null,
  631. // 不良品名称
  632. badNameName: null,
  633. // 原因类型id
  634. reasonTypeId: null,
  635. // 原因类型名称
  636. reasonTypeName: null,
  637. // 原因
  638. unqualifiedReason: ''
  639. };
  640. }
  641. });
  642. this.form.categoryCode = data[0].code;
  643. this.form.categoryName = data[0].name;
  644. this.form.categoryId = data[0].id;
  645. this.form.brandNum = data[0].brandNum;
  646. this.form.batchNo = data[0].batchNo;
  647. this.form.specification = data[0].specification;
  648. this.form.modelType = data[0].modelType;
  649. this.form.measureQuantity = '';
  650. this.form.measureUnit = data[0].measuringUnit;
  651. this.form.weight = data[0].netWeight;
  652. this.form.weightUnit = data[0].weightUnit;
  653. this.form.quantity = data.length;
  654. this.form.poList = this.form.poList.concat(list);
  655. this.produceTaskChange();
  656. // this.inputNumber();
  657. },
  658. inputNumber() {
  659. this.form.unqualifiedQuantity = 0;
  660. this.form.poList.forEach((item) => {
  661. this.form.unqualifiedQuantity +=
  662. Number(item.unqualifiedQuantity) || 0;
  663. });
  664. },
  665. // 查询不良类型
  666. async getBadTypeList() {
  667. const res = await getBadTypeList({
  668. pageNum: 1,
  669. size: 999,
  670. });
  671. console.log('this.badTypeList', this.badTypeList);
  672. this.badTypeList = res.list;
  673. },
  674. // 查询不良名称
  675. async getBadNameList( badTypeId = 0) {
  676. const res = await getBadNameList({
  677. pageNum: 1,
  678. size: 999,
  679. badTypeId: badTypeId
  680. });
  681. console.log('this.badNameList', this.badNameList);
  682. this.badNameList = res.list;
  683. },
  684. // 查询原因类型
  685. async getReasonTypeList() {
  686. const res = await getReasonTypeList({
  687. pageNum: 1,
  688. size: 999,
  689. });
  690. console.log('this.reasonTypeList', this.reasonTypeList);
  691. this.reasonTypeList = res.list;
  692. },
  693. // 不良类型改变
  694. badTypeChange(row) {
  695. row.badTypeName = null;
  696. // 赋值badTypeName
  697. const badType = this.badTypeList.find(
  698. (item) => item.id === row.badTypeId
  699. );
  700. if (badType) {
  701. row.badTypeName = badType.name;
  702. }
  703. this.getBadNameList( row.badTypeId);
  704. },
  705. // 不良名称改变
  706. badNameChange(row) {
  707. // 赋值badNameName
  708. const badItem = this.badNameList.find(
  709. (item) => item.id === row.badNameId
  710. );
  711. if (badItem) {
  712. row.badNameName = badItem.name;
  713. }
  714. },
  715. // 原因类型改变
  716. reasonTypeChange(row) {
  717. row.reasonTypeName = null;
  718. // 赋值reasonTypeName
  719. const reasonType = this.reasonTypeList.find(
  720. (item) => item.id === row.reasonTypeId
  721. );
  722. if (reasonType) {
  723. row.reasonTypeName = reasonType.name;
  724. }
  725. }
  726. },
  727. watch: {
  728. 'form.produceRoutingId': {
  729. handler(val) {
  730. this.getProduceTaskList();
  731. }
  732. }
  733. }
  734. };
  735. </script>
  736. <style lang="scss" scoped>
  737. .basic-details-title {
  738. margin: 10px 0;
  739. }
  740. .add-product {
  741. width: 100%;
  742. display: flex;
  743. align-items: center;
  744. justify-content: flex-end;
  745. font-size: 30px;
  746. color: #1890ff;
  747. margin: 10px 0;
  748. cursor: pointer;
  749. }
  750. .create-form .el-form-item {
  751. margin-bottom: 15px !important;
  752. }
  753. </style>