385f1aa0811ee893f2fd06db7afd5b4b4848e80b.svn-base 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383
  1. <!-- -->
  2. <template>
  3. <div>
  4. <el-container>
  5. <el-header style="padding: 20px;">
  6. <el-form :inline="true" :model="formInline" class="demo-form-inline">
  7. <el-form-item label="会议主题">
  8. <el-input v-model="formInline.title" placeholder="会议主题" clearable ></el-input>
  9. </el-form-item>
  10. <el-form-item label="计划开始时间">
  11. <el-date-picker
  12. clearable
  13. v-model="formInline.stTm"
  14. value-format="yyyy-MM-dd HH:mm"
  15. format="yyyy-MM-dd HH:mm"
  16. type="datetime"
  17. placeholder="选择日期时间">
  18. </el-date-picker>
  19. </el-form-item>
  20. <el-form-item>
  21. <el-button icon="el-icon-search" type="primary" @click="searchData">查询</el-button>
  22. <el-button icon="el-icon-circle-plus-outline" type="success" @click="addMeetingBaseInfo">添加</el-button>
  23. </el-form-item>
  24. </el-form>
  25. </el-header>
  26. <el-main>
  27. <el-table
  28. @row-click="rowClick"
  29. :data="tableData"
  30. :height="tableHight"
  31. stripe
  32. border
  33. style="width: 100%">
  34. <el-table-column
  35. prop="title"
  36. label="会议主题"
  37. show-overflow-tooltip
  38. width="180">
  39. </el-table-column>
  40. <el-table-column
  41. prop="address"
  42. label="会议地点"
  43. show-overflow-tooltip
  44. width="180">
  45. </el-table-column>
  46. <!-- <el-table-column
  47. prop="content"
  48. label="会议内容"
  49. show-overflow-tooltip>
  50. </el-table-column> -->
  51. <el-table-column
  52. prop="stTm"
  53. label="计划开始时间"
  54. show-overflow-tooltip>
  55. </el-table-column>
  56. <!-- <el-table-column
  57. show-overflow-tooltip
  58. label="签到率"
  59. >
  60. <template slot-scope="scope">
  61. <el-progress
  62. :text-inside="true"
  63. :stroke-width="18"
  64. :percentage="25">
  65. </el-progress>
  66. </template>
  67. </el-table-column> -->
  68. <el-table-column
  69. prop="enTm"
  70. label="计划结束时间"
  71. show-overflow-tooltip>
  72. </el-table-column>
  73. <el-table-column
  74. :formatter="isHasQuesFormatter"
  75. prop="isHasQues"
  76. label="是否有问卷">
  77. </el-table-column>
  78. <el-table-column
  79. :formatter="isOutFormatter"
  80. prop="isOut"
  81. label="是否签退">
  82. </el-table-column>
  83. <el-table-column
  84. :formatter="stateFormatter"
  85. prop="state"
  86. label="会议状态">
  87. </el-table-column>
  88. <el-table-column
  89. width="380"
  90. label="操作">
  91. <template slot-scope="scope">
  92. <!-- <el-button
  93. style="color:#67c23a"
  94. size="mini"
  95. type="text"
  96. icon="el-icon-caret-right"
  97. @click.stop="beginMetting(scope.$index, scope.row)">开始</el-button> -->
  98. <el-button
  99. :disabled="scope.row.isHasQues == '1' ? false:true"
  100. size="mini"
  101. type="text"
  102. icon="el-icon-plus"
  103. @click.stop="addQueNaire(scope.$index, scope.row)">添加问卷</el-button>
  104. <el-button
  105. size="mini"
  106. type="text"
  107. icon="el-icon-plus"
  108. @click.stop="addAgenda(scope.$index, scope.row)">添加议程</el-button>
  109. <el-button
  110. style="color:#409eff"
  111. size="mini"
  112. type="text"
  113. icon="el-icon-document"
  114. @click.stop="showMeetingDetailsEvent(scope.$index, scope.row)">详情</el-button>
  115. <el-button
  116. style="color:#409eff"
  117. size="mini"
  118. type="text"
  119. icon="el-icon-edit"
  120. @click.stop="editData(scope.$index, scope.row)">编辑</el-button>
  121. <el-button
  122. style="color:#e6a23c"
  123. size="mini"
  124. type="text"
  125. icon="el-icon-delete"
  126. @click.stop="handleDelete(scope.$index, scope.row)">删除</el-button>
  127. </template>
  128. </el-table-column>
  129. </el-table>
  130. </el-main>
  131. <el-footer>
  132. <el-pagination
  133. style="text-align:center;"
  134. @size-change="handleSizeChange"
  135. @current-change="handleCurrentChange"
  136. :current-page.sync="pageNum"
  137. :page-sizes="[10, 20, 30, 40, 50, 100]"
  138. :page-size="pageSize"
  139. layout="total, sizes, prev, pager, next, jumper"
  140. :total="total">
  141. </el-pagination>
  142. </el-footer>
  143. </el-container>
  144. <!-- <meetingBaseinfoDialog
  145. v-if="showAddMeetingBaseInfoDialog"
  146. :editFormData="editFormData"
  147. @cancelHandler="cancelHandler"
  148. @addSuccessStatus="addSuccessStatusEvent"
  149. ></meetingBaseinfoDialog> -->
  150. <!-- <meetingBaseinfo
  151. v-if="showMeetingBaseInfo"
  152. :editFormData="editFormData"
  153. @cancelHandler="cancelHandler"
  154. @addSuccessStatus="addSuccessStatusEvent"
  155. ></meetingBaseinfo> -->
  156. <meetingDetails
  157. v-if="showDetails"
  158. @cancelHandler="cancelHandler"
  159. :meetingInfoRow="meetingInfoRow"
  160. ></meetingDetails>
  161. <QueNaireDialog
  162. v-if="showQueNaireDialog"
  163. @cancelHandler="cancelHandler"
  164. :meetingInfoRow="meetingInfoRow"
  165. ></QueNaireDialog>
  166. <AgendaDialog
  167. v-if="showAddAgendaDialog"
  168. @cancelHandler="cancelHandler"
  169. :meetingInfoRow="meetingInfoRow"
  170. ></AgendaDialog>
  171. </div>
  172. </template>
  173. <script>
  174. //这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)
  175. //例如:import 《组件名称》 from '《组件路径》';
  176. import { getMeetingTableDataLists,deleteMeetingDataBase,addMeetingBase} from "../../../api/meetingAPI.js";
  177. import meetingManagePage from "../meetingManagePage"
  178. import meetingDetails from "../meetingDetails"
  179. export default {
  180. //import引入的组件需要注入到对象中才能使用
  181. components: {
  182. meetingBaseinfoDialog: resolve => {
  183. require(["../meetingBaseinfoDialog.vue"], resolve);
  184. },
  185. // meetingBaseinfo: resolve => {
  186. // require(["../meetingBaseinfo.vue"], resolve);
  187. // },
  188. meetingDetails: resolve => {
  189. require(["../meetingDetails.vue"], resolve);
  190. },
  191. QueNaireDialog: resolve => {
  192. require(["../QueNaireDialog.vue"], resolve);
  193. },
  194. AgendaDialog: resolve => {
  195. require(["../AgendaDialog.vue"], resolve);
  196. },
  197. },
  198. props:['changeTabName'],
  199. data() {
  200. //这里存放数据
  201. return {
  202. meetingInfoRow:{},
  203. showDetails:false,
  204. showQueNaireDialog:false,
  205. showAddAgendaDialog:false,
  206. showAddMeetingBaseInfoDialog:false,
  207. showMeetingBaseInfo:false,
  208. formInline: {
  209. title: '',
  210. stTm: ''
  211. },
  212. tableHight:window.innerHeight - 360,
  213. tableData: [],
  214. pageNum:1,
  215. pageSize:10,
  216. total:0,
  217. editFormData:{}//用于传递给
  218. };
  219. },
  220. //监听属性 类似于data概念
  221. computed: {},
  222. //监控data中的数据变化
  223. watch: {
  224. changeTabName(){
  225. this.getMeetingTableData();
  226. }
  227. },
  228. //方法集合
  229. methods: {
  230. handleSizeChange(val) {
  231. console.log(`每页 ${val} 条`);
  232. this.pageSize = val;
  233. this.getMeetingTableData();
  234. },
  235. handleCurrentChange(val) {
  236. console.log(`当前页: ${val}`);
  237. this.pageNum = val;
  238. this.getMeetingTableData();
  239. },
  240. // 表格行点击事件
  241. rowClick(row, column, event){
  242. console.log(row);
  243. console.log(column);
  244. console.log(event);
  245. this.$emit('tableRowClick',row)
  246. },
  247. getMeetingTableData(){
  248. var _self = this;
  249. let obj = {
  250. "pageNum":_self.pageNum,
  251. "pageSize":_self.pageSize,
  252. "title":_self.formInline.title,
  253. "stTm":_self.formInline.stTm,
  254. // "state":"1",
  255. }
  256. getMeetingTableDataLists(obj).then(response => {
  257. _self.tableData = response.data.list;
  258. _self.total = response.data.total;
  259. });
  260. },
  261. //查询按钮事件
  262. searchData(){
  263. this.getMeetingTableData();
  264. },
  265. addMeetingBaseInfo(){
  266. this.editFormData = {};
  267. // this.showAddMeetingBaseInfoDialog = true;
  268. // this.showMeetingBaseInfo = true;
  269. this.$emit('addMeetingBase',this.editFormData)
  270. // this.meetingInfoRow = row;
  271. },
  272. cancelHandler(){
  273. this.showAddMeetingBaseInfoDialog = false;
  274. this.showQueNaireDialog = false;
  275. this.showDetails = false;
  276. this.showAddAgendaDialog = false;
  277. },
  278. //添加会议后冒上来的事件
  279. addSuccessStatusEvent(item){
  280. if(item.success = true){
  281. this.cancelHandler();
  282. this.$message.success('操作成功!');
  283. this.getMeetingTableData();
  284. }else{
  285. this.$message.error(res.message);
  286. }
  287. },
  288. isHasQuesFormatter:function(row, column){
  289. return row.isHasQues == "1" ? '是':'否'
  290. },
  291. isOutFormatter:function(row, column){
  292. return row.isOut == "1" ? '是':'否'
  293. },
  294. stateFormatter:function(row, column){
  295. return row.state == "1" ? '未开始': row.state == "2" ? '进行中' : row.state == "3" ? '已结束':'已关闭'
  296. },
  297. editData(index,row){
  298. // var _self = this;
  299. this.editFormData = row;
  300. this.$emit('addMeetingBase',row)
  301. },
  302. //删除会议基本信息
  303. handleDeleteEvent(index,row){
  304. var _self = this;
  305. deleteMeetingDataBase(row.id).then(response => {
  306. if(response.success == true){
  307. _self.$message.success('删除成功!');
  308. _self.getMeetingTableData();
  309. }else{
  310. _self.$message.error(item.message);
  311. }
  312. });
  313. },
  314. handleDelete(index,row) {
  315. var _self = this;
  316. this.$confirm('此操作将删除该会议, 是否继续?', '提示', {
  317. confirmButtonText: '确定',
  318. cancelButtonText: '取消',
  319. type: 'warning'
  320. }).then(() => {
  321. this.handleDeleteEvent(index,row);
  322. }).catch(() => {
  323. this.$message({
  324. type: 'info',
  325. message: '已取消删除'
  326. });
  327. });
  328. },
  329. beginMetting(index,row){
  330. var _self = this;
  331. let obj = {
  332. "id":row.id,
  333. "state":"2",
  334. };
  335. addMeetingBase(obj).then(response => {
  336. if(response.success == true){
  337. _self.$message.success('操作成功');
  338. _self.getMeetingTableData();
  339. }else{
  340. _self.$message.error(item.message);
  341. }
  342. });
  343. },
  344. showMeetingDetailsEvent(index,row){
  345. // this.showDetails = true;
  346. this.$emit('tableDetails',row)
  347. this.meetingInfoRow = row;
  348. },
  349. addQueNaire(index,row){
  350. this.$emit('addQueNaire',row)
  351. this.meetingInfoRow = row;
  352. },
  353. showQueNaire(index,row){
  354. this.meetingInfoRow = row;
  355. this.showQueNaireDialog = true;
  356. },
  357. addAgenda(index,row){
  358. this.meetingInfoRow = row;
  359. this.showAddAgendaDialog = true;
  360. }
  361. },
  362. //生命周期 - 创建完成(可以访问当前this实例)
  363. created() {
  364. },
  365. //生命周期 - 挂载完成(可以访问DOM元素)
  366. mounted() {
  367. this.getMeetingTableData();
  368. },
  369. beforeCreate() {}, //生命周期 - 创建之前
  370. beforeMount() {}, //生命周期 - 挂载之前
  371. beforeUpdate() {}, //生命周期 - 更新之前
  372. updated() {}, //生命周期 - 更新之后
  373. beforeDestroy() {}, //生命周期 - 销毁之前
  374. destroyed() {}, //生命周期 - 销毁完成
  375. activated() {}, //如果页面有keep-alive缓存功能,这个函数会触发
  376. }
  377. </script>
  378. <style scoped>
  379. </style>