async getCaseNumList () { let obj = {...this.writeForm,...this.queryParams } const { data,total } = await getWriteList(obj) console.log('编号设置', data) // this.tableData = data this.tableData = data.map(obj => { if (typeof obj.codeRule === "string") { try { obj.codeRule = JSON.parse(obj.codeRule); } catch (error) { console.error(error); } } return obj; }); console.log('编号设置222s', this.tableData) this.total = total },这个方法报错index.vue?bdd9:197 SyntaxError: Unexpected token 'y', "yearmonthd"... is not valid JSON
时间: 2023-11-22 19:53:02 浏览: 64
这个错误可能是因为你尝试将一个非 JSON 格式的字符串通过 JSON.parse() 方法解析为 JSON 对象。在你的代码中,似乎是在尝试将一个名为 codeRule 的属性从字符串转换为 JSON 对象时出错了。你可以在代码中添加 try-catch 块来捕获错误并加以处理,例如:
```
try {
obj.codeRule = JSON.parse(obj.codeRule);
} catch (error) {
console.error(error);
// 处理错误,例如将 codeRule 设置为 null
obj.codeRule = null;
}
```
这样,当遇到无法解析的非 JSON 字符串时,代码就会将该属性设置为 null,避免了后续的错误。
相关问题
// 分页 handleSizeChange(val) { this.pageSize = val this.handleNodeClick() }, handleCurrentChange(val) { this.page = val this.handleNodeClick() }, async getTreeListList() { const { data } = await businessTreeApi() this.departlist = JSON.parse(data.data) }, // 右侧上部分信息 async handleNodeClick(type) { console.log(type) if (type) { this.id = type.id } const List = (await businessApi(this.id)).data.data // this.datalist.agentId = type.id ? type.id : id // console.log(this.datalist) // const {data}= await courierPagingApi(this.datalist) // console.log(data); console.log(List) if (List.type === 1) { this.form.type = '一级转运中心' } else if (List.type === 2) { this.form.type = '二级转运中心' } else this.form.type = '营业部' this.form.number = List.id // v-model 数字 // this.form.type=List.type==3?'营业部':'', // 类型 this.form.name = List.name // 名字 this.form.region = List.province.name // 省 this.form.city = List.city.name // 城市 this.form.county = List.county.name // 县区 this.form.address = List.address // 详细地址 this.form.people = List.managerName // 负责人 this.form.phone = List.phone // 电话 this.form.longitude = List.longitude // 经度 this.form.latitude = List.latitude // 维度 // ------------------------------------ let obj = { page: this.page, pageSize: this.pageSize, agencyId: this.id } // 页码 const { data } = await getUserPageApi(obj) this.total = data.data.counts console.log(data.data) this.tableData = data.data.items this.total = Number(data.data.counts) // 下拉框数据 const res = await editAreasApi() console.log(res) this.economize = res.data.data if (this.value) { const ress = await editAreasApi(this.value) console.log(ress) } }, onSubmit() { this.isOk = !this.isOk } // 编辑数据 }
这段代码是关于一个树形结构的页面分页展示和编辑数据的处理,其中包括以下几个方法:
1. `handleSizeChange(val)`:处理每页展示数据量的变化,并调用`handleNodeClick()`方法重新渲染数据。
2. `handleCurrentChange(val)`:处理当前页码的变化,并调用`handleNodeClick()`方法重新渲染数据。
3. `getTreeListList()`:获取树形结构的数据,并将其解析为JSON格式。
4. `handleNodeClick(type)`:处理节点的点击事件,并根据节点类型展示对应的数据。同时,根据当前节点的ID,获取该节点下的用户数据,并展示在页面中。另外,还会获取下拉框数据。
5. `onSubmit()`:处理编辑数据的提交事件。
总体来说,这段代码实现了一个树形结构的页面展示和编辑数据的功能。
async searchNewsSemi(dto: SearchDto) { dto.page = dto.page ? dto.page * 1 : 1; dto.limit = dto.limit ? dto.limit * 1 : 10; const queryParam = { query: { bool: { must: [], filter: [], }, }, aggs: {}, size: dto.limit, from: (dto.page - 1) * dto.limit, track_total_hits: true, }; if (dto.keyword) { const k = dto.keyword.split('_'); queryParam.query.bool.must.push({ match: { [k[0]]: k[1], }, }); } else { queryParam.query.bool.must.push({ match_all: {}, }); } if (dto.category) { if (Array.isArray(dto.category)) { dto.category.forEach((c) => { queryParam.aggs[`${c}Terms`] = { terms: { field: `${c}`, }, }; }); } else { // @ts-ignore queryParam.aggs[`${dto.category}Terms`] = { terms: { field: `${dto.category}`, }, }; } } if (dto.endTime) { let startTime = dto.startTime; if (!startTime) { const endTimeNew = new Date(dto.endTime); const startTimeStamp = endTimeNew.setDate(endTimeNew.getDate() - 7); startTime = dateUtil.pattern( new Date(startTimeStamp), 'yyyy-MM-ddTHH:mm:ssZ', ); } // 时间范围 queryParam.query.bool.filter.push({ range: { insert_time: { gte: startTime, lte: dto.endTime, }, }, }); // 时间范围分组 queryParam.aggs['insertTimeTerms'] = { date_histogram: { field: 'insert_time', interval: 'day', format: 'yyyy-MM-dd hh:MM:ss', }, }; } console.log('param:' + JSON.stringify(queryParam)); const result = await this.elasticSearchService.search({ index: 'news_semi', body: queryParam, }); const resultBody = result['body']; const resultData = resultBody['hits']['hits']; const aggregations = resultBody['aggregations']; const rest = { total: resultBody['hits']['total']['value'], data: resultData.map((item) => { const obj = { ...item }; if (obj.highlight) { obj['_source']['content'] = obj['highlight']['content'][0]; // 删除高亮字段 delete obj.highlight; } return obj; }), category: {}, }; if (aggregations) { for (const agg in aggregations) { rest.category[agg] = aggregations[agg]['buckets']; } } return aggregations; }
这是一段使用 ElasticSearch 进行半结构化数据搜索的代码,输入一个 SearchDto 对象,根据其中的条件构造一个 ElasticSearch 查询,从 ElasticSearch 中查询数据并返回结果。其中包括查询结果及聚合结果。查询条件包括:关键词、类别、起始时间和结束时间。如果有关键词,则根据关键词构造 match 查询,如果没有,则构造 match_all 查询。如果有类别,则根据类别构造聚合查询。如果有起始时间和结束时间,则根据时间范围构造时间过滤查询和时间范围分组聚合查询。最后返回查询结果和聚合结果。
阅读全文