index.vue 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770
  1. <template>
  2. <div class="my-container">
  3. <transition-group name="fade" style="position: relative;width: 100%;display: flex;">
  4. <div class="bill-main" v-show="isShow==='ckb'" key="item">
  5. <module-view :propConfig="config" ref="moduleView" @pagination="getDataList" @search="getDataList"
  6. @resert="getDataList" @detail="openEdit" @onRefresh="onRefresh">
  7. </module-view>
  8. <!-- 注册/编辑弹窗 -->
  9. <el-dialog :title="popTitle+'仓库'" :visible.sync="dialogFormVisible" width="30%">
  10. <by-form :propConfig="addConfig" ref="addFormId"></by-form>
  11. <div slot="footer" class="dialog-footer">
  12. <el-button @click="dialogFormVisible = false">取 消</el-button>
  13. <el-button type="primary" @click="confirm">确 定</el-button>
  14. </div>
  15. </el-dialog>
  16. </div>
  17. <div class="bill-main" v-show="isShow==='cwb'" key="item2">
  18. <module-view :propConfig="config2" ref="moduleView2" @clickHandle="clickHandle2" @detail="openEdit2"
  19. @pagination="getDataList2" @search="getDataList2" @resert="getDataList2" @onRefresh="onRefresh2">
  20. </module-view>
  21. <!-- 注册/编辑弹窗 -->
  22. <el-dialog :title="popTitle+'仓位'" :visible.sync="dialogFormVisible2" width="30%">
  23. <by-form :propConfig="addConfig2" ref="addFormId2">
  24. <template v-slot:organizationName="{value}">
  25. <el-input placeholder="请选择所属机构名称" size="small" v-model="value.organizationName"
  26. class="input-organizationName" :readonly="true">
  27. <el-button slot="append" icon="el-icon-more" @click="handleSupplier"></el-button>
  28. </el-input>
  29. </template>
  30. <template v-slot:stock="{value}">
  31. <vxe-input v-if="isAdd" v-model="value.stock" style="width: 100%;" size="small" type="text"></vxe-input>
  32. <span v-else>{{ value.stock }}</span>
  33. </template>
  34. </by-form>
  35. <div slot="footer" class="dialog-footer">
  36. <el-button @click="dialogFormVisible2 = false">取 消</el-button>
  37. <el-button type="primary" @click="confirm2">确 定</el-button>
  38. </div>
  39. </el-dialog>
  40. </div>
  41. </transition-group>
  42. <supplier-modal ref="supplierModal" @confirm="confirmSupplier" :zIndex="9999" />
  43. </div>
  44. </template>
  45. <script lang="ts">
  46. import { Component, Prop, Vue, Watch } from "vue-property-decorator";
  47. import api from "@/api/currency";
  48. @Component
  49. export default class Depots extends Vue {
  50. isShow : any = 'ckb'
  51. timeNum = 0;
  52. timer : any = null
  53. timeNum2 = 0;
  54. timer2 : any = null
  55. popTitle : any = ''
  56. tableData : any = {}
  57. dialogFormVisible : boolean = false
  58. dialogFormVisible2 : boolean = false
  59. isAdd : any = false
  60. config : any = {
  61. attr:{
  62. calculateH:true
  63. },
  64. search: {
  65. attr: {
  66. size: 'mini'
  67. },
  68. columns: [
  69. [{
  70. span: 6,
  71. label: '仓库名称',
  72. prop: 'name',
  73. component: 'by-input',
  74. labelWidth: '70px',
  75. compConfig: {
  76. attr: {
  77. placeholder: '请输入名称',
  78. clearable: true
  79. },
  80. },
  81. }, {
  82. span: 6,
  83. label: '地址',
  84. prop: 'address',
  85. component: 'by-input',
  86. labelWidth: '70px',
  87. compConfig: {
  88. attr: {
  89. placeholder: '请输入地址',
  90. clearable: true
  91. }
  92. }
  93. },
  94. ]
  95. ]
  96. },
  97. tool: {
  98. tools: {
  99. search: true,
  100. refresh: true
  101. },
  102. customTools: [
  103. {
  104. name: '注册', icon: 'el-icon-plus', audit: [''], event: {
  105. click: () => {
  106. (this as any).onAdd();
  107. }
  108. }
  109. }
  110. ]
  111. },
  112. table: {
  113. attr: {
  114. size: 'mini',
  115. align: 'left',
  116. },
  117. columns: [{
  118. title: '名称',
  119. field: 'name',
  120. isDetail: true,
  121. },
  122. {
  123. title: '第三方系统名称',
  124. field: 'financeType',
  125. },
  126. {
  127. title: '第三方仓库编码',
  128. field: 'financeStorehouseNo',
  129. },
  130. {
  131. title: '第三方仓库名称',
  132. field: 'financeStorehouseName',
  133. },
  134. {
  135. title: '地址',
  136. field: 'address',
  137. },
  138. {
  139. width: 100,
  140. title: '仓位',
  141. action: true,
  142. plugins: [{
  143. icon: 'el-icon-edit',
  144. name: '查看',
  145. audit: '',
  146. event: {
  147. click: (item : any) => {
  148. (this as any).changeTab(item)
  149. }
  150. }
  151. }]
  152. }, {
  153. width: 120,
  154. title: '操作',
  155. action: true,
  156. plugins: [{
  157. icon: 'el-icon-edit',
  158. name: '编辑',
  159. audit: '',
  160. event: {
  161. click: (item : any) => {
  162. (this as any).openEdit(item)
  163. }
  164. }
  165. }, {
  166. name: '删除',
  167. event: {
  168. click: (item : any) => (this as any).doDelete2(item, 'maindataStorehouse')
  169. }
  170. }]
  171. }]
  172. },
  173. }
  174. config2 : any = {
  175. attr:{
  176. calculateH:true
  177. },
  178. search: {
  179. attr: {
  180. size: 'mini'
  181. },
  182. columns: [
  183. [
  184. {
  185. span: 6,
  186. label: '名称',
  187. prop: 'name',
  188. component: 'by-input',
  189. compConfig: {
  190. attr: {
  191. placeholder: '请输入名称',
  192. clearable: true
  193. },
  194. },
  195. },
  196. {
  197. span: 6,
  198. label: '所属机构名称',
  199. prop: 'organizationName',
  200. component: 'by-input',
  201. compConfig: {
  202. attr: {
  203. placeholder: '请输入所属机构名称',
  204. clearable: true
  205. }
  206. }
  207. },
  208. {
  209. span: 6,
  210. label: '库存',
  211. prop: 'stock',
  212. component: 'by-input',
  213. compConfig: {
  214. attr: {
  215. placeholder: '请输入库存',
  216. clearable: true
  217. },
  218. },
  219. },
  220. {
  221. span: 6,
  222. label: '库存体积',
  223. prop: 'stockVolume',
  224. component: 'by-input',
  225. compConfig: {
  226. attr: {
  227. placeholder: '请输入库存体积',
  228. clearable: true
  229. },
  230. },
  231. },
  232. ],
  233. [
  234. {
  235. span: 6,
  236. label: '库存上限数量',
  237. prop: 'maxStockNumber',
  238. component: 'by-input',
  239. compConfig: {
  240. attr: {
  241. placeholder: '请输入库存上限数量',
  242. clearable: true
  243. }
  244. }
  245. },
  246. {
  247. span: 6,
  248. label: '库存体积上限',
  249. prop: 'maxStockVolume',
  250. component: 'by-input',
  251. compConfig: {
  252. attr: {
  253. placeholder: '请输入库存体积上限',
  254. clearable: true
  255. }
  256. }
  257. },
  258. ]
  259. ]
  260. },
  261. tool: {
  262. tools: {
  263. return: true,
  264. search: true,
  265. refresh: true
  266. },
  267. customTools: [
  268. {
  269. name: '注册', icon: 'el-icon-plus', audit: [''], event: {
  270. click: () => {
  271. (this as any).onAdd2();
  272. }
  273. }
  274. },
  275. {
  276. name: '删除', icon: 'el-icon-delete', audit: [''], event: {
  277. click: () => {
  278. (this as any).onDelete('moduleView2', 'maindataStoringLocation')
  279. }
  280. }
  281. },
  282. ]
  283. },
  284. table: {
  285. attr: {
  286. size: 'mini',
  287. seq: true,
  288. align: 'left',
  289. checkbox: true,
  290. },
  291. columns: [{
  292. width: 300,
  293. title: '仓位名称',
  294. field: 'name',
  295. isDetail: true,
  296. },
  297. {
  298. width: 250,
  299. title: '仓库名称',
  300. field: 'ckName',
  301. },
  302. {
  303. width: 200,
  304. title: '所属机构名称',
  305. field: 'organizationName',
  306. },
  307. {
  308. width: 150,
  309. title: '库存',
  310. field: 'stock'
  311. },
  312. {
  313. width: 150,
  314. title: '库存体积',
  315. field: 'stockVolume'
  316. },
  317. {
  318. width: 150,
  319. title: '库存数量上限',
  320. field: 'maxStockNumber'
  321. },
  322. {
  323. width: 150,
  324. title: '库存体积上限',
  325. field: 'maxStockVolume'
  326. }, {
  327. width: 120,
  328. title: '操作',
  329. action: true,
  330. plugins: [{
  331. icon: 'el-icon-edit',
  332. name: '编辑',
  333. audit: '',
  334. event: {
  335. click: (item : any) => {
  336. (this as any).openEdit2(item)
  337. }
  338. }
  339. }, {
  340. name: '删除',
  341. event: {
  342. click: (item : any) => (this as any).doDelete3(item, 'maindataStoringLocation')
  343. }
  344. }]
  345. }]
  346. },
  347. }
  348. addConfig = {
  349. attr: {
  350. size: 'small',
  351. rules: {
  352. name: [{
  353. required: true, message: '请输入名称', trigger: 'blur'
  354. }],
  355. address: [{
  356. required: true, message: '请输入地址', trigger: 'blur'
  357. }]
  358. }
  359. },
  360. columns: [
  361. [
  362. {
  363. span: 23,
  364. labelWidth: '110px',
  365. label: '名称',
  366. prop: 'name',
  367. component: 'by-input',
  368. },
  369. {
  370. span: 23,
  371. labelWidth: '110px',
  372. label: '第三方系统名称',
  373. prop: 'financeType',
  374. component: 'by-input',
  375. },
  376. {
  377. span: 23,
  378. labelWidth: '110px',
  379. label: '第三方仓库编码',
  380. prop: 'financeStorehouseNo',
  381. component: 'by-input',
  382. },
  383. {
  384. span: 23,
  385. labelWidth: '110px',
  386. label: '第三方仓库名称',
  387. prop: 'financeStorehouseName',
  388. component: 'by-input',
  389. },
  390. {
  391. span: 23,
  392. labelWidth: '110px',
  393. label: '地址',
  394. prop: 'address',
  395. component: 'by-input',
  396. },
  397. ]
  398. ]
  399. }
  400. addConfig2 = {
  401. attr: {
  402. size: 'small',
  403. rules: {
  404. name: [{
  405. required: true, message: '请输入名称', trigger: 'blur'
  406. }],
  407. organizationName: [{
  408. required: true, message: '请输入所属机构名称', trigger: 'blur'
  409. }],
  410. stock: [{
  411. required: true, message: '请输入库存', trigger: 'blur'
  412. }]
  413. }
  414. },
  415. columns: [
  416. [
  417. {
  418. labelWidth: '110px',
  419. span: 23,
  420. label: '名称',
  421. prop: 'name',
  422. component: 'by-input',
  423. },
  424. {
  425. labelWidth: '110px',
  426. span: 23,
  427. label: '所属机构名称',
  428. prop: 'organizationName',
  429. slot: true,
  430. },
  431. {
  432. labelWidth: '110px',
  433. span: 23,
  434. label: '库存',
  435. prop: 'stock',
  436. slot: true
  437. },
  438. {
  439. labelWidth: '110px',
  440. span: 23,
  441. label: '库存体积',
  442. prop: 'stockVolume',
  443. component: 'by-input',
  444. },
  445. {
  446. labelWidth: '110px',
  447. span: 23,
  448. label: '库存数量上限',
  449. prop: 'maxStockNumber',
  450. component: 'by-input',
  451. },
  452. {
  453. labelWidth: '110px',
  454. span: 23,
  455. label: '库存体积上限',
  456. prop: 'maxStockVolume',
  457. component: 'by-input',
  458. },
  459. ]
  460. ]
  461. }
  462. created() {
  463. this.timer = setInterval(() => {
  464. this.getDataList()
  465. }, 500)
  466. }
  467. // 仓库确认注册/编辑
  468. confirm() {
  469. (this as any).$refs.addFormId.validate().then(() => {
  470. let query = (this as any).$refs.addFormId.getValue();
  471. this.dialogFormVisible = false;
  472. if (this.popTitle === '注册') {
  473. let loading = this.$loading({ target: '.main-container' });
  474. api.saveList(query, 'maindataStorehouse').then((res : any) => {
  475. loading.close();
  476. if (res.code === 200) {
  477. this.$message.success(this.popTitle + '成功');
  478. this.getDataList();
  479. this.$confirm('是否注册仓位', '提示', {
  480. confirmButtonText: '确定',
  481. cancelButtonText: '取消',
  482. }).then(() => {
  483. api.single({ id: res.data }, 'maindataStorehouse').then((data : any) => {
  484. this.changeTab(data.data);
  485. this.onAdd2();
  486. })
  487. }).catch(() => { });
  488. } else this.$message.error(res.msg)
  489. }).catch(() => loading.close());
  490. } else if (this.popTitle === '编辑') {
  491. let loading = this.$loading({ target: '.main-container' });
  492. api.updateList(query, 'maindataStorehouse').then((res : any) => {
  493. loading.close();
  494. if (res.code === 200) {
  495. this.$message.success(this.popTitle + '成功');
  496. this.getDataList();
  497. } else this.$message.error(res.msg)
  498. }).catch(() => loading.close());
  499. }
  500. })
  501. }
  502. // 仓位确认注册/编辑
  503. confirm2() {
  504. (this as any).$refs.addFormId2.validate().then(() => {
  505. let query = (this as any).$refs.addFormId2.getValue();
  506. console.log('表单参数 ==> ', query);
  507. query.storehouseId = this.tableData.id;
  508. query.idDelete = 0;
  509. this.dialogFormVisible2 = false;
  510. if (this.popTitle === '注册') {
  511. let loading = this.$loading({ target: '.main-container' });
  512. api.saveList(query, 'maindataStoringLocation').then((res : any) => {
  513. loading.close();
  514. if (res.code === 200) {
  515. this.$message.success(this.popTitle + '成功');
  516. this.getOneself(query.storehouseId);
  517. } else this.$message.error(res.msg)
  518. }).catch(() => loading.close());
  519. } else if (this.popTitle === '编辑') {
  520. let loading = this.$loading({ target: '.main-container' });
  521. api.updateList(query, 'maindataStoringLocation').then((res : any) => {
  522. loading.close();
  523. if (res.code === 200) {
  524. this.$message.success(this.popTitle + '成功');
  525. this.getOneself(query.storehouseId);
  526. } else this.$message.error(res.msg)
  527. }).catch(() => loading.close());
  528. }
  529. })
  530. }
  531. // 通过id拿到当条数据
  532. getOneself(e : any) {
  533. api.single({ id: e }, 'maindataStorehouse').then((res : any) => {
  534. if (res.code === 200) {
  535. this.tableData = res.data;
  536. this.tableData.subList.map((v : any) => {
  537. v.ckName = this.tableData.name;
  538. });
  539. (this.$refs.moduleView2 as any).setTableValue(this.tableData.subList);
  540. }
  541. })
  542. }
  543. // 获取仓库列表数据
  544. getDataList() {
  545. if (!this.$refs.moduleView) {
  546. if (this.timeNum > 5) {
  547. clearInterval(this.timer)
  548. }
  549. this.timeNum++;
  550. return
  551. }
  552. clearInterval(this.timer)
  553. let query = (this.$refs.moduleView as any).getQuery();
  554. let loading = this.$loading({ target: '.main-container' });
  555. api.pageList(query, 'maindataStorehouse').then((res : any) => {
  556. loading.close();
  557. if (res.code === 200) {
  558. (this.$refs.moduleView as any).setTableValue(res.data.records);
  559. let page = {
  560. pageNo: res.data.current, //当前页
  561. pageSize: res.data.size, //每页条数
  562. total: res.data.total //总条数
  563. };
  564. (this.$refs.moduleView as any).setPage(page)
  565. } else this.$message.error(res.msg)
  566. }).catch(() => loading.close());
  567. }
  568. // 获取仓位列表数据
  569. getDataList2() {
  570. if (!this.$refs.moduleView2) {
  571. if (this.timeNum2 > 5) {
  572. clearInterval(this.timer2)
  573. }
  574. this.timeNum2++;
  575. return
  576. }
  577. clearInterval(this.timer2)
  578. let query = (this.$refs.moduleView2 as any).getQuery();
  579. console.log(query);
  580. query.storehouseId = this.tableData.id;
  581. let loading = this.$loading({ target: '.main-container' });
  582. api.pageList(query, 'maindataStoringLocation').then((res : any) => {
  583. loading.close();
  584. if (res.code === 200) {
  585. res.data.records.map((v : any) => {
  586. v.ckName = this.tableData.name;
  587. });
  588. (this.$refs.moduleView2 as any).setTableValue(res.data.records);
  589. let page = {
  590. pageNo: res.data.current, //当前页
  591. pageSize: res.data.size, //每页条数
  592. total: res.data.total //总条数
  593. };
  594. (this.$refs.moduleView2 as any).setPage(page)
  595. } else this.$message.error(res.msg)
  596. }).catch(() => loading.close());
  597. }
  598. // 工具栏方法
  599. clickHandle2(e : any) {
  600. if (e === 'onAdd') this.onAdd2();
  601. if (e === 'onReturn') this.isShow = 'ckb';
  602. }
  603. // 打开注册
  604. onAdd() {
  605. this.popTitle = '注册'
  606. this.dialogFormVisible = true;
  607. setTimeout(() => {
  608. if ((this as any).$refs.addFormId) (this as any).$refs.addFormId.setValue({});
  609. }, 0)
  610. }
  611. // 打开编辑
  612. openEdit(e : any) {
  613. this.popTitle = '编辑'
  614. this.dialogFormVisible = true;
  615. setTimeout(() => {
  616. if ((this as any).$refs.addFormId) (this as any).$refs.addFormId.setValue(e);
  617. }, 0)
  618. }
  619. // 打开注册
  620. onAdd2() {
  621. this.popTitle = '注册'
  622. this.dialogFormVisible2 = true;
  623. this.isAdd = true;
  624. setTimeout(() => {
  625. if ((this as any).$refs.addFormId2) (this as any).$refs.addFormId2.setValue({});
  626. }, 0)
  627. }
  628. // 打开编辑
  629. openEdit2(e : any) {
  630. this.popTitle = '编辑'
  631. this.dialogFormVisible2 = true;
  632. this.isAdd = false;
  633. console.log(e);
  634. setTimeout(() => {
  635. if ((this as any).$refs.addFormId2) (this as any).$refs.addFormId2.setValue(e);
  636. }, 0)
  637. }
  638. // 打开机构选择
  639. handleSupplier() {
  640. (this.$refs.supplierModal as any).setShow(true);
  641. }
  642. // 确定机构选择
  643. confirmSupplier(e : any) {
  644. if (e.length == 0) return this.$message.warning('请选择供应商!');
  645. let value : any = (this.$refs.addFormId2 as any).getValue();
  646. value.organizationName = e[0].name;
  647. value.organizationId = e[0].id;
  648. (this.$refs.addFormId2 as any).setValue(value);
  649. }
  650. // 查看仓位
  651. changeTab(item : any) {
  652. api.single({id:item.id},'maindataStorehouse').then((res:any) => {
  653. if(res.code===200){
  654. this.tableData = res.data;
  655. res.data.subList.map((v : any) => {
  656. v.ckName = res.data.name;
  657. })
  658. console.log('仓库表数据 ==> ', res.data);
  659. (this.$refs.moduleView2 as any).setTableValue(res.data.subList);
  660. this.isShow = 'cwb';
  661. }
  662. })
  663. }
  664. // 刷新仓库
  665. onRefresh() {
  666. (this as any).$refs.moduleView.clearSearch();
  667. this.getDataList();
  668. }
  669. // 刷新仓位
  670. onRefresh2() {
  671. (this as any).$refs.moduleView2.clearSearch();
  672. this.getDataList2();
  673. }
  674. // 仓库操作删除
  675. doDelete2(item : any, url : any) {
  676. this.$confirm('确定删除吗,此操作不能撤销!', '注意', {
  677. confirmButtonText: '确定',
  678. cancelButtonText: '取消',
  679. type: 'warning',
  680. center: true
  681. }).then(() => {
  682. if (item.subList.length > 0) {
  683. this.$message.warning('此仓库下有仓位,不可删除!');
  684. } else {
  685. let loading = this.$loading({ target: '.main-container' });
  686. api.deleteList({ ids: item.id }, url).then((res : any) => {
  687. loading.close();
  688. if (res.code === 200) {
  689. this.getDataList();
  690. this.$message.success('删除成功');
  691. } else this.$message.error(res.msg)
  692. }).catch(() => loading.close());
  693. }
  694. }).catch(() => this.$message.info('已取消删除'));
  695. }
  696. // 仓位工具栏删除
  697. onDelete(moduleView : any, url : any) {
  698. let selectData = (this.$refs[moduleView] as any).getSelectData()
  699. let ids = '';
  700. if (selectData.length > 0) {
  701. selectData.map((v : any) => {
  702. ids += v.id + ','
  703. })
  704. } else return this.$message.warning('请选择删除数据');
  705. ids = ids.slice(0, ids.length - 1);
  706. this.$confirm('确定删除吗,此操作不能撤销!', '注意', {
  707. confirmButtonText: '确定',
  708. cancelButtonText: '取消',
  709. type: 'warning',
  710. center: true
  711. }).then(() => {
  712. let loading = this.$loading({ target: '.main-container' });
  713. api.deleteList({ ids: ids }, url).then((res : any) => {
  714. loading.close();
  715. if (res.code === 200) {
  716. this.getDataList2();
  717. this.$message.success('删除成功');
  718. } else this.$message.error(res.msg)
  719. }).catch(() => loading.close());
  720. }).catch(() => this.$message.info('已取消删除'));
  721. }
  722. // 仓位操作删除
  723. doDelete3(item : any, url : any) {
  724. console.log('仓位操作删除:', item, url);
  725. this.$confirm('确定删除吗,此操作不能撤销!', '注意', {
  726. confirmButtonText: '确定',
  727. cancelButtonText: '取消',
  728. type: 'warning',
  729. center: true
  730. }).then(() => {
  731. let loading = this.$loading({ target: '.main-container' });
  732. api.deleteList({ ids: item.id }, url).then((res : any) => {
  733. loading.close();
  734. if (res.code === 200) {
  735. this.getDataList2();
  736. this.$message.success('删除成功');
  737. } else this.$message.error(res.msg)
  738. }).catch(() => loading.close());
  739. }).catch(() => this.$message.info('已取消删除'));
  740. }
  741. }
  742. </script>
  743. <style lang="scss" scoped>
  744. .my-container {
  745. width: 100%;
  746. box-sizing: border-box;
  747. display: flex;
  748. padding: 0 16px;
  749. height: 100%;
  750. .search-btn {
  751. width: 100%;
  752. display: flex;
  753. justify-content: flex-end;
  754. margin-bottom: 20px;
  755. }
  756. .bill-main {
  757. width: calc(100% - 16px);
  758. box-sizing: border-box;
  759. margin-left: 16px;
  760. height: 100%;
  761. }
  762. @media screen and (min-width: 1500px) {
  763. .bill-main {
  764. min-width: 1610px;
  765. }
  766. }
  767. }
  768. </style>