index.vue 34 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808
  1. <template>
  2. <div class="app-container">
  3. <div class="table">
  4. <el-table
  5. :key="table.tableKey"
  6. v-loading="table.listLoading"
  7. element-loading-text="给我一点时间"
  8. :data="table.list"
  9. border
  10. fit
  11. highlight-current-row
  12. style="width: 100%;"
  13. :row-style="rowStyle"
  14. :cell-style="cellStyle"
  15. class="elTable table-fixed"
  16. :max-height="myHeight"
  17. >
  18. <el-table-column label="消息名称" min-width="130px" align="center" prop="message" />
  19. <el-table-column label="触发条件" min-width="130px" align="center" prop="trigger" />
  20. <el-table-column label="发送方式" min-width="130px" align="center">
  21. <template slot-scope="scope">
  22. <span>{{ scope.row.data.remind_type }}</span>
  23. </template>
  24. </el-table-column>
  25. <el-table-column label="详细配置" min-width="130px" align="center">
  26. <template slot-scope="{row}">
  27. <a class="correcting" size="mini" style="width: 80px;" @click="handleSee(row)">查看</a>
  28. </template>
  29. </el-table-column>
  30. <el-table-column label="提醒对象" min-width="130px" align="center" prop="user" />
  31. <el-table-column label="操作" align="center" width="150" class-name="small-padding fixed-width" fixed="right">
  32. <template slot-scope="{row}">
  33. <a class="correcting" size="mini" style="width: 80px;" @click="handleSetUp(row)">设置</a>
  34. </template>
  35. </el-table-column>
  36. </el-table>
  37. </div>
  38. <!-- 设置 -->
  39. <el-dialog :title="textMap[setUp.dialogStatus]" :visible.sync="setUp.dialogFormVisible" :close-on-click-modal="false" width="70%">
  40. <div class="setup">
  41. <div style="height: 500px;">
  42. <el-row :gutter="20">
  43. <el-col :span="8">
  44. <el-form ref="temp" :rules="temp.rules" :model="temp" label-position="right" label-width="110px" style="width: 100%;margin:0 auto">
  45. <el-row>
  46. <el-col :span="24">
  47. <el-form-item label="消息名称:" prop="message">
  48. <span>{{temp.message}}</span>
  49. </el-form-item>
  50. </el-col>
  51. </el-row>
  52. <el-row>
  53. <el-col :span="24">
  54. <el-form-item label="触发条件:" prop="triggerCondition">
  55. <span>{{temp.triggerCondition}}</span>
  56. </el-form-item>
  57. </el-col>
  58. </el-row>
  59. <el-row>
  60. <el-col :span="24">
  61. <el-form-item label="发送方式:" prop="sendingMethod">
  62. <el-select v-model="temp.sendingMethod" style="width: 100%;" placeholder="发送方式">
  63. <el-option v-for="item in modeList" :key="item.id" :label="item.name" :value="item.id" />
  64. </el-select>
  65. </el-form-item>
  66. </el-col>
  67. </el-row>
  68. <div v-if="temp.sendingMethod == '1'">
  69. <el-row :gutter="5">
  70. <el-col :span="18">
  71. <el-form-item label="发送机制">
  72. <el-select v-model="temp.sendingMechanism" style="width: 100%;" placeholder="发送机制">
  73. <el-option v-for="item in mechanismList" :key="item.id" :label="item.name" :value="item.id" />
  74. </el-select>
  75. </el-form-item>
  76. </el-col>
  77. <el-col :span="6" v-if="temp.sendingMechanism == '2'">
  78. <el-input ref="numberCycles" v-model="temp.numberCycles" style="width: 100%;" placeholder="循环次数" type="text" />
  79. </el-col>
  80. </el-row>
  81. <el-row v-if="temp.sendingMechanism !== '1' && temp.sendingMechanism !== ''">
  82. <el-col :span="24">
  83. <el-form-item label="间隔周期:">
  84. <el-input ref="intervalPeriod1" v-model="temp.intervalPeriod1" style="width: 33%;margin-right:1%" placeholder="天" type="text" />
  85. <el-input ref="intervalPeriod2" v-model="temp.intervalPeriod2" style="width: 33%;margin-right:1%" placeholder="小时" type="text" />
  86. <el-input ref="intervalPeriod3" v-model="temp.intervalPeriod3" style="width: 32%;" placeholder="分钟" type="text" />
  87. </el-form-item>
  88. </el-col>
  89. </el-row>
  90. </div>
  91. <div v-if="temp.sendingMethod == '2'">
  92. <el-row>
  93. <el-col :span="24">
  94. <el-form-item label="延时:">
  95. <el-input ref="delayed1" v-model="temp.delayed1" style="width: 33%;margin-right:1%" placeholder="天" type="text" />
  96. <el-input ref="delayed2" v-model="temp.delayed2" style="width: 33%;margin-right:1%" placeholder="小时" type="text" />
  97. <el-input ref="delayed3" v-model="temp.delayed3" style="width: 32%;" placeholder="分钟" type="text" />
  98. </el-form-item>
  99. </el-col>
  100. </el-row>
  101. <el-row>
  102. <el-col :span="24">
  103. <el-form-item label="发送时间">
  104. <el-time-select placeholder="发送时间" :clearable="false" style="width: 100%;" v-model="temp.sendTime" :picker-options="{ start: '00:00', step: '00:15', end: '23:59' }" />
  105. </el-form-item>
  106. </el-col>
  107. </el-row>
  108. <el-row :gutter="5">
  109. <el-col :span="18">
  110. <el-form-item label="发送机制">
  111. <el-select v-model="temp.sendingMechanism" style="width: 100%;" placeholder="发送机制">
  112. <el-option v-for="item in mechanismList" :key="item.id" :label="item.name" :value="item.id" />
  113. </el-select>
  114. </el-form-item>
  115. </el-col>
  116. <el-col :span="6" v-if="temp.sendingMechanism == '2'">
  117. <el-input ref="numberCycles" v-model="temp.numberCycles" style="width: 100%;" placeholder="循环次数" type="text" />
  118. </el-col>
  119. </el-row>
  120. <el-row v-if="temp.sendingMechanism !== '1' && temp.sendingMechanism !== ''">
  121. <el-col :span="24">
  122. <el-form-item label="间隔周期:">
  123. <el-input ref="intervalPeriod1" v-model="temp.intervalPeriod1" style="width: 33%;margin-right:1%" placeholder="天" type="text" />
  124. <el-input ref="intervalPeriod2" v-model="temp.intervalPeriod2" style="width: 33%;margin-right:1%" placeholder="小时" type="text" />
  125. <el-input ref="intervalPeriod3" v-model="temp.intervalPeriod3" style="width: 32%;" placeholder="分钟" type="text" />
  126. </el-form-item>
  127. </el-col>
  128. </el-row>
  129. </div>
  130. <div v-if="temp.sendingMethod == '3'">
  131. <el-row>
  132. <el-col :span="24">
  133. <el-form-item label="发送机制:">
  134. <span>持续循环</span>
  135. </el-form-item>
  136. </el-col>
  137. </el-row>
  138. <el-row :gutter="5">
  139. <el-col :span="18">
  140. <el-form-item label="周期类型">
  141. <el-select v-model="temp.cycleType" style="width: 100%;" placeholder="周期类型">
  142. <el-option v-for="item in cycleTypeList" :key="item.id" :label="item.name" :value="item.id" />
  143. </el-select>
  144. </el-form-item>
  145. </el-col>
  146. <el-col :span="6" v-if="temp.cycleType == '2'">
  147. <el-select v-model="temp.week" style="width: 100%;" placeholder="每周">
  148. <el-option v-for="item in weekList" :key="item.id" :label="item.name" :value="item.id" />
  149. </el-select>
  150. </el-col>
  151. <el-col :span="6" v-if="temp.cycleType == 3">
  152. <el-select v-model="temp.month" style="width: 100%;" placeholder="每月">
  153. <el-option v-for="item in monthList" :key="item.id" :label="item.name" :value="item.id" />
  154. </el-select>
  155. </el-col>
  156. </el-row>
  157. <el-row>
  158. <el-col :span="24">
  159. <el-form-item label="发送时间">
  160. <el-time-select placeholder="发送时间" :clearable="false" style="width: 100%;" v-model="temp.sendTime" :picker-options="{ start: '00:00', step: '00:15', end: '23:59' }" />
  161. </el-form-item>
  162. </el-col>
  163. </el-row>
  164. </div>
  165. </el-form>
  166. </el-col>
  167. <el-col :span="16">
  168. <b>提醒对象:</b>
  169. <div class="search">
  170. <el-input v-model="setUp.empCode" placeholder="角色名称" style="width: 180px;" class="filter-item" clearable />
  171. <el-input v-model="setUp.empCode" placeholder="用户名称" style="width: 180px;" class="filter-item" clearable />
  172. <el-input v-model="setUp.empname" placeholder="员工姓名" style="width: 180px;" class="filter-item" clearable />
  173. <el-button class="successBorder" @click="handleSearch">查询</el-button>
  174. </div>
  175. <el-row :gutter="5">
  176. <el-col :span="6">
  177. <el-table
  178. ref="setUpTable1"
  179. :key="setUp.tableKey1"
  180. v-loading="setUp.listLoading1"
  181. element-loading-text="给我一点时间"
  182. :data="setUp.list1"
  183. border
  184. fit
  185. highlight-current-row
  186. style="width: 100%;"
  187. :row-style="rowStyle"
  188. :cell-style="cellStyle"
  189. class="elTable table-fixed"
  190. @selection-change="handleSelectionChange1"
  191. :height="350"
  192. >
  193. <el-table-column type="selection" align="center" width="50" />
  194. <el-table-column label="角色名" min-width="100px" align="center" prop="rolename" />
  195. </el-table>
  196. </el-col>
  197. <el-col :span="18">
  198. <el-table
  199. ref="setUpTable2"
  200. :key="setUp.tableKey2"
  201. v-loading="setUp.listLoading2"
  202. element-loading-text="给我一点时间"
  203. :data="setUp.list2"
  204. border
  205. fit
  206. highlight-current-row
  207. style="width: 100%;"
  208. :row-style="rowStyle"
  209. :cell-style="cellStyle"
  210. class="elTable table-fixed"
  211. @selection-change="handleSelectionChange2"
  212. :height="350"
  213. >
  214. <el-table-column type="selection" align="center" width="50" />
  215. <el-table-column label="用户名称" min-width="130px" align="center" prop="username" />
  216. <el-table-column label="员工姓名" min-width="130px" align="center" prop="empname" />
  217. <el-table-column label="角色" min-width="130px" align="center" prop="rolename" />
  218. </el-table>
  219. </el-col>
  220. </el-row>
  221. </el-col>
  222. </el-row>
  223. </div>
  224. <div slot="footer" class="dialog-footer" style="right:30px;position:absolute;bottom: 40px;">
  225. <el-button class="cancelClose" @click="setUp.dialogFormVisible = false;getList(); ">取消</el-button>
  226. <el-button class="save" :disabled="isokDisable" @click="setData()">确认</el-button>
  227. </div>
  228. </div>
  229. </el-dialog>
  230. <!-- 查看 -->
  231. <el-dialog :title="textMap[see.dialogStatus]" :visible.sync="see.dialogFormVisible" :close-on-click-modal="false" width="40%">
  232. <div class="setup">
  233. <div style="height: 500px;">
  234. <el-form ref="temp" :rules="temp.rules" :model="temp" label-position="right" label-width="110px" style="width: 100%;margin:0 auto">
  235. <el-row>
  236. <el-col :span="24">
  237. <el-form-item label="消息名称:" prop="messageName">
  238. <span>{{temp.messageName}}</span>
  239. </el-form-item>
  240. </el-col>
  241. </el-row>
  242. <el-row>
  243. <el-col :span="24">
  244. <el-form-item label="触发条件:" prop="triggerCondition">
  245. <span>{{temp.triggerCondition}}</span>
  246. </el-form-item>
  247. </el-col>
  248. </el-row>
  249. <el-row>
  250. <el-col :span="24">
  251. <el-form-item label="发送方式:" prop="sendingMethod">
  252. <el-select v-model="temp.sendingMethod" style="width: 100%;" placeholder="发送方式">
  253. <el-option v-for="item in modeList" :key="item.id" :label="item.name" :value="item.id" />
  254. </el-select>
  255. </el-form-item>
  256. </el-col>
  257. </el-row>
  258. <div v-if="temp.sendingMethod == '2'">
  259. <el-row>
  260. <el-col :span="24">
  261. <el-form-item label="延时:">
  262. <el-input ref="delayed1" v-model="temp.delayed1" style="width: 33%;margin-right:1%" placeholder="天" type="text" />
  263. <el-input ref="delayed2" v-model="temp.delayed2" style="width: 33%;margin-right:1%" placeholder="小时" type="text" />
  264. <el-input ref="delayed3" v-model="temp.delayed3" style="width: 32%;" placeholder="分钟" type="text" />
  265. </el-form-item>
  266. </el-col>
  267. </el-row>
  268. <el-row>
  269. <el-col :span="24">
  270. <el-form-item label="发送时间">
  271. <el-time-select placeholder="发送时间" style="width: 100%;" v-model="temp.sendTime" :picker-options="{ start: '00:00', step: '00:15', end: '23:59' }" />
  272. </el-form-item>
  273. </el-col>
  274. </el-row>
  275. <el-row :gutter="5">
  276. <el-col :span="18">
  277. <el-form-item label="发送机制">
  278. <el-select v-model="temp.sendingMechanism" style="width: 100%;" placeholder="发送机制">
  279. <el-option v-for="item in mechanismList" :key="item.id" :label="item.name" :value="item.id" />
  280. </el-select>
  281. </el-form-item>
  282. </el-col>
  283. <el-col :span="6" v-if="temp.sendingMechanism == '2'">
  284. <el-input ref="numberCycles" v-model="temp.numberCycles" style="width: 100%;" placeholder="循环次数" type="text" />
  285. </el-col>
  286. </el-row>
  287. <el-row v-if="temp.sendingMechanism !== '1' && temp.sendingMechanism !== ''">
  288. <el-col :span="24">
  289. <el-form-item label="间隔周期:">
  290. <el-input ref="intervalPeriod1" v-model="temp.intervalPeriod1" style="width: 33%;margin-right:1%" placeholder="天" type="text" />
  291. <el-input ref="intervalPeriod2" v-model="temp.intervalPeriod2" style="width: 33%;margin-right:1%" placeholder="小时" type="text" />
  292. <el-input ref="intervalPeriod3" v-model="temp.intervalPeriod3" style="width: 32%;" placeholder="分钟" type="text" />
  293. </el-form-item>
  294. </el-col>
  295. </el-row>
  296. </div>
  297. <div v-if="temp.sendingMethod == '3'">
  298. <el-row>
  299. <el-col :span="24">
  300. <el-form-item label="发送机制:">
  301. <span>持续循环</span>
  302. </el-form-item>
  303. </el-col>
  304. </el-row>
  305. <el-row :gutter="5">
  306. <el-col :span="18">
  307. <el-form-item label="周期类型">
  308. <el-select v-model="temp.cycleType" style="width: 100%;" placeholder="周期类型">
  309. <el-option v-for="item in cycleTypeList" :key="item.id" :label="item.name" :value="item.id" />
  310. </el-select>
  311. </el-form-item>
  312. </el-col>
  313. <el-col :span="6" v-if="temp.cycleType == '2'">
  314. <el-select v-model="temp.week" style="width: 100%;" placeholder="每周">
  315. <el-option v-for="item in weekList" :key="item.id" :label="item.name" :value="item.id" />
  316. </el-select>
  317. </el-col>
  318. <el-col :span="6" v-if="temp.cycleType == 3">
  319. <el-select v-model="temp.month" style="width: 100%;" placeholder="每月">
  320. <el-option v-for="item in monthList" :key="item.id" :label="item.name" :value="item.id" />
  321. </el-select>
  322. </el-col>
  323. </el-row>
  324. <el-row>
  325. <el-col :span="24">
  326. <el-form-item label="发送时间">
  327. <el-time-select placeholder="发送时间" style="width: 100%;" v-model="temp.sendTime" :picker-options="{ start: '00:00', step: '00:15', end: '23:59' }" />
  328. </el-form-item>
  329. </el-col>
  330. </el-row>
  331. </div>
  332. </el-form>
  333. </div>
  334. <div slot="footer" class="dialog-footer" style="right:30px;position:absolute;bottom: 40px;">
  335. <el-button class="cancelClose" @click="see.dialogFormVisible = false;getList(); ">取消</el-button>
  336. </div>
  337. </div>
  338. </el-dialog>
  339. <!-- 扫码 -->
  340. <el-dialog :title="textMap[QRcode.dialogStatus]" :visible.sync="QRcode.dialogFormVisible" :close-on-click-modal="false" width="50%">
  341. <div class="QRcode">
  342. <div class="content">
  343. <div class="title">
  344. <p>微信接收系统待办、预警等消息,必须先扫码关注公众号;</p>
  345. <p>请将下方二维码分享给需要接收信息的用户扫码</p>
  346. </div>
  347. <div style="font-weight: 600;">关注微信:</div>
  348. <img src="https://img2.baidu.com/it/u=1151188475,1753963046&fm=253&fmt=auto&app=138&f=JPEG?w=504&h=300" alt="">
  349. </div>
  350. <div slot="footer" class="dialog-footer" style="right:30px;position:absolute;bottom: 40px;">
  351. <el-button class="save" :disabled="isokDisable" @click="QRcode.dialogFormVisible = false;">确认</el-button>
  352. </div>
  353. </div>
  354. </el-dialog>
  355. </div>
  356. </template>
  357. <script>
  358. import { GetDataByName,postJson2,postJson } from '@/api/common'
  359. import Cookies from 'js-cookie'
  360. export default {
  361. name: 'ReminderSettings',
  362. data() {
  363. return {
  364. temp:{
  365. rules:{},
  366. messageName:'',//消息名称
  367. triggerCondition:'',//触发条件,
  368. sendingMethod:'1',//发送方式
  369. delayed1:'',//延时
  370. delayed2:'',//延时
  371. delayed3:'',//延时,
  372. sendTime:'',//发送时间,
  373. sendingMechanism:'1',// 发送机制
  374. numberCycles:'',//循环次数
  375. intervalPeriod1:'',//间隔周期
  376. intervalPeriod2:'',//间隔周期
  377. intervalPeriod3:'',//间隔周期
  378. cycleType:'1',
  379. },
  380. modeList: [
  381. { id: '1', name: '立即' },
  382. { id: '2', name: '延时' },
  383. { id: '3', name: '指定周期' },
  384. ],
  385. mode: '0',
  386. mechanismList: [
  387. { id: '1', name: '单次' },
  388. { id: '2', name: '指定循环次数' },
  389. { id: '3', name: '循环至任务结束' },
  390. ],
  391. cycleTypeList:[
  392. { id: '1', name: '每天' },
  393. { id: '2', name: '每周' },
  394. { id: '3', name: '每月' },
  395. ],//周期类型
  396. weekList:[
  397. { id: '1', name: '周一' },
  398. { id: '2', name: '周二' },
  399. { id: '3', name: '周三' },
  400. { id: '4', name: '周四' },
  401. { id: '5', name: '周五' },
  402. { id: '6', name: '周六' },
  403. { id: '7', name: '周日' },
  404. ],//周
  405. monthList:[],//月
  406. mechanism: '0',
  407. activeName:'first',
  408. table: {
  409. tableKey: 0,
  410. list: [],
  411. total: 0,
  412. listLoading: false
  413. },
  414. setUp:{
  415. dialogStatus: '',
  416. dialogFormVisible:false,
  417. // 角色
  418. tableKey1: 0,
  419. list1: [],
  420. total1: 0,
  421. listLoading1: false,
  422. data1:{
  423. name: 'getRoleList', page: 1, offset: 1, pagecount:'',returntype: 'Map',
  424. parammaps: {
  425. pastureid: Cookies.get('pastureid')
  426. }
  427. },
  428. // 用户
  429. tableKey2: 0,
  430. list2: [],
  431. total2: 0,
  432. listLoading2: false,
  433. data2:{
  434. name: 'getuserallL', page: 1, offset: 1, pagecount:'',returntype: 'Map',
  435. parammaps: {
  436. pastureid: Cookies.get('pastureid'),
  437. roleid:''
  438. }
  439. },
  440. temp:{}
  441. },
  442. see:{
  443. dialogStatus: '',
  444. dialogFormVisible:false,
  445. temp:{}
  446. },
  447. QRcode:{
  448. dialogStatus: '',
  449. dialogFormVisible:false,
  450. },
  451. myHeight:document.documentElement.clientHeight - 85- 150 - 45,
  452. textMap: {
  453. setup: '设置',
  454. QRcode:'提示',
  455. add:'新增',
  456. see:'查看'
  457. },
  458. selectList1:[],
  459. selectList2:[],
  460. isokDisable:false,
  461. rowStyle: { maxHeight: 30 + 'px', height: 30 + 'px' },
  462. cellStyle: { padding: 0 + 'px' }
  463. }
  464. },
  465. created() {
  466. this.monthList = []
  467. for(let i=1;i<=31;i++){
  468. let obj = {}
  469. obj.id = i
  470. obj.name = i+'日'
  471. this.monthList.push(obj)
  472. }
  473. this.getList()
  474. },
  475. methods: {
  476. getList() {
  477. this.table.listLoading = true
  478. let url = 'authdata/remind/list'
  479. let data = {
  480. parammaps:{
  481. pastureid:Cookies.get('pastureid')
  482. }
  483. }
  484. postJson(url,data).then(response => {
  485. if (response.data !== null) {
  486. console.log('table数据', response.data)
  487. this.table.list = response.data
  488. this.table.pageNum = response.data.pageNum
  489. this.table.pageSize = response.data.pageSize
  490. } else {
  491. this.table.list = []
  492. }
  493. this.table.total = response.data.total
  494. setTimeout(() => {
  495. this.table.listLoading = false
  496. }, 100)
  497. })
  498. },
  499. handleSetUp(row){
  500. console.log(row,'row')
  501. this.setUp.dialogStatus = 'setup'
  502. this.setUp.dialogFormVisible = true
  503. this.activeName = 'first'
  504. this.setUp.temp = Object.assign({}, row)
  505. this.temp.messageName = row.data.message //消息名称
  506. this.temp.triggerCondition = row.trigger //触发条件
  507. // 立即
  508. this.temp.sendingMethod = String(row.data.remind_type) //发送方式
  509. if(this.temp.sendingMethod == '1'){
  510. this.temp.sendingMechanism = String(row.data.cycle_type) //发送机制
  511. if(this.temp.sendingMechanism == '2'){
  512. this.temp.numberCycles = row.data.push_limit //循环次数
  513. if(this.temp.sendingMechanism !== '1' && this.temp.sendingMechanism !== ''){
  514. this.formatMinutes(row.data.interval_time) //间隔周期
  515. }
  516. }
  517. if(this.temp.sendingMechanism == '3'){
  518. if(this.temp.sendingMechanism !== '1' && this.temp.sendingMechanism !== ''){
  519. this.formatMinutes(row.data.interval_time) //间隔周期
  520. }
  521. }
  522. }
  523. // 延时
  524. if(this.temp.sendingMethod == '2'){
  525. this.temp.sendingMethod = String(row.data.remind_type) //发送方式
  526. if(this.temp.sendingMethod == '2'){
  527. this.formatMinutes(row.data.interval_time) //延时
  528. }
  529. this.temp.sendTime = row.data.push_time //发送时间
  530. this.temp.push_limit = String(row.data.push_time) //发送机制
  531. if(this.temp.push_limit == '2'){
  532. this.temp.numberCycles = row.data.push_limit //循环次数
  533. if(this.temp.sendingMechanism !== '1' && this.temp.sendingMechanism !== ''){
  534. this.formatMinutes(row.data.interval_time) //间隔周期
  535. }
  536. }
  537. if(this.temp.push_limit == '3'){
  538. if(this.temp.sendingMechanism !== '1' && this.temp.sendingMechanism !== ''){
  539. this.formatMinutes(row.data.interval_time) //间隔周期
  540. }
  541. }
  542. }
  543. // 指定周期
  544. if(this.temp.sendingMethod == '3'){
  545. this.temp.cycleType = String(row.data.date_type) //周期类型
  546. if(this.temp.cycleType == '2'){
  547. this.temp.week = row.data.push_date
  548. }
  549. if(this.temp.cycleType == '3'){
  550. this.temp.month = row.data.push_date
  551. }
  552. }
  553. this.getList1()
  554. },
  555. formatMinutes(minutes) {
  556. var day = parseInt(Math.floor(minutes / 1440));
  557. var hour = day > 0 ? Math.floor((minutes - day * 1440) / 60) : Math.floor(minutes / 60);
  558. var minute = hour > 0 ? Math.floor(minutes - day * 1440 - hour * 60) : minutes;
  559. if(this.temp.sendingMethod == '2'){
  560. this.temp.delayed1 = day;
  561. this.temp.delayed2 = hour;
  562. this.temp.delayed3 = minute;
  563. return this.temp.delayed1;
  564. return this.temp.delayed2;
  565. return this.temp.delayed3;
  566. }
  567. if(this.temp.sendingMechanism !== '1' && this.temp.sendingMechanism !== ''){
  568. this.temp.intervalPeriod1 = day;
  569. this.temp.intervalPeriod2 = hour;
  570. this.temp.intervalPeriod3 = minute;
  571. return this.temp.intervalPeriod1;
  572. return this.temp.intervalPeriod2;
  573. return this.temp.intervalPeriod3;
  574. }
  575. },
  576. handleSee(){
  577. this.see.dialogStatus = 'see'
  578. this.see.dialogFormVisible = true
  579. this.see.temp = Object.assign({}, row)
  580. },
  581. handleClick(item){
  582. if(item == 'first'){
  583. this.getList1()
  584. }else{
  585. this.getList2()
  586. }
  587. },
  588. handleSelectionChange1(val) {
  589. console.log('勾选数据', val)
  590. this.selectList1 = []
  591. for(let i=0;i<val.length;i++){
  592. this.selectList1.push(val[i].id)
  593. }
  594. this.setUp.data2.parammaps.roleid = this.selectList1.join(',')
  595. this.getList2()
  596. },
  597. handleSelectionChange2(val) {
  598. this.selectList2 = val.map(item=>item.username)
  599. console.log('勾选数据', this.selectList2)
  600. },
  601. handleGenerateQRcode(){
  602. this.QRcode.dialogStatus = 'QRcode'
  603. this.QRcode.dialogFormVisible = true
  604. },
  605. handleSearch(){
  606. this.getList2()
  607. },
  608. getList1() {
  609. this.setUp.listLoading1 = true
  610. let url = "authdata/GetDataByName"
  611. postJson(url,this.setUp.data1).then(response => {
  612. if (response.data.list !== null) {
  613. this.setUp.list1 = response.data.list
  614. if(this.selectList1.length== 0){
  615. this.setUp.data2.parammaps.roleid = response.data.list[0]['id']
  616. this.selectList1.push(response.data.list[0]['id'])
  617. }
  618. this.selectList1.forEach(key => {
  619. this.setUp.list1.forEach(row => {
  620. if (row.id == key) {
  621. this.$nextTick(() => {
  622. this.$refs.setUpTable1.toggleRowSelection(row, true);
  623. })
  624. }
  625. })
  626. })
  627. this.getList2()
  628. } else {
  629. this.setUp.list1 = []
  630. }
  631. setTimeout(() => {
  632. this.setUp.listLoading1 = false
  633. }, 100)
  634. })
  635. },
  636. getList2() {
  637. this.setUp.listLoading2 = true
  638. let url = "authdata/GetDataByName"
  639. postJson(url,this.setUp.data2).then(response => {
  640. if (response.data.list !== null) {
  641. this.setUp.list2 = response.data.list
  642. this.selectList2 = []
  643. response.data.list.forEach(key => {
  644. this.selectList2.push(key.username)
  645. })
  646. this.selectList2.forEach(key => {
  647. this.setUp.list2.forEach(row => {
  648. if (row.username == key) {
  649. this.$nextTick(() => {
  650. this.$refs.setUpTable2.toggleRowSelection(row, true);
  651. })
  652. }
  653. })
  654. })
  655. } else {
  656. this.setUp.list2 = []
  657. }
  658. console.log(this.selectList2,'this.selectList2')
  659. setTimeout(() => {
  660. this.setUp.listLoading2 = false
  661. }, 100)
  662. })
  663. },
  664. setData(){
  665. let url = 'authdata/remind/edit'
  666. let data = {}
  667. let delayedTime = 0
  668. let delayed1 = 0
  669. let delayed2 = 0
  670. let delayed3 = 0
  671. if(this.temp.delayed1 !== ''){
  672. delayed1 = parseInt(this.temp.delayed1)*24*60
  673. }else {
  674. delayed1 = 0
  675. }
  676. if(this.temp.delayed2 !== ''){
  677. delayed2 = parseInt(this.temp.delayed2)*60
  678. }else {
  679. delayed2 = 0
  680. }
  681. if(this.temp.delayed3 !== ''){
  682. delayed3 = parseInt(this.temp.delayed3)
  683. }else{
  684. delayed3 = 0
  685. }
  686. delayedTime = delayed1 + delayed2 + delayed3
  687. let intervalPeriodTime = 0
  688. let intervalPeriod1 = 0
  689. let intervalPeriod2 = 0
  690. let intervalPeriod3 = 0
  691. if(this.temp.intervalPeriod1 !== ''){
  692. intervalPeriod1 = parseInt(this.temp.intervalPeriod1)*24*60
  693. }else {
  694. intervalPeriod1 = 0
  695. }
  696. if(this.temp.intervalPeriod2 !== ''){
  697. intervalPeriod2 = parseInt(this.temp.intervalPeriod2)*60
  698. }else {
  699. intervalPeriod2 = 0
  700. }
  701. if(this.temp.intervalPeriod3 !== ''){
  702. intervalPeriod3 = parseInt(this.temp.intervalPeriod3)
  703. }else{
  704. intervalPeriod3 = 0
  705. }
  706. intervalPeriodTime = intervalPeriod1+ intervalPeriod2 + intervalPeriod3
  707. // sendingMethod 发送方式
  708. // sendingMechanism 发送机制
  709. // intervalPeriod1 间隔周期
  710. // delayed1 延时
  711. // sendTime 发送时间
  712. // numberCycles 循环次数
  713. // 发送方式-立即
  714. if(this.temp.sendingMethod == '1'){
  715. data.sys_name = 'tmrWatch'
  716. data.pasture_id = this.setUp.temp.pastureid
  717. data.service_id = this.setUp.temp.service_id
  718. data.type_name = this.temp.messageName
  719. data.template_id = 'BtkN1rWKOJtKP0C64lGxIrPzLRFsYFas-4gupX2-pFo'
  720. data.id = this.setUp.temp.id
  721. data.user = this.selectList2
  722. data.remind_type = parseInt(this.temp.sendingMethod) //发送方式123
  723. data.cycle_type = parseInt(this.temp.sendingMechanism) //发送机制123
  724. if(this.temp.sendingMechanism == 2){
  725. data.push_limit = this.temp.numberCycles //循环次数
  726. data.interval_time = intervalPeriodTime //间隔周期
  727. }
  728. if(this.temp.sendingMechanism == 3){
  729. data.interval_time = intervalPeriodTime //间隔周期
  730. }
  731. }
  732. // 发送方式-延时
  733. if(this.temp.sendingMethod == '2'){
  734. data.id = this.setUp.temp.id
  735. data.user = this.setUp.temp.user
  736. data.sys_name = 'tmrWatch'
  737. data.type_name = this.temp.messageName
  738. data.template_id = 'BtkN1rWKOJtKP0C64lGxIrPzLRFsYFas-4gupX2-pFo'
  739. data.pastureid = Cookies.get('pastureid')
  740. data.remind_type = parseInt(this.temp.sendingMethod) //发送方式123
  741. data.delay_time = delayedTime //延时
  742. data.push_time = this.temp.sendTime //发送时间
  743. data.cycle_type = parseInt(this.temp.sendingMechanism) //发送机制123
  744. if(this.temp.sendingMechanism == 2){
  745. data.push_limit = this.temp.numberCycles //循环次数
  746. data.interval_time = intervalPeriodTime
  747. }
  748. if(this.temp.sendingMechanism == 3){
  749. data.interval_time = intervalPeriodTime //间隔周期
  750. }
  751. }
  752. // 发送方式-指定周期
  753. if(this.temp.sendingMethod == '3'){
  754. data.id = this.setUp.temp.id
  755. data.user = this.setUp.temp.user
  756. data.sys_name = 'tmrWatch'
  757. data.type_name = this.temp.messageName
  758. data.template_id = 'BtkN1rWKOJtKP0C64lGxIrPzLRFsYFas-4gupX2-pFo'
  759. data.pastureid = Cookies.get('pastureid')
  760. data.remind_type = parseInt(this.temp.sendingMethod) //发送方式123
  761. data.cycle_type = '4'//发送机制
  762. data.date_type = parseInt(this.temp.cycleType) //周期类型
  763. data.push_time = this.temp.sendTime //发送时间
  764. if(this.temp.cycleType == 2){
  765. data.push_date = this.temp.week
  766. }else{
  767. data.push_date = this.temp.month
  768. }
  769. }
  770. postJson(url,data).then(response => {
  771. if(response.code == 200){
  772. console.log('成功')
  773. this.$notify({ title: '成功', message: '保存成功', type: 'success', duration: 2000 })
  774. }else{
  775. this.$notify({ title: '成功', message: response.message, type: 'success', duration: 2000 })
  776. console.log('失败')
  777. }
  778. })
  779. }
  780. }
  781. }
  782. </script>
  783. <style scoped>
  784. .app-container{
  785. padding: 20px 20px;
  786. }
  787. .content-left{padding: 5px 5px;}
  788. .content-left b{padding-right: 10px;}
  789. .QRcode{display:flex;justify-content: center; align-items:center;}
  790. .content{
  791. /* margin-top: 100px; */
  792. width: 500px;
  793. }
  794. .content img{
  795. max-width:300px;
  796. }
  797. </style>