8***@qq.com
8***@qq.com
  • 发布:2022-04-28 01:46
  • 更新:2022-05-06 17:55
  • 阅读:430

schema2code 关联后生成后台的列表有问题

分类:uniCloud

怎么生成的列表的这个name不显示啊 还要手动改才显示 , 这里关联了其他表的好像生成列表页有问题吧。编辑页面正常。


schema2code

{  
    "bsonType": "object",  
    "required": [],  
    "permission": {  
        "read": false,  
        "create": false,  
        "update": false,  
        "delete": false  
    },  
    "properties": {  
        "_id": {  
            "description": "ID,系统自动生成"  
        },  
        "name":{  
            "bsonType": "string",  
            "label": "名称"  
        }  
    }  
}

schema2code

{  
    "bsonType": "object",  
    "required": [],  
    "permission": {  
        "read": false,  
        "create": false,  
        "update": false,  
        "delete": false  
    },  
    "properties": {  
        "_id": {  
            "description": "ID,系统自动生成"  
        },  
        "susuo": {  
            "bsonType": "string",  
            "foreignKey": "ruanjian.name",  
            "label": "所属软件",  
            "enum": {  
                "collection": "ruanjian",  
                "field": "_id as value , name as text"  
            }  
        }  
    }  
}

生成后的list

<template>    
  <view>    
    <view class="uni-header">    
      <view class="uni-group">    
        <view class="uni-title"></view>    
        <view class="uni-sub-title"></view>    
      </view>    
      <view class="uni-group">    
        <input class="uni-search" type="text" v-model="query" @confirm="search" placeholder="请输入搜索内容" />    
        <button class="uni-button" type="default" size="mini" @click="search">搜索</button>    
        <button class="uni-button" type="default" size="mini" @click="navigateTo('./add')">新增</button>    
        <button class="uni-button" type="default" size="mini" :disabled="!selectedIndexs.length" @click="delTable">批量删除</button>    
        <download-excel class="hide-on-phone" :fields="exportExcel.fields" :data="exportExcelData" :type="exportExcel.type" :name="exportExcel.filename">    
          <button class="uni-button" type="primary" size="mini">导出 Excel</button>    
        </download-excel>    
      </view>    
    </view>    
    <view class="uni-container">    
      <unicloud-db ref="udb" :collection="collectionList" field="susuo{name as text}" :where="where" page-data="replace"    
        :orderby="orderby" :getcount="true" :page-size="options.pageSize" :page-current="options.pageCurrent"    
        v-slot:default="{data,pagination,loading,error,options}" :options="options" loadtime="manual" @load="onqueryload">    
        <uni-table ref="table" :loading="loading" :emptyText="error.message || '没有更多数据'" border stripe type="selection" @selection-change="selectionChange">    
          <uni-tr>    
            <uni-th align="center">所属软件</uni-th>    
            <uni-th align="center">操作</uni-th>    
          </uni-tr>    
          <uni-tr v-for="(item,index) in data" :key="index">    
            <uni-td align="center">{{item.susuo && item.susuo[0] && item.susuo[0].text}}</uni-td>    
            <uni-td align="center">    
              <view class="uni-group">    
                <button @click="navigateTo('./edit?id='+item._id, false)" class="uni-button" size="mini" type="primary">修改</button>    
                <button @click="confirmDelete(item._id)" class="uni-button" size="mini" type="warn">删除</button>    
              </view>    
            </uni-td>    
          </uni-tr>    
        </uni-table>    
        <view class="uni-pagination-box">    
          <uni-pagination show-icon :page-size="pagination.size" v-model="pagination.current" :total="pagination.count" @change="onPageChanged" />    
        </view>    
      </unicloud-db>    
    </view>    
  </view>    
</template>    

