当前位置: 首页 > news >正文

河北网站建设和运营长沙网站设计服务

河北网站建设和运营,长沙网站设计服务,青海省城乡和住房建设厅网站,wordpress手动更新插件说一个比较繁琐的功能吧,我使用的是 vue element UI vxe-table 来实现的这个动态列表,其实呢 vxe-table 这个表格插件里边有动态表格 vxe-grid 只需要通过表头数组里边的 field: name, 与表体数组里的 name: Test1, 对应上就行了,很简单吧…

说一个比较繁琐的功能吧,我使用的是 vue + element UI + vxe-table 来实现的这个动态列表,其实呢 vxe-table 这个表格插件里边有动态表格 vxe-grid 只需要通过表头数组里边的 field: 'name', 与表体数组里的 name: 'Test1',  对应上就行了,很简单吧;可是问题来了,后端给我的是一串超长的id,表体里也是给了一个超长的id让进行匹配(如:图1),然后导致匹配出现问题,搜了一下说纯数字不太行,会出问题,事实也确实如此,无论怎么匹配,页面只显示有多少行数据,但每一列的值都是空的,没有任何显示,于是就自己进行了数据的处理。

图1

注:根据上图会看到表体数组 rowsList 里边又是一个数组,里边这个数组里又包含了多个对象(这多个对象就是每一列对应的值了,需要用 fieId 去匹配) 

html模版部分:

<vxe-grid border resizable ref="xGrid" :columns="tableColumn" :data="tableData"><template v-slot:operation="{ row }"><el-button size="mini" @click="editBtn(row)" type="text">编辑</el-button><el-button size="mini" @click="delBtn(row)" type="text" style="color: #f56c6c;">删除</el-button></template>
</vxe-grid>

1、对接口获取到的数据进行匹配处理,然后回显到列表上,如下:

表头数据(模拟):

let columnList = [{"fieId": "1909122684954550274","title": "JST TPM","fieldType": 4},{"fieId": "1909122684954550275","title": "备注","fieldType": 0},{"fieId": "1909122684962938882","title": "客户提出人姓名","fieldType": 0},{"fieId": "1909122684962938883","title": "提出时间","fieldType": 3},{"fieId": "1909122684962938884","title": "客户需求明细","fieldType": 1},{"fieId": "1909122684962938885","title": "功能模块名称","fieldType": 0}
]

表体数据(模拟):

let rowsList = [[{"sortNo": "0","fieId": "1909122684954550274","fieValue": "111"},{"sortNo": "0","fieId": "1909122684954550275","fieValue": "2132"},{"sortNo": "0","fieId": "1909122684962938882","fieValue": "4124"},{"sortNo": "0","fieId": "1909122684962938883","fieValue": "2025-04-16 00:00:00"},{"sortNo": "0","fieId": "1909122684962938884","fieValue": "1"},{"sortNo": "0","fieId": "1909122684962938885","fieValue": "发送方"}],[{"sortNo": "1","fieId": "1909122684954550274","fieValue": "139850429"},{"sortNo": "1","fieId": "1909122684954550275","fieValue": "12312"},{"sortNo": "1","fieId": "1909122684962938882","fieValue": "312312"},{"sortNo": "1","fieId": "1909122684962938883","fieValue": "2025-04-22 00:00:00"},{"sortNo": "1","fieId": "1909122684962938884","fieValue": "1"},{"sortNo": "1","fieId": "1909122684962938885","fieValue": "213124"}]
]

