Explorar el Código

generation - table - safe check

hare8999@163.com hace 3 años
padre
commit
c181d77c65

+ 37 - 0
src/components/dynamic-table/index.vue

@@ -0,0 +1,37 @@
+<template>
+  <el-table ref="table" v-bind="$attrs" v-on="$listeners">
+    <el-table-column v-for="(column,idx) in visibleColumns" :key="idx" v-bind="col">
+      <template v-if="column.slotHeader" #header="{$index}">
+        <slot :name="column.slotHeader" v-bind="{ column, $index}">
+          {{ column.label }}
+        </slot>
+      </template>
+      <template v-if="column.slotBody" #default="{row, $index}">
+        <slot :name="column.slotBody" v-bind="{row, column, $index, value: row[column.prop]}">
+          {{ row[column.prop] }}
+        </slot>
+      </template>
+    </el-table-column>
+  </el-table>
+</template>
+
+<script>
+export default {
+  name: 'dynamic-table',
+  props: {
+    columns: { type: Array, default: () => [{ prop: '', slotBody: '', slotHeader: '' }] }
+  },
+  computed: {
+    visibleColumns() {
+      return this.columns.filter(col => col.hidden !== true)
+    },
+    tableCore() {
+      return this.$refs.table
+    }
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 4 - 4
src/views/elective/generation/components/elective-generation-table.vue

@@ -1,12 +1,12 @@
 <template>
   <mx-table ref="table" :prop-defines="resolvedTable.columns" :rows="resolvedTable.rows" border>
-    <template #elective-cell="{value, label}">
-      <el-popover trigger="hover" :disabled="value&&value.disabled"
+    <template #elective-cell="{value, label, prop}">
+      <el-popover trigger="hover" :disabled="(value&&value.disabled)||!!!prop.queryCode"
                   popper-class="zero-padding-popover">
         <div class="fx-column">
           <el-button plain type="text" @click="goDetails(value, label)">查看名单</el-button>
         </div>
-        <div slot="reference" :style="getCellStyles(value)">
+        <div slot="reference" v-if="value" :style="getCellStyles(value)">
           <span v-if="value.star">*</span>
           <span>{{ value && value.value }}</span>
         </div>
@@ -106,7 +106,7 @@ export default {
         if (shouldMerge) ext.ignoreGroupCategories.push(data.queryCode)
       }
 
-      columnsRef[prop] = { label: name, slot: 'elective-cell', fixed: fixed }
+      columnsRef[prop] = { label: name, slot: 'elective-cell', fixed: fixed, queryCode: data.queryCode }
       if (!shouldMerge) {
         data.values.forEach(val => {
           const row = rowsRef.find(row => row.groupId == val.groupId)