FreightMgrIndexMi.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267
  1. import { basePositionApi } from '@/api/ticketMr/ticketMr'
  2. export default {
  3. data() {
  4. return {
  5. selectDeliveryAreaDialogList:[], // 全部数据
  6. selectDeliveryAreaDialogOpen: false, // 是否显示弹窗
  7. selectDeliveryAreaDialogTitle: '可售区域',
  8. selectCityListLoading: false,
  9. provinceIndex: -1,
  10. initSelectData: {} // 回显载体
  11. }
  12. },
  13. created() {
  14. },
  15. methods: {
  16. handleChangeProvince(){
  17. },
  18. /**
  19. * 打开 可售区域配置
  20. */
  21. deliverableAreaDialogCancel(data) {
  22. let obj = {}
  23. this.selectCityListLoading = false
  24. this.provinceIndex = -1
  25. this.initSelectData = {}
  26. if(data && data.length>0) {
  27. data.forEach((item,index)=>{
  28. let list = item.split('-')
  29. if(obj[list[0]] && list[1]){
  30. obj[list[0]].push([list[1]])
  31. }else {
  32. obj[list[0]] = []
  33. if(list[1]){
  34. obj[list[0]].push([list[1]])
  35. }
  36. }
  37. })
  38. }
  39. console.log('obj====',data,obj)
  40. this.initSelectData = obj
  41. this.selectDeliveryAreaDialogOpen = true;
  42. this.basePositionFun("#")
  43. },
  44. /** 关闭弹窗 */
  45. selectDeliveryAreaDialogCancel(){
  46. this.selectDeliveryAreaDialogOpen = false;
  47. },
  48. /** 确认弹窗 */
  49. selectDeliveryAreaDialogSubmitForm(){
  50. let list = []
  51. this.selectDeliveryAreaDialogList.forEach((item)=>{
  52. if(item.selected){
  53. list.push(item.name)
  54. }else if(item.selectCityList && item.selectCityList.length>0) {
  55. item.selectCityList.forEach((item1,index1)=>{
  56. console.log("item1===",item1)
  57. list.push(item.name+'-'+item1.join('-'))
  58. })
  59. }
  60. })
  61. this.form.saleArea = list
  62. this.selectDeliveryAreaDialogOpen = false
  63. console.log("list====",list)
  64. },
  65. /** 初次获取行政区划 */
  66. async basePositionFun(upCode) {
  67. try {
  68. this.selectCityListLoading = true
  69. let res = await basePositionApi({
  70. upCode,
  71. })
  72. if(res.code == 200) {
  73. let list = []
  74. let listApi = []
  75. res.data.forEach((item,index) => {
  76. if(item.code!='#') {
  77. list.push({
  78. ...item,
  79. countyList: [],
  80. selected: this.initChekeSelectAll(item),
  81. selectCityList: this.initSelectData[item.name] ?this.initSelectData[item.name] : [] ,
  82. cityList: []
  83. })
  84. listApi.push(basePositionApi({
  85. upCode: item.code?item.code : '#',
  86. }))
  87. }
  88. });
  89. let res1 = await Promise.all(listApi)
  90. if(res1) {
  91. res1.forEach((item,index)=>{
  92. let list1 = []
  93. item.data.forEach((item1,index1)=>{
  94. list1.push({
  95. ...item1,
  96. //countyList: [],
  97. //leaf: true,
  98. })
  99. })
  100. list[index].cityList = [].concat(list1)
  101. })
  102. }
  103. this.selectDeliveryAreaDialogList = [].concat(list)
  104. console.log("res1=====",res1,this.selectDeliveryAreaDialogList)
  105. }
  106. this.selectCityListLoading = false
  107. } catch (error) {
  108. console.error("error====",error)
  109. this.selectCityListLoading = false
  110. }
  111. },
  112. /** 懒加载 配置 */
  113. areaCascaderProps(areaItem, areaIndex) {
  114. return {
  115. lazy: false,
  116. lazyLoad: (node, resolve) => this.areaLazyLoad(node, resolve, areaItem, areaIndex),
  117. multiple: true,
  118. children: 'countyList',
  119. label: 'name',
  120. value: 'name',
  121. expandTrigger: 'hover',
  122. // emitPath: false,
  123. };
  124. },
  125. /** 懒加载 函数 */
  126. areaLazyLoad(node, resolve, areaItem, provinceIndex) {
  127. const { level } = node;
  128. // console.log(node, resolve, areaItem, provinceIndex)
  129. if (level === 0) {
  130. resolve([])
  131. } else if(level == 1 ) {
  132. console.log(node, resolve, areaItem, provinceIndex)
  133. if(node.data && node.data.code){
  134. if(node.data.countyList) {
  135. let list = []
  136. node.data.countyList.forEach((item,index)=>{
  137. list.push({
  138. ...item,
  139. leaf: true,
  140. })
  141. })
  142. resolve(list)
  143. }
  144. // basePositionApi({
  145. // upCode: node.data.code,
  146. // }).then((res)=>{
  147. // let list = []
  148. // res.data.forEach((item,index)=>{
  149. // list.push({
  150. // ...item,
  151. // leaf: true,
  152. // })
  153. // })
  154. // resolve(list)
  155. // })
  156. }else {
  157. resolve([])
  158. }
  159. }else {
  160. resolve([])
  161. }
  162. },
  163. // 当选中节点变化时触发
  164. changeCascader(data){
  165. console.log("data===",data)
  166. // console.log('selectDeliveryAreaDialogList====',this.selectDeliveryAreaDialogList)
  167. this.chekeSelectAll(this.provinceIndex)
  168. },
  169. // 下拉框出现/隐藏时触发
  170. async handleCascaderVisibleChangeCity(isVisible, areaItem, provinceIndex){
  171. this.provinceIndex = provinceIndex
  172. if (isVisible) {
  173. const loading = this.$loading({
  174. lock: true,
  175. text: 'Loading',
  176. spinner: 'el-icon-loading',
  177. background: 'rgba(0, 0, 0, 0.7)',
  178. customClass: 'custom-class-box'
  179. });
  180. try {
  181. console.log('this.selectDeliveryAreaDialogList1111====',this.selectDeliveryAreaDialogList)
  182. if(false && isVisible && this.selectDeliveryAreaDialogList[provinceIndex].cityList[0].countyList.length==0){
  183. console.log(isVisible, areaItem, provinceIndex)
  184. let listApi = []
  185. areaItem.cityList.forEach((item,index)=>{
  186. listApi.push(basePositionApi({
  187. upCode: item.code?item.code : '#',
  188. }))
  189. })
  190. let res1 = await Promise.all(listApi)
  191. console.log("res1====",res1)
  192. if(res1) {
  193. res1.forEach((item,index)=>{
  194. this.$set(this.selectDeliveryAreaDialogList[provinceIndex].cityList[index],'countyList',item.data)
  195. })
  196. }
  197. }
  198. loading.close();
  199. if(isVisible && areaItem.selected){
  200. this.$nextTick(()=>{
  201. // let list = [['市辖区']]
  202. // this.$set(this.selectDeliveryAreaDialogList[provinceIndex],'selectCityList',list)
  203. // console.log('this.selectDeliveryAreaDialogList1111====',this.selectDeliveryAreaDialogList)
  204. this.setSelectAll(isVisible, areaItem, provinceIndex)
  205. })
  206. }
  207. } catch (error) {
  208. loading.close();
  209. console.error("error=====",error)
  210. }
  211. }
  212. },
  213. /** 全选状态 */
  214. setSelectAll(isVisible, areaItem, provinceIndex){
  215. this.$nextTick(()=>{
  216. let list = []
  217. this.selectDeliveryAreaDialogList[provinceIndex].cityList.forEach((item,index)=>{
  218. if(item.countyList && item.countyList.length > 0) {
  219. item.countyList.forEach((item1,index1)=>{
  220. list.push([item.name,item1.name])
  221. })
  222. }else {
  223. list.push([item.name])
  224. }
  225. })
  226. this.$set(this.selectDeliveryAreaDialogList[provinceIndex],'selectCityList',list)
  227. //console.log('this.selectDeliveryAreaDialogList1111====',this.selectDeliveryAreaDialogList)
  228. })
  229. },
  230. /** 点击选中时 判断是否全选 */
  231. chekeSelectAll(provinceIndex){
  232. let flog = true
  233. this.selectDeliveryAreaDialogList[provinceIndex].cityList.forEach((item,index)=>{
  234. if(this.selectDeliveryAreaDialogList[provinceIndex].selectCityList.every((currentValue)=> !currentValue.includes(item.name)) ) {
  235. flog = false
  236. }
  237. })
  238. this.selectDeliveryAreaDialogList[provinceIndex].selected = flog
  239. console.log("provinceIndex====",provinceIndex)
  240. console.log("flog====",flog)
  241. console.log('this.selectDeliveryAreaDialogList1111====',this.selectDeliveryAreaDialogList)
  242. },
  243. /** 点击选中时 判断是否全选 */
  244. initChekeSelectAll(item){
  245. if(this.initSelectData[item.name] && this.initSelectData[item.name].length == 0) {
  246. return true
  247. }else {
  248. return false
  249. }
  250. },
  251. }
  252. }