处理方法:

                columnList.forEach((item, index) => {// 为每列添加唯一field标识const fieldName = `title${index}`;this.$set(item, 'field', fieldName);this.tableColumn.push(item);// 处理行数据rowsList.forEach((row, rowIndex) => {row.forEach((cell) => {if (item.fieId === cell.fieId) {// 初始化行对象(如果尚未存在)if (!tableList[rowIndex]) {tableList[rowIndex] = {// 基础信息id: rowIndex, // 添加行IDsortNo: cell.sortNo, // 添加编号};}// 添加动态字段this.$set(tableList[rowIndex], fieldName, cell.fieValue);// 保留原始数据(可选)this.$set(tableList[rowIndex], `${fieldName}_meta`, {fieId: item.fieId,title: item.title,fieldType: item.fieldType,content: cell.fieValue,});}});});});this.tableData = tableList;this.tableColumn.push({ type: 'seq', fixed: "left", width: 50 },{ title: '操作', width: 100, showOverflow: true, fixed: "right", slots: { default: 'operation' } })console.log(this.tableColumn,'this.tableColumn');console.log(this.tableData,'this.tableData');

处理后的结果数据:

以上就对列表回显处理完成!

2、接下来是新增时候的处理

        addBtn(){this.dialogVisible = true;this.titleText = '新增';this.tableColumn.map((item) => {item.manageId = this.queryData.id,this.$set(item, 'content', '');})},

新增直接在 this.tableColumn 里边新增一个content 字段 然后在提交的时候直接把 this.tableColumn 这个数组全部提交给后端即可!

3、编辑处理

        editBtn(row){this.dialogVisible = true;this.titleText = '编辑';this.tableColumn.forEach(item => {if (!item.fieId) return; // 跳过没有 fieId 的,比如操作列等// 在 obj1 中查找所有带有 _meta 的键for (const key in row) {if (key.endsWith('_meta')) {const meta = row[key];if (meta && meta.fieId === item.fieId) {this.$set(item, 'content', meta.content);break;}}}});},

注:因为在列表的时候修改了数据格式,所以在编辑的时候还要对数据进行处理,然后才能使用

编辑的处理方法说明:

  • row 中的 title0_meta, title1_meta 是动态的,不能直接写死去访问。

  • 所以用 for...in 遍历 row 所有键,找到以 _meta 结尾的。

  • 然后对比 meta.fieIditem.fieId,如果匹配,就把 content 写入到 item.content

附加:如果列表中有人员、组织、类型等字段需要通过id去匹配显示中文的,方法如下(我的是通过人员id匹配人员姓名展示):

修改 getList 方法

getList() {this.loading = true;this.tableColumn = [];this.tableData = [];let tableList = [];let userIdList = []; // 新增:收集用户IDlet userFieldMap = []; // 保存在哪些字段上用到用户信息let params = {manageId: this.queryData.id,current: this.tablePage.current,size: this.tablePage.size,};api.queryParticularsDataAttach(params).then((res) => {if (res.data.data == null) {this.tableColumn = [];this.tableData = [];} else {let columnList = res.data.data.columns;let rowsList = res.data.data.rowsList;this.tablePage.totalElements = res.data.data.total;columnList.forEach((item, index) => {const fieldName = `title${index}`;this.$set(item, 'field', fieldName);this.tableColumn.push(item);rowsList.forEach((row, rowIndex) => {row.forEach((cell) => {if (item.fieId === cell.fieId) {if (!tableList[rowIndex]) {tableList[rowIndex] = {id: rowIndex,sortNo: cell.sortNo,};}// 动态字段赋值this.$set(tableList[rowIndex], fieldName, cell.fieValue);this.$set(tableList[rowIndex], `${fieldName}_meta`, {fieId: item.fieId,title: item.title,fieldType: item.fieldType,content: cell.fieValue,});// 如果是人员类型字段(fieldType === 4),收集 userIdif (item.fieldType === 4 && cell.fieValue) {userIdList.push(cell.fieValue);userFieldMap.push({rowIndex,fieldName,userId: cell.fieValue,});}}});});});this.tableData = tableList;// 插入序号列和操作列this.tableColumn.push({ type: 'seq', fixed: "left", width: 50 },{ title: '操作', width: 100, showOverflow: true, fixed: "right", slots: { default: 'operation' } });// 👇 去查人员名称if (userIdList.length > 0) {this.getUsersList(userIdList).then((userMap) => {// 替换tableData中的字段内容为用户姓名userFieldMap.forEach(({ rowIndex, fieldName, userId }) => {const user = userMap[userId];if (user) {// 替换显示值this.$set(this.tableData[rowIndex], fieldName, user.realName + '(' + user.account + ')');// 同步 meta 中的 content 也更新为姓名if (this.tableData[rowIndex][`${fieldName}_meta`]) {this.tableData[rowIndex][`${fieldName}_meta`].content = user.realName + '(' + user.account + ')';}}});});}}this.loading = false;}).catch(() => {this.loading = false;});
},// 👇 获取人员数据的方法:返回 userId -> user 信息的映射
getUsersList(idList) {return api.getPeoples(idList).then((res) => {const userList = res.data.data || [];const userMap = {};userList.forEach(user => {userMap[user.id] = user;});return userMap;});
}

以上仅是个人实现的使用方法,可根据自己的需求进行修改或者优化

至此完成!!!

测试有效!!!感谢支持!!!

http://www.dtcms.com/a/523396.html

相关文章:

  • 水头哪里有做网站的嘉兴网站建设系统
  • 郑州建设网站公司互联网营销是做什么的
  • 微信小程序wordpress插件dx seo下载
  • 厦门市建设保障性住房局网站厦门建设局
  • 个人网站的留言板怎么做淄博制作网站的公司
  • 网站的作用有哪些各地城乡建设网站更新
  • 苏州设计网站公司西安排名seo公司
  • 网站加速器quickq网站建设需要多少钱小江网页设计
  • 陕西省诚信建设示范网这个网站网络规划师报名时间
  • wordpress仿站 技术wordpress 发货
  • 九江网站设计服务机构哪家好百度游戏中心
  • 网站如何做免费推广安康做网站哪家好
  • 360网站seo怎么做镇海区建设工程安监站网站
  • 自己做个网站多少钱wordpress4.7.5
  • 嘉兴高档网站建设做暧暧视频网站安全吗
  • 找个免费网站这么难吗长沙品牌logo设计公司
  • 郑州网站建设国奥大厦企业网络营销青岛
  • 辽宁省网站备案要求网址大全2345下载安装
  • 天津企业网站模板建站哪家好怎么做云购网站吗
  • 天津高端网站定制做动效的网站
  • 怎么做网站的搜索功能设计图片免费素材网站
  • 做媛网站销售牛的网站
  • 手机怎么建网站链接苏宁易购网站设计怎么制作
  • 做网站项目需求分析是什么沈阳网站建设公司的公司
  • 做调查的有哪些网站有哪些网站与微信
  • 互联网 医疗网站建设有哪些城市潍坊网站建设尚荣
  • 网站备案更名wordpress 导入主题
  • 做钻石的网站服装设计手绘
  • 做物流网站计划东莞seo推广
  • 靖江有帮助做苏宁易购网站的公司吗阳江网红人物