经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » JS/JS库/框架 » jQuery » 查看文章
vue页面交互-弹窗关闭后刷新父页面时取消选中数据展示列表里的复选框
来源:cnblogs  作者:buguge  时间:2021/2/1 11:56:12  对本文有异议

 

先看如下交互效果。 

 

 这是一个订单审核页面,通过勾选CheckBox列的checkbox选中某些行后,点击操作区“批量审核”按钮弹出审核窗口,在弹窗里审核完成,即点击“通过”或“拒绝”后,关闭弹窗,刷新订单审核页面,同时,取消此前选中的checkBox。

 

接下来说实现方式。

如下是页面结构。父窗体是TransactionReview.vue,弹框窗体是Review.vue。

 

 

TransactionReview.vue中<a-table>中定义属性事件:rowSelection="rowSelection",每行行首显示CheckBox,这让用户可以进行勾选。
同时,页面有对Review.vue的声明:<review ref="reviewForm" @ok="modalFormOk1"></review>。
这样,通过点击“批量审核”按钮弹出子窗体(Review.vue)。

 

Review.vue页面中定义了弹框下面的2个按钮:通过 和 拒绝。并为两个按钮定义了click事件,都去调用editRiskViewRefuses(status)函数。
editRiskViewRefuses(status)函数去向服务端发起异步post请求,处理完成后通过$emit关闭弹窗并执行父窗体的@ok事件。

 

@ok定义在TransactionReview.vue的<review ref="reviewForm" @ok="modalFormOk1"></review>中。执行的事件函数是modalFormOk1,这个函数实现了页面数据的重新加载,并清除列表里的CheckBox选择。

 

这个项目的vue框架用的是Jeecg-Vue(jeecg是流行的前后端分离框架,后端是Jeecg-boot)。复选框的change事件onSelectChange、清空所有复选框的事件onClearSelected,均在页面依赖的JeecgListMixin.js中定义。

 

TransactionReview.vue (部分)

  1. <a-button type="primary" @click="batchReview()" icon="reload" style="margin-left: 8px">批量审核</a-button>
  2.  
  3. <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
  4. <i class="anticon anticon-info-circle ant-alert-icon"></i> 已选择 <a style="font-weight: 600">{{
  5. selectedRowKeys.length }}</a>
  6. <a style="margin-left: 24px" @click="onClearSelected">清空</a>
  7. </div>
  8. <a-table
  9. ref="table"
  10. size="middle"
  11. bordered
  12. rowKey="id"
  13. :columns="columns"
  14. :dataSource="dataSource"
  15. :pagination="ipagination"
  16. :loading="loading"
  17. :scroll="{ x: 2800, y: 500 }"
  18. :rowSelection="rowSelection"
  19. @change="handleTableChange">
  20. </a-table>
  21. <review ref="reviewForm" @ok="modalFormOk1"></review>
  22. computed: {
  23. rowSelection() {
  24. const {selectedRowKeys} = this;
  25. return {
  26. selectedRowKeys,
  27. onChange: (selectedRowKeys, selectedRows) => {
  28. this.selectedRowKeys = selectedRowKeys;
  29. this.ids = selectedRowKeys;
  30. //console.log(`selectedRowKeys: ${selectedRowKeys}`, 'selectedRows: ', selectedRows);
  31. },
  32. getCheckboxProps: record => {
  33. console.log(record)
  34. return {
  35. props: {
  36. disabled: record.reviewState === 'pass' || record.reviewState === 'refuse' // Column configuration not to be checked
  37. },
  38. }
  39. }
  40. };
  41. }
  42. },
  43. methods: {
  44. modalFormOk1(){
  45. this.loadData();
  46. this.onClearSelected();
  47. },
  48. batchReview(){
  49. this.$refs.reviewForm.reviews(this.ids);
  50. // this.onClearSelected();
  51. },
  52. },

 

Review.vue (部分)

  1. // template -> a-modal -> template 定义页底的2个按钮
  2. <template slot="footer">
  3. <a-button type="primary" @click="editRiskViewRefuses('pass')">通过</a-button>
  4. <a-button type="primary" @click="editRiskViewRefuses('refuse')">拒绝</a-button>
  5. </template>
  6. export default {
  7. name: "review", //name指定Review.vue的name。
  8. data () {
  9. return {
  10. title:"审核",
  11. visible: false,
  12. productCode:'',
  13. model: {},
  14. products:'',
  15. dataSource:[],
  16. loading: false,
  17. validatorRules:{
  18. },
  19. labelCol: {
  20. xs: { span: 24 },
  21. sm: { span: 5 },
  22. },
  23. wrapperCol: {
  24. xs: { span: 24 },
  25. sm: { span: 16 },
  26. },
  27. confirmLoading: false,
  28. form: this.$form.createForm(this),
  29. validatorRules:{
  30. reviewReason:{rules: [{ required: true, message: '审核原因不能为空' }]}
  31. },
  32. }
  33. },
  34. methods: {
  35. editRiskViewRefuses(status){
  36. this.form.validateFields((err, values) => {
  37. if (!err) {
  38. postAction('/riskOrderReview/reviewBatch',{'ids': this.model.ids.toString(),'reviewReason': values.reviewReason,'reviewState':status}).then((res)=>{
  39. if(res.success){
  40. this.$message.success(res.message);
  41. this.$emit('ok');
  42. }else{
  43. this.$message.warning(res.message);
  44. }
  45. }).finally(() => {
  46. this.confirmLoading = false;
  47. this.close();
  48. })
  49. }
  50. })
  51. },
  52. }

 

原文链接:http://www.cnblogs.com/buguge/p/14300070.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号