189 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
			
		
		
	
	
			189 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
<template>
 | 
						|
  <div class="template-wrapper">
 | 
						|
    <div class="left-wrapper">
 | 
						|
      <box-content>
 | 
						|
        <div class="search">
 | 
						|
          <SearchForm
 | 
						|
            size="mini"
 | 
						|
            :that="this"
 | 
						|
            :search-data="searchData"
 | 
						|
            :search-form="template_form"
 | 
						|
            :search-handle="template_handle"
 | 
						|
            @search="handleSearch"
 | 
						|
            @reset="handleReset"
 | 
						|
          />
 | 
						|
          <span style="margin-left:auto;">
 | 
						|
            <el-button type="primary" size="small" style="margin-left:auto;" @click="handleAdd">New</el-button>
 | 
						|
            <el-button type="primary" size="small" @click="handleSetting">Setting</el-button>
 | 
						|
          </span>
 | 
						|
        </div>
 | 
						|
        <base-table
 | 
						|
          v-loading="loading"
 | 
						|
          :columns="template_cols"
 | 
						|
          :list="list"
 | 
						|
          :search-data="searchData"
 | 
						|
          :total="total"
 | 
						|
          @getList="getList"
 | 
						|
          @items="handleView"
 | 
						|
          @edit="handleEdit"
 | 
						|
          @delete="handleDelete"
 | 
						|
          @sortByColumn="sortByColumn"
 | 
						|
        />
 | 
						|
      </box-content>
 | 
						|
    </div>
 | 
						|
    <div class="right-wrapper">
 | 
						|
      <div v-if="template.Name">
 | 
						|
        <span>Name:</span>
 | 
						|
        <el-input v-model="template.Name" size="small" style="width:150px;" readonly />
 | 
						|
      </div>
 | 
						|
      <el-table v-if="template.Name" ref="itemList" v-loading="itemLoading" :data="itmeList" class="table" size="small" @select="onTableSelect">
 | 
						|
        <el-table-column type="selection" width="50" />
 | 
						|
        <el-table-column type="index" width="40" />
 | 
						|
        <el-table-column prop="Name" label="Item" show-overflow-tooltip />
 | 
						|
      </el-table>
 | 
						|
 | 
						|
    </div>
 | 
						|
    <template-form v-if="template_model.visible" :data="rowData" @close="closeModel" />
 | 
						|
  </div>
 | 
						|
</template>
 | 
						|
<script>
 | 
						|
import { getQaTemplateList, deleteQATemplate, getQaTemplateConfigList, configQATemplateItem } from '@/api/dictionary'
 | 
						|
import { template_cols, template_form, template_handle, template_model } from './template'
 | 
						|
import BoxContent from '@/components/BoxContent'
 | 
						|
import SearchForm from '@/components/BaseForm/search-form'
 | 
						|
import BaseTable from '@/components/BaseTable'
 | 
						|
import TemplateForm from './components/TemplateForm'
 | 
						|
import tableMixins from '@/mixins/table'
 | 
						|
const searchDataDefault = () => {
 | 
						|
  return {
 | 
						|
    Name: '',
 | 
						|
    PageIndex: 1,
 | 
						|
    PageSize: 20
 | 
						|
  }
 | 
						|
}
 | 
						|
