select.html 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. <template>
  2. <div class="filebox">
  3. <el-card shadow="never">
  4. <div class="left">
  5. <el-button type="primary" @click="addCate">添加分类</el-button>
  6. <el-input placeholder="请输入分类搜索" style="margin: 15px 0;"></el-input>
  7. <el-scrollbar height="320px" style="margin:0 -10px;">
  8. <div :class="['li',category=='all'?'active':'']" @click="checkCategory('all');">
  9. <i :class="['fa',category=='all'?'fa-folder-open-o':'fa-folder-o']"></i>&nbsp;&nbsp;全部
  10. </div>
  11. <div :class="['li',category=='unclassed'?'active':'']" @click="checkCategory('unclassed');">
  12. <i :class="['fa',category==''?'fa-folder-open-o':'fa-folder-o']"></i>&nbsp;&nbsp;未归类
  13. </div>
  14. <template v-for="(item,key) in catelist">
  15. <div :class="['li',category==key?'active':'']" @click="checkCategory(key);">
  16. <i :class="['fa',category==key?'fa-folder-open-o':'fa-folder-o']"></i>&nbsp;&nbsp;{{item}}
  17. <div class="fr"><span @click.stop="editCate(key,item)">编辑</span>|<span @click.stop="delCate(key,item)">删除</span></div>
  18. </div>
  19. </template>
  20. </el-scrollbar>
  21. </div>
  22. <div class="right">
  23. <el-input placeholder="请输入名称搜索" style="width: 725px;margin-left: 7px;" v-model="keywords">
  24. <template #append>
  25. <el-button type="primary" size="small" @click="refresh">搜索</el-button>
  26. </template>
  27. </el-input>
  28. <el-upload
  29. :multiple="true"
  30. accept="image/*"
  31. action="{$config.baseUrl}{$config.upload.uploadurl}"
  32. :data="{category:category,disks:'{$config.upload.disks}'}"
  33. :headers="{'x-requested-with': 'XMLHttpRequest'}"
  34. list-type="picture-card"
  35. :on-success="beforeUploadSuccess"
  36. :file-list="list">
  37. <i class="fa fa-cloud-upload"></i>
  38. <template #file="{file}">
  39. <div :class="inArray(file.fullurl)!==false?'checked':''" @click="checkImg(file)">
  40. <div class="img">
  41. <img @load="parseImg" class="upload-file-img" :data-url="file.thumburl" style="width: 100%"/>
  42. </div>
  43. <span>{{file.filename}}</span>
  44. <i class="fa fa-check"></i>
  45. </div>
  46. </template>
  47. </el-upload>
  48. <el-pagination
  49. style="position: absolute;bottom: 15px;right: 15px"
  50. @current-change="pageChange"
  51. small
  52. :page-size="17"
  53. :current-page="page"
  54. background
  55. layout="prev, pager, next"
  56. :total="total"
  57. ></el-pagination>
  58. </div>
  59. </el-card>
  60. <div class="footer">
  61. <el-button type="danger" @click="delPic">删除</el-button>
  62. <el-button type="warning" @click="setCategory">归类</el-button>
  63. <el-button type="primary" @click="confirmImg">选定</el-button>
  64. <el-button type="success" @click="refresh">刷新</el-button>
  65. </div>
  66. </div>
  67. <el-dialog
  68. v-model="editCateForm.show"
  69. destroy-on-close
  70. :lock-scroll="false"
  71. :title="editCateForm.title"
  72. width="50%"
  73. :modal="false"
  74. align-center>
  75. <el-select style="width: 100%" v-model="editCateForm.key" v-if="editCateForm.type=='set'">
  76. <el-option
  77. v-for="(item,key) in catelist"
  78. :key="key"
  79. :label="item"
  80. :value="key">
  81. </el-option>
  82. </el-select>
  83. <el-input placeholder="请输入分类名称" v-model="editCateForm.value" v-else></el-input>
  84. <template #footer>
  85. <span class="dialog-footer">
  86. <el-button type="danger" @click="editCateForm.show=false">取消</el-button>
  87. <el-button type="primary" @click="confirm">确认</el-button>
  88. </span>
  89. </template>
  90. </el-dialog>
  91. </template>
  92. <script>
  93. export default{
  94. data:{
  95. list:[],
  96. page:1,
  97. category:'all',
  98. catelist:Yunqi.data.categoryList,
  99. checked:[],
  100. keywords:'',
  101. total:0,
  102. editCateForm:{
  103. show:false,
  104. type:'add',
  105. key:'',
  106. value:''
  107. },
  108. loading:false,
  109. limit:Yunqi.data.limit,
  110. },
  111. onLoad:function (){
  112. this.getImglist();
  113. },
  114. methods: {
  115. inArray:function (url) {
  116. let r=false;
  117. for(let i=0;i<this.checked.length;i++){
  118. if(this.checked[i].fullurl==url){
  119. r=i;
  120. break;
  121. }
  122. }
  123. return r;
  124. },
  125. beforeUploadSuccess:function (res,file) {
  126. if(res.code===0){
  127. Yunqi.message.error(__(res.msg));
  128. }
  129. th