'init'
This commit is contained in:
		
							
								
								
									
										89
									
								
								plop-templates/table/index.hbs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										89
									
								
								plop-templates/table/index.hbs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,89 @@
 | 
			
		||||
{{#if template}}
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="{{ name }}-container">
 | 
			
		||||
    <base-table :table-config="tableProps" :table-data="list" :is-loading="listLoading">
 | 
			
		||||
      <method-btn slot="handleBtn" :method-list="tableBtn" @clickBtn="handleClick" />
 | 
			
		||||
    </base-table>
 | 
			
		||||
    <pagination v-show="total > listQuery.size" :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.limit" @pagination="getList" />
 | 
			
		||||
  </div>
 | 
			
		||||
</template>
 | 
			
		||||
{{/if}}
 | 
			
		||||
 | 
			
		||||
{{#if script}}
 | 
			
		||||
<script>
 | 
			
		||||
// edit here
 | 
			
		||||
const tableBtn = [{
 | 
			
		||||
  type: 'edit',
 | 
			
		||||
  btnName: 'btn.edit'
 | 
			
		||||
}, {
 | 
			
		||||
  type: 'delete',
 | 
			
		||||
  btnName: 'btn.delete'
 | 
			
		||||
}]
 | 
			
		||||
const tableProps = [{
 | 
			
		||||
  prop: '',
 | 
			
		||||
  label: '',
 | 
			
		||||
  width: '',
 | 
			
		||||
  filter: null,
 | 
			
		||||
  subcomponent: null,
 | 
			
		||||
  align: ''
 | 
			
		||||
}]
 | 
			
		||||
import BaseTable from '@/components/BaseTable'
 | 
			
		||||
// edit here
 | 
			
		||||
import { fetchList } from '@/api/article'
 | 
			
		||||
 | 
			
		||||
import Pagination from '@/components/Pagination'
 | 
			
		||||
import MethodBtn from '@/components/BaseTable/subcomponents/MethodBtn'
 | 
			
		||||
export default {
 | 
			
		||||
  name: '{{ properCase name }}',
 | 
			
		||||
  props: {},
 | 
			
		||||
  components: { Pagination, BaseTable, MethodBtn },
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      tableBtn,
 | 
			
		||||
      tableProps,
 | 
			
		||||
      list: [],
 | 
			
		||||
      total: 0,
 | 
			
		||||
      listLoading: true,
 | 
			
		||||
      listQuery: {
 | 
			
		||||
        current: 1,
 | 
			
		||||
        size: 10
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  created() {
 | 
			
		||||
    this.getList()
 | 
			
		||||
  },
 | 
			
		||||
  mounted() {},
 | 
			
		||||
  methods: {
 | 
			
		||||
    handleClick(raw) {
 | 
			
		||||
 | 
			
		||||
    },
 | 
			
		||||
    getList() {
 | 
			
		||||
      this.listLoading = true
 | 
			
		||||
      // edit here
 | 
			
		||||
      fetchList(this.listQuery).then(response => {
 | 
			
		||||
        this.list = response.data.records
 | 
			
		||||
        this.total = response.data.total
 | 
			
		||||
        this.listLoading = false
 | 
			
		||||
      })
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
</script>
 | 
			
		||||
{{/if}}
 | 
			
		||||
 | 
			
		||||
{{#if style}}
 | 
			
		||||
<style lang="scss" scoped>
 | 
			
		||||
.{{ name }}-container {
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
.edit-input {
 | 
			
		||||
  padding-right: 100px;
 | 
			
		||||
}
 | 
			
		||||
.cancel-btn {
 | 
			
		||||
  position: absolute;
 | 
			
		||||
  right: 15px;
 | 
			
		||||
  top: 10px;
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
{{/if}}
 | 
			
		||||
							
								
								
									
										55
									
								
								plop-templates/table/prompt.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										55
									
								
								plop-templates/table/prompt.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,55 @@
 | 
			
		||||
const { notEmpty } = require('../utils.js')
 | 
			
		||||
 | 
			
		||||
module.exports = {
 | 
			
		||||
  description: 'generate a table-view',
 | 
			
		||||
  prompts: [{
 | 
			
		||||
    type: 'input',
 | 
			
		||||
    name: 'name',
 | 
			
		||||
    message: 'input table name please',
 | 
			
		||||
    validate: notEmpty('name')
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    type: 'checkbox',
 | 
			
		||||
    name: 'blocks',
 | 
			
		||||
    message: 'Blocks:',
 | 
			
		||||
    choices: [{
 | 
			
		||||
      name: '<template>',
 | 
			
		||||
      value: 'template',
 | 
			
		||||
      checked: true
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      name: '<script>',
 | 
			
		||||
      value: 'script',
 | 
			
		||||
      checked: true
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      name: 'style',
 | 
			
		||||
      value: 'style',
 | 
			
		||||
      checked: true
 | 
			
		||||
    }
 | 
			
		||||
    ],
 | 
			
		||||
    validate(value) {
 | 
			
		||||
      if (value.indexOf('script') === -1 && value.indexOf('template') === -1) {
 | 
			
		||||
        return 'View require at least a <script> or <template> tag.'
 | 
			
		||||
      }
 | 
			
		||||
      return true
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  ],
 | 
			
		||||
  actions: data => {
 | 
			
		||||
    const name = '{{name}}'
 | 
			
		||||
    const actions = [{
 | 
			
		||||
      type: 'add',
 | 
			
		||||
      path: `src/views/${name}/index.vue`,
 | 
			
		||||
      templateFile: 'plop-templates/table/index.hbs',
 | 
			
		||||
      data: {
 | 
			
		||||
        name: name,
 | 
			
		||||
        template: data.blocks.includes('template'),
 | 
			
		||||
        script: data.blocks.includes('script'),
 | 
			
		||||
        style: data.blocks.includes('style')
 | 
			
		||||
      }
 | 
			
		||||
    }]
 | 
			
		||||
 | 
			
		||||
    return actions
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user