<script>    
  import { enumConverter, filterToWhere } from '../../js_sdk/validator/uaa.js';    

  const db = uniCloud.database()    
  // 表查询配置    
  const dbOrderBy = '' // 排序字段    
  const dbSearchFields = [] // 模糊搜索字段,支持模糊搜索的字段列表。联表查询格式: 主表字段名.副表字段名,例如用户表关联角色表 role.role_name    
  // 分页配置    
  const pageSize = 20    
  const pageCurrent = 1    

  const orderByMapping = {    
    "ascending": "asc",    
    "descending": "desc"    
  }    

  export default {    
    data() {    
      return {    
        collectionList: [ db.collection('uaa').getTemp(), db.collection('ruanjian').getTemp() ],    
        query: '',    
        where: '',    
        orderby: dbOrderBy,    
        orderByFieldName: "",    
        selectedIndexs: [],    
        options: {    
          pageSize,    
          pageCurrent,    
          filterData: {},    
          ...enumConverter    
        },    
        imageStyles: {    
          width: 64,    
          height: 64    
        },    
        exportExcel: {    
          "filename": "uaa.xls",    
          "type": "xls",    
          "fields": {    
            "所属软件": "susuo"    
          }    
        },    
        exportExcelData: []    
      }    
    },    
    onLoad() {    
      this._filter = {}    
    },    
    onReady() {    
      this.$refs.udb.loadData()    
    },    
    methods: {    
      onqueryload(data) {    
        this.exportExcelData = data    
      },    
      getWhere() {    
        const query = this.query.trim()    
        if (!query) {    
          return ''    
        }    
        const queryRe = new RegExp(query, 'i')    
        return dbSearchFields.map(name => queryRe + '.test(' + name + ')').join(' || ')    
      },    
      search() {    
        const newWhere = this.getWhere()    
        this.where = newWhere    
        this.$nextTick(() => {    
          this.loadData()    
        })    
      },    
      loadData(clear = true) {    
        this.$refs.udb.loadData({    
          clear    
        })    
      },    
      onPageChanged(e) {    
        this.selectedIndexs.length = 0    
        this.$refs.table.clearSelection()    
        this.$refs.udb.loadData({    
          current: e.current    
        })    
      },    
      navigateTo(url, clear) {    
        // clear 表示刷新列表时是否清除页码,true 表示刷新并回到列表第 1 页,默认为 true    
        uni.navigateTo({    
          url,    
          events: {    
            refreshData: () => {    
              this.loadData(clear)    
            }    
          }    
        })    
      },    
      // 多选处理    
      selectedItems() {    
        var dataList = this.$refs.udb.dataList    
        return this.selectedIndexs.map(i => dataList[i]._id)    
      },    
      // 批量删除    
      delTable() {    
        this.$refs.udb.remove(this.selectedItems(), {    
          success:(res) => {    
            this.$refs.table.clearSelection()    
          }    
        })    
      },    
      // 多选    
      selectionChange(e) {    
        this.selectedIndexs = e.detail.index    
      },    
      confirmDelete(id) {    
        this.$refs.udb.remove(id, {    
          success:(res) => {    
            this.$refs.table.clearSelection()    
          }    
        })    
      },    
      sortChange(e, name) {    
        this.orderByFieldName = name;    
        if (e.order) {    
          this.orderby = name + ' ' + orderByMapping[e.order]    
        } else {    
          this.orderby = ''    
        }    
        this.$refs.table.clearSelection()    
        this.$nextTick(() => {    
          this.$refs.udb.loadData()    
        })    
      },    
      filterChange(e, name) {    
        this._filter[name] = {    
          type: e.filterType,    
          value: e.filter    
        }    
        let newWhere = filterToWhere(this._filter, db.command)    
        if (Object.keys(newWhere).length) {    
          this.where = newWhere    
        } else {    
          this.where = ''    
        }    
        this.$nextTick(() => {    
          this.$refs.udb.loadData()    
        })    
      }    
    }    
  }    
</script>    

<style>    
</style>  
2022-04-28 01:46 负责人:无 分享
已邀请:
DCloud_uniAD_HDX

DCloud_uniAD_HDX

主表是否有相同的字段名 name

DCloud_uniAD_HDX

DCloud_uniAD_HDX

提供下schema 文件和生成后的代码

  • 8***@qq.com (作者)

    代码贴上面了

    2022-05-06 18:04

要回复问题请先登录注册