xminquiry.vue 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341
  1. <template>
  2. <view class="xmbox navbar">
  3. <!-- 自定义头部 -->
  4. <view class="pfixed">
  5. <uni-nav-bar left-icon="left" fixed="true" :border='border' statusBar='true' :rightText="checkPermi(['projectV2:dept:list'])?'历史记录':''" title="项目分派" rightWidth='180rpx' @clickRight="clickRight" @clickLeft='getBack'/>
  6. <view class=" topfixed">
  7. <view class="flexcc flex1" :class="tabidx==0?'act':''" @click="getTab(0)"><view class="tab f16 c6 flexc">要素部门</view></view>
  8. <view class="flexcc flex1" :class="tabidx==1?'act':''" @click="getTab(1)"><view class="tab f16 c6 flexc">承接地</view></view>
  9. <view class="flexcc flex1" :class="tabidx==2?'act':''" @click="getTab(2)"><view class="tab f16 c6 flexc">招商引荐单位</view></view>
  10. </view>
  11. </view>
  12. <!-- 站位的 -->
  13. <uni-nav-bar left-icon="left" :border='border' statusBar='true' />
  14. <view class='zhanline'></view>
  15. <!-- 要素部门 -->
  16. <view class="xmmain" v-show="tabidx==0">
  17. <uni-data-checkbox :wrap='true' :map="map" selectedTextColor='#343434' multiple v-model="cityvalue" :localdata="cityrange" @change="checkboxChangecity"></uni-data-checkbox>
  18. </view>
  19. <!-- 承接地 单选-->
  20. <view class="xmmain" v-show="tabidx==1">
  21. <uni-data-checkbox :wrap='true' :map="map" selectedTextColor='#343434' v-model="adrvalue" :localdata="adrrange" @change="checkboxChangeadr" ></uni-data-checkbox>
  22. </view>
  23. <!-- 市直中心 -->
  24. <view class="xmmain" v-show="tabidx==2">
  25. <bartree-picker ref="treePicker" :multiple='true' @select-change="selectChange" title="选择招商引荐单位"
  26. :localdata="localdata" valueKey="id" textKey="label" childrenKey="children"></bartree-picker>
  27. </view>
  28. <view class="pfixedb flexc">
  29. <view class="flex0 xmbtn f17 cof4 btn1" @click="allChoose" v-if="tabidx==0">全选</view>
  30. <view class="flex0 xmbtn f17 cof4 btn1" @click="getChoose" v-else>清除</view>
  31. <view class="flex1 xmbtn f17 cf btn2" @click="getConfirm">确认</view>
  32. </view>
  33. <!-- 弹窗 -->
  34. <view class="bgbox" @click="getClose" v-if="hisflag"></view>
  35. <view class="fixedbox flexdc" style="padding: 48rpx 0 0;" v-if="hisflag">
  36. <image :src="closeimg" class="choseimg" @click="getClose"></image>
  37. <view class="top mb20">历史记录</view>
  38. <!-- 步骤条 -->
  39. <view class="steps" v-if="hisdeptList.length">
  40. <view class="lssteplist" v-for="(ite,idx) in hisdeptList" :key='idx'>
  41. <view class="stepcir"></view>
  42. <view class="flex1">
  43. <!-- <view class="mb20">
  44. <view class="f16 c34 fw mb10 lh22">历史预审时间</view>
  45. <view class="f14 c6">{{ite.deptType}}</view>
  46. </view> -->
  47. <view class="mb10 flexcj">
  48. <view class="f16 c34 fw lh22 flex0">部门名称</view>
  49. <view class="f15 c6">{{ite.deptName}}</view>
  50. </view>
  51. <view class="mb10 flexcj">
  52. <view class="f16 c34 fw lh22 flex0">审核结果</view>
  53. <view class="f15 c6 f500" v-if="ite.shjg==1">待审核</view>
  54. <view class="f15 c6 f500" v-if="ite.shjg==2">已通过</view>
  55. <view class="f15 c6 f500" v-if="ite.shjg==3">未通过</view>
  56. </view>
  57. <view v-if="ite.shyj" class="flexcj">
  58. <view class="f16 c34 fw flex0">审核意见</view>
  59. <view class="f15 c6">{{ite.shyj}}</view>
  60. </view>
  61. </view>
  62. </view>
  63. </view>
  64. <no-data :notxt='notxt' :padtop="padtop" v-else></no-data>
  65. </view>
  66. </view>
  67. </template>
  68. <script>
  69. import {gettreeselect,getfgwtreeFn} from "@/api/system/user.js"
  70. import { getCommonXszp,getdeptList } from '@/api/work/clue.js'
  71. import noData from "@/components/nodata/nodata.vue"
  72. import { checkPermi, checkRole } from "@/utils/permission"; // 权限判断函数
  73. import bartreePicker from "@/components/ba-tree-picker/ba-tree-picker.vue"
  74. import config from '@/config.js';
  75. const baseUrl = config.baseUrl;
  76. export default{
  77. components:{
  78. noData,bartreePicker
  79. },
  80. data(){
  81. return{
  82. tabidx:0,
  83. border:false,
  84. cityallChecked:false,
  85. adrallChecked:false,
  86. map:{text:'label',value:'id'},
  87. xmId:'',
  88. xmbh:'',
  89. xmmc:'',
  90. deptId:this.$store.state.user.deptId,
  91. closeimg:require('@/static/images/close.png'),
  92. notxt:'暂无历史记录',
  93. padtop:40,
  94. hisflag:false,
  95. cityvalue: [],
  96. adrvalue: '',
  97. cityrange: [],
  98. adrrange: [],
  99. hisdeptList:[],
  100. selectValue:[],//市值部门
  101. citycheckArr:[],//选中的要素部门
  102. adrcheckArr:'',//选中的承接地
  103. localdata:[],//市值单位
  104. }
  105. },
  106. onLoad(e) {
  107. var newObj=JSON.parse(decodeURIComponent(e.data))
  108. this.xmId=newObj.xmId;
  109. this.xmbh=newObj.xmbh;
  110. this.xmmc=newObj.xmmc;
  111. // this.adrrange=this.localdata[0];
  112. this.gettreeselect()
  113. },
  114. methods:{
  115. checkPermi, checkRole,
  116. getdeptList(){
  117. var params={
  118. xmbh:this.xmbh,
  119. xmId:this.xmId,
  120. isDel:'Y',
  121. deptType:'1,2,3'
  122. }
  123. getdeptList(params).then(res=>{
  124. if(res.code==200){
  125. this.hisdeptList=res.rows;
  126. // if(res.rows.length){
  127. // var newArr=res.rows;
  128. // var newArrs=[];
  129. // newArr.forEach(ite=>{
  130. // newArrs.push(ite.deptName)
  131. // })
  132. // console.log(newArrs,8)
  133. // }
  134. // console.log(this.hisdeptList,7)
  135. }else{
  136. this.$toast(res.msg)
  137. }
  138. })
  139. },
  140. selectChange(e){
  141. this.selectValue=e
  142. },
  143. gettreeselect(){
  144. // 市值部门102 承接地103
  145. //线下 218 线上211
  146. var url=baseUrl;
  147. var parentId=''
  148. if(url.indexOf('https://qszs.qs163.cn')!=-1){
  149. parentId=211
  150. }else{
  151. parentId=218
  152. }
  153. var params={
  154. parentId:parentId
  155. }
  156. getfgwtreeFn(params).then(res=>{
  157. if(res.code==200){
  158. if(res.data&&res.data.length){
  159. this.localdata=res.data;
  160. var neArr=res.data
  161. for(var i=0;i<neArr.length;i++){
  162. if(neArr[i].id=='201'){
  163. this.cityrange=neArr[i].children
  164. }
  165. if(neArr[i].id=='103'){
  166. this.adrrange=neArr[i].children
  167. }
  168. }
  169. }
  170. // this.list=res.rows
  171. }else{
  172. this.$toast(res.msg)
  173. }
  174. })
  175. },
  176. getTab(idx){
  177. this.tabidx=idx
  178. },
  179. getBack(){
  180. uni.navigateBack({
  181. delta:1
  182. })
  183. },
  184. clickRight(){
  185. if(checkPermi(['projectV2:dept:list'])){
  186. this.hisflag=true;
  187. this.getdeptList()
  188. }else{
  189. return
  190. }
  191. },
  192. getClose(){
  193. this.hisflag=false
  194. },
  195. checkboxChangecity(e){
  196. console.log(e)
  197. this.citycheckArr=e.detail.data;
  198. // this.checkedArr = e.detail.value;
  199. // 如果选择的数组中有值,并且长度等于列表的长度,就是全选
  200. if(this.cityvalue.length>0 && this.cityvalue.length==this.cityrange.length){
  201. this.cityallChecked=true;
  202. }else{
  203. this.cityallChecked=false;
  204. }
  205. },
  206. checkboxChangeadr(e){
  207. this.adrcheckArr=e.detail.data;
  208. },
  209. getChoose(){
  210. this.adrvalue='';
  211. this.adrcheckArr='';
  212. },
  213. // 全选事件
  214. allChoose(e){
  215. if(this.cityallChecked){
  216. this.cityallChecked=false;
  217. this.cityvalue=[];
  218. this.citycheckArr=[];
  219. }else{
  220. this.cityallChecked=true;
  221. for(let item of this.cityrange){
  222. let itemVal=Number(item.id);
  223. if(!this.cityvalue.includes(itemVal)){
  224. this.cityvalue.push(itemVal);
  225. this.citycheckArr.push(item);
  226. }
  227. }
  228. }
  229. // if(this.tabidx==0){
  230. // }else{
  231. // if(this.adrallChecked){
  232. // this.adrallChecked=false;
  233. // this.adrvalue=[];
  234. // }else{
  235. // this.adrallChecked=true;
  236. // for(let item of this.adrrange){
  237. // let itemVal=Number(item.value);
  238. // if(!this.adrvalue.includes(itemVal)){
  239. // this.adrvalue.push(itemVal);
  240. // }
  241. // }
  242. // }
  243. // }
  244. },
  245. getConfirm(){
  246. // selectValue:[],//市值部门
  247. // citycheckArr:[],//选中的要素部门
  248. // adrcheckArr:'',//选中的承接地
  249. var ysbmList=[];
  250. var cjdList=[];
  251. var yjdwList=[];
  252. var citycheckArr=this.citycheckArr;
  253. var adrcheckArr=this.adrcheckArr||'';
  254. var yjdwcheckArr=this.selectValue||[];
  255. if(!adrcheckArr){
  256. this.$toast('请选择分派承接地')
  257. return
  258. }
  259. // 要素部门,
  260. citycheckArr.forEach((ite,idx)=>{
  261. var obj={}
  262. obj.deptId=ite.id;
  263. obj.deptName=ite.label;
  264. obj.xmId=this.xmId;
  265. obj.xmbh=this.xmbh;
  266. obj.xmmc=this.xmmc;
  267. ysbmList[idx]=obj
  268. })
  269. // 承接地
  270. var cityobj={}
  271. cityobj.deptId=adrcheckArr.id;
  272. cityobj.deptName=adrcheckArr.label;
  273. cityobj.xmId=this.xmId;
  274. cityobj.xmbh=this.xmbh;
  275. cityobj.xmmc=this.xmmc;
  276. cjdList.push(cityobj)
  277. // 引荐单位
  278. yjdwcheckArr.forEach((ite,idx)=>{
  279. var obj=ite;
  280. obj.xmId=this.xmId;
  281. obj.xmbh=this.xmbh;
  282. obj.xmmc=this.xmmc;
  283. yjdwList[idx]=obj;
  284. })
  285. var params={
  286. xmId:this.xmId,
  287. xmbh:this.xmbh,
  288. xmmc:this.xmmc,
  289. ysbmList:ysbmList,
  290. cjdList:cjdList,
  291. yjdwList:yjdwList
  292. }
  293. // console.log(params)
  294. // return
  295. getCommonXszp(params).then(res=>{
  296. if(res.code==200){
  297. this.$toast('分派成功')
  298. setTimeout(function(){
  299. uni.$emit('refreshdata');
  300. uni.navigateBack({delta: 1});
  301. },1200)
  302. }else{
  303. this.$toast(res.msg)
  304. }
  305. })
  306. }
  307. }
  308. }
  309. </script>
  310. <style scoped lang="scss">
  311. .topfixed{display: flex;align-items: center;
  312. .act .tab::after{width: 100%;height: 6rpx;background: #FE5706;content: '';position: absolute;left: 0;right: 0;bottom: 0;}
  313. .act .tab{color: #333333;}
  314. .tab{position: relative;height: 90rpx;}
  315. }
  316. .xmbox{padding-top: 90rpx;background:#ffffff;padding-bottom: 120rpx;min-height: 100vh;box-sizing: border-box;}
  317. .zhanline{height: 24rpx;background-color: #F2F2F2;}
  318. .xmmain{background: #ffffff;padding-left: 48rpx;}
  319. .xmmain /deep/ .uni-data-checklist .checklist-group .checklist-box{padding: 44rpx 0;border-bottom: 2rpx solid #E5E5E5;margin: 0;
  320. &:last-of-type{border-bottom: none;}}
  321. .xmmain /deep/ .uni-data-checklist .checklist-group .checklist-box .checklist-text{color: #343434;font-size: 34rpx;font-weight: bold;}
  322. .xmmain /deep/ .uni-data-checklist .checklist-group .checklist-box .checkbox__inner{margin-right: 40rpx;}
  323. .xmmain /deep/ .uni-data-checklist .checklist-group .checklist-box.is--default.is-checked .checkbox__inner{border-color: #FF440B; background-color: #FF440B;}
  324. .xmmain /deep/ .uni-data-checklist .checklist-group .checklist-box.is--default.is-checked .checklist-text{color: #343434;}
  325. .xmbtn{height: 100rpx;display: flex;align-items: center;justify-content: center;
  326. &.btn1{width: 200rpx;}
  327. &.btn2{background-color: $uni-color-fa;}
  328. }
  329. </style>