images2.php 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636
  1. <!DOCTYPE html>
  2. <!--suppress JSAnnotator -->
  3. <html lang="zh-CN">
  4. <head>
  5. <link rel="stylesheet" href="{__PLUG_PATH}layui/css/layui.css">
  6. <link rel="stylesheet" href="{__ADMIN_PATH}css/images.css">
  7. <script src="{__PLUG_PATH}jquery-1.10.2.min.js"></script>
  8. <script src="{__PLUG_PATH}layui/layui.all.js"></script>
  9. <script src="{__PLUG_PATH}vue/dist/vue.min.js"></script>
  10. </head>
  11. <style>
  12. /* .layui-hide {
  13. display: none !important;
  14. }
  15. .layui-input-box {
  16. padding: 10px;
  17. }
  18. .layui-input-box .layui-input {
  19. padding: 0 10px;
  20. }
  21. .layui-btn-box {
  22. padding: 14px 10px;
  23. }
  24. .layui-tree {
  25. max-height: 447px;
  26. overflow: auto;
  27. }
  28. .layui-fluid {
  29. padding: 0;
  30. } */
  31. [v-cloak] {
  32. display: none;
  33. }
  34. </style>
  35. <body>
  36. <div v-cloak class="layui-fluid" id="app">
  37. <!-- <div class="picture-library"> -->
  38. <div class="library-left">
  39. <div class="layui-input-box">
  40. <input type="text" class="layui-input">
  41. </div>
  42. <div class="layui-tree" lay-filter="LAY-tree-8">
  43. <div v-for="(item1, index1) in categoryList" :key="item1.id" :class="{ 'layui-tree-spread': item1.isOpen }" data-id="2" class="layui-tree-set layui-tree-setHide">
  44. <div class="layui-tree-entry">
  45. <div class="layui-tree-main" @click="OpenTree(item1, index1)">
  46. <span class="layui-tree-iconClick">
  47. <i :style="{ visibility: item1.child.length ? 'visible' : 'hidden' }" :class="['layui-icon', item1.isOpen ? 'layui-icon-triangle-d' : 'layui-icon-triangle-r']"></i>
  48. </span>
  49. <span class="layui-tree-txt">{{ item1.name }}</span>
  50. </div>
  51. <div class="layui-btn-group layui-tree-btnGroup">
  52. <i class="layui-icon layui-icon-add-1" data-type="add"></i>
  53. <i class="layui-icon layui-icon-edit" data-type="update" @click="updateCategory(item1)"></i>
  54. <i class="layui-icon layui-icon-delete" data-type="del"></i>
  55. </div>
  56. </div>
  57. <div :style="{ display: item1.isOpen ? 'block' : 'none' }" class="layui-tree-pack layui-tree-lineExtend layui-tree-showLine">
  58. <div v-for="(item2, index2) in item1.child" :key="item2.id" data-id="2000" class="layui-tree-set">
  59. <div class="layui-tree-entry">
  60. <div class="layui-tree-main" @click="OpenTree(item2, index2)">
  61. <span class="layui-tree-iconClick">
  62. <i class="layui-tree-iconArrow layui-hide"></i>
  63. </span>
  64. <span class="layui-tree-txt">{{ item2.name }}</span>
  65. </div>
  66. <div class="layui-btn-group layui-tree-btnGroup">
  67. <i class="layui-icon layui-icon-edit" data-type="update"></i>
  68. <i class="layui-icon layui-icon-delete" data-type="del"></i>
  69. </div>
  70. </div>
  71. </div>
  72. </div>
  73. </div>
  74. </div>
  75. </div>
  76. <div class="library-right">
  77. <div class="btn-box">
  78. <button type="button" class="layui-btn layui-btn-sm">使用选中图片</button>
  79. <button type="button" class="layui-btn layui-btn-sm">添加分类</button>
  80. <button type="button" class="layui-btn layui-btn-sm">上传图片</button>
  81. <button type="button" class="layui-btn layui-btn-sm">删除图片</button>
  82. </div>
  83. <div class="content-box">
  84. <!-- <div class="picture-list">
  85. <div v-for="(item,index) in imageList" class="picture-item">
  86. <div>
  87. <img src="" alt="">
  88. </div>
  89. <div>
  90. <input type="text">
  91. <i class="layui-icon layui-icon-edit"></i>
  92. </div>
  93. </div>
  94. </div> -->
  95. <ul>
  96. <li v-for="(item, index) in imageList">
  97. <div class="img-box on">
  98. <img :src="item.att_dir" alt="">
  99. </div>
  100. <div class="title-box">
  101. <input type="text">
  102. <i class="layui-icon layui-icon-edit"></i>
  103. </div>
  104. </li>
  105. </ul>
  106. </div>
  107. <div style="height:55px;"></div>
  108. </div>
  109. <!-- <div class="layui-col-xs3 layui-col-sm3 layui-col-md3 layui-col-lg3"> -->
  110. <!-- <div class="layui-card"> -->
  111. <!-- <div class="layui-card-header">
  112. <div class="layui-unselect layui-form-select layui-form-selected">
  113. <div class="layui-select-title">
  114. <input type="text" name="title" v-model="searchTitle" placeholder="搜索分类"
  115. style="height: 24px;line-height:24px;padding-left:7px;font-size: 12px;display: inline;padding-right: 0;width: 100%;"
  116. autocomplete="off" class="layui-input layui-input-search" @keydown="search">
  117. <i class="layui-icon layui-icon-search" @click="search" style="cursor: pointer;margin:0 3px;"></i>
  118. </div>
  119. </div>
  120. </div> -->
  121. <!-- <div class="layui-card-body" style="padding: 0;height: 100%;overflow:auto;"> -->
  122. <!-- <div class="layadmin-homepage-pad-ver">
  123. <button type="button" class="layui-btn layui-btn-normal layui-btn-xs" style="width: 80%" @click="addCategory">添加</button>
  124. </div> -->
  125. <!-- <div ref="tree" class="demo-tree demo-tree-box"> -->
  126. <!-- <div class="layui-tree layui-tree-line">
  127. <div class="layui-tree-set layui-tree-setHide">
  128. <div class="layui-tree-entry">
  129. <div class="layui-tree-main" @click="OpenTree({child:[],id:0})">
  130. <span class="layui-tree-iconClick">
  131. <i class="layui-tree-iconArrow"></i>
  132. </span>
  133. <span class="layui-tree-txt" :class="pid == 0 ? 'on' : '' ">全部图片</span>
  134. </div>
  135. </div>
  136. </div>
  137. <div v-for="(value, k) in categoryList" :class="{ 'layui-tree-spread': value.isOpen }" class="layui-tree-set layui-tree-setHide">
  138. <div class="layui-tree-entry" @mouseover.stop="changeActive(value,k)" @mouseout.stop="removeActive(value,k)">
  139. <div class="layui-tree-main" @click="OpenTree(value,k)">
  140. <span class="layui-tree-iconClick">
  141. <i class="layui-icon layui-icon-triangle-d" v-if="value.child.length && value.isOpen"></i>
  142. <i class="layui-icon layui-icon-triangle-r" v-else-if="value.child.length && !value.isOpen"></i>
  143. <i class="layui-icon " v-else>&nbsp;&nbsp;&nbsp;</i>
  144. </span>
  145. <span class="layui-tree-txt line1" :class="pid == value.id ? 'on': '' " v-text="value.name"></span>
  146. </div>
  147. <div class="layui-btn-group layui-tree-btnGroup layui-layer layui-layer-tips"
  148. v-show="value.isShow">
  149. <div>
  150. <i class="layui-icon layui-icon-add-1" @click.stop="addCategory(value)"
  151. title="添加"></i>
  152. <i class="layui-icon layui-icon-edit"
  153. @click.stop="updateCategory(value)" title="编辑"></i>
  154. <i class="layui-icon layui-icon-delete" v-if="!value.child.length"
  155. title="删除" @click.stop="delCategory(value)"></i>
  156. </div>
  157. <i class="layui-layer-TipsG layui-layer-TipsT"></i>
  158. </div>
  159. </div>
  160. <div class="layui-tree-pack layui-tree-lineExtend layui-tree-showLine"
  161. v-show="value.isOpen" style="display: block">
  162. <div class="layui-tree-set" v-for="(item,key) in value.child">
  163. <div class="layui-tree-entry">
  164. <div class="layui-tree-main" @click="OpenTree(item,key)">
  165. <span class="layui-tree-iconClick">
  166. <i class="layui-icon"></i>
  167. </span>
  168. <span class="layui-tree-txt line1"
  169. :class="pid == item.id ? 'on': '' " v-text="item.name"></span>
  170. </div>
  171. <div class="layui-btn-group layui-tree-btnGroup layui-layer layui-layer-tips"
  172. @mouseover.stop="changeActive(item,k,key)"
  173. @mouseout.stop="removeActive(item,k,key)">
  174. <div>
  175. <i class="layui-icon layui-icon-edit"
  176. @click.stop="updateCategory(item,value.pid)" title="编辑"></i>
  177. <i class="layui-icon layui-icon-delete"
  178. @click.stop="delCategory(item,value.pid)" title="删除"></i>
  179. </div>
  180. <i class="layui-layer-TipsG layui-layer-TipsT"></i>
  181. </div>
  182. </div>
  183. </div>
  184. </div>
  185. </div>
  186. </div> -->
  187. <!-- </div> -->
  188. <!-- </div> -->
  189. <!-- </div> -->
  190. <!-- </div> -->
  191. <!-- <div class="layui-col-xs9 layui-col-sm9 layui-col-md9 layui-col-lg9">
  192. <div class="layadmin-homepage-panel layadmin-homepage-shadow">
  193. <div class="layui-card text-center">
  194. <div class="layui-card-header">
  195. <div class="layadmin-homepage-pad-ver" style="text-align: left">
  196. <div class="layui-btn-group">
  197. <button type="button" class="layui-btn layui-btn-normal layui-btn-sm"
  198. :class="selectImages.length ? '':'layui-btn-disabled' " @click="useImages">
  199. 使用选中的图片
  200. </button>
  201. <button type="button" class="layui-btn layui-btn-normal layui-btn-sm"
  202. @click="addCategory">添加分类
  203. </button>
  204. <button type="button" class="layui-btn layui-btn-normal layui-btn-sm" ref="upload">
  205. 上传图片
  206. </button>
  207. <button type="button" class="layui-btn layui-btn-warm layui-btn-sm"
  208. :class="selectImages.length ? '':'layui-btn-disabled' " @click="moveCate">移动分类
  209. </button>
  210. <div class="layui-unselect layui-form-select"><div class="layui-select-title"><input type="text" placeholder="请选择" value="" readonly="" class="layui-input layui-unselect"><i class="layui-edge"></i></div><dl class="layui-anim layui-anim-upbit"><dd lay-value="" class="layui-select-tips">请选择</dd><dd lay-value="0" class="">北京</dd><dd lay-value="1" class="">上海</dd><dd lay-value="2" class="">广州</dd><dd lay-value="3" class="">深圳</dd><dd lay-value="4" class="">杭州</dd></dl></div>
  211. <button type="button" class="layui-btn layui-btn-danger layui-btn-sm"
  212. :class="selectImages.length ? '':'layui-btn-disabled' " @click="delImage">删除图片
  213. </button>
  214. <button type="button" class="layui-btn layui-btn-sm layui-btn-normal" @click="onSearch">
  215. <i class="layui-icon layui-icon-search"></i>
  216. </button>
  217. </div>
  218. </div>
  219. </div>
  220. <div class="layui-card-body clearfix image-box" style="padding: 10px;height: 360px;z-index:10;">
  221. <div class="layui-col-md2 layui-col-xs2 layui-col-sm2 image" v-for="(item,index) in imageList">
  222. <span class="layui-badge layui-bg-cyan" style="position: absolute;" v-if="item.sort">{{ item.sort }}</span>
  223. <div class="layui-img-box" :class="item.isSelect ? 'on': '' ">
  224. <img :src="item.att_dir" v-if="small == 1" @click="changImage(item)">
  225. <img :src="item.att_dir" v-else @click="changImage(item)">
  226. </div>
  227. <div class="picture-title" @mouseover="onMouseover(item)" @mouseout="onMouseout(item)"><input v-model="item.title" :readonly="item.readonly" @blur="onBlur(item)"><i v-show="item.isEdit" class="layui-icon layui-icon-edit" @click="onEdit($event, item)"></i></div>
  228. </div>
  229. <div class="empty-image" style="width: 100%;height: 100%;text-align: center;"
  230. v-if="!imageList.length && loading == false">
  231. <div class="layui-img-box">
  232. <img src="{__ADMIN_PATH}images/empty.jpg" style="height: 400px;" alt="">
  233. </div>
  234. </div>
  235. </div>
  236. <div class="layui-card-body clearfix page">
  237. <div class="layui-col-md8 layui-col-xs8 layui-col-sm8 image_page" ref="image_page"></div>
  238. </div>
  239. </div>
  240. </div>
  241. </div> -->
  242. <!-- </div> -->
  243. </div>
  244. </body>
  245. </html>
  246. <script src="{__ADMIN_PATH}js/layuiList.js?id=dsfwef"></script>
  247. <script>
  248. var pid = {$pid}, small = {$Request.param.small ? : 0
  249. } ,
  250. parentinputname = '{$fodder}', maxLength = {$maxLength};//当前图片分类ID
  251. new Vue({
  252. el: "#app",
  253. data: {
  254. categoryList: [],
  255. searchTitle: '',
  256. pid: pid,
  257. imageList: [],
  258. page: 1,
  259. limit: 18,
  260. loading: false,
  261. small: small,
  262. selectImages: [],
  263. selectImagesIDS: [],
  264. uploadInst: null,
  265. searchImage: ''
  266. },
  267. watch: {
  268. page: function () {
  269. this.getImageList();
  270. },
  271. },
  272. methods: {
  273. onSearch: function () {
  274. var vm = this;
  275. layer.prompt({
  276. title: '输入图片名称,并确认',
  277. formType: 0
  278. }, function (text, index) {
  279. if (!text.trim().length) {
  280. return;
  281. }
  282. this.pid = 0;
  283. this.searchImage = text.trim();
  284. this.page = 1;
  285. layer.close(index);
  286. var load = layer.load(1);
  287. layList.baseGet(this.U({
  288. a: 'get_image_list',
  289. q: {pid: this.pid, page: this.page, limit: this.limit, title: this.searchImage}
  290. }), function (res) {
  291. layer.close(load);
  292. var list = res.data.list;
  293. list.forEach(function (item) {
  294. item.readonly = true;
  295. item.isEdit = false;
  296. if (!item.title) {
  297. item.title = item.name.slice(0, item.name.lastIndexOf('.'));
  298. }
  299. });
  300. this.$set(this, 'imageList', list);
  301. if (this.page == 1) {
  302. layList.laypage.render({
  303. elem: this.$refs.image_page
  304. , count: res.data.count
  305. , limit: this.limit
  306. , theme: '#191C6E',
  307. groups: 3,
  308. jump: function (obj) {
  309. vm.page = obj.curr;
  310. }
  311. });
  312. }
  313. }.bind(this), function (res) {
  314. layer.close(load);
  315. layList.msg(res.msg);
  316. });
  317. }.bind(this));
  318. },
  319. onEdit: function (event, item) {
  320. item.readonly = false;
  321. this.titleFocus = item.title;
  322. this.$nextTick(function () {
  323. event.target.previousElementSibling.focus();
  324. });
  325. },
  326. onBlur: function (item) {
  327. item.readonly = true;
  328. if (item.title === this.titleFocus) {
  329. return;
  330. }
  331. layList.basePost(this.U({
  332. a: 'updateImageTitle'
  333. }), {
  334. att_id: item.att_id,
  335. title: item.title
  336. }, function (res) {
  337. layList.msg(res.msg);
  338. }, function (res) {
  339. layList.msg(res.msg);
  340. });
  341. },
  342. onMouseover: function (item) {
  343. item.isEdit = true;
  344. },
  345. onMouseout: function (item) {
  346. item.isEdit = false;
  347. },
  348. //删除图片
  349. delImage: function () {
  350. var that = this;
  351. if (!this.selectImages.length) return;
  352. layList.layer.confirm('是否要删除选中图片?', {
  353. btn: ['是的我要删除', '我想想把'] //按钮
  354. }, function () {
  355. layList.basePost(that.U({a: 'delete'}), {imageid: that.selectImagesIDS}, function (res) {
  356. layList.msg(res.msg);
  357. that.getImageList();
  358. window.location.reload()
  359. }, function (res) {
  360. layList.msg(res.msg);
  361. })
  362. })
  363. },
  364. //移动图片分类
  365. moveCate: function () {
  366. if (!this.selectImages.length) return;
  367. return this.getOpenWindow('移动图片', this.U({a: 'moveimg'}) + '?imgaes=' + this.selectImagesIDS);
  368. },
  369. //使用选中图片
  370. useImages: function () {
  371. if (!this.selectImages.length) return;
  372. //判断表单限制图片个数
  373. if (typeof parent.$f != 'undefined') {
  374. //已有图片个数
  375. var nowpics = parent.$f.getValue(parentinputname).length,
  376. props = parent.$f.model()[parentinputname].props || {},
  377. maxlength = props.maxLength || 0;
  378. //已选图片个数
  379. var selectlength = this.selectImages.length;
  380. //还可以选择多少张
  381. var surplus = maxlength - nowpics;
  382. if (nowpics + selectlength > maxlength) {
  383. return layList.msg('最多只能选择 ' + surplus + ' 张');
  384. }
  385. }
  386. //编辑器中
  387. if (parentinputname.includes('editor')) {
  388. var list = this.selectImages.map(function (image) {
  389. return {
  390. _src: image,
  391. src: image
  392. };
  393. });
  394. parent.insertEditor(list, parentinputname);
  395. var index = parent.layer.getFrameIndex(window.name);
  396. parent.layer.close(index)
  397. } else {
  398. //form表单中
  399. if (parent.$f) {
  400. var value = parent.$f.getValue(parentinputname);//父级input 值
  401. var list = value || [];
  402. for (var i = 0; i < this.selectImages.length; i++) {
  403. if (value.indexOf(this.selectImages[i]) == -1) list.push(this.selectImages[i]);
  404. }
  405. parent.$f.changeField(parentinputname, list);
  406. parent.$f.closeModal(parentinputname);
  407. } else {
  408. //独立图片选择页面
  409. if(maxLength > 0 ){
  410. if(this.selectImages.length > maxLength){
  411. return layList.msg('最多能选择' + maxLength + '张');
  412. }
  413. parent.changeIMG(parentinputname, this.selectImages,1);
  414. }else{
  415. if(this.selectImages.length > 1){
  416. return layList.msg('只能选择一张图片');
  417. }
  418. parent.changeIMG(parentinputname, this.selectImages[0]);
  419. }
  420. var index = parent.layer.getFrameIndex(window.name);
  421. parent.layer.close(index);
  422. }
  423. }
  424. },
  425. //图片选中和取消
  426. changImage: function (item, index) {
  427. this.$set(item, 'isSelect', item.isSelect == undefined ? true : !item.isSelect);
  428. var val = small == 1 ? item['satt_dir'] : item['att_dir'];
  429. if (item.isSelect === true) {
  430. this.selectImages[this.selectImages.length] = val;
  431. this.selectImagesIDS[this.selectImages.length] = item['att_id'];
  432. item.sort = this.selectImages.length;
  433. } else {
  434. this.selectImages.splice(this.selectImages.indexOf(val), 1);
  435. this.selectImagesIDS.splice(this.selectImages.indexOf(item['att_id']), 1);
  436. for (var i = 0; i < this.imageList.length; i++) {
  437. if (this.imageList[i].sort > item.sort) {
  438. this.imageList[i].sort = (this.imageList[i].sort - 1) >= 0 ? this.imageList[i].sort - 1 : 0;
  439. }
  440. }
  441. item.sort = 0;
  442. }
  443. this.$set(this, 'selectImages', this.selectImages);
  444. this.$set(this, 'selectImagesIDS', this.selectImagesIDS);
  445. },
  446. //获取图片列表
  447. getImageList: function () {
  448. var that = this;
  449. if (that.loading) return;
  450. that.loading = true;
  451. var index = layList.layer.load(1, {shade: [0.1, '#fff']});
  452. layList.baseGet(this.U({
  453. a: 'get_image_list',
  454. q: {pid: this.pid, page: this.page, limit: this.limit, title: that.searchImage }
  455. }), function (res) {
  456. that.loading = false;
  457. var list = res.data.list;
  458. for (var i = list.length; i--;) {
  459. list[i].readonly = true;
  460. list[i].isEdit = false;
  461. if (!list[i].title) {
  462. list[i].title = list[i].name.slice(0, list[i].name.lastIndexOf('.'));
  463. }
  464. }
  465. that.$set(that, 'imageList', res.data.list);
  466. layList.layer.close(index);
  467. if (that.page == 1) {
  468. layList.laypage.render({
  469. elem: that.$refs.image_page
  470. , count: res.data.count
  471. , limit: that.limit
  472. , theme: '#191C6E',
  473. jump: function (obj) {
  474. that.page = obj.curr;
  475. }
  476. });
  477. }
  478. }, function () {
  479. that.loading = false;
  480. layList.layer.close(index);
  481. });
  482. },
  483. //查询分类
  484. search: function () {
  485. // if(!this.searchTitle) return layList.msg('请输入搜索内容!');
  486. this.getCategoryList();
  487. },
  488. //打开和关闭树形
  489. OpenTree: function (item, index) {
  490. var vm = this;
  491. if (item.child.length) {
  492. vm.$set(vm.categoryList[index], 'isOpen', !item.isOpen);
  493. }
  494. if (vm.pid == item.id) {
  495. return;
  496. }
  497. vm.pid = item.id;
  498. vm.page = 1;
  499. vm.getImageList();
  500. // this.searchImage = '';
  501. // this.pid = item.id;
  502. // if (item.child.length) {
  503. // // item.isOpen == undefined ? false : item.isOpen;
  504. // // this.$set(this.categoryList[index], 'isOpen', !item.isOpen);
  505. // item.isOpen == undefined ? false : item.isOpen;
  506. // this.$set(this.categoryList[index], 'isOpen', !item.isOpen);
  507. // } else {
  508. // this.page = 1;
  509. // this.$set(this, 'selectImages', []);
  510. // this.$set(this, 'selectImagesIDS', []);
  511. // this.getImageList();
  512. // }
  513. // this.uploadInst.reload({
  514. // url: this.U({a: 'upload'}) + '?pid=' + this.pid
  515. // });
  516. },
  517. //组装URL
  518. U: function (opt) {
  519. opt = typeof opt == 'object' ? opt : {};
  520. return layList.U({m: 'admin', c: "widget.images", a: opt.a || '', q: opt.q || {}, p: opt.q || {}});
  521. },
  522. //获取分类
  523. getCategoryList: function () {
  524. // var that = this;
  525. // console.log(window);
  526. // console.log(that);
  527. // layList.baseGet(that.U({a: 'get_image_cate', q: {name: this.searchTitle}}), function (res) {
  528. // that.$set(that, 'categoryList', res.data);
  529. // });
  530. var vm = this;
  531. layList.baseGet(vm.U({
  532. a: 'get_image_cate',
  533. q: {
  534. name: vm.searchTitle
  535. }
  536. }), function (res) {
  537. vm.categoryList = res.data;
  538. }, function (err) {
  539. layList.msg(err.msg);
  540. });
  541. },
  542. //鼠标移入显示图标
  543. changeActive: function (item, indexK, index) {
  544. if (index)
  545. this.$set(this.categoryList[indexK]['child'], 'isShow', true);
  546. else
  547. this.$set(this.categoryList[indexK], 'isShow', true);
  548. },
  549. //鼠标移出隐藏
  550. removeActive: function (item, indexK, index) {
  551. if (index)
  552. this.$set(this.categoryList[indexK]['child'], 'isShow', false);
  553. else
  554. this.$set(this.categoryList[indexK], 'isShow', false);
  555. },
  556. //添加分类
  557. addCategory: function (item, pid) {
  558. item = item == undefined ? {} : item;
  559. var id = item.id == undefined ? 0 : item.id,
  560. pid = pid == undefined ? 0 : pid;
  561. return this.getOpenWindow(item.name ? item.name + '编辑' : '新增分类', this.U({
  562. a: 'addcate',
  563. q: {id: pid == 0 ? id : pid}
  564. }));
  565. },
  566. //修改分类
  567. updateCategory: function (item, pid) {
  568. item = item == undefined ? {} : item;
  569. pid = pid == undefined ? 0 : pid;
  570. return this.getOpenWindow(item.name + '编辑', this.U({a: 'editcate', q: {id: item.id}}));
  571. },
  572. //删除分类
  573. delCategory: function (item, pid) {
  574. var that = this;
  575. if (item.child.length) return layList.msg('请先删除子分类再尝试删除此分类!');
  576. layList.layer.confirm('是否要删除[' + item.name + ']分类?', {
  577. btn: ['是的我要删除', '我想想吧'] //按钮
  578. }, function () {
  579. layList.baseGet(that.U({a: 'deletecate', q: {id: item.id}}), function (res) {
  580. layList.msg(res.msg, function () {
  581. that.getCategoryList();
  582. });
  583. });
  584. });
  585. },
  586. //打开一个窗口
  587. getOpenWindow: function (title, url, opt) {
  588. opt = opt == undefined ? {w: 340, h: 265} : opt;
  589. return layList.layer.open({
  590. type: 2,
  591. title: title,
  592. shade: [0],
  593. area: [opt.w + "px", opt.h + 'px'],
  594. anim: 2,
  595. content: [url, 'no'],
  596. });
  597. },
  598. //回调
  599. SuccessCateg: function () {
  600. this.getCategoryList();
  601. },
  602. uploal: function () {
  603. var that = this;
  604. this.uploadInst = layList.upload.render({
  605. elem: this.$refs.upload
  606. , url: this.U({a: 'upload'}) + '?pid=' + this.pid
  607. , multiple: true
  608. , auto: true
  609. , size: 2097152 //限制文件大小,单位 KB
  610. , done: function (res) {
  611. layList.layer.msg('上传成功', {time: 2000});
  612. that.page = 1;
  613. that.getImageList();
  614. }
  615. });
  616. }
  617. },
  618. mounted: function () {
  619. this.getCategoryList();
  620. this.getImageList();
  621. window.SuccessCateg = this.SuccessCateg;
  622. this.uploal();
  623. }
  624. })
  625. </script>