index.vue 41 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938
  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="form_see(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="messageName">
  48. <span>{{temp.messageName}}</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:05', 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:05', 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="form_search">{{$t('common.query')}}</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 disabled 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 == '1'">
  259. <el-row :gutter="5">
  260. <el-col :span="18">
  261. <el-form-item label="发送机制">
  262. <el-select disabled v-model="temp.sendingMechanism" style="width: 100%;" placeholder="发送机制">
  263. <el-option v-for="item in mechanismList" :key="item.id" :label="item.name" :value="item.id" />
  264. </el-select>
  265. </el-form-item>
  266. </el-col>
  267. <el-col :span="6" v-if="temp.sendingMechanism == '2'">
  268. <el-input disabled ref="numberCycles" v-model="temp.numberCycles" style="width: 100%;" placeholder="循环次数" type="text" />
  269. </el-col>
  270. </el-row>
  271. <el-row v-if="temp.sendingMechanism !== '1' && temp.sendingMechanism !== ''">
  272. <el-col :span="24">
  273. <el-form-item label="间隔周期:">
  274. <el-input disabled ref="intervalPeriod1" v-model="temp.intervalPeriod1" style="width: 33%;margin-right:1%" placeholder="天" type="text" />
  275. <el-input disabled ref="intervalPeriod2" v-model="temp.intervalPeriod2" style="width: 33%;margin-right:1%" placeholder="小时" type="text" />
  276. <el-input disabled ref="intervalPeriod3" v-model="temp.intervalPeriod3" style="width: 32%;" placeholder="分钟" type="text" />
  277. </el-form-item>
  278. </el-col>
  279. </el-row>
  280. </div>
  281. <div v-if="temp.sendingMethod == '2'">
  282. <el-row>
  283. <el-col :span="24">
  284. <el-form-item label="延时:">
  285. <el-input disabled ref="delayed1" v-model="temp.delayed1" style="width: 33%;margin-right:1%" placeholder="天" type="text" />
  286. <el-input disabled ref="delayed2" v-model="temp.delayed2" style="width: 33%;margin-right:1%" placeholder="小时" type="text" />
  287. <el-input disabled ref="delayed3" v-model="temp.delayed3" style="width: 32%;" placeholder="分钟" type="text" />
  288. </el-form-item>
  289. </el-col>
  290. </el-row>
  291. <el-row>
  292. <el-col :span="24">
  293. <el-form-item label="发送时间">
  294. <el-time-select disabled placeholder="发送时间" :clearable="false" style="width: 100%;" v-model="temp.sendTime" :picker-options="{ start: '00:00', step: '00:05', end: '23:59' }" />
  295. </el-form-item>
  296. </el-col>
  297. </el-row>
  298. <el-row :gutter="5">
  299. <el-col :span="18">
  300. <el-form-item label="发送机制">
  301. <el-select disabled v-model="temp.sendingMechanism" style="width: 100%;" placeholder="发送机制">
  302. <el-option v-for="item in mechanismList" :key="item.id" :label="item.name" :value="item.id" />
  303. </el-select>
  304. </el-form-item>
  305. </el-col>
  306. <el-col :span="6" v-if="temp.sendingMechanism == '2'">
  307. <el-input disabled ref="numberCycles" v-model="temp.numberCycles" style="width: 100%;" placeholder="循环次数" type="text" />
  308. </el-col>
  309. </el-row>
  310. <el-row v-if="temp.sendingMechanism !== '1' && temp.sendingMechanism !== ''">
  311. <el-col :span="24">
  312. <el-form-item label="间隔周期:">
  313. <el-input disabled ref="intervalPeriod1" v-model="temp.intervalPeriod1" style="width: 33%;margin-right:1%" placeholder="天" type="text" />
  314. <el-input disabled ref="intervalPeriod2" v-model="temp.intervalPeriod2" style="width: 33%;margin-right:1%" placeholder="小时" type="text" />
  315. <el-input disabled ref="intervalPeriod3" v-model="temp.intervalPeriod3" style="width: 32%;" placeholder="分钟" type="text" />
  316. </el-form-item>
  317. </el-col>
  318. </el-row>
  319. </div>
  320. <div v-if="temp.sendingMethod == '3'">
  321. <el-row>
  322. <el-col :span="24">
  323. <el-form-item label="发送机制:">
  324. <span>持续循环</span>
  325. </el-form-item>
  326. </el-col>
  327. </el-row>
  328. <el-row :gutter="5">
  329. <el-col :span="18">
  330. <el-form-item label="周期类型">
  331. <el-select disabled v-model="temp.cycleType" style="width: 100%;" placeholder="周期类型">
  332. <el-option v-for="item in cycleTypeList" :key="item.id" :label="item.name" :value="item.id" />
  333. </el-select>
  334. </el-form-item>
  335. </el-col>
  336. <el-col :span="6" v-if="temp.cycleType == '2'">
  337. <el-select disabled v-model="temp.week" style="width: 100%;" placeholder="每周">
  338. <el-option v-for="item in weekList" :key="item.id" :label="item.name" :value="item.id" />
  339. </el-select>
  340. </el-col>
  341. <el-col :span="6" v-if="temp.cycleType == 3">
  342. <el-select disabled v-model="temp.month" style="width: 100%;" placeholder="每月">
  343. <el-option v-for="item in monthList" :key="item.id" :label="item.name" :value="item.id" />
  344. </el-select>
  345. </el-col>
  346. </el-row>
  347. <el-row>
  348. <el-col :span="24">
  349. <el-form-item label="发送时间">
  350. <el-time-select disabled placeholder="发送时间" :clearable="false" style="width: 100%;" v-model="temp.sendTime" :picker-options="{ start: '00:00', step: '00:05', end: '23:59' }" />
  351. </el-form-item>
  352. </el-col>
  353. </el-row>
  354. </div>
  355. </el-form>
  356. </div>
  357. <div slot="footer" class="dialog-footer" style="right:30px;position:absolute;bottom: 40px;">
  358. <el-button class="cancelClose1" @click="see.dialogFormVisible = false;getList(); ">取消</el-button>
  359. </div>
  360. </div>
  361. </el-dialog>
  362. <!-- 扫码 -->
  363. <el-dialog :title="textMap[QRcode.dialogStatus]" :visible.sync="QRcode.dialogFormVisible" :close-on-click-modal="false" width="50%">
  364. <div class="QRcode">
  365. <div class="content">
  366. <div class="title">
  367. <p>微信接收系统待办、预警等消息,必须先扫码关注公众号;</p>
  368. <p>请将下方二维码分享给需要接收信息的用户扫码</p>
  369. </div>
  370. <div style="font-weight: 600;">关注微信:</div>
  371. <img src="https://img2.baidu.com/it/u=1151188475,1753963046&fm=253&fmt=auto&app=138&f=JPEG?w=504&h=300" alt="">
  372. </div>
  373. <div slot="footer" class="dialog-footer" style="right:30px;position:absolute;bottom: 40px;">
  374. <el-button class="save" :disabled="isokDisable" @click="QRcode.dialogFormVisible = false;">确认</el-button>
  375. </div>
  376. </div>
  377. </el-dialog>
  378. </div>
  379. </template>
  380. <script>
  381. import { GetDataByName,postJson2,postJson } from '@/api/common'
  382. import Cookies from 'js-cookie'
  383. export default {
  384. name: 'ReminderSettings',
  385. data() {
  386. return {
  387. temp:{
  388. rules:{},
  389. messageName:'',//消息名称
  390. triggerCondition:'',//触发条件,
  391. sendingMethod:'1',//发送方式
  392. delayed1:'',//延时
  393. delayed2:'',//延时
  394. delayed3:'',//延时,
  395. sendTime:'',//发送时间,
  396. sendingMechanism:'1',// 发送机制
  397. numberCycles:'',//循环次数
  398. intervalPeriod1:'',//间隔周期
  399. intervalPeriod2:'',//间隔周期
  400. intervalPeriod3:'',//间隔周期
  401. cycleType:'1',
  402. },
  403. modeList: [
  404. { id: '1', name: '立即' },
  405. { id: '2', name: '延时' },
  406. { id: '3', name: '指定周期' },
  407. ],
  408. mode: '0',
  409. mechanismList: [
  410. { id: '1', name: '单次' },
  411. { id: '2', name: '指定循环次数' },
  412. { id: '3', name: '循环至任务结束' },
  413. ],
  414. cycleTypeList:[
  415. { id: '1', name: '每天' },
  416. { id: '2', name: '每周' },
  417. { id: '3', name: '每月' },
  418. ],//周期类型
  419. weekList:[
  420. { id: '1', name: '周一' },
  421. { id: '2', name: '周二' },
  422. { id: '3', name: '周三' },
  423. { id: '4', name: '周四' },
  424. { id: '5', name: '周五' },
  425. { id: '6', name: '周六' },
  426. { id: '7', name: '周日' },
  427. ],//周
  428. monthList:[],//月
  429. mechanism: '0',
  430. activeName:'first',
  431. table: {
  432. tableKey: 0,
  433. list: [],
  434. total: 0,
  435. listLoading: false
  436. },
  437. setUp:{
  438. dialogStatus: '',
  439. dialogFormVisible:false,
  440. // 角色
  441. tableKey1: 0,
  442. list1: [],
  443. total1: 0,
  444. listLoading1: false,
  445. data1:{
  446. name: 'getRoleList', page: 1, offset: 1, pagecount:'',returntype: 'Map',
  447. parammaps: {
  448. pastureid: Cookies.get('pastureid')
  449. }
  450. },
  451. // 用户
  452. tableKey2: 0,
  453. list2: [],
  454. total2: 0,
  455. listLoading2: false,
  456. data2:{
  457. name: 'getuserallL', page: 1, offset: 1, pagecount:'',returntype: 'Map',
  458. parammaps: {
  459. pastureid: Cookies.get('pastureid'),
  460. roleid:''
  461. }
  462. },
  463. temp:{}
  464. },
  465. see:{
  466. dialogStatus: '',
  467. dialogFormVisible:false,
  468. temp:{}
  469. },
  470. QRcode:{
  471. dialogStatus: '',
  472. dialogFormVisible:false,
  473. },
  474. myHeight:document.documentElement.clientHeight - 85- 150 - 45,
  475. textMap: {
  476. setup: '设置',
  477. QRcode:'提示',
  478. add:'新增',
  479. see:'查看'
  480. },
  481. selectList1:[],
  482. selectList2:[],
  483. isokDisable:false,
  484. rowStyle: { maxHeight: 30 + 'px', height: 30 + 'px' },
  485. cellStyle: { padding: 0 + 'px' }
  486. }
  487. },
  488. created() {
  489. this.monthList = []
  490. for(let i=1;i<=31;i++){
  491. let obj = {}
  492. obj.id = String(i)
  493. obj.name = i+'日'
  494. this.monthList.push(obj)
  495. }
  496. this.getList()
  497. },
  498. methods: {
  499. getList() {
  500. this.table.listLoading = true
  501. let url = 'authdata/remind/list'
  502. let data = {
  503. parammaps:{
  504. pastureid:Cookies.get('pastureid')
  505. }
  506. }
  507. postJson(url,data).then(response => {
  508. if (response.data !== null) {
  509. console.log('table数据', response.data)
  510. this.table.list = response.data
  511. this.table.pageNum = response.data.pageNum
  512. this.table.pageSize = response.data.pageSize
  513. } else {
  514. this.table.list = []
  515. }
  516. this.table.total = response.data.total
  517. setTimeout(() => {
  518. this.table.listLoading = false
  519. }, 100)
  520. })
  521. },
  522. handleSetUp(row){
  523. console.log(row,'row')
  524. this.setUp.dialogStatus = 'setup'
  525. this.setUp.dialogFormVisible = true
  526. this.activeName = 'first'
  527. this.setUp.temp = Object.assign({}, row)
  528. this.temp.messageName = row.message //消息名称
  529. this.temp.triggerCondition = row.trigger //触发条件
  530. this.temp.sendTime = row.data.push_time //发送时间
  531. this.selectList1 = []
  532. if(row.user){
  533. this.selectList2 = row.user.split(',')
  534. }
  535. console.log(this.selectList2,'this.selectList211')
  536. // 立即
  537. this.temp.sendingMethod = String(row.data.remind_type) //发送方式
  538. if(this.temp.sendingMethod == '1'){
  539. this.temp.sendingMechanism = String(row.data.cycle_type) //发送机制
  540. if(this.temp.sendingMechanism == '2'){
  541. this.temp.numberCycles = row.data.push_limit //循环次数
  542. if(this.temp.sendingMechanism !== '1' && this.temp.sendingMechanism !== ''){
  543. //间隔周期
  544. var minutes = row.data.interval_time
  545. var day = parseInt(Math.floor(minutes / 1440));
  546. var hour = day > 0 ? Math.floor((minutes - day * 1440) / 60) : Math.floor(minutes / 60);
  547. var minute = hour > 0 ? Math.floor(minutes - day * 1440 - hour * 60) : minutes;
  548. this.temp.intervalPeriod1 = day;
  549. this.temp.intervalPeriod2 = hour;
  550. this.temp.intervalPeriod3 = minute;
  551. }
  552. }
  553. if(this.temp.sendingMechanism == '3'){
  554. if(this.temp.sendingMechanism !== '1' && this.temp.sendingMechanism !== ''){
  555. //间隔周期
  556. var minutes = row.data.interval_time
  557. var day = parseInt(Math.floor(minutes / 1440));
  558. var hour = day > 0 ? Math.floor((minutes - day * 1440) / 60) : Math.floor(minutes / 60);
  559. var minute = hour > 0 ? Math.floor(minutes - day * 1440 - hour * 60) : minutes;
  560. this.temp.intervalPeriod1 = day;
  561. this.temp.intervalPeriod2 = hour;
  562. this.temp.intervalPeriod3 = minute;
  563. }
  564. }
  565. }
  566. // 延时
  567. if(this.temp.sendingMethod == '2'){
  568. this.temp.sendingMethod = String(row.data.remind_type) //发送方式
  569. if(this.temp.sendingMethod == '2'){
  570. //延时
  571. var minutes = row.data.delay_time
  572. var day = parseInt(Math.floor(minutes / 1440));
  573. var hour = day > 0 ? Math.floor((minutes - day * 1440) / 60) : Math.floor(minutes / 60);
  574. var minute = hour > 0 ? Math.floor(minutes - day * 1440 - hour * 60) : minutes;
  575. this.temp.delayed1 = day;
  576. this.temp.delayed2 = hour;
  577. this.temp.delayed3 = minute;
  578. }
  579. this.temp.sendTime = row.data.push_time //发送时间
  580. this.temp.sendingMechanism = String(row.data.cycle_type) //发送机制
  581. if(this.temp.sendingMechanism == '2'){
  582. this.temp.numberCycles = row.data.push_limit //循环次数
  583. if(this.temp.sendingMechanism !== '1' && this.temp.sendingMechanism !== ''){
  584. //间隔周期
  585. var minutes = row.data.interval_time
  586. var day = parseInt(Math.floor(minutes / 1440));
  587. var hour = day > 0 ? Math.floor((minutes - day * 1440) / 60) : Math.floor(minutes / 60);
  588. var minute = hour > 0 ? Math.floor(minutes - day * 1440 - hour * 60) : minutes;
  589. this.temp.intervalPeriod1 = day;
  590. this.temp.intervalPeriod2 = hour;
  591. this.temp.intervalPeriod3 = minute;
  592. }
  593. }
  594. if(this.temp.sendingMechanism == '3'){
  595. if(this.temp.sendingMechanism !== '1' && this.temp.sendingMechanism !== ''){
  596. var minutes = row.data.interval_time
  597. var day = parseInt(Math.floor(minutes / 1440));
  598. var hour = day > 0 ? Math.floor((minutes - day * 1440) / 60) : Math.floor(minutes / 60);
  599. var minute = hour > 0 ? Math.floor(minutes - day * 1440 - hour * 60) : minutes;
  600. this.temp.intervalPeriod1 = day;
  601. this.temp.intervalPeriod2 = hour;
  602. this.temp.intervalPeriod3 = minute;
  603. }
  604. }
  605. }
  606. // 指定周期
  607. if(this.temp.sendingMethod == '3'){
  608. this.temp.cycleType = String(row.data.date_type) //周期类型
  609. if(this.temp.cycleType == '2'){
  610. this.temp.week = String(row.data.push_date)
  611. }
  612. if(this.temp.cycleType == '3'){
  613. this.temp.month = String(row.data.push_date)
  614. }
  615. }
  616. this.getList1()
  617. },
  618. form_see(row){
  619. this.see.dialogStatus = 'see'
  620. this.see.dialogFormVisible = true
  621. this.setUp.temp = Object.assign({}, row)
  622. this.temp.messageName = row.message //消息名称
  623. this.temp.triggerCondition = row.trigger //触发条件
  624. this.temp.sendTime = row.data.push_time //发送时间
  625. // 立即
  626. this.temp.sendingMethod = String(row.data.remind_type) //发送方式
  627. if(this.temp.sendingMethod == '1'){
  628. this.temp.sendingMechanism = String(row.data.cycle_type) //发送机制
  629. if(this.temp.sendingMechanism == '2'){
  630. this.temp.numberCycles = row.data.push_limit //循环次数
  631. if(this.temp.sendingMechanism !== '1' && this.temp.sendingMechanism !== ''){
  632. //间隔周期
  633. var minutes = row.data.interval_time
  634. var day = parseInt(Math.floor(minutes / 1440));
  635. var hour = day > 0 ? Math.floor((minutes - day * 1440) / 60) : Math.floor(minutes / 60);
  636. var minute = hour > 0 ? Math.floor(minutes - day * 1440 - hour * 60) : minutes;
  637. this.temp.intervalPeriod1 = day;
  638. this.temp.intervalPeriod2 = hour;
  639. this.temp.intervalPeriod3 = minute;
  640. }
  641. }
  642. if(this.temp.sendingMechanism == '3'){
  643. if(this.temp.sendingMechanism !== '1' && this.temp.sendingMechanism !== ''){
  644. //间隔周期
  645. var minutes = row.data.interval_time
  646. var day = parseInt(Math.floor(minutes / 1440));
  647. var hour = day > 0 ? Math.floor((minutes - day * 1440) / 60) : Math.floor(minutes / 60);
  648. var minute = hour > 0 ? Math.floor(minutes - day * 1440 - hour * 60) : minutes;
  649. this.temp.intervalPeriod1 = day;
  650. this.temp.intervalPeriod2 = hour;
  651. this.temp.intervalPeriod3 = minute;
  652. }
  653. }
  654. }
  655. // 延时
  656. if(this.temp.sendingMethod == '2'){
  657. this.temp.sendingMethod = String(row.data.remind_type) //发送方式
  658. if(this.temp.sendingMethod == '2'){
  659. //延时
  660. var minutes = row.data.delay_time
  661. var day = parseInt(Math.floor(minutes / 1440));
  662. var hour = day > 0 ? Math.floor((minutes - day * 1440) / 60) : Math.floor(minutes / 60);
  663. var minute = hour > 0 ? Math.floor(minutes - day * 1440 - hour * 60) : minutes;
  664. this.temp.delayed1 = day;
  665. this.temp.delayed2 = hour;
  666. this.temp.delayed3 = minute;
  667. }
  668. this.temp.sendTime = row.data.push_time //发送时间
  669. this.temp.sendingMechanism = String(row.data.cycle_type) //发送机制
  670. if(this.temp.sendingMechanism == '2'){
  671. this.temp.numberCycles = row.data.push_limit //循环次数
  672. if(this.temp.sendingMechanism !== '1' && this.temp.sendingMechanism !== ''){
  673. //间隔周期
  674. var minutes = row.data.interval_time
  675. var day = parseInt(Math.floor(minutes / 1440));
  676. var hour = day > 0 ? Math.floor((minutes - day * 1440) / 60) : Math.floor(minutes / 60);
  677. var minute = hour > 0 ? Math.floor(minutes - day * 1440 - hour * 60) : minutes;
  678. this.temp.intervalPeriod1 = day;
  679. this.temp.intervalPeriod2 = hour;
  680. this.temp.intervalPeriod3 = minute;
  681. }
  682. }
  683. if(this.temp.sendingMechanism == '3'){
  684. if(this.temp.sendingMechanism !== '1' && this.temp.sendingMechanism !== ''){
  685. var minutes = row.data.interval_time
  686. var day = parseInt(Math.floor(minutes / 1440));
  687. var hour = day > 0 ? Math.floor((minutes - day * 1440) / 60) : Math.floor(minutes / 60);
  688. var minute = hour > 0 ? Math.floor(minutes - day * 1440 - hour * 60) : minutes;
  689. this.temp.intervalPeriod1 = day;
  690. this.temp.intervalPeriod2 = hour;
  691. this.temp.intervalPeriod3 = minute;
  692. }
  693. }
  694. }
  695. // 指定周期
  696. if(this.temp.sendingMethod == '3'){
  697. this.temp.cycleType = String(row.data.date_type) //周期类型
  698. if(this.temp.cycleType == '2'){
  699. this.temp.week = String(row.data.push_date)
  700. }
  701. if(this.temp.cycleType == '3'){
  702. this.temp.month = String(row.data.push_date)
  703. }
  704. }
  705. },
  706. handleClick(item){
  707. if(item == 'first'){
  708. this.getList1()
  709. }else{
  710. this.getList2()
  711. }
  712. },
  713. handleSelectionChange1(val) {
  714. console.log('勾选数据', val)
  715. this.selectList1 = []
  716. for(let i=0;i<val.length;i++){
  717. this.selectList1.push(val[i].id)
  718. }
  719. this.setUp.data2.parammaps.roleid = this.selectList1.join(',')
  720. this.getList2()
  721. },
  722. handleSelectionChange2(val) {
  723. this.selectList2 = val.map(item=>item.username)
  724. console.log('勾选数据', this.selectList2)
  725. },
  726. handleGenerateQRcode(){
  727. this.QRcode.dialogStatus = 'QRcode'
  728. this.QRcode.dialogFormVisible = true
  729. },
  730. form_search(){
  731. this.getList2()
  732. },
  733. getList1() {
  734. this.setUp.listLoading1 = true
  735. let url = "authdata/GetDataByName"
  736. postJson(url,this.setUp.data1).then(response => {
  737. if (response.data.list !== null) {
  738. this.setUp.list1 = response.data.list
  739. if(this.selectList1.length== 0){
  740. this.setUp.data2.parammaps.roleid = ''
  741. }
  742. this.selectList1.forEach(key => {
  743. this.setUp.list1.forEach(row => {
  744. if (row.id == key) {
  745. this.$nextTick(() => {
  746. this.$refs.setUpTable1.toggleRowSelection(row, true);
  747. })
  748. }
  749. })
  750. })
  751. this.getList2()
  752. } else {
  753. this.setUp.list1 = []
  754. }
  755. setTimeout(() => {
  756. this.setUp.listLoading1 = false
  757. }, 100)
  758. })
  759. },
  760. getList2() {
  761. this.setUp.listLoading2 = true
  762. let url = "authdata/GetDataByName"
  763. postJson(url,this.setUp.data2).then(response => {
  764. if (response.data.list !== null) {
  765. this.setUp.list2 = response.data.list
  766. if(this.selectList1.length !== 0){
  767. this.selectList2 = []
  768. response.data.list.forEach(key => {
  769. this.selectList2.push(key.username)
  770. })
  771. }
  772. this.selectList2.forEach(key => {
  773. console.log(key,'key')
  774. this.setUp.list2.forEach(row => {
  775. if (row.username == key) {
  776. this.$nextTick(() => {
  777. this.$refs.setUpTable2.toggleRowSelection(row, true);
  778. })
  779. }
  780. })
  781. })
  782. } else {
  783. this.setUp.list2 = []
  784. }
  785. console.log(this.selectList2,'this.selectList2')
  786. setTimeout(() => {
  787. this.setUp.listLoading2 = false
  788. }, 100)
  789. })
  790. },
  791. setData(){
  792. let url = 'authdata/remind/edit'
  793. let data = {}
  794. let delayedTime = 0
  795. let delayed1 = 0
  796. let delayed2 = 0
  797. let delayed3 = 0
  798. if(this.temp.sendTime == null){
  799. this.temp.sendTime = ''
  800. }
  801. if(this.temp.delayed1 !== ''){
  802. delayed1 = parseInt(this.temp.delayed1)*24*60
  803. }else {
  804. delayed1 = 0
  805. }
  806. if(this.temp.delayed2 !== ''){
  807. delayed2 = parseInt(this.temp.delayed2)*60
  808. }else {
  809. delayed2 = 0
  810. }
  811. if(this.temp.delayed3 !== ''){
  812. delayed3 = parseInt(this.temp.delayed3)
  813. }else{
  814. delayed3 = 0
  815. }
  816. delayedTime = delayed1 + delayed2 + delayed3
  817. let intervalPeriodTime = 0
  818. let intervalPeriod1 = 0
  819. let intervalPeriod2 = 0
  820. let intervalPeriod3 = 0
  821. if(this.temp.intervalPeriod1 !== ''){
  822. intervalPeriod1 = parseInt(this.temp.intervalPeriod1)*24*60
  823. }else {
  824. intervalPeriod1 = 0
  825. }
  826. if(this.temp.intervalPeriod2 !== ''){
  827. intervalPeriod2 = parseInt(this.temp.intervalPeriod2)*60
  828. }else {
  829. intervalPeriod2 = 0
  830. }
  831. if(this.temp.intervalPeriod3 !== ''){
  832. intervalPeriod3 = parseInt(this.temp.intervalPeriod3)
  833. }else{
  834. intervalPeriod3 = 0
  835. }
  836. intervalPeriodTime = intervalPeriod1+ intervalPeriod2 + intervalPeriod3
  837. // sendingMethod 发送方式
  838. // sendingMechanism 发送机制
  839. // intervalPeriod1 间隔周期
  840. // delayed1 延时
  841. // sendTime 发送时间
  842. // numberCycles 循环次数
  843. // 发送方式-立即
  844. if(this.temp.sendingMethod == '1'){
  845. data.sys_name = 'tmrWatch'
  846. data.pastureid = this.setUp.temp.pastureid
  847. // data.service_id = this.setUp.temp.service_id
  848. data.type_name = this.temp.messageName
  849. data.template_id = 'RLPlaCnqQZt_6s4HZuaFJYbQ9gmTfIYipTYDoKJInY8'
  850. data.id = this.setUp.temp.id
  851. data.user = this.selectList2
  852. data.remind_type = parseInt(this.temp.sendingMethod) //发送方式123
  853. data.cycle_type = parseInt(this.temp.sendingMechanism) //发送机制123
  854. if(this.temp.sendingMechanism == 2){
  855. data.push_limit = this.temp.numberCycles //循环次数
  856. data.interval_time = intervalPeriodTime //间隔周期
  857. }
  858. if(this.temp.sendingMechanism == 3){
  859. data.interval_time = intervalPeriodTime //间隔周期
  860. }
  861. }
  862. // 发送方式-延时
  863. if(this.temp.sendingMethod == '2'){
  864. data.id = this.setUp.temp.id
  865. data.user = this.selectList2
  866. data.sys_name = 'tmrWatch'
  867. data.type_name = this.temp.messageName
  868. data.template_id = 'RLPlaCnqQZt_6s4HZuaFJYbQ9gmTfIYipTYDoKJInY8'
  869. data.pastureid = Cookies.get('pastureid')
  870. data.remind_type = parseInt(this.temp.sendingMethod) //发送方式123
  871. data.delay_time = delayedTime //延时
  872. data.push_time = this.temp.sendTime //发送时间
  873. data.cycle_type = parseInt(this.temp.sendingMechanism) //发送机制123
  874. if(this.temp.sendingMechanism == 2){
  875. data.push_limit = this.temp.numberCycles //循环次数
  876. data.interval_time = intervalPeriodTime
  877. }
  878. if(this.temp.sendingMechanism == 3){
  879. data.interval_time = intervalPeriodTime //间隔周期
  880. }
  881. }
  882. // 发送方式-指定周期
  883. if(this.temp.sendingMethod == '3'){
  884. data.id = this.setUp.temp.id
  885. data.user = this.selectList2
  886. data.sys_name = 'tmrWatch'
  887. data.type_name = this.temp.messageName
  888. data.template_id = 'RLPlaCnqQZt_6s4HZuaFJYbQ9gmTfIYipTYDoKJInY8'
  889. data.pastureid = Cookies.get('pastureid')
  890. data.remind_type = parseInt(this.temp.sendingMethod) //发送方式123
  891. data.cycle_type = '4'//发送机制
  892. data.date_type = parseInt(this.temp.cycleType) //周期类型
  893. data.push_time = this.temp.sendTime //发送时间
  894. if(this.temp.cycleType == 2){
  895. data.push_date = this.temp.week
  896. }else{
  897. data.push_date = this.temp.month
  898. }
  899. }
  900. postJson(url,data).then(response => {
  901. if(response.code == 200){
  902. console.log('成功')
  903. this.$notify({ title: '成功', message: '保存成功', type: 'success', duration: 2000 })
  904. this.setUp.dialogFormVisible = false
  905. this.getList()
  906. }else{
  907. this.$notify({ title: '失败', message: response.message, type: 'warning', duration: 2000 })
  908. console.log('失败')
  909. }
  910. })
  911. }
  912. }
  913. }
  914. </script>
  915. <style scoped>
  916. .app-container{
  917. padding: 20px 20px;
  918. }
  919. .content-left{padding: 5px 5px;}
  920. .content-left b{padding-right: 10px;}
  921. .QRcode{display:flex;justify-content: center; align-items:center;}
  922. .content{
  923. /* margin-top: 100px; */
  924. width: 500px;
  925. }
  926. .content img{
  927. max-width:300px;
  928. }
  929. </style>