export default {
 | 
						|
  name: 'TemplateList',
 | 
						|
  components: { BoxContent, SearchForm, BaseTable, TemplateForm },
 | 
						|
  mixins: [tableMixins],
 | 
						|
  data() {
 | 
						|
    return {
 | 
						|
      template_cols,
 | 
						|
      template_form,
 | 
						|
      template_handle,
 | 
						|
      template_model,
 | 
						|
      searchData: searchDataDefault(),
 | 
						|
      list: [],
 | 
						|
      total: 0,
 | 
						|
      loading: false,
 | 
						|
      rowData: {},
 | 
						|
      template: {},
 | 
						|
      itmeList: [],
 | 
						|
      itemLoading: false
 | 
						|
    }
 | 
						|
  },
 | 
						|
  mounted() {
 | 
						|
    this.getList()
 | 
						|
  },
 | 
						|
  methods: {
 | 
						|
    getList() {
 | 
						|
      this.loading = true
 | 
						|
      getQaTemplateList(this.searchData).then(res => {
 | 
						|
        this.loading = false
 | 
						|
        this.list = res.Result.CurrentPageData
 | 
						|
        this.total = res.Result.TotalCount
 | 
						|
        this.template = {}
 | 
						|
        this.itmeList = []
 | 
						|
      })
 | 
						|
    },
 | 
						|
    handleAdd() {
 | 
						|
      this.rowData = {}
 | 
						|
      this.template_model.title = 'New'
 | 
						|
      this.template_model.visible = true
 | 
						|
    },
 | 
						|
    handleSetting() {
 | 
						|
      this.$router.push({ name: 'TemplateOfSetting' })
 | 
						|
    },
 | 
						|
    handleEdit(row) {
 | 
						|
      this.rowData = row
 | 
						|
      this.template_model.title = 'Edit'
 | 
						|
      this.template_model.visible = true
 | 
						|
    },
 | 
						|
    handleDelete(row) {
 | 
						|
      this.$confirm('Sure to delete?', {
 | 
						|
        type: 'warning',
 | 
						|
        distinguishCancelAndClose: true,
 | 
						|
        confirmButtonText: 'Ok',
 | 
						|
        cancelButtonText: 'Cancel'
 | 
						|
      })
 | 
						|
        .then(() => {
 | 
						|
          deleteQATemplate(row.Id)
 | 
						|
            .then(res => {
 | 
						|
              if (res.IsSuccess) {
 | 
						|
                this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1)
 | 
						|
                this.$message.success('Deleted successfully!')
 | 
						|
              }
 | 
						|
            })
 | 
						|
        })
 | 
						|
    },
 | 
						|
    handleView(row) {
 | 
						|
      this.template = row
 | 
						|
      this.itemLoading = true
 | 
						|
      getQaTemplateConfigList(row.Id, row.ModalityId).then(res => {
 | 
						|
        this.itmeList = res.Result
 | 
						|
        this.itmeList.forEach(val => {
 | 
						|
          this.$nextTick(
 | 
						|
            function() {
 | 
						|
              this.$refs.itemList.toggleRowSelection(val, val.IsSelect)
 | 
						|
            }.bind(this)
 | 
						|
          )
 | 
						|
        })
 | 
						|
        this.itemLoading = false
 | 
						|
      })
 | 
						|
    },
 | 
						|
    onTableSelect(rows, row) {
 | 
						|
      const param = {
 | 
						|
        qaTemplateItemId: row.Id,
 | 
						|
        qaTemplateId: this.template.Id,
 | 
						|
        isSelect: rows.indexOf(row) !== -1
 | 
						|
      }
 | 
						|
      configQATemplateItem(param).then(res => {
 | 
						|
        this.$message.success('Updated successfully')
 | 
						|
      })
 | 
						|
    },
 | 
						|
    handleReset() {
 | 
						|
      this.searchData = searchDataDefault()
 | 
						|
      this.getList()
 | 
						|
      this.template = {}
 | 
						|
      this.itmeList = []
 | 
						|
    },
 | 
						|
    closeModel() {
 | 
						|
      this.template_model.visible = false
 | 
						|
      this.getList()
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 | 
						|
</script>
 | 
						|
<style lang="scss">
 | 
						|
.template-wrapper{
 | 
						|
  height: 100%;
 | 
						|
  display: flex;
 | 
						|
  .left-wrapper{
 | 
						|
    width: 0;
 | 
						|
    flex-grow: 4;
 | 
						|
    border-right: 1px solid #ccc;
 | 
						|
  }
 | 
						|
  .right-wrapper{
 | 
						|
    width: 0;
 | 
						|
    flex-grow: 3;
 | 
						|
    padding: 5px;
 | 
						|
    thead{
 | 
						|
      .el-table-column--selection{
 | 
						|
        .cell {
 | 
						|
          display: none;
 | 
						|
        }
 | 
						|
      }
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 | 
						|
</style>
 |