list.vue 12 KB

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