list.vue 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407
  1. <template>
  2. <view>
  3. <view v-if="datalist.length>0">
  4. <!-- 我的提案 -->
  5. <view class="caselist" v-for="(ite,idx) in datalist" :key='idx' @click="getDetail(ite)">
  6. <view class="tit overtwo" v-if="type=='wdfy'||type=='hyfy'">{{ite.speakTitle}}</view>
  7. <view class="tit overtwo" v-else-if="type=='hdtz'||type=='zxhd'">{{ite.activityTitle}}</view>
  8. <view class="tit overtwo" v-else-if="type=='zsyz'||type=='wdzs'">{{ite.clueName}}</view>
  9. <view class="flexcj mb20" v-else>
  10. <view class="tit overtwo" style="margin-bottom: 0;">{{ite.conferenceTitle}}</view>
  11. <image :src="codeimg" v-if="type=='hyhd'" class='codeimg' @click.stop="getTuiFn(ite,'qdm')"></image>
  12. </view>
  13. <block v-if="type=='hytz'||type=='hyhd'">
  14. <view class="ftxt">
  15. <text>会议时间</text>
  16. <view>{{ite.conferenceDate}} {{ite.conferenceTime}}</view>
  17. </view>
  18. <view class="ftxt">
  19. <text>会议地点</text>
  20. <view>{{ite.conferenceAddress}}</view>
  21. </view>
  22. <view class="ftxt" >
  23. <text>发布时间</text>
  24. <view>{{ite.publishTime}}</view>
  25. </view>
  26. <view class="ftxt">
  27. <text>备注信息</text>
  28. <view>{{ite.remark}}</view>
  29. </view>
  30. <view class="casebtn flexc" v-if="type=='hyhd'">
  31. <view class="lfread">未读人数({{ite.noRead}})<text class="lfdet">已读人数({{ite.read}})</text></view>
  32. <view class="co1d" v-if="checkPermi(['zxConference:conference:getUserInfo'])" @click.stop="getReadFn(ite.conferenceId)">查看阅读详情</view>
  33. </view>
  34. <view class="casebtn flexc" v-if="type=='hytz'&&checkPermi(['zxConference:conference:updateReply'])">
  35. <block v-if="ite.isJoin">
  36. <view class="lftit">是否参会已答复,查看<text class="lfdet" @click.stop="getDfFn(ite)">答复内容</text></view>
  37. <view class="btn btn3" @click.stop="">已答复</view>
  38. </block>
  39. <block v-else>
  40. <view class="lftit">是否成参会暂未答复</view>
  41. <view class="btn btn2" @click.stop="getTuiFn(ite,'chdf')">参会答复</view>
  42. </block>
  43. <view v-if="ite.isJoin=='Y'&&ite.zxConferenceUserList[0]&&!ite.zxConferenceUserList[0].signIn" class="btn btn2" @click.stop="getTuiFn(ite,'hyqd')">去签到</view>
  44. <view class="btn btn3" v-if="ite.zxConferenceUserList[0].signIn" @click.stop="">已签到</view>
  45. <!-- <view class="lftit">当前会议已结束,查看<text class="lfdet">签到情况</text></view> -->
  46. </view>
  47. </block>
  48. <block v-if="type=='hdtz'||type=='zxhd'">
  49. <view class="ftxt">
  50. <text>活动时间</text>
  51. <view>{{ite.activityDate}} {{ite.activityTime}}</view>
  52. </view>
  53. <view class="ftxt">
  54. <text>活动类型</text>
  55. <view>{{kaType(ite.activityType,hdlxlist)}}</view>
  56. </view>
  57. <view class="ftxt">
  58. <text>活动地点</text>
  59. <view>{{ite.activityAddress}}</view>
  60. </view>
  61. <view class="ftxt" >
  62. <text>发布时间</text>
  63. <view>{{ite.publishTime}}</view>
  64. </view>
  65. <view class="ftxt">
  66. <text>活动内容</text>
  67. <!-- <view>{{ite.activityDetails}}</view> -->
  68. <view class="over">
  69. <rich-text v-if="ite.activityDetails" :nodes="ite.activityDetails"></rich-text>
  70. </view>
  71. </view>
  72. <view class="casebtn flexc" v-if="type=='zxhd'">
  73. <view class="lfread">未读人数({{ite.noRead}})<text class="lfdet">已读人数({{ite.read}})</text></view>
  74. <view class="co1d" v-if="checkPermi(['zxActivity:activity:getUserInfo'])" @click.stop="getReadFn(ite.activityId)">查看阅读详情</view>
  75. </view>
  76. <view class="casebtn flexc" v-if="checkPermi(['zxActivity:activity:updateReply'])&&type=='hdtz'">
  77. <block v-if="ite.isJoin">
  78. <view class="lftit">是否参会已答复,查看<text class="lfdet" @click.stop="getDfFn(ite)">答复内容</text></view>
  79. <view class="btn btn3" @click.stop="">已答复</view>
  80. </block>
  81. <block v-else>
  82. <view class="lftit">是否成参会暂未答复</view>
  83. <view class="btn btn2" @click.stop="getTuiFn(ite,'chdf')">参会答复</view>
  84. </block>
  85. <!-- <view v-if="ite.isJoin=='Y'&&!ite.signIn" class="btn btn2" @click.stop="getTuiFn(ite,'hyhd')">去签到</view>
  86. <view class="btn btn3" v-if="ite.signIn" @click.stop="">已签到</view> -->
  87. <!-- <view class="lftit">当前会议已结束,查看<text class="lfdet">签到情况</text></view> -->
  88. </view>
  89. </block>
  90. <block v-if="type=='wdfy'||type=='hyfy'">
  91. <view class="flexcw" >
  92. <view class="ftxt">
  93. <text>发言人</text>
  94. <view>{{ite.name}}</view>
  95. </view>
  96. <view class="ftxt">
  97. <text>录入人</text>
  98. <view>{{ite.inputName}}</view>
  99. </view>
  100. </view>
  101. <view class="ftxt">
  102. <text>关联会议</text>
  103. <view>{{ite.conferenceTitle}}</view>
  104. </view>
  105. <view class="ftxt">
  106. <text>发言单位</text>
  107. <view>{{ite.speakUnit}}</view>
  108. </view>
  109. <view class="ftxt">
  110. <text>发言类型</text>
  111. <view>{{kaType(ite.speakType,fylxlist)}}</view>
  112. </view>
  113. <view class="ftxt">
  114. <text>录入时间</text>
  115. <view>{{ite.publishTime}}</view>
  116. </view>
  117. <!-- <view class="ftxt">
  118. <text>审核状态</text>
  119. <view class="co0b">{{ite.speakStatus==2?'已审核':'待审核'}}</view>
  120. </view> -->
  121. </block>
  122. <block v-if="type=='zsyz'||type=='wdzs'">
  123. <view class="flexcw" >
  124. <view class="ftxt">
  125. <text>委员姓名</text>
  126. <view>{{ite.name}}</view>
  127. </view>
  128. <view class="ftxt">
  129. <text>拟投资额</text>
  130. <view>{{ite.investmentAmount}}万元</view>
  131. </view>
  132. </view>
  133. <view class="ftxt">
  134. <text>联系人</text>
  135. <view>{{ite.contactsName}}</view>
  136. </view>
  137. <view class="ftxt">
  138. <text>联系方式</text>
  139. <view>{{ite.contactsPhone}}</view>
  140. </view>
  141. <view class="ftxt">
  142. <text>录入时间</text>
  143. <view>{{ite.publishTime}}</view>
  144. </view>
  145. <view class="ftxt">
  146. <text>状态</text>
  147. <view class="co0b">{{kaType(ite.type,xsztlist)}}</view>
  148. </view>
  149. </block>
  150. <!-- 会议活动,活动通知管理员 -->
  151. <!-- 答复情况 签到-->
  152. <!-- <view class="casebtn flexc" >
  153. <view class="btn btn1" @click.stop="getTuiFn(ite,'scfk','1')">删除</view>
  154. <view class="btn btn2" @click.stop="getTuiFn(ite,'scfk','0')">修改</view>
  155. </view> -->
  156. </view>
  157. <!-- <block v-if="type">
  158. </block> -->
  159. <view class="shax" v-if="wtdt">{{wtdt}}</view>
  160. </view>
  161. <block v-else>
  162. <no-data></no-data>
  163. </block>
  164. <!-- 弹窗 -->
  165. <view class="bgbox" @click="getClose" v-if="dfflag"></view>
  166. <view class="fixedbox" v-if="dfflag">
  167. <view class="ttit">提示</view>
  168. <view class="boxs">
  169. <view class="ftxt">
  170. <text>是否参会</text>
  171. <view>{{info.isJoin=='Y'?'是':'否'}}</view>
  172. </view>
  173. <view class="ftxt">
  174. <text>请假类型</text>
  175. <view>{{kaType(info.leaveType,qjlxlist)}}</view>
  176. </view>
  177. <view class="ftxt">
  178. <text>请假事由</text>
  179. <view>{{info.leaveReason}}</view>
  180. </view>
  181. <view class="fixedbtn flexcj">
  182. <view class="btns btn1" @click.stop="getClose">取消</view>
  183. <!-- <view class="btns btn2" @click.stop="getTuiFn(info,'chdf')">重新答复</view> -->
  184. </view>
  185. </view>
  186. </view>
  187. </view>
  188. </template>
  189. <script>
  190. import { checkPermi, checkRole } from "@/utils/permission"; // 权限判断函数
  191. import { selectValue } from '@/utils/common.js';
  192. import noData from "@/components/nodata/nodata.vue"
  193. export default {
  194. props:{
  195. datalist: {
  196. type: Array,
  197. default () {
  198. return []
  199. }
  200. },
  201. wtdt:{
  202. type: String,
  203. default () {
  204. return ''
  205. }
  206. },
  207. type:{
  208. type: [String,Number],
  209. default () {
  210. return ''
  211. }
  212. },
  213. hdlxlist:{
  214. type: Array,
  215. default () {
  216. return []
  217. }
  218. },
  219. xsztlist:{
  220. type: Array,
  221. default () {
  222. return []
  223. }
  224. },
  225. listtype:{
  226. type: [String,Number],
  227. default () {
  228. return ''
  229. }
  230. },
  231. fylxlist:{
  232. type: Array,
  233. default () {
  234. return []
  235. }
  236. },
  237. qjlxlist:{
  238. type: Array,
  239. default () {
  240. return []
  241. }
  242. }
  243. },
  244. components:{
  245. noData
  246. },
  247. data(){
  248. return{
  249. start:require("@/work/static/images/start.png"),
  250. nstart:require("@/work/static/images/nstart.png"),
  251. zanimg:require("@/work/static/images/zanico.png"),
  252. nzanimg:require("@/work/static/images/nzanico.png"),
  253. flower:require("@/work/static/images/flower.png"),
  254. nflower:require("@/work/static/images/nflower.png"),
  255. codeimg:require("@/work/static/images/meeting/code.png"),
  256. info:{},
  257. dfflag:false,
  258. }
  259. },
  260. onLoad: function() {
  261. },
  262. methods:{
  263. checkPermi, checkRole,
  264. kaType(ite,list){
  265. return selectValue(list, ite);
  266. },
  267. getClose(){
  268. this.dfflag=false
  269. },
  270. getDetail(e){
  271. var id='';
  272. var type=this.type;
  273. if(type=='hyhd'||type=='hytz'){
  274. id=e.conferenceId
  275. }else if(type=='wdfy'||type=='hyfy'){
  276. id=e.speakId
  277. }else if(type=='hdtz'||type=='zxhd'){
  278. id=e.activityId
  279. }else if(type=='zsyz'||type=='wdzs'){
  280. id=e.investmentId
  281. }
  282. this.$emit('getDetail',id)
  283. },
  284. getDfFn(ite){
  285. if(this.type=='hdtz'){
  286. this.info=ite.zxActivityUserList[0];
  287. }else{
  288. this.info=ite.zxConferenceUserList[0];
  289. }
  290. this.dfflag=true
  291. },
  292. getReadFn(e){
  293. this.$emit('getReadFn',e)
  294. },
  295. getTuiFn(ite,txt,sh){
  296. var that=this;
  297. this.dfflag=false
  298. if(txt=='scfk'&&sh==0){
  299. uni.showModal({
  300. title: '确认立案',
  301. content: "是否确认立案",
  302. cancelText: '取消',
  303. confirmText: '确认',
  304. success: function(res) {
  305. if (res.confirm) {
  306. var obj={
  307. id:ite.conferenceId,
  308. type:txt,
  309. sh:sh,
  310. }
  311. that.$emit('getTuiFn',obj)
  312. } else if (res.cancel) {
  313. // console.log('用户点击取消');
  314. }
  315. }
  316. });
  317. }else if(txt=='zsyzsh'||txt=='zsyzqy'){
  318. var id=ite.investmentId;
  319. var obj={
  320. id:id,
  321. type:txt,
  322. }
  323. this.$emit('getTuiFn',obj)
  324. }else{
  325. var id=ite.conferenceId;
  326. if(this.type=='hdtz'){
  327. id=ite.activityId
  328. }
  329. var obj={
  330. id:id,
  331. type:txt,
  332. sh:sh,
  333. item:ite
  334. }
  335. this.$emit('getTuiFn',obj)
  336. }
  337. },
  338. typeFn(data){
  339. if(data){
  340. var newArr=[]
  341. var astr=data.split('-')
  342. astr.forEach(ite=>{
  343. var a=ite.substring(0,5);
  344. newArr.push(a)
  345. })
  346. return newArr.join('-')
  347. }else{
  348. return ''
  349. }
  350. },
  351. },
  352. }
  353. </script>
  354. <style lang="scss" scoped>
  355. .caselist{background: #FFFFFF;border-radius: 30rpx;margin-top: 24rpx;padding: 38rpx 24rpx 8rpx;
  356. .tit{font-weight: bold;font-size: 32rpx;color: #222327;margin-bottom: 42rpx;}
  357. .ftxt{display: flex;align-items: flex-start;margin-bottom: 32rpx;flex:0 1 auto;min-width: 50%;
  358. text{font-weight: bold;font-size: 26rpx;color: #CACACA;flex: 0 0 auto;min-width: 104rpx;text-align-last: justify;}
  359. view{flex: 1;color: #343434;font-size: 26rpx;margin-left: 20rpx;line-height: 34rpx;}
  360. }
  361. .codeimg{width: 42rpx;height: 42rpx;flex: 0 0 auto;margin-left: 20rpx;}
  362. .casebtn{padding: 24rpx 0;border-top: 2rpx solid #E6E6E6;
  363. .ftit{font-weight: bold;font-size: 26rpx;color: #CACACA;flex: 1;
  364. text{color: $com-cd3;margin-left: 20rpx;font-weight:500;min-width: 104rpx;text-align-last: justify;}
  365. }
  366. .lftit{font-weight: 500;font-size: 26rpx;color: #666666;flex:1;
  367. .lfdet{color: $com-cd3;text-decoration: underline;}
  368. }
  369. .lfread{font-weight: bold;font-size: 26rpx;color: #FF0000;flex:1;
  370. .lfdet{color: #222327;margin-left: 16rpx;}
  371. }
  372. .zanimg{width: 22rpx;height: 20rpx;margin-right: 14rpx;}
  373. .staimg{width: 24rpx;height: 24rpx;margin-right: 14rpx;}
  374. .btn{min-width: 118rpx;height: 52rpx;border-radius: 26rpx;font-weight: bold;flex: 0 0 auto;display: flex;align-items: center;
  375. font-size: 26rpx;margin-left: 26rpx;line-height: 52rpx;text-align: center;padding: 0 32rpx;box-sizing: border-box;
  376. &.btn1{background: #FFEDED;color: #FF4141;}
  377. &.btn2{background: #E4EEFF;color: #1D64E2;}
  378. &.btn3{background: #ECECEC;color: #666666;}
  379. }
  380. }
  381. }
  382. .fixedbox{position: fixed;left: 48rpx;right: 48rpx;background: #fff;border-radius: 10rpx;min-height: 468rpx;top: 50%;transform: translateY(-50%);z-index: 10;padding: 32rpx 40rpx 50rpx;max-height: calc(100vh - 300rpx);overflow: auto;box-sizing: border-box;
  383. .ftxt{display: flex;align-items: flex-start;margin-bottom: 32rpx;flex:0 1 auto;min-width: 50%;
  384. text{font-weight: bold;font-size: 26rpx;color: #CACACA;flex: 0 0 auto;min-width: 104rpx;text-align-last: justify;}
  385. view{flex: 1;color: #343434;font-size: 26rpx;margin-left: 20rpx;line-height: 34rpx;}
  386. }
  387. .ttit{position: relative;text-align: center;font-weight: bold;font-size: 36rpx;color: #222327;margin-bottom: 34rpx;}
  388. .fixedbtn{padding-top: 18rpx;
  389. .btns{width: 254rpx;height: 80rpx;border-radius: 40rpx;font-weight: bold;flex: 1;
  390. font-size: 30rpx;display: flex;align-items: center;justify-content: center;box-sizing: border-box;
  391. &.btn1{color: #1D64E2;border: 2rpx solid #1D64E2;}
  392. &.btn2{color: #ffffff;background: #1D64E2;}
  393. .down{width: 26rpx;height: 26rpx;margin-right: 6rpx;flex: 0 0 auto;}
  394. }
  395. }
  396. }
  397. </style>