imageImport.vue 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. <template>
  2. <div>
  3. <m-filter :option="filter" @search="handleSearch" />
  4. <m-table
  5. class="mt-3"
  6. :loading="loading"
  7. :headers="headers"
  8. :items="items"
  9. :total="total"
  10. :show-select="false"
  11. :is-tools="false"
  12. :page-info="pageInfo"
  13. @pageHandleChange="pageHandleChange"
  14. @sort="handleSort"
  15. >
  16. <template #navBtn>
  17. <!-- <v-btn class="buttons mr-3" rounded elevation="5" color="primary" @click="handleTake" :loading="takeLoading">
  18. <v-icon left>mdi-camera</v-icon>
  19. 拍照
  20. </v-btn> -->
  21. <UploadBtn
  22. class="buttons"
  23. rounded
  24. elevation="5"
  25. color="primary"
  26. accept="image/*"
  27. @change="handleImport"
  28. >
  29. <v-icon left>mdi-import</v-icon>
  30. 导入
  31. </UploadBtn>
  32. </template>
  33. </m-table>
  34. <m-camera ref="camera" @rendered="takeLoading = false"></m-camera>
  35. </div>
  36. </template>
  37. <script>
  38. import UploadBtn from '@/components/UploadBtn'
  39. import MFilter from '@/components/Filter'
  40. import MTable from '@/components/List/table.vue'
  41. import MCamera from '../components/MCamera'
  42. export default {
  43. name: 'image-import',
  44. components: { MFilter, MTable, MCamera, UploadBtn },
  45. data () {
  46. return {
  47. takeLoading: false,
  48. loading: false,
  49. show: false,
  50. filter: {
  51. list: [
  52. { type: 'textField', value: '', label: '名称', key: 'name' },
  53. { type: 'autocomplete', value: null, label: '选择', key: 'type', items: [] }
  54. ]
  55. },
  56. queryData: {
  57. name: null
  58. },
  59. headers: [
  60. { text: '标题', align: 'start', value: 'title' },
  61. { text: '姓名', align: 'start', value: 'name' },
  62. { text: '来源', align: 'start', value: 'source' },
  63. { text: '创建日期', align: 'start', value: 'createDate' },
  64. { text: '操作', align: 'start', value: 'actions' }
  65. ],
  66. itemData: {},
  67. items: [],
  68. orders: [],
  69. pageInfo: {
  70. size: 10,
  71. current: 1
  72. },
  73. total: 0
  74. }
  75. },
  76. created () {
  77. this.init()
  78. },
  79. methods: {
  80. async init () {},
  81. handleSearch (val) {
  82. Object.assign(this.queryData, val)
  83. this.pageInfo.current = 1
  84. this.init()
  85. },
  86. handleImport () {
  87. this.itemData = {}
  88. },
  89. handleTake () {
  90. this.takeLoading = true
  91. this.$refs.camera.open()
  92. },
  93. async handleEdit (item) {
  94. this.itemData = item
  95. },
  96. handleDelete (ids) {
  97. if (Array.isArray(ids) && !ids.length) return this.$snackbar.warning('请选择要删除的选项')
  98. this.$confirm('提示', '是否删除该选项')
  99. .then(async () => {
  100. try {
  101. this.$snackbar.success('删除成功')
  102. this.init()
  103. } catch (error) {
  104. this.$snackbar.error('删除失败')
  105. }
  106. })
  107. },
  108. handleSubmit () {},
  109. pageHandleChange (page) {
  110. this.pageInfo.current = page
  111. this.init()
  112. },
  113. handleSort (val) {
  114. this.orders = val
  115. this.init()
  116. }
  117. }
  118. }
  119. </script>
  120. <style lang="scss" scoped>
  121. </style>