useClassify.js 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. import {
  2. apiMyClassifyList,
  3. apiPublicClassifyList,
  4. apiAddClassify,
  5. apiEidtClassify,
  6. apiDeleteClassify,
  7. apiShareClassify,
  8. apiClassifyCopy
  9. } from '@/api/myETA.js'
  10. import apiETAForum from '@/api/etaForum'
  11. import {reactive} from 'vue'
  12. import { showToast,showDialog,Dialog } from 'vant';
  13. export function useClassify(){
  14. const classifyTypeOpt=[
  15. {
  16. name:"我的图库",
  17. type:1
  18. },
  19. {
  20. name:"ETA社区图库",
  21. type:3
  22. },
  23. {
  24. name:"公共图库",
  25. type:2
  26. }
  27. ]
  28. const classifyState=reactive({
  29. classifyTypeAct:1,//当前选中的类型
  30. myClassifyList:[],//我的图库分类
  31. pubClassifyList:[],//公共图库分类
  32. forumClassifyList:[],//ETA社区图库分类
  33. classifyAct:0,//当前选中的分类id
  34. showEidtClassifyName:false,//显示新增/编辑分类弹窗
  35. isAddClassifyName:false,//是否为新增分类 false为编辑分类
  36. classifyNameVal:'',//当前分类名称
  37. showClassifyOpt:false,//显示分类操作弹窗
  38. activeClassifyVal:null,//当前选中的分类数据
  39. })
  40. // 获取我的图库分类
  41. const getMyClassify=async()=>{
  42. const res=await apiMyClassifyList()
  43. if(res.Ret===200){
  44. classifyState.myClassifyList=res.Data.List||[]
  45. }
  46. }
  47. // 获取公共图库分类
  48. const getPubClassify=async()=>{
  49. const res=await apiPublicClassifyList()
  50. if(res.Ret===200){
  51. classifyState.pubClassifyList=res.Data.List||[]
  52. }
  53. }
  54. // 获取ETA社区图库分类
  55. const getETAForumClassify=async()=>{
  56. const res=await apiETAForum.myClassifyList()
  57. if(res.Ret===200){
  58. const arr=res.Data.List||[]
  59. classifyState.forumClassifyList=arr.map(item=>{
  60. return {
  61. ...item,
  62. MyChartClassifyId:item.CollectClassifyId,
  63. MyChartClassifyName:item.ClassifyName
  64. }
  65. })
  66. // 没有分类则去除eta社区分类模块
  67. if(classifyState.forumClassifyList.length===0){
  68. classifyTypeOpt.splice(1,1)
  69. }
  70. }
  71. }
  72. // 切换图库分类类型
  73. const classifyTypeChange=(e)=>{
  74. classifyState.classifyTypeAct=e.name
  75. }
  76. // 显示新增分类弹窗
  77. const handleAddClassify=(item)=>{
  78. console.log('item',item);
  79. classifyState.isAddClassifyName=item?false:true
  80. classifyState.classifyNameVal=item.MyChartClassifyName||''
  81. classifyState.showEidtClassifyName=true
  82. }
  83. // 确认编辑分类
  84. const handleConfirmEditClassify=async ()=>{
  85. if(!classifyState.classifyNameVal){
  86. showToast('请填写分类名称!')
  87. return
  88. }
  89. // 新增
  90. let res
  91. if(classifyState.isAddClassifyName){
  92. res=await apiAddClassify({MyChartClassifyName:classifyState.classifyNameVal})
  93. }else{
  94. res=await apiEidtClassify({
  95. MyChartClassifyName:classifyState.classifyNameVal,
  96. MyChartClassifyId:classifyState.activeClassifyVal.MyChartClassifyId
  97. })
  98. }
  99. if(res.Ret===200){
  100. getMyClassify()
  101. classifyState.showEidtClassifyName=false
  102. }
  103. }
  104. // 显示分类操作弹窗
  105. const handleShowOpt=(item)=>{
  106. classifyState.activeClassifyVal=item
  107. classifyState.showClassifyOpt=true
  108. }
  109. // 设置分类是否为公共
  110. const handleClassifyShare=async ()=>{
  111. const params={
  112. IsPublic:classifyState.activeClassifyVal.IsPublic?0:1,
  113. MyChartClassifyId:classifyState.activeClassifyVal.MyChartClassifyId
  114. }
  115. const res=await apiShareClassify(params)
  116. if(res.Ret===200){
  117. classifyState.activeClassifyVal.IsPublic=params.IsPublic
  118. getMyClassify()
  119. showToast('设置成功')
  120. }
  121. }
  122. // 复制公共图表分类到我的分类中
  123. const handleCopyClassify=async (item)=>{
  124. const res=await apiClassifyCopy({
  125. MyChartClassifyId:item.MyChartClassifyId
  126. })
  127. if(res.Ret===200){
  128. setTimeout(() => {
  129. showToast('复制成功')
  130. }, 100);
  131. getMyClassify()
  132. }
  133. }
  134. // 删除分类
  135. const handleClassifyDel=(item)=>{
  136. showDialog({
  137. title: '提示',
  138. message: '若删除分类,则分类下关联的所有图表将被全部删除,是否确认删除?',
  139. showCancelButton:true
  140. }).then(() => {
  141. // on close
  142. apiDeleteClassify({MyChartClassifyId:item.MyChartClassifyId}).then(res=>{
  143. if(res.Ret===200){
  144. getMyClassify()
  145. classifyState.showClassifyOpt=false
  146. setTimeout(() => {
  147. showToast('删除成功')
  148. }, 100);
  149. }
  150. })
  151. }).catch(()=>{})
  152. }
  153. const handleAddClassifyBeforeClose=(action)=>{
  154. if(action==='confirm'&&classifyState.isAddClassifyName){
  155. return false
  156. }else{
  157. return true
  158. }
  159. }
  160. return {
  161. classifyTypeOpt,
  162. classifyState,
  163. getMyClassify,
  164. getPubClassify,
  165. getETAForumClassify,
  166. classifyTypeChange,
  167. handleAddClassify,
  168. handleConfirmEditClassify,
  169. handleShowOpt,
  170. handleClassifyShare,
  171. handleCopyClassify,
  172. handleClassifyDel,
  173. handleAddClassifyBeforeClose
  174. }
  175. }