table.vue.tpl 10.1 KB
Newer Older
1 2 3 4
<template>
  <div>
    <div class="search-term">
      <el-form :inline="true" :model="searchInfo" class="demo-form-inline">
5
           {{- range .Fields}}  {{- if .FieldSearchType}} {{- if eq .FieldType "bool" }}
6
            <el-form-item label="{{.FieldDesc}}" prop="{{.FieldJson}}">
Mr.奇淼('s avatar
Mr.奇淼( 已提交
7
            <el-select v-model="searchInfo.{{.FieldJson}}" clear placeholder="请选择">
8 9 10 11 12 13 14 15 16 17 18 19 20
                <el-option
                    key="true"
                    label="是"
                    value="true">
                </el-option>
                <el-option
                    key="false"
                    label="否"
                    value="false">
                </el-option>
            </el-select>
            </el-form-item>
                  {{- else }}
21
        <el-form-item label="{{.FieldDesc}}">
Mr.奇淼('s avatar
Mr.奇淼( 已提交
22
          <el-input placeholder="搜索条件" v-model="searchInfo.{{.FieldJson}}" />
23
        </el-form-item> {{ end }} {{ end }}  {{ end }}
24
        <el-form-item>
Mr.奇淼('s avatar
Mr.奇淼( 已提交
25
          <el-button type="primary" @click="onSubmit">查询</el-button>
26
        </el-form-item>
27
        <el-form-item>
Mr.奇淼('s avatar
Mr.奇淼( 已提交
28
          <el-button type="primary" @click="openDialog">新增{{.Description}}</el-button>
29
        </el-form-item>
30
        <el-form-item>
Mr.奇淼('s avatar
Mr.奇淼( 已提交
31
          <el-popover v-model="deleteVisible" placement="top" width="160">
32
            <p>确定要删除吗?</p>
Mr.奇淼('s avatar
Mr.奇淼( 已提交
33 34 35 36 37
            <div style="text-align: right; margin: 0">
              <el-button size="mini" type="text" @click="deleteVisible = false">取消</el-button>
              <el-button size="mini" type="primary" @click="onDelete">确定</el-button>
            </div>
            <el-button slot="reference" icon="el-icon-delete" size="mini" type="danger">批量删除</el-button>
38 39
          </el-popover>
        </el-form-item>
40 41 42 43
      </el-form>
    </div>
    <el-table
      ref="multipleTable"
Mr.奇淼('s avatar
Mr.奇淼( 已提交
44
      border
45 46 47
      stripe
      style="width: 100%"
      tooltip-effect="dark"
Mr.奇淼('s avatar
Mr.奇淼( 已提交
48 49
      :data="tableData"
      @selection-change="handleSelectionChange"
50
    >
Mr.奇淼('s avatar
Mr.奇淼( 已提交
51 52 53 54 55 56
      <el-table-column type="selection" width="55" />
      <el-table-column label="日期" width="180">
        <template slot-scope="scope">{{ "{{ scope.row.CreatedAt|formatDate }}" }}</template>
      </el-table-column>
      {{- range .Fields}}
      {{- if .DictType}}
57 58 59 60 61
      <el-table-column label="{{.FieldDesc}}" prop="{{.FieldJson}}" width="120">
        <template slot-scope="scope">
          {{"{{"}}filterDict(scope.row.{{.FieldJson}},"{{.DictType}}"){{"}}"}}
        </template>
      </el-table-column>
Mr.奇淼('s avatar
Mr.奇淼( 已提交
62 63 64 65 66 67
      {{- else if eq .FieldType "bool" }}
      <el-table-column label="{{.FieldDesc}}" prop="{{.FieldJson}}" width="120">
        <template slot-scope="scope">{{ "{{scope.row."}}{{.FieldJson}}{{"|formatBoolean}}" }}</template>
      </el-table-column> {{- else }}
      <el-table-column label="{{.FieldDesc}}" prop="{{.FieldJson}}" width="120" /> {{ end -}}
      {{ end -}}
68 69
      <el-table-column label="按钮组">
        <template slot-scope="scope">
Mr.奇淼('s avatar
Mr.奇淼( 已提交
70
          <el-button size="small" type="primary" icon="el-icon-edit" class="table-button" @click="update{{.StructName}}(scope.row)">变更</el-button>
Mr.奇淼('s avatar
Mr.奇淼( 已提交
71
          <el-button type="danger" icon="el-icon-delete" size="mini" @click="deleteRow(scope.row)">删除</el-button>
72 73 74 75
        </template>
      </el-table-column>
    </el-table>
    <el-pagination
Mr.奇淼('s avatar
Mr.奇淼( 已提交
76
      layout="total, sizes, prev, pager, next, jumper"
77 78 79 80 81 82 83
      :current-page="page"
      :page-size="pageSize"
      :page-sizes="[10, 30, 50, 100]"
      :style="{float:'right',padding:'20px'}"
      :total="total"
      @current-change="handleCurrentChange"
      @size-change="handleSizeChange"
Mr.奇淼('s avatar
Mr.奇淼( 已提交
84
    />
85
    <el-dialog :before-close="closeDialog" :visible.sync="dialogFormVisible" title="弹窗操作">
86 87
      <el-form :model="formData" label-position="right" label-width="80px">
    {{- range .Fields}}
Mr.奇淼('s avatar
Mr.奇淼( 已提交
88 89 90
        <el-form-item label="{{.FieldDesc}}:">
      {{ if eq .FieldType "bool" }}
          <el-switch active-color="#13ce66" inactive-color="#ff4949" active-text="是" inactive-text="否" v-model="formData.{{.FieldJson}}" clearable ></el-switch>
91
      {{ end -}}
Mr.奇淼('s avatar
Mr.奇淼( 已提交
92 93
      {{ if eq .FieldType "string" }}
          <el-input v-model="formData.{{.FieldJson}}" clearable placeholder="请输入" />
94
      {{ end -}}
Mr.奇淼('s avatar
Mr.奇淼( 已提交
95
      {{ if eq .FieldType "int" }}
96
      {{- if .DictType}}
Mr.奇淼('s avatar
Mr.奇淼( 已提交
97 98 99 100 101
          <el-select v-model="formData.{{ .FieldJson }}" placeholder="请选择" clearable>
            <el-option v-for="(item,key) in {{ .DictType }}Options" :key="key" :label="item.label" :value="item.value" />
          </el-select>
      {{ else }}
          <el-input v-model.number="formData.{{ .FieldJson }}" clearable placeholder="请输入" />
102 103
      {{ end -}}
      {{ end -}}
Mr.奇淼('s avatar
Mr.奇淼( 已提交
104 105
      {{ if eq .FieldType "time.Time" }}
          <el-date-picker type="date" placeholder="选择日期" v-model="formData.{{ .FieldJson }}" clearable />
106 107
       {{ end -}}
       {{- if eq .FieldType "float64" }}
Mr.奇淼('s avatar
Mr.奇淼( 已提交
108
          <el-input-number v-model="formData.{{ .FieldJson }}" :precision="2" clearable />
109
       {{ end -}}
Mr.奇淼('s avatar
Mr.奇淼( 已提交
110 111 112 113
            </el-form-item>
       {{- end }}
     </el-form>
      <div slot="footer" class="dialog-footer">
114
        <el-button @click="closeDialog">取 消</el-button>
Mr.奇淼('s avatar
Mr.奇淼( 已提交
115
        <el-button type="primary" @click="enterDialog">确 定</el-button>
116 117 118 119 120 121 122
      </div>
    </el-dialog>
  </div>
</template>

<script>
import {
Mr.奇淼('s avatar
Mr.奇淼( 已提交
123 124 125 126 127 128 129 130 131
  create{{.StructName}},
  delete{{.StructName}},
  delete{{.StructName}}ByIds,
  update{{.StructName}},
  find{{.StructName}},
  get{{.StructName}}List
} from '@/api/{{.PackageName}}' //  此处请自行替换地址
import { formatTimeToStr } from '@/utils/date'
import infoList from '@/mixins/infoList'
132
export default {
Mr.奇淼('s avatar
Mr.奇淼( 已提交
133
  name: '{{.StructName}}',
134 135 136
  mixins: [infoList],
  data() {
    return {
137
      listApi: get{{ .StructName }}List,
138
      dialogFormVisible: false,
Mr.奇淼('s avatar
Mr.奇淼( 已提交
139
      type: '',
140 141
      deleteVisible: false,
      multipleSelection: [],
Mr.奇淼('s avatar
Mr.奇淼( 已提交
142
      {{ range .Fields}}
143
          {{- if .DictType }}
Mr.奇淼('s avatar
Mr.奇淼( 已提交
144
      {{ .DictType }}Options: [],
145
          {{ end -}}
Mr.奇淼('s avatar
Mr.奇淼( 已提交
146
      {{ end }}
Mr.奇淼('s avatar
Mr.奇淼( 已提交
147
      formData: {
Mr.奇淼('s avatar
Mr.奇淼( 已提交
148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164
        {{range .Fields}}
          {{- if eq .FieldType "bool" -}}
        {{.FieldJson}}: false,
          {{ end -}}
          {{- if eq .FieldType "string" -}}
        {{.FieldJson}}: '',
          {{ end -}}
          {{- if eq .FieldType "int" -}}
        {{.FieldJson}}: 0,
          {{ end -}}
          {{- if eq .FieldType "time.Time" -}}
        {{.FieldJson}}: new Date(),
          {{ end -}}
          {{- if eq .FieldType "float64" -}}
        {{.FieldJson}}: 0,
          {{ end -}}
        {{ end }}
165
      }
Mr.奇淼('s avatar
Mr.奇淼( 已提交
166
    }
167 168 169
  },
  filters: {
    formatDate: function(time) {
Mr.奇淼('s avatar
Mr.奇淼( 已提交
170
      if (time !== null && time !== '') {
171
        var date = new Date(time);
Mr.奇淼('s avatar
Mr.奇淼( 已提交
172
        return formatTimeToStr(date, 'yyyy-MM-dd hh:mm:ss');
173
      } else {
Mr.奇淼('s avatar
Mr.奇淼( 已提交
174
        return ''
175
      }
176 177 178
    },
    formatBoolean: function(bool) {
      if (bool != null) {
Mr.奇淼('s avatar
Mr.奇淼( 已提交
179
        return bool ? '' : ''
180
      } else {
Mr.奇淼('s avatar
Mr.奇淼( 已提交
181
        return ''
182
      }
183 184
    }
  },
Mr.奇淼('s avatar
Mr.奇淼( 已提交
185 186 187 188 189 190 191 192
  async created() {
    await this.getTableData()
    {{ range .Fields -}}
      {{- if .DictType }}
    await this.getDict('{{.DictType}}')
      {{ end -}}
    {{- end }}
  },
193
  methods: {
Mr.奇淼('s avatar
Mr.奇淼( 已提交
194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236
  // 条件搜索前端看此方法
    onSubmit() {
      this.page = 1
      this.pageSize = 10
      {{- range .Fields}} {{- if eq .FieldType "bool" }}
      if (this.searchInfo.{{.FieldJson}} === ""){
        this.searchInfo.{{.FieldJson}}=null
      } {{ end }} {{ end }}
      this.getTableData()
    },
    handleSelectionChange(val) {
      this.multipleSelection = val
    },
    deleteRow(row) {
      this.$confirm('确定要删除吗?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        this.delete{{.StructName}}(row)
      })
    },
    async onDelete() {
      const ids = []
      if (this.multipleSelection.length === 0) {
        this.$message({
          type: 'warning',
          message: '请选择要删除的数据'
        })
        return
      }
      this.multipleSelection &&
        this.multipleSelection.map(item => {
          ids.push(item.ID)
        })
      const res = await delete{{.StructName}}ByIds({ ids })
      if (res.code === 0) {
        this.$message({
          type: 'success',
          message: '删除成功'
        })
        if (this.tableData.length === ids.length && this.page > 1) {
          this.page--
237
        }
Mr.奇淼('s avatar
Mr.奇淼( 已提交
238 239 240 241
        this.deleteVisible = false
        this.getTableData()
      }
    },
242
    async update{{.StructName}}(row) {
Mr.奇淼('s avatar
Mr.奇淼( 已提交
243 244 245 246 247
      const res = await find{{.StructName}}({ ID: row.ID })
      this.type = 'update'
      if (res.code === 0) {
        this.formData = res.data.re{{.Abbreviation}}
        this.dialogFormVisible = true
248 249 250
      }
    },
    closeDialog() {
Mr.奇淼('s avatar
Mr.奇淼( 已提交
251
      this.dialogFormVisible = false
Mr.奇淼('s avatar
Mr.奇淼( 已提交
252
      this.formData = {
Mr.奇淼('s avatar
Mr.奇淼( 已提交
253
        {{range .Fields}}
254
          {{- if eq .FieldType "bool" -}}
Mr.奇淼('s avatar
Mr.奇淼( 已提交
255
        {{.FieldJson}}: false,
256 257
          {{ end -}}
          {{- if eq .FieldType "string" -}}
Mr.奇淼('s avatar
Mr.奇淼( 已提交
258
        {{.FieldJson}}: '',
259 260
          {{ end -}}
          {{- if eq .FieldType "int" -}}
Mr.奇淼('s avatar
Mr.奇淼( 已提交
261
        {{.FieldJson}}: 0,
262 263
          {{ end -}}
          {{- if eq .FieldType "time.Time" -}}
Mr.奇淼('s avatar
Mr.奇淼( 已提交
264
        {{.FieldJson}}: new Date(),
265 266
          {{ end -}}
          {{- if eq .FieldType "float64" -}}
Mr.奇淼('s avatar
Mr.奇淼( 已提交
267
        {{.FieldJson}}: 0,
268
          {{ end -}}
Mr.奇淼('s avatar
Mr.奇淼( 已提交
269 270
        {{ end }}
      }
271 272
    },
    async delete{{.StructName}}(row) {
Mr.奇淼('s avatar
Mr.奇淼( 已提交
273 274
      const res = await delete{{.StructName}}({ ID: row.ID })
      if (res.code === 0) {
275
        this.$message({
Mr.奇淼('s avatar
Mr.奇淼( 已提交
276 277 278 279 280
          type: 'success',
          message: '删除成功'
        })
        if (this.tableData.length === 1 && this.page > 1 ) {
          this.page--
281
        }
Mr.奇淼('s avatar
Mr.奇淼( 已提交
282
        this.getTableData()
283 284 285
      }
    },
    async enterDialog() {
Mr.奇淼('s avatar
Mr.奇淼( 已提交
286
      let res
287 288
      switch (this.type) {
        case "create":
Mr.奇淼('s avatar
Mr.奇淼( 已提交
289 290
          res = await create{{.StructName}}(this.formData)
          break
291
        case "update":
Mr.奇淼('s avatar
Mr.奇淼( 已提交
292 293
          res = await update{{.StructName}}(this.formData)
          break
294
        default:
Mr.奇淼('s avatar
Mr.奇淼( 已提交
295 296
          res = await create{{.StructName}}(this.formData)
          break
297
      }
Mr.奇淼('s avatar
Mr.奇淼( 已提交
298
      if (res.code === 0) {
Mr.奇淼('s avatar
Mr.奇淼( 已提交
299
        this.$message({
Mr.奇淼('s avatar
Mr.奇淼( 已提交
300 301
          type: 'success',
          message: '创建/更改成功'
Mr.奇淼('s avatar
Mr.奇淼( 已提交
302
        })
Mr.奇淼('s avatar
Mr.奇淼( 已提交
303 304
        this.closeDialog()
        this.getTableData()
305 306 307
      }
    },
    openDialog() {
Mr.奇淼('s avatar
Mr.奇淼( 已提交
308 309
      this.type = 'create'
      this.dialogFormVisible = true
310 311
    }
  },
312
}
313 314 315
</script>

<style>
Z
zzZ007 已提交
316
</style>