noUpload.vue 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751
  1. <template>
  2. <el-dialog
  3. title="导入"
  4. :visible.sync="visible"
  5. width="85%"
  6. v-dialogDrag
  7. :append-to-body="true"
  8. :close-on-click-modal="false"
  9. :before-close="closeDialog"
  10. >
  11. <!-- 列设置-->
  12. <el-dialog title="提示" :visible.sync="showSetting" width="700px" v-dialogDrag append-to-body>
  13. <template slot="title">
  14. <div class="avue-crud__dialog__header">
  15. <span class="el-dialog__title">
  16. <span
  17. style="display:inline-block;width:3px;height:20px;margin-right:5px; float: left;margin-top:2px"></span>
  18. </span>
  19. </div>
  20. </template>
  21. <div>配置排序列数据(拖动调整顺序)</div>
  22. <div style="margin-left: 17px">
  23. <el-checkbox
  24. v-model="allCheck"
  25. label="全选"
  26. @change="allChecked"
  27. ></el-checkbox>
  28. </div>
  29. <div style="padding: 4px; display: flex; justify-content: center">
  30. <draggable
  31. v-model="setRowList"
  32. group="site"
  33. animation="300"
  34. @start="onStart"
  35. @end="onEnd"
  36. handle=".indraggable"
  37. >
  38. <transition-group>
  39. <div
  40. v-for="item in setRowList"
  41. :key="item.surface"
  42. class="listStyle"
  43. >
  44. <div style="width: 500px" class="indraggable">
  45. <div class="progress" :style="{ width: item.width + 'px' }">
  46. <el-checkbox
  47. :label="item.name"
  48. v-model="item.checked"
  49. :true-label="0"
  50. :false-label="1"
  51. >{{ item.name }}
  52. </el-checkbox>
  53. </div>
  54. </div>
  55. <el-input-number
  56. v-model.number="item.width"
  57. controls-position="right"
  58. :min="1"
  59. :max="500"
  60. size="mini"
  61. ></el-input-number>
  62. </div>
  63. </transition-group>
  64. </draggable>
  65. </div>
  66. <span slot="footer" class="dialog-footer">
  67. <el-button @click="showSetting = false">取 消</el-button>
  68. <el-button @click="delRow" type="danger">重 置</el-button>
  69. <el-button type="primary" @click="save()">确 定</el-button>
  70. </span>
  71. </el-dialog>
  72. <div style="margin: 0 10px;float: right">
  73. <el-button
  74. icon="el-icon-setting"
  75. size="mini"
  76. circle
  77. @click="showSetting = !showSetting"
  78. ></el-button>
  79. </div>
  80. <el-table
  81. ref="table"
  82. :data="dataList"
  83. tooltip-effect="dark"
  84. stripe
  85. v-loading="loading"
  86. @selection-change="handleSelection"
  87. :height="tableHeight"
  88. >
  89. <el-table-column type="selection" width="50" align="center" fixed/>
  90. <el-table-column
  91. label="序号"
  92. type="index"
  93. width="50"
  94. fixed
  95. align="center"
  96. />
  97. <el-table-column
  98. v-for="(item, index) in getRowList"
  99. :key="index"
  100. :label="item.name"
  101. :width="item.width"
  102. :prop="item.label"
  103. align="center"
  104. :fixed="item.fixed"
  105. sortable
  106. >
  107. <template slot-scope="scope">
  108. <span v-if="item.label == 'fBsdate'">
  109. <el-date-picker
  110. v-model="scope.row.fBsdate"
  111. type="date"
  112. style="width: 100%"
  113. value-format="timestamp"
  114. placeholder="入库日期"
  115. @change="dateSelected(scope,'fBsdate')"
  116. >
  117. </el-date-picker>
  118. </span>
  119. <span v-else-if="item.label == 'fGoodsid'">
  120. <el-select
  121. filterable
  122. v-model="scope.row.fGoodsid"
  123. style="width: 100%"
  124. placeholder="请选择品名"
  125. @change="dateSelected(scope,'fGoodsid')"
  126. >
  127. <el-option
  128. v-for="(item, index) in goodsOptions"
  129. :key="index.fId"
  130. :label="item.fName"
  131. :value="item.fId"
  132. ></el-option>
  133. </el-select>
  134. </span>
  135. <span v-else-if="item.label == 'fBusinessType'">
  136. <el-select
  137. filterable
  138. v-model="scope.row.fBusinessType"
  139. style="width: 100%"
  140. placeholder="请选择商品属性"
  141. @change="dateSelected(scope,'fBusinessType')"
  142. >
  143. <el-option
  144. v-for="(item, index) in fStorageTypeOptions"
  145. :key="index.dictValue"
  146. :label="item.dictLabel"
  147. :value="item.dictValue"
  148. />
  149. </el-select>
  150. </span>
  151. <span v-else-if="item.label == 'fMarks'">
  152. <el-input
  153. v-model="scope.row.fMarks"
  154. style="width: 100%"
  155. placeholder="请填写属性描述"
  156. @change="dateSelected(scope,'fMarks')"
  157. />
  158. </span>
  159. <span v-else-if="item.label == 'fWarehouseInformation'">
  160. <el-input
  161. placeholder="请选择"
  162. v-model="scope.row.fWarehouseInformation"
  163. @focus="getTreeselect(scope)"
  164. >
  165. </el-input>
  166. </span>
  167. <span v-else-if="item.label == 'fQty'">
  168. <el-input
  169. v-input-limit="0"
  170. v-model.number="scope.row.fQty"
  171. style="width: 100%"
  172. placeholder="件数"
  173. @change="dateSelected(scope,'fQty')"
  174. />
  175. </span>
  176. <span v-else-if="item.label == 'fGrossweight'">
  177. <el-input
  178. v-model.number="scope.row.fGrossweight"
  179. v-input-limit="2"
  180. style="width: 100%"
  181. placeholder="毛重"
  182. @change="dateSelected(scope,'fGrossweight')"
  183. />
  184. </span>
  185. <span v-else-if="item.label == 'fNetweight'">
  186. <el-input
  187. v-model.number="scope.row.fNetweight"
  188. v-input-limit="2"
  189. style="width: 100%"
  190. placeholder="净重"
  191. @change="dateSelected(scope,'fNetweight')"
  192. />
  193. </span>
  194. <span v-else-if="item.label == 'fPackagespecs'">
  195. <el-input
  196. v-model="scope.row.fPackagespecs"
  197. style="width: 100%"
  198. placeholder="包装规格"
  199. />
  200. </span>
  201. <!-- <span v-else-if="item.label == 'fCntrno'">-->
  202. <!-- <el-input-->
  203. <!-- v-model="scope.row.fCntrno"-->
  204. <!-- style="width: 100%"-->
  205. <!-- placeholder="箱号"-->
  206. <!-- v-Alphabet-->
  207. <!-- @change="unRepeat(scope.row.fCntrno, scope.$index)"-->
  208. <!-- />-->
  209. <!-- </span>-->
  210. <span v-else-if="item.label == 'fTruckno'">
  211. <el-input
  212. v-model="scope.row.fTruckno"
  213. style="width: 100%"
  214. placeholder="车号"
  215. v-Alphabet
  216. />
  217. </span>
  218. <span v-else>{{ scope.row[item.label] }}</span>
  219. </template>
  220. </el-table-column>
  221. <el-table-column
  222. label="操作"
  223. width="80px"
  224. fixed="right">
  225. <template slot-scope="{row, $index}">
  226. <el-button
  227. @click.native.prevent="deleteRow($index)"
  228. size="small"
  229. >移除
  230. </el-button>
  231. </template>
  232. </el-table-column>
  233. </el-table>
  234. <el-dialog
  235. title="选择库位"
  236. :data="treeselectList"
  237. :visible.sync="choiceWarehouse"
  238. width="30%"
  239. :close-on-click-modal="false"
  240. append-to-body
  241. >
  242. <treeselect
  243. v-model="treeselectList.fWarehouselocid"
  244. @select="getAlltree"
  245. :options="fWarehouseidOptions"
  246. :show-count="true"
  247. :disable-branch-nodes="true"
  248. placeholder="请选择归属库区"
  249. />
  250. <span slot="footer" class="dialog-footer">
  251. <el-button @click="choiceWarehouse = false">取 消</el-button>
  252. <el-button type="primary" @click="confirm">确 定</el-button>
  253. </span>
  254. </el-dialog>
  255. <span slot="footer" class="dialog-footer">
  256. <el-button @click="visible = false" :loading="buttonLoading">取 消</el-button>
  257. <el-button type="primary" @click="importData" :loading="buttonLoading">确 定</el-button>
  258. </span>
  259. </el-dialog>
  260. </template>
  261. <script>
  262. import Cookies from "js-cookie";
  263. import {addSet, resetModule, select} from '@/api/system/set';
  264. import draggable from "vuedraggable";
  265. import {getToken} from "@/utils/auth";
  266. import {listGoods} from "@/api/basicdata/goods";
  267. import {treeselect} from "@/api/basicdata/warehouse";
  268. import {getCrawler} from "@/api/warehouseBusiness/warehouseInStock"
  269. import axios from "axios";
  270. import Treeselect from "@riophae/vue-treeselect";
  271. export default {
  272. name: "noUpload",
  273. components: {
  274. draggable,
  275. Treeselect
  276. },
  277. props: {
  278. oldList: {
  279. type: Array,
  280. default: []
  281. },
  282. form: {
  283. type: Object
  284. },
  285. },
  286. data() {
  287. return {
  288. visible: false,
  289. dataList: [],
  290. loading: false,
  291. buttonLoading: false,
  292. tableHeight: '200',
  293. selection: [],
  294. goodsOptions: [],
  295. fStorageTypeOptions: [],
  296. fWarehouseidOptions: [],
  297. treeselectList: {
  298. fWarehouselocid: null,
  299. },
  300. choiceWarehouse: false,
  301. TreeIndex: null,
  302. bigDataToken: null,
  303. page: {
  304. pageNum: 1,
  305. pageSize: 10,
  306. total: 0,
  307. },
  308. // 设置列开关
  309. showSetting: false,
  310. setRowList: [],
  311. getRowList: [],
  312. showfCustomno: null,
  313. //自定义列宽
  314. allCheck: false,
  315. drag: false,
  316. tableDate: [
  317. {
  318. surface: "1",
  319. label: "fBsdate",
  320. name: "入库日期",
  321. checked: 0,
  322. width: 160,
  323. },
  324. {
  325. surface: "2",
  326. label: "fGoodsid",
  327. name: "品名",
  328. checked: 0,
  329. width: 100,
  330. },
  331. {
  332. surface: "3",
  333. label: "fBusinessType",
  334. name: "货物属性",
  335. checked: 0,
  336. width: 100,
  337. },
  338. {
  339. surface: "4",
  340. label: "fMarks",
  341. name: "属性详情",
  342. checked: 0,
  343. width: 100,
  344. },
  345. {
  346. surface: "5",
  347. label: "fWarehouseInformation",
  348. name: "库区",
  349. checked: 0,
  350. width: 100,
  351. },
  352. {
  353. surface: "6",
  354. label: "fQty",
  355. name: "件数",
  356. checked: 0,
  357. width: 100,
  358. },
  359. {
  360. surface: "7",
  361. label: "fGrossweight",
  362. name: "毛重(kg)",
  363. checked: 0,
  364. width: 130,
  365. },
  366. {
  367. surface: "8",
  368. label: "fNetweight",
  369. name: "净重(kg)",
  370. checked: 0,
  371. width: 130,
  372. },
  373. {
  374. surface: "9",
  375. label: "fPackagespecs",
  376. name: "包装规格",
  377. checked: 0,
  378. width: 100,
  379. },
  380. {
  381. surface: "10",
  382. label: "fCntrno",
  383. name: "箱号",
  384. checked: 0,
  385. width: 100,
  386. },
  387. {
  388. surface: "11",
  389. label: "fSealno",
  390. name: "封号",
  391. checked: 0,
  392. width: 180,
  393. },
  394. {
  395. surface: "12",
  396. label: "fTruckno",
  397. name: "车号",
  398. checked: 0,
  399. width: 100,
  400. },
  401. ],
  402. }
  403. },
  404. created() {
  405. this.setRowList = this.tableDate;
  406. this.getRowList = this.tableDate;
  407. this.getRow();
  408. listGoods({fStatus: 0, delFlag: 0}).then((response) => {
  409. this.goodsOptions = response.rows;
  410. });
  411. treeselect(this.form.fWarehouseid).then((response) => {
  412. this.fWarehouseidOptions = response.data;
  413. });
  414. this.getDicts("storage_type").then((response) => {
  415. this.fStorageTypeOptions = response.data;
  416. });
  417. },
  418. mounted() {
  419. this.$nextTick(() => {
  420. // 监听浏览器高度变化,改变表格高度
  421. window.onresize = () => {
  422. this.tableHeight = window.innerHeight - this.$refs.table.$el.offsetTop - 200
  423. }
  424. })
  425. },
  426. methods: {
  427. // 打开
  428. async init() {
  429. this.dataList = []
  430. await this.getConfigKey("bigData.token").then((response) => {
  431. this.bigDataToken = response.msg;
  432. });
  433. this.getList()
  434. this.visible = true;
  435. },
  436. // 关闭弹窗
  437. closeDialog() {
  438. this.visible = false;
  439. this.detailList = []
  440. this.$emit("closeDialog")
  441. },
  442. getList() {
  443. this.loading = true;
  444. axios({
  445. // url: 'http://192.168.1.114:9002/crawler/' + this.form.fMblno,
  446. url: 'https://crawler.tubaosoft.com/prod-api/crawler/data',
  447. method: 'post',
  448. data: {
  449. token: this.bigDataToken,
  450. param: this.form.fMblno,
  451. size: this.page.pageSize,
  452. page: this.page.pageNum
  453. },
  454. headers: {
  455. "Content-Type":'application/json'
  456. }
  457. }
  458. ).then(res => {
  459. if (res.data.code == 500) {
  460. return this.$message.error(res.data.msg)
  461. }
  462. //SEAL_NO 铅封号
  463. //CONTAINER_NO 箱号
  464. //CARGO_QUANTITY 件数
  465. //TOTAL_GROSS_WEIGHT 重量
  466. //BILL_OF_LADING_NO 提单号
  467. if (res.data.data[1].data.length == 0) {
  468. // XH 箱号
  469. // QFH1 铅封号
  470. // MZ 箱整重
  471. //TDH 提单号
  472. res.data.data[0].data.map(e => {
  473. e.fMblno = e.TDH;
  474. e.fSealno = e.QFH1;
  475. e.fGrossweight = e.MZ;
  476. e.fNetweight = e.MZ;
  477. e.fCntrno = e.XH;
  478. })
  479. // if (res.data.data[0].data.length == 1) {
  480. // res.data.data[0].data.map(e => {
  481. // e.fGrossweight = e.MZ;
  482. // e.fNetweight = e.MZ;
  483. // })
  484. // } else {
  485. // res.data.data[0].data.map(e => {
  486. // e.fGrossweight = '';
  487. // e.fNetweight = '';
  488. // })
  489. // }
  490. this.dataList = res.data.data[0].data
  491. } else {
  492. res.data.data[1].data.map(e => {
  493. e.fMblno = e.BILL_OF_LADING_NO;
  494. e.fSealno = e.SEAL_NO;
  495. // e.fQty = e.CARGO_QUANTITY;
  496. // e.fGrossweight = e.TOTAL_GROSS_WEIGHT;
  497. // e.fNetweight = e.TOTAL_GROSS_WEIGHT;
  498. e.fCntrno = e.CONTAINER_NO;
  499. })
  500. if (res.data.data[1].data.length == 1) {
  501. res.data.data[1].data.map(e => {
  502. e.fQty = e.CARGO_QUANTITY;
  503. e.fGrossweight = e.TOTAL_GROSS_WEIGHT;
  504. e.fNetweight = e.TOTAL_GROSS_WEIGHT;
  505. })
  506. } else {
  507. res.data.data[1].data.map(e => {
  508. e.fQty = '';
  509. e.fGrossweight = '';
  510. e.fNetweight = '';
  511. })
  512. }
  513. this.dataList = res.data.data[1].data
  514. }
  515. if (this.dataList.length > 0) {
  516. this.dataList.map(e => {
  517. this.$set(e, 'fBsdate', this.form.fBsdate);
  518. this.$set(e, 'fGoodsid', this.form.fGoodsid);
  519. this.$set(e, 'fBillstatus', 10)
  520. })
  521. }
  522. setTimeout(() => {
  523. this.tableHeight = window.innerHeight - this.$refs.table.$el.offsetTop - 200
  524. }, 300)
  525. this.loading = false;
  526. }).finally(() => {
  527. this.loading = false;
  528. })
  529. },
  530. handleSelection(list) {
  531. this.selection = list
  532. },
  533. dateSelected(scope, name) {
  534. if (name === 'fBsdate') {
  535. this.dataList.forEach(item => {
  536. if (!item.fBsdate) this.$set(item, 'fBsdate', scope.row.fBsdate)
  537. })
  538. } else if (name === 'fGoodsid') {
  539. this.dataList.forEach(item => {
  540. if (!item.fGoodsid) this.$set(item, 'fGoodsid', scope.row.fGoodsid)
  541. })
  542. } else if (name === 'fBusinessType') {
  543. this.dataList.forEach(item => {
  544. if (!item.fBusinessType) this.$set(item, 'fBusinessType', scope.row.fBusinessType)
  545. })
  546. } else if (name === 'fMarks') {
  547. this.dataList.forEach(item => {
  548. if (!item.fMarks) this.$set(item, 'fMarks', scope.row.fMarks)
  549. })
  550. } else if (name === 'fQty') {
  551. this.dataList.forEach(item => {
  552. if (!item.fQty) this.$set(item, 'fQty', scope.row.fQty)
  553. })
  554. } else if (name === 'fGrossweight') {
  555. this.dataList.forEach(item => {
  556. if (!item.fGrossweight) this.$set(item, 'fGrossweight', scope.row.fGrossweight)
  557. })
  558. } else if (name === 'fNetweight') {
  559. this.dataList.forEach(item => {
  560. if (!item.fNetweight) this.$set(item, 'fNetweight', scope.row.fNetweight)
  561. })
  562. }
  563. },
  564. getTreeselect(row) {
  565. this.treeselectList.fWarehouselocid = row.row.fWarehouselocid
  566. ? row.row.fWarehouselocid
  567. : null;
  568. this.TreeIndex = row.$index;
  569. this.choiceWarehouse = true;
  570. },
  571. getAlltree(tree) {
  572. this.information = tree.fWarehouseInformation;
  573. },
  574. confirm() {
  575. this.$set(
  576. this.dataList[this.TreeIndex],
  577. "fWarehouseInformation",
  578. this.information
  579. );
  580. this.$set(
  581. this.dataList[this.TreeIndex],
  582. "fWarehouselocid",
  583. this.treeselectList.fWarehouselocid
  584. );
  585. this.choiceWarehouse = false;
  586. },
  587. unRepeat(row, index) {
  588. this.oldList.map((e) => {
  589. if (row == e.fCntrno) {
  590. this.dataList[index].fCntrno = null;
  591. this.$message.error("该箱号和明细表上的存在重复");
  592. }
  593. });
  594. this.dataList.map((e, i) => {
  595. if (index != i) {
  596. if (row && row == e.fCntrno) {
  597. this.dataList[index].fCntrno = null;
  598. this.$message.error("该箱号存在重复");
  599. }
  600. }
  601. });
  602. },
  603. importData() {
  604. if (this.dataList.length == 0) {
  605. return this.$message.error('表格未有数据,请关闭')
  606. }
  607. for (let item in this.dataList) {
  608. if (this.dataList[item].fBsdate == null) {
  609. return this.$message.error(
  610. "请选择第" + (Number(item) + 1) + "行的入库日期"
  611. );
  612. }
  613. if (this.dataList[item].fGoodsid == null) {
  614. return this.$message.error(
  615. "请选择第" + (Number(item) + 1) + "行的品名"
  616. );
  617. }
  618. if (this.dataList[item].fBusinessType == null) {
  619. return this.$message.error(
  620. "请选择第" + (Number(item) + 1) + "行的货物属性"
  621. );
  622. }
  623. if (this.dataList[item].fMarks == null) {
  624. return this.$message.error(
  625. "请输入第" + (Number(item) + 1) + "行的属性详情"
  626. );
  627. }
  628. if (this.dataList[item].fQty == null) {
  629. return this.$message.error(
  630. "请输入第" + (Number(item) + 1) + "行的件数"
  631. );
  632. }
  633. if (this.dataList[item].fGrossweight == null) {
  634. return this.$message.error(
  635. "请输入第" + (Number(item) + 1) + "行的毛重"
  636. );
  637. }
  638. if (this.dataList[item].fNetweight == null) {
  639. return this.$message.error(
  640. "请输入第" + (Number(item) + 1) + "行的净重"
  641. );
  642. }
  643. }
  644. this.buttonLoading = true;
  645. axios({
  646. url: 'https://crawler.tubaosoft.com/prod-api/crawler/charge',
  647. method: 'post',
  648. data: {
  649. token: this.bigDataToken,
  650. param: this.form.fMblno,
  651. },
  652. }).then(res => {
  653. if (res.data.code == 500) {
  654. return this.$message.error(res.data.msg)
  655. }
  656. this.$emit('addDetailList', this.dataList)
  657. this.buttonLoading = false;
  658. this.visible = false;
  659. }).finally(() => {
  660. this.buttonLoading = false;
  661. })
  662. },
  663. deleteRow(index) {
  664. this.dataList.splice(index, 1)
  665. },
  666. //列设置全选
  667. allChecked() {
  668. if (this.allCheck == true) {
  669. this.setRowList.map((e) => {
  670. return (e.checked = 0);
  671. });
  672. } else {
  673. this.setRowList.map((e) => {
  674. return (e.checked = 1);
  675. });
  676. }
  677. },
  678. //开始拖拽事件
  679. onStart() {
  680. this.drag = true;
  681. },
  682. //拖拽结束事件
  683. onEnd() {
  684. this.drag = false;
  685. },
  686. //重置列表
  687. delRow() {
  688. this.data = {
  689. tableName: "单号导入",
  690. userId: Cookies.get("userName"),
  691. };
  692. resetModule(this.data).then((res) => {
  693. if (res.code == 200) {
  694. this.showSetting = false;
  695. this.setRowList = this.tableDate;
  696. console.log(this.setRowList)
  697. this.getRowList = this.tableDate;
  698. }
  699. });
  700. },
  701. //保存列设置
  702. save() {
  703. this.showSetting = false;
  704. this.data = {
  705. tableName: "单号导入",
  706. userId: Cookies.get("userName"),
  707. sysTableSetList: this.setRowList,
  708. };
  709. addSet(this.data).then((res) => {
  710. this.getRowList = this.setRowList.filter((e) => e.checked == 0);
  711. });
  712. },
  713. //查询列数据
  714. getRow() {
  715. let that = this;
  716. this.data = {
  717. tableName: "单号导入",
  718. userId: Cookies.get("userName"),
  719. };
  720. select(this.data).then((res) => {
  721. if (res.data.length != 0) {
  722. this.getRowList = res.data.filter((e) => e.checked == 0);
  723. this.setRowList = res.data;
  724. this.setRowList = this.setRowList.reduce((res, item) => {
  725. res.push({
  726. surface: item.surface,
  727. label: item.label,
  728. name: item.name,
  729. checked: item.checked,
  730. width: item.width,
  731. fixed: item.fixed,
  732. });
  733. return res;
  734. }, []);
  735. }
  736. });
  737. },
  738. },
  739. }
  740. </script>
  741. <style scoped>
  742. </style>