7d6778957c4ca5a0af83438de5d65c76e8ee08ba.svn-base 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562
  1. <template>
  2. <el-container class="monthReport">
  3. <el-card class="box-card">
  4. <h2 class="title_monthReport">月报短信提醒</h2>
  5. <el-form :inline="true" size="small" class="demo-form-inline" label-width="80px">
  6. <el-form-item label="人员姓名" size="mini">
  7. <el-input v-model="searchForm.userName" placeholder="人员姓名" clearable></el-input>
  8. </el-form-item>
  9. <el-form-item label="所属部门" size="mini">
  10. <el-input v-model="searchForm.dpnm" placeholder="所属部门" clearable></el-input>
  11. </el-form-item>
  12. <el-form-item>
  13. <el-button type="primary" size="mini" @click="searchBtn">查询</el-button>
  14. <el-button type="primary" size="mini" @click="addBtn">添加</el-button>
  15. <el-button type="success" size="mini" @click="batchStart(1)">批量启动</el-button>
  16. <el-button type="info" size="mini" @click="batchStart(0)">批量关闭</el-button>
  17. <el-button type="danger" size="mini" @click="batchDelete">批量删除</el-button>
  18. <el-button type="primary" size="mini" @click="setTime">设置提醒日期</el-button>
  19. <span style="color:red;font-size: 10px;">{{tipTime}}</span>
  20. </el-form-item>
  21. </el-form>
  22. <div>
  23. <el-table
  24. border
  25. ref="multipleTable"
  26. :height="tableHeight"
  27. :data="tableData"
  28. tooltip-effect="dark"
  29. @selection-change="handleTimeSelectionChange"
  30. style="width: 100%"
  31. v-loading="loading">
  32. <el-table-column
  33. type="selection"
  34. width="55">
  35. </el-table-column>
  36. <el-table-column align="center" type="index" label="序号" min-width="25">
  37. <template slot-scope="scope">{{ (pageNum - 1) * pageSize + (scope.$index + 1) }}</template>
  38. </el-table-column>
  39. <el-table-column
  40. header-align="center"
  41. align="center"
  42. min-width="100"
  43. prop="persName"
  44. label="人员姓名"
  45. show-overflow-tooltip
  46. ></el-table-column>
  47. <el-table-column
  48. header-align="center"
  49. align="center"
  50. min-width="100"
  51. prop="sex"
  52. label="性别"
  53. show-overflow-tooltip
  54. >
  55. <template slot-scope="scope">
  56. <span v-if="scope.row.sex==1">男</span>
  57. <span v-else-if="scope.row.sex==2">女</span>
  58. <span v-else></span>
  59. </template>
  60. </el-table-column>
  61. <el-table-column
  62. header-align="center"
  63. align="center"
  64. min-width="200"
  65. prop="mobilenumb"
  66. label="手机号码"
  67. show-overflow-tooltip
  68. ></el-table-column>
  69. <el-table-column
  70. header-align="center"
  71. align="center"
  72. min-width="150"
  73. prop="orgName"
  74. label="机构名称"
  75. show-overflow-tooltip
  76. ></el-table-column>
  77. <el-table-column
  78. header-align="center"
  79. align="center"
  80. min-width="150"
  81. prop="dpnm"
  82. label="所属部门"
  83. show-overflow-tooltip
  84. ></el-table-column>
  85. <el-table-column
  86. align="center"
  87. min-width="260"
  88. label="操作"
  89. fixed="right">
  90. <template slot-scope="scope">
  91. <el-switch v-model="scope.row.isRemind" inactive-text="关闭" active-text="开启" inactive-value="0" active-value="1" @change="changeSms(scope.row)"></el-switch>
  92. <el-button type="danger" size="mini" @click.stop="deleteData(scope.row.id)" style="margin-left: 20px;">删除</el-button>
  93. </template>
  94. </el-table-column>
  95. </el-table>
  96. <el-pagination
  97. style="margin: 10px auto"
  98. background
  99. :pager-count="5"
  100. :current-page="pageNum"
  101. :page-size="pageSize"
  102. :page-sizes="[10, 20, 30, 40, 50, 100]"
  103. layout="sizes, total, prev, pager, next"
  104. :total="total"
  105. @current-change="handleCurrentChange"
  106. ></el-pagination>
  107. </div>
  108. </el-card>
  109. <el-dialog
  110. class="outerDialog custom_dialog"
  111. title="添加人员"
  112. width="60%"
  113. @close="closeAddDialog"
  114. v-if="addDialogVisible"
  115. :visible.sync="addDialogVisible">
  116. <el-form ref="addForm" label-width="100px" :inline="true" class="demo-form-inline">
  117. <el-form-item label="人员姓名">
  118. <el-input v-model="addSearchForm.userName" placeholder="人员姓名" clearable></el-input>
  119. </el-form-item>
  120. <el-form-item label="所属部门">
  121. <el-input v-model="addSearchForm.dpnm" placeholder="所属部门" clearable></el-input>
  122. </el-form-item>
  123. <el-form-item label="">
  124. <el-button type="primary" size="mini" @click="searchBtn1">查询</el-button>
  125. </el-form-item>
  126. </el-form>
  127. <el-table
  128. border
  129. ref="multipleTable1"
  130. :height="tableHeight1"
  131. :data="tableData1"
  132. tooltip-effect="dark"
  133. style="width: 100%"
  134. @selection-change="handleSelectionChange"
  135. v-loading="loading1">
  136. <el-table-column
  137. type="selection"
  138. width="55">
  139. </el-table-column>
  140. <el-table-column
  141. header-align="center"
  142. align="center"
  143. min-width="100"
  144. prop="persName"
  145. label="人员姓名"
  146. show-overflow-tooltip
  147. ></el-table-column>
  148. <el-table-column
  149. header-align="center"
  150. align="center"
  151. min-width="100"
  152. prop="sex"
  153. label="性别"
  154. show-overflow-tooltip
  155. >
  156. <template slot-scope="scope">
  157. <span v-if="scope.row.sex==1">男</span>
  158. <span v-else-if="scope.row.sex==2">女</span>
  159. <span v-else></span>
  160. </template>
  161. </el-table-column>
  162. <el-table-column
  163. header-align="center"
  164. align="center"
  165. min-width="200"
  166. prop="mobilenumb"
  167. label="手机号码"
  168. show-overflow-tooltip
  169. ></el-table-column>
  170. <el-table-column
  171. header-align="center"
  172. align="center"
  173. min-width="150"
  174. prop="orgNm"
  175. label="机构名称"
  176. show-overflow-tooltip
  177. ></el-table-column>
  178. <el-table-column
  179. header-align="center"
  180. align="center"
  181. min-width="150"
  182. prop="dpnm"
  183. label="所属部门"
  184. show-overflow-tooltip
  185. ></el-table-column>
  186. </el-table>
  187. <el-pagination
  188. style="margin: 10px auto"
  189. background
  190. :pager-count="5"
  191. :current-page="pageNum1"
  192. :page-size="pageSize1"
  193. :page-sizes="[10, 20, 30, 40, 50, 100]"
  194. layout="sizes, total, prev, pager, next"
  195. :total="total1"
  196. @current-change="handleCurrentChange1"
  197. ></el-pagination>
  198. <span slot="footer" class="dialog-footer">
  199. <el-button @click="addDialogVisible = false">取 消</el-button>
  200. <el-button type="primary" @click="addSubmit">确 定</el-button>
  201. </span>
  202. </el-dialog>
  203. <el-dialog
  204. title="设置提醒日期"
  205. width="400px"
  206. :visible.sync="isSetTime">
  207. <el-form ref="timeForm" label-width="100px">
  208. <el-form-item label="每月提醒日期" size="mini">
  209. <el-select
  210. v-model="time"
  211. multiple
  212. collapse-tags
  213. placeholder="请选择日期">
  214. <el-option
  215. v-for="item in timeOptions"
  216. :key="item"
  217. :label="item+'号'"
  218. :value="item">
  219. </el-option>
  220. </el-select>
  221. </el-form-item>
  222. </el-form>
  223. <span slot="footer" class="dialog-footer">
  224. <el-button @click="isSetTime = false">取 消</el-button>
  225. <el-button type="primary" @click="setTimeBtn">确 定</el-button>
  226. </span>
  227. </el-dialog>
  228. </el-container>
  229. </template>
  230. <script>
  231. import request from '@util/gw_ajax_request'
  232. export default {
  233. name: "",
  234. props: [],
  235. data() {
  236. return {
  237. addDialogVisible:false,
  238. tableHeight:window.innerHeight-100,
  239. tableHeight1:500,
  240. tableData:[],
  241. tableData1:[],
  242. loading:false,
  243. loading1:false,
  244. pageNum:1,
  245. pageSize:10,
  246. total:0,
  247. pageNum1:1,
  248. pageSize1:10,
  249. total1:0,
  250. searchForm:{
  251. userName:"",
  252. dpnm:""
  253. },
  254. addSearchForm:{
  255. userName:"",
  256. dpnm:""
  257. },
  258. multipleSelection: [],
  259. isSetTime:false,
  260. time:[],
  261. timeOptions:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28],
  262. tipTime:"",
  263. timeSelection:[]
  264. }
  265. },
  266. components: {
  267. },
  268. computed: {
  269. persId() {
  270. return localStorage.getItem("userid")
  271. ? localStorage.getItem("userid")
  272. : "1098101939614724096";
  273. },
  274. orgId() {
  275. return localStorage.getItem('currentOrgId') ? localStorage.getItem("currentOrgId") : "";
  276. },
  277. organCode() {
  278. return localStorage.getItem('currentRlcode') ? localStorage.getItem('currentRlcode') : ''
  279. },
  280. },
  281. mounted() {
  282. this.getCurTime();
  283. this.initTableData();
  284. },
  285. methods: {
  286. batchDelete(){
  287. var list = [];
  288. if(!this.timeSelection || this.timeSelection.length==0){
  289. this.$message.warning("请选择数据");
  290. return false;
  291. }
  292. this.timeSelection.forEach((item)=>{
  293. list.push(item.id);
  294. })
  295. var _self = this;
  296. this.$confirm(`确定要批量删除选中的数据吗?, 是否继续?`, '提示', {
  297. confirmButtonText: '确定',
  298. cancelButtonText: '取消',
  299. type: 'warning'
  300. }).then(() => {
  301. request.post('/bis/insp/mtprg/sms/deleteBatch',list).then(res=>{
  302. if(res.success){
  303. _self.initTableData();
  304. _self.$refs.multipleTable.clearSelection();
  305. }else{
  306. _self.$message.error(res.message);
  307. }
  308. })
  309. }).catch(() => {
  310. this.$message({
  311. type: 'info',
  312. message: '已取消删除'
  313. });
  314. });
  315. },
  316. batchStart(type){
  317. var list = [];
  318. if(!this.timeSelection || this.timeSelection.length==0){
  319. this.$message.warning("请选择数据");
  320. return false;
  321. }
  322. this.timeSelection.forEach((item)=>{
  323. if(item.isRemind!=type){
  324. list.push({
  325. id:item.id,
  326. isRemind:type
  327. });
  328. }
  329. })
  330. var _self = this;
  331. this.$confirm(`确定要批量${type=='1'?'启动':'关闭'}吗?已经${type=='1'?'启动':'关闭'}的数据会自动过滤, 是否继续?`, '提示', {
  332. confirmButtonText: '确定',
  333. cancelButtonText: '取消',
  334. type: 'warning'
  335. }).then(() => {
  336. request.post('/bis/insp/mtprg/sms/updateBatch',list).then(res=>{
  337. if(res.success){
  338. _self.initTableData();
  339. _self.$refs.multipleTable.clearSelection();
  340. }else{
  341. _self.$message.error(res.message);
  342. }
  343. })
  344. }).catch(() => {
  345. this.$message({
  346. type: 'info',
  347. message: '已取消删除'
  348. });
  349. });
  350. },
  351. handleTimeSelectionChange(val){
  352. this.timeSelection = val;
  353. },
  354. getCurTime(){
  355. this.tipTime = "";
  356. var list = [];
  357. request.get('/bis/insp/smsTm/list').then(res=>{
  358. if(res.success){
  359. if(res.data && res.data.length>0){
  360. res.data.forEach((item)=>{
  361. list.push(item.daysOfMonth);
  362. })
  363. this.time = list;
  364. this.tipTime = `(当前短信提醒日期为每月${list.join("、")}号)`
  365. }else{
  366. this.time = [];
  367. }
  368. }else{
  369. this.time = [];
  370. this.$message.error(res.message);
  371. }
  372. })
  373. },
  374. setTimeBtn(){
  375. if(!this.time || this.time.length==0){
  376. this.$message.warning("请选择每月提醒日期");
  377. return false;
  378. }
  379. var list = [];
  380. this.time.forEach((item)=>{
  381. list.push({
  382. daysOfMonth:item
  383. });
  384. })
  385. var _self = this;
  386. this.$confirm(`确定要设置每月${this.time.join(",")}为提醒日期吗, 是否继续?`, '提示', {
  387. confirmButtonText: '确定',
  388. cancelButtonText: '取消',
  389. type: 'warning'
  390. }).then(() => {
  391. request.post('/bis/insp/smsTm/batch',list).then(res=>{
  392. if(res.success){
  393. _self.getCurTime();
  394. _self.isSetTime = false;
  395. _self.$message.success("设置成功");
  396. }else{
  397. _self.$message.error(res.message);
  398. }
  399. })
  400. }).catch(() => {
  401. this.$message({
  402. type: 'info',
  403. message: '已取消删除'
  404. });
  405. });
  406. },
  407. setTime(){
  408. this.isSetTime = true;
  409. this.time = [];
  410. },
  411. changeSms(row){
  412. var _self = this;
  413. var obj = {
  414. id:row.id,
  415. isRemind:row.isRemind
  416. }
  417. request.post('/bis/insp/mtprg/sms/update',obj).then(res=>{
  418. if(!res.success){
  419. row.isRemind = row.isRemind=="0"?"1":"0";
  420. }
  421. })
  422. },
  423. handleSelectionChange(val){
  424. this.multipleSelection = val;
  425. },
  426. deleteData(id){
  427. var _self = this;
  428. this.$confirm('确定删除该条数据吗, 是否继续?', '提示', {
  429. confirmButtonText: '确定',
  430. cancelButtonText: '取消',
  431. type: 'warning'
  432. }).then(() => {
  433. request.post('/bis/insp/mtprg/sms/delete/'+id).then(res=>{
  434. if(res.success){
  435. _self.initTableData();
  436. }else{
  437. _self.$message.error(res.message);
  438. }
  439. })
  440. }).catch(() => {
  441. this.$message({
  442. type: 'info',
  443. message: '已取消删除'
  444. });
  445. });
  446. },
  447. addSubmit(){
  448. var _self = this;
  449. if(this.multipleSelection && this.multipleSelection.length>0){
  450. this.multipleSelection.forEach((item,index) =>{
  451. item.userId = item.guid;
  452. })
  453. request.post('/bis/insp/mtprg/sms/batch',this.multipleSelection).then(res=>{
  454. if(res.success){
  455. _self.initTableData();
  456. _self.addDialogVisible = false;
  457. _self.$refs.multipleTable1.clearSelection();
  458. }else{
  459. _self.$message.error(res.message);
  460. }
  461. })
  462. }else{
  463. _self.$message.warning("请选择数据");
  464. }
  465. },
  466. closeAddDialog(){
  467. this.addDialogVisible = false;
  468. },
  469. initTableData(){
  470. this.searchForm.pageNum = this.pageNum;
  471. this.searchForm.pageSize = this.pageSize;
  472. this.loading = true;
  473. var _self = this;
  474. request.post('/bis/insp/mtprg/sms/findPage',this.searchForm).then(res=>{
  475. if(res.success){
  476. _self.tableData = res.data.list;
  477. _self.total = res.data.total;
  478. _self.loading = false;
  479. }else{
  480. _self.$message.error(res.message)
  481. }
  482. })
  483. },
  484. getAllPersName(){
  485. this.addSearchForm.pageNum = this.pageNum1;
  486. this.addSearchForm.pageSize = this.pageSize1;
  487. this.loading1 = true;
  488. var _self = this;
  489. request.post('/bis/insp/mtprg/sms/listByNotMonthReport',this.addSearchForm).then(res=>{
  490. if(res.success){
  491. _self.tableData1 = res.data.list;
  492. _self.total1 = res.data.total;
  493. _self.loading1 = false;
  494. }else{
  495. _self.$message.error(res.message)
  496. }
  497. })
  498. },
  499. handleCurrentChange(val){
  500. this.pageNum = val;
  501. this.initTableData();
  502. },
  503. handleCurrentChange1(val){
  504. this.pageNum1 = val;
  505. this.getAllPersName();
  506. },
  507. searchBtn(){
  508. this.initTableData();
  509. },
  510. searchBtn1(){
  511. this.getAllPersName();
  512. },
  513. addBtn(){
  514. this.multipleSelection = [];
  515. this.addSearchForm = {};
  516. this.addDialogVisible = true;
  517. this.getAllPersName();
  518. }
  519. }
  520. }
  521. </script>
  522. <style lang="scss" scoped>
  523. .monthReport{
  524. width: 100%;
  525. height:100%;
  526. margin: 0;
  527. padding: 0;
  528. }
  529. .box-card{
  530. width: calc(100% - 60px);
  531. height:calc(100% - 20px);
  532. margin: 0 auto;
  533. margin-top: 10px;
  534. }
  535. .title_monthReport{
  536. text-align: center;
  537. padding: 10px;
  538. }
  539. .note_monthReport{
  540. width: 100%;
  541. background-color: rgba(255, 251, 230, 1);
  542. box-sizing: border-box;
  543. border-width: 1px;
  544. border-style: solid;
  545. border-color: rgba(255, 229, 143, 1);
  546. color: rgba(0, 0, 0, 0.447058823529412);
  547. font-size: 14px;
  548. padding: 10px;
  549. }
  550. .note_monthReport p:first-child{
  551. font-size: 16px !important;
  552. }
  553. .monthReport{
  554. .demo-form-inline{
  555. .el-form-item{
  556. margin-bottom: 5px;
  557. margin-top: 8px;
  558. }
  559. }
  560. }
  561. </style>