PartyMemberDevelopIndex.vue 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488
  1. <!--
  2. * @Description: 党建管理 => 党员发展管理
  3. * @Author: Rockery
  4. * @Date: 2021-12-10 10:37:47
  5. * @LastEditors: Rockery
  6. * @LastEditTime: 2022-01-07 14:43:25
  7. * @FilePath: \party_construct_web\src\views\PartyBuildingMgr\PartyMemberDevelop\PartyMemberDevelopIndex.vue
  8. * @Copyright: Copyright (c) 2016~2021 Rockery(1113269755@qq.com)
  9. -->
  10. <template>
  11. <div class="app-container partymemberdevelop">
  12. <template v-if="pageType == 'LIST'">
  13. <div class="develop-main">
  14. <el-row :gutter="10">
  15. <el-col :span="24">
  16. <div class="develop-main-title">
  17. <div>
  18. <img
  19. :src="require('@/assets/logo/home-main-title-logo.png')"
  20. @error="imgViewerOnerror"
  21. />
  22. </div>
  23. <div>党员发展管理</div>
  24. </div>
  25. </el-col>
  26. <el-col :span="24">
  27. <el-tabs v-model="tabsModel" class="develop-main-tabs" @tab-click="handleTabsClick">
  28. <el-tab-pane label="一、申请入党" name="1"></el-tab-pane>
  29. <el-tab-pane label="二、入党积极分子的确定和考察" name="2"></el-tab-pane>
  30. <el-tab-pane label="三、发展对象的确定和考察" name="3"></el-tab-pane>
  31. <el-tab-pane label="四、发展党员的预审" name="4"></el-tab-pane>
  32. <el-tab-pane label="五、预备党员的接收" name="5"></el-tab-pane>
  33. <el-tab-pane label="六、预备党员的考察和转正" name="6"></el-tab-pane>
  34. <el-tab-pane label="未通过" name="7"></el-tab-pane>
  35. </el-tabs>
  36. </el-col>
  37. <div>
  38. <el-col :span="24" class="mt10">
  39. <el-form :model="queryParams" ref="queryForm" :inline="true" label-width="68px">
  40. <el-form-item prop="name">
  41. <el-input
  42. v-model="queryParams.name"
  43. placeholder="请输入姓名"
  44. clearable
  45. size="small"
  46. style="width: 100%;"
  47. @keyup.enter.native="handleQuery"
  48. />
  49. </el-form-item>
  50. <template v-if="tabsModel !== '7'">
  51. <el-form-item prop="minType">
  52. <el-select
  53. v-model="queryParams.minType"
  54. placeholder="请选择待更新节点"
  55. clearable
  56. size="small"
  57. style="width: 100%;"
  58. >
  59. <el-option
  60. v-for="minTypeOption in minTypeOptions"
  61. :key="minTypeOption.value"
  62. :label="minTypeOption.label"
  63. :value="minTypeOption.value"
  64. />
  65. </el-select>
  66. </el-form-item>
  67. </template>
  68. <el-form-item>
  69. <el-button
  70. v-hasPermi="['partybuildingmgr:partymemberdevelop:query']"
  71. type="primary"
  72. icon="el-icon-search"
  73. @click="handleQueryClick"
  74. >搜索</el-button>
  75. <el-button
  76. v-hasPermi="['partybuildingmgr:partymemberdevelop:reset']"
  77. icon="el-icon-refresh"
  78. @click="resetQueryClick"
  79. >重置</el-button>
  80. </el-form-item>
  81. <template v-if="tabsModel === '1'">
  82. <el-form-item class="fr" style="margin-right: 0;">
  83. <el-button
  84. v-hasPermi="['partybuildingmgr:partymemberdevelop:add']"
  85. type="rocpartyprimarybtn"
  86. icon="el-icon-plus"
  87. @click="handleAddClick"
  88. >新增</el-button>
  89. </el-form-item>
  90. </template>
  91. <template v-else-if="tabsModel === '5'">
  92. <el-form-item class="fr" style="margin-right: 0;">
  93. <el-button
  94. v-hasPermi="['partybuildingmgr:partymemberdevelop:transferin']"
  95. type="rocpartyprimaryplainbtn"
  96. icon="el-icon-circle-plus-outline"
  97. @click="handleTransferInClick"
  98. >预备党员转入</el-button>
  99. </el-form-item>
  100. </template>
  101. <template v-else></template>
  102. </el-form>
  103. </el-col>
  104. <el-col :span="24">
  105. <el-table
  106. v-loading="loading"
  107. :data="list"
  108. stripe
  109. border
  110. :header-cell-style="{'text-align':'center'}"
  111. header-row-class-name="develop-table_header-row"
  112. class="develop-main-table"
  113. style="width: 100%;"
  114. >
  115. <el-table-column label="姓名" prop="name" :show-overflow-tooltip="true" />
  116. <template v-if="tabsModel !== '7'">
  117. <el-table-column label="当前待更新节点" prop="flowStatus" :show-overflow-tooltip="true">
  118. <template slot-scope="scope">
  119. <span>{{ nodeDataObj[scope.row.flowStatus] || '—' }}</span>
  120. </template>
  121. </el-table-column>
  122. </template>
  123. <el-table-column
  124. label="递交入党申请时间"
  125. align="center"
  126. prop="applyAddPartyTime"
  127. :show-overflow-tooltip="true"
  128. >
  129. <template slot-scope="scope">
  130. <span>{{ parseTime(scope.row.applyAddPartyTime, '{y}年{m}月{d}日') || '—' }}</span>
  131. </template>
  132. </el-table-column>
  133. <el-table-column label="备注" prop="remark" :show-overflow-tooltip="true">
  134. <template slot-scope="scope">
  135. <span>{{ scope.row.remark || '—' }}</span>
  136. </template>
  137. </el-table-column>
  138. <el-table-column
  139. label="操作"
  140. align="center"
  141. fixed="right"
  142. width="200"
  143. class-name="small-padding fixed-width"
  144. >
  145. <template slot-scope="scope">
  146. <el-button
  147. v-if="tabsModel === '7'"
  148. v-hasPermi="['partybuildingmgr:partymemberdevelop:reactivate']"
  149. size="mini"
  150. type="text"
  151. icon="el-icon-check"
  152. style="color: #de0010;"
  153. @click="handleReactivateClick(scope.row)"
  154. >重新激活</el-button>
  155. <el-button
  156. v-hasPermi="['partybuildingmgr:partymemberdevelop:edit']"
  157. size="mini"
  158. type="text"
  159. icon="el-icon-edit"
  160. style="color: #67c23a;"
  161. @click="handleUpdateClick(scope.row)"
  162. >更新</el-button>
  163. <el-button
  164. v-hasPermi="['partybuildingmgr:partymemberdevelop:view']"
  165. size="mini"
  166. type="text"
  167. icon="el-icon-view"
  168. style="color: #909399;"
  169. @click="handleViewClick(scope.row)"
  170. >详情</el-button>
  171. </template>
  172. </el-table-column>
  173. </el-table>
  174. </el-col>
  175. <el-col :span="24">
  176. <pagination
  177. v-show="total>0"
  178. :total="total"
  179. :page.sync="queryParams.pageNum"
  180. :limit.sync="queryParams.pageSize"
  181. @pagination="initData"
  182. />
  183. </el-col>
  184. </div>
  185. </el-row>
  186. </div>
  187. </template>
  188. <template v-else-if="pageType == 'ADD'">
  189. <div class="partymemberdevelop-addpage">
  190. <div class="partymemberdevelop-addpage-head">
  191. <div class="partymemberdevelop-addpage-head-title">
  192. <div>
  193. <img
  194. :src="require('@/assets/logo/home-main-title-logo.png')"
  195. @error="imgViewerOnerror"
  196. />
  197. </div>
  198. <div>党员发展管理</div>
  199. </div>
  200. </div>
  201. <update-party-develop
  202. :id="currentRow.id"
  203. :operate-type.sync="operateType"
  204. @page-submit="handleAddPageSubmitClick"
  205. @page-close="handleAddPageCloseClick"
  206. />
  207. </div>
  208. </template>
  209. <template v-else-if="pageType == 'VIEW'">
  210. <div class="partymemberdevelop-addpage">
  211. <div class="partymemberdevelop-addpage-head">
  212. <div class="partymemberdevelop-addpage-head-title">
  213. <div>
  214. <img
  215. :src="require('@/assets/logo/home-main-title-logo.png')"
  216. @error="imgViewerOnerror"
  217. />
  218. </div>
  219. <div>党员发展管理</div>
  220. </div>
  221. </div>
  222. <party-member-details
  223. :operate-type.sync="operateType"
  224. @page-submit="handleAddPageSubmitClick"
  225. @page-close="handleAddPageCloseClick"
  226. />
  227. </div>
  228. </template>
  229. <template v-else>
  230. <div>&nbsp;</div>
  231. </template>
  232. </div>
  233. </template>
  234. <script>
  235. import MinTypeOptionObj from './JsonData/MinTypeOptionObj';
  236. import NodeDataObj from './JsonData/NodeDataObj';
  237. import {
  238. listPartyMemberDevelop
  239. } from "@/api/PartyBuildingMgr/PartyMemberDevelop";
  240. export default {
  241. name: "Partymemberdevelop",
  242. components: {
  243. 'update-party-develop': () => import('@/components/UpdatePartyDevelop'),
  244. 'party-member-details': () => import('@/components/PartyMemberDetails')
  245. },
  246. data() {
  247. return {
  248. // 页面类型
  249. pageType: 'LIST',
  250. // 遮罩层
  251. loading: true,
  252. // 显示搜索条件
  253. showSearch: true,
  254. tabsModel: '1',
  255. // 待更新节点选项列表
  256. minTypeOptions: [],
  257. total: 10,
  258. queryParams: {
  259. name: undefined,
  260. maxType: '1',
  261. minType: undefined,
  262. pageNum: 1,
  263. pageSize: 10,
  264. orderByColumn: 'id',
  265. isAsc: 'desc'
  266. },
  267. list: [
  268. {
  269. name: '张三'
  270. },
  271. {
  272. name: '李四'
  273. }
  274. ],
  275. operateType: 'ADD',
  276. currentRow: {},
  277. minTypeOptionObj: { ...MinTypeOptionObj },
  278. nodeDataObj: { ...NodeDataObj }
  279. };
  280. },
  281. created() {
  282. this.minTypeOptions = this.minTypeOptionObj[this.tabsModel];
  283. this.initData();
  284. },
  285. methods: {
  286. /** 初始化数据 */
  287. initData() {
  288. this.getList();
  289. },
  290. /** 获取表格数据 */
  291. getList() {
  292. this.loading = true;
  293. listPartyMemberDevelop(this.queryParams).then(
  294. response => {
  295. this.list = response.rows || [];
  296. this.total = response.total ?? 20;
  297. this.loading = false;
  298. }
  299. );
  300. },
  301. /** 标签页点击事件 */
  302. handleTabsClick(targetName) {
  303. (targetName.name !== '7') && (this.minTypeOptions = this.minTypeOptionObj[targetName.name]);
  304. this.queryParams = {
  305. name: undefined,
  306. maxType: targetName.name,
  307. minType: undefined,
  308. pageNum: 1,
  309. pageSize: 10,
  310. orderByColumn: 'id',
  311. isAsc: 'desc'
  312. };
  313. this.getList();
  314. },
  315. /** 搜索按钮事件 */
  316. handleQueryClick() {
  317. this.queryParams.pageNum = 1;
  318. this.initData();
  319. },
  320. /** 重置按钮事件 */
  321. resetQueryClick() {
  322. this.resetForm("queryForm");
  323. this.handleQueryClick();
  324. },
  325. /** 新增按钮事件 */
  326. handleAddClick() {
  327. this.pageType = 'ADD';
  328. this.operateType = 'ADD';
  329. },
  330. /** 预备党员转入按钮事件 */
  331. handleTransferInClick() {
  332. },
  333. /** 重新激活按钮事件 */
  334. handleReactivateClick(row) {
  335. },
  336. /** 更新按钮事件 */
  337. handleUpdateClick(row) {
  338. if (!row.id) return;
  339. this.pageType = 'ADD';
  340. this.operateType = 'EDIT';
  341. this.currentRow = row;
  342. },
  343. /** 详情按钮事件 */
  344. handleViewClick(row) {
  345. this.pageType = 'VIEW';
  346. },
  347. /**
  348. * 新增页面保存按钮事件
  349. */
  350. handleAddPageSubmitClick(param) {
  351. this.pageType = param;
  352. this.initData();
  353. },
  354. /**
  355. * 新增页面取消按钮事件
  356. */
  357. handleAddPageCloseClick(param) {
  358. this.pageType = param;
  359. this.initData();
  360. }
  361. }
  362. };
  363. </script>
  364. <style scoped lang="scss">
  365. .partymemberdevelop {
  366. .develop-main {
  367. padding: 20px 20px 72px;
  368. min-height: 750px;
  369. background: url("../../../assets/images/home-head-img.png"), #ffffff;
  370. background-size: 67px 67px, cover;
  371. background-position: right 20px bottom 5px, center;
  372. background-repeat: no-repeat, no-repeat;
  373. border-radius: 10px;
  374. &-title {
  375. display: flex;
  376. align-items: center;
  377. div {
  378. &:first-child {
  379. height: 37px;
  380. line-height: 37px;
  381. }
  382. &:last-child {
  383. margin-left: 15px;
  384. height: 37px;
  385. font-size: 26px;
  386. font-weight: 400;
  387. color: #4f4f4f;
  388. line-height: 37px;
  389. letter-spacing: 1px;
  390. }
  391. img {
  392. width: 34px;
  393. height: 34px;
  394. }
  395. }
  396. }
  397. &-tabs.el-tabs {
  398. margin-top: 20px;
  399. ::v-deep {
  400. .el-tabs__item {
  401. font-size: 18px;
  402. font-weight: 500;
  403. color: #4f4f4f;
  404. opacity: 0.9;
  405. }
  406. .el-tabs__active-bar {
  407. background-color: #de0010;
  408. }
  409. .el-tabs__item.is-active {
  410. color: #de0010;
  411. background: #f9e9ea;
  412. }
  413. }
  414. }
  415. &-table {
  416. ::v-deep {
  417. .develop-table_header-row th.el-table__cell {
  418. background-color: #e5d4b4;
  419. }
  420. .el-table__row {
  421. background-color: #ffffff;
  422. }
  423. .el-table__row.el-table__row--striped {
  424. background-color: #f0f0f0;
  425. }
  426. }
  427. }
  428. }
  429. &-addpage {
  430. &-head {
  431. margin-bottom: 20px;
  432. width: 100%;
  433. padding: 15px 20px;
  434. background: url("../../../assets/images/home-head-img.png"), #ffffff;
  435. background-size: 67px 67px, cover;
  436. background-position: right 5px bottom 0px, center;
  437. background-repeat: no-repeat, no-repeat;
  438. border-radius: 10px;
  439. &-title {
  440. display: flex;
  441. align-items: center;
  442. div {
  443. &:first-child {
  444. height: 37px;
  445. line-height: 37px;
  446. }
  447. &:last-child {
  448. margin-left: 15px;
  449. height: 37px;
  450. font-size: 26px;
  451. font-weight: 400;
  452. color: #4f4f4f;
  453. line-height: 37px;
  454. letter-spacing: 1px;
  455. }
  456. img {
  457. width: 34px;
  458. height: 34px;
  459. }
  460. }
  461. }
  462. }
  463. }
  464. }
  465. </style>