offlineTeamRules.vue 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935
  1. <template>
  2. <div class="m-container">
  3. <div class="m-core">
  4. <el-form :inline="true" :model="form" ref="form">
  5. <el-alert
  6. style="margin: 20px 0"
  7. title="线下课考勤定位范围"
  8. :closable="false"
  9. type="info"
  10. >
  11. </el-alert>
  12. <p class="subtitle">线下课考勤定位范围:</p>
  13. <el-row>
  14. <el-form-item
  15. prop="6"
  16. :rules="[
  17. {
  18. required: false,
  19. pattern: /^[1-9][0-9]*$/,
  20. message: '请输入正确的距离',
  21. },
  22. ]"
  23. >
  24. GPS定位距离教学点<el-input
  25. v-model="form['6']"
  26. placeholder="请输入距离"
  27. >
  28. <template slot="append">米</template>
  29. </el-input>
  30. 以内。
  31. </el-form-item>
  32. </el-row>
  33. <p class="subtitle">签到签退定位异常:</p>
  34. <el-row>
  35. <el-form-item
  36. prop="138"
  37. :rules="[
  38. {
  39. required: false,
  40. pattern:
  41. /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/,
  42. message: '请输入正确的金额',
  43. },
  44. ]"
  45. >
  46. 线下课签到地点未在教学点范围内,扣减课酬
  47. <el-input
  48. v-model="form['138']"
  49. placeholder="请输入金额"
  50. class="chiose"
  51. >
  52. <template slot="append">
  53. <el-select class="append" v-model.trim="form['139']">
  54. <el-option label="元" value="1"> </el-option>
  55. <el-option label="%" value="2"> </el-option>
  56. </el-select>
  57. </template>
  58. </el-input>。
  59. </el-form-item>
  60. </el-row>
  61. <el-row>
  62. <el-form-item
  63. prop="206"
  64. :rules="[
  65. {
  66. required: false,
  67. pattern:
  68. /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/,
  69. message: '请输入正确的金额',
  70. },
  71. ]"
  72. >
  73. 线下课签退地点未在教学点范围内,扣减课酬
  74. <el-input
  75. v-model="form['206']"
  76. placeholder="请输入金额"
  77. class="chiose"
  78. >
  79. <template slot="append">
  80. <el-select class="append" v-model.trim="form['207']">
  81. <el-option label="元" value="1"> </el-option>
  82. <el-option label="%" value="2"> </el-option>
  83. </el-select>
  84. </template>
  85. </el-input>。
  86. </el-form-item>
  87. </el-row>
  88. <el-alert
  89. style="margin: 20px 0"
  90. title="签到规则"
  91. :closable="false"
  92. type="info"
  93. >
  94. </el-alert>
  95. <p class="subtitle">正常签到:</p>
  96. <el-row>
  97. <el-form-item
  98. prop="80"
  99. :rules="[
  100. {
  101. required: true,
  102. message: '请输入时间',
  103. trigger: 'blur',
  104. },
  105. {
  106. pattern: /^[1-9][0-9]*$/,
  107. message: '请输入正确的时间',
  108. },
  109. ]"
  110. >
  111. <span style="color: #f56c6c; margin-right: 4px">*</span>
  112. 课程开始前
  113. <el-input v-model="form['80']" placeholder="请输入时间">
  114. <template slot="append">分钟</template>
  115. </el-input>
  116. </el-form-item>
  117. <el-form-item
  118. prop="140"
  119. :rules="[
  120. {
  121. required: false,
  122. message: '请输入时间',
  123. trigger: 'blur',
  124. },
  125. {
  126. pattern: /^0|[1-9][0-9]*$/,
  127. message: '请输入正确的时间',
  128. },
  129. { validator: this.validateMin, trigger: 'blur' },
  130. ]"
  131. >
  132. 到课程开始前
  133. <el-input v-model="form['140']" placeholder="请输入时间">
  134. <template slot="append">分钟</template>
  135. </el-input>
  136. </el-form-item>
  137. </el-row>
  138. <p class="example" v-if="form['80']">
  139. 例:
  140. <span style="color: #f56c6c; margin-right: 4px">12:00:00</span>
  141. 开始的课程,正常签到时间为
  142. <span style="color: #f56c6c; margin-right: 4px">{{
  143. reduceFormMinute("12:00:00", form["80"])
  144. }}</span
  145. >到<span style="color: #f56c6c; margin-right: 4px">{{
  146. reduceFormMinute("12:00:00", form["140"])
  147. }}</span>
  148. 且最早
  149. <span style="color: #f56c6c; margin-right: 4px">{{
  150. reduceFormMinute("12:00:00", form["80"])
  151. }}</span
  152. >可以进行签到。
  153. </p>
  154. <p class="subtitle" v-if="form['140']">异常签到:</p>
  155. <el-row v-if="form['140']">
  156. <el-form-item
  157. prop="141"
  158. :rules="[
  159. {
  160. required: false,
  161. pattern:
  162. /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/,
  163. message: '请输入正确的金额',
  164. },
  165. ]"
  166. >
  167. 未在课程开始
  168. <el-input disabled v-model="form['140']" placeholder="请输入时间">
  169. <template slot="append">分钟</template> </el-input
  170. >前签到,扣减课酬
  171. <el-input
  172. v-model="form['141']"
  173. placeholder="请输入金额"
  174. class="chiose"
  175. >
  176. <template slot="append">
  177. <el-select class="append" v-model.trim="form['142']">
  178. <el-option label="元" value="1"> </el-option>
  179. <el-option label="%" value="2"> </el-option>
  180. </el-select>
  181. </template>
  182. </el-input>。
  183. </el-form-item>
  184. </el-row>
  185. <p class="example" v-if="form['140']">
  186. 例:
  187. <span style="color: #f56c6c; margin-right: 4px">12:00:00</span>
  188. 开始的课程,异常签到时间为
  189. <span style="color: #f56c6c; margin-right: 4px">{{
  190. reduceFormMinuteAddS("12:00:00", form["140"])
  191. }}</span
  192. >到<span style="color: #f56c6c; margin-right: 4px">{{
  193. "12:00:00"
  194. }}</span>。
  195. </p>
  196. <p class="subtitle">迟到:</p>
  197. <el-row>
  198. <el-form-item
  199. prop="143"
  200. :rules="[
  201. {
  202. required: false,
  203. message: '请输入时间',
  204. trigger: 'blur',
  205. },
  206. {
  207. required: false,
  208. pattern: /^[1-9][0-9]*$/,
  209. message: '请输入正确的时间',
  210. },
  211. ]"
  212. >
  213. <!-- <span style="color: #f56c6c; margin-right: 4px">*</span> -->
  214. 课程开始后到课程开始后
  215. <el-input v-model="form['143']" placeholder="请输入时间">
  216. <template slot="append">分钟</template>
  217. </el-input>
  218. </el-form-item>
  219. <el-form-item
  220. prop="144"
  221. :rules="[
  222. {
  223. required: false,
  224. pattern:
  225. /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/,
  226. message: '请输入正确的金额',
  227. },
  228. ]"
  229. >
  230. 以内签到,扣减课酬
  231. <el-input
  232. v-model="form['144']"
  233. placeholder="请选择金额"
  234. class="chiose"
  235. >
  236. <template slot="append">
  237. <el-select class="append" v-model.trim="form['145']">
  238. <el-option label="元" value="1"> </el-option>
  239. <el-option label="%" value="2"> </el-option>
  240. </el-select>
  241. </template>
  242. </el-input>。
  243. </el-form-item>
  244. </el-row>
  245. <p class="example" v-if="form['143']">
  246. 例:
  247. <span style="color: #f56c6c; margin-right: 4px">12:00:00</span>
  248. 开始的课程,迟到签到时间为
  249. <span style="color: #f56c6c; margin-right: 4px">{{ "12:00:01" }}</span
  250. >到<span style="color: #f56c6c; margin-right: 4px">{{
  251. addFormMinute("12:00:00", form["143"])
  252. }}</span>。
  253. </p>
  254. <p class="subtitle">旷课:</p>
  255. <el-row>
  256. <el-form-item prop="143">
  257. 课程开始
  258. <el-input
  259. :disabled="true"
  260. v-model="form['143']"
  261. placeholder="请输入时间"
  262. >
  263. <template slot="append">分钟</template>
  264. </el-input>
  265. </el-form-item>
  266. <el-form-item
  267. prop="147"
  268. :rules="[
  269. {
  270. required: false,
  271. pattern:
  272. /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/,
  273. message: '请输入正确的金额',
  274. },
  275. ]"
  276. >
  277. 后签到,扣减课酬
  278. <el-input
  279. v-model="form['147']"
  280. placeholder="请输入金额"
  281. class="chiose"
  282. >
  283. <template slot="append">
  284. <el-select class="append" v-model.trim="form['148']">
  285. <el-option label="元" value="1"> </el-option>
  286. <el-option label="%" value="2"> </el-option>
  287. </el-select>
  288. </template>
  289. </el-input>。
  290. </el-form-item>
  291. </el-row>
  292. <p class="example" v-if="form['143']">
  293. 例:
  294. <span style="color: #f56c6c; margin-right: 4px">12:00:00</span>
  295. 开始的课程,旷课签到时间为
  296. <span style="color: #f56c6c; margin-right: 4px">{{
  297. addFormMinuteAddS("12:00:00", form["143"])
  298. }}</span>。
  299. </p>
  300. <p class="subtitle">未签到:</p>
  301. <el-row>
  302. <el-form-item
  303. prop="149"
  304. :rules="[
  305. {
  306. required: false,
  307. pattern:
  308. /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/,
  309. message: '请输入正确的金额',
  310. },
  311. ]"
  312. >
  313. 扣减课酬
  314. <el-input
  315. v-model="form['149']"
  316. placeholder="请输入金额"
  317. class="chiose"
  318. >
  319. <template slot="append">
  320. <el-select class="append" v-model.trim="form['150']">
  321. <el-option label="元" value="1"> </el-option>
  322. <el-option label="%" value="2"> </el-option>
  323. </el-select>
  324. </template>
  325. </el-input>。
  326. </el-form-item>
  327. </el-row>
  328. <el-alert
  329. style="margin: 10px 0"
  330. title="签退规则"
  331. :closable="false"
  332. type="info"
  333. >
  334. </el-alert>
  335. <p class="subtitle">正常签退:</p>
  336. <el-row>
  337. <el-form-item
  338. prop="81"
  339. :rules="[
  340. {
  341. required: true,
  342. message: '请输入时间',
  343. trigger: 'blur',
  344. },
  345. {
  346. required: false,
  347. pattern: /^[1-9][0-9]*$/,
  348. message: '请输入正确的时间',
  349. },
  350. ]"
  351. >
  352. <span style="color: #f56c6c; margin-right: 4px">*</span>
  353. 课程结束时间以后到课程结束后
  354. <el-input v-model="form['81']" placeholder="请输入时间">
  355. <template slot="append">分钟</template> </el-input
  356. >内签退。
  357. </el-form-item>
  358. </el-row>
  359. <p class="example" v-if="form['81']">
  360. 例:
  361. <span style="color: #f56c6c; margin-right: 4px">13:00:00</span>
  362. 结束的课程,正常签退时间为
  363. <span style="color: #f56c6c; margin-right: 4px">{{ "13:00:00" }}</span
  364. >到
  365. <span style="color: #f56c6c; margin-right: 4px">{{
  366. addFormMinute("13:00:00", form["81"])
  367. }}</span
  368. >,超过
  369. <span style="color: #f56c6c; margin-right: 4px">{{
  370. addFormMinute("13:00:00", form["81"])
  371. }}</span
  372. >无法签退。
  373. </p>
  374. <p class="subtitle">异常签退:</p>
  375. <el-row>
  376. 课程结束前
  377. <el-input v-model="form['151']" placeholder="请输入时间">
  378. <template slot="append">分钟</template> </el-input
  379. >以后,到课程结束前签退为异常签退,扣减
  380. <el-form-item
  381. prop="152"
  382. :rules="[
  383. {
  384. required: false,
  385. pattern:
  386. /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/,
  387. message: '请输入正确的金额',
  388. },
  389. ]"
  390. >
  391. <el-input
  392. v-model="form['152']"
  393. placeholder="请输入金额"
  394. class="chiose"
  395. >
  396. <template slot="append">
  397. <el-select class="append" v-model.trim="form['153']">
  398. <el-option label="元" value="1"> </el-option>
  399. <el-option label="%" value="2"> </el-option>
  400. </el-select>
  401. </template>
  402. </el-input>。
  403. </el-form-item>
  404. </el-row>
  405. <p class="example" v-if="form['151']">
  406. 例:
  407. <span style="color: #f56c6c; margin-right: 4px">13:00:00</span>
  408. 结束的课程,异常签退时间为
  409. <span style="color: #f56c6c; margin-right: 4px">{{
  410. reduceFormMinute("13:00:00", form["151"])
  411. }}</span
  412. >到
  413. <span style="color: #f56c6c; margin-right: 4px">{{
  414. "12:59:59"
  415. }}</span>。
  416. </p>
  417. <p class="subtitle">早退:</p>
  418. <el-row>
  419. <el-form-item prop="151">
  420. <!-- <span style="color: #f56c6c; margin-right: 4px">*</span> -->
  421. 课程结束前
  422. <el-input disabled v-model="form['151']" placeholder="请输入时间">
  423. <template slot="append">分钟</template>
  424. </el-input>
  425. </el-form-item>
  426. <el-form-item
  427. prop="155"
  428. :rules="[
  429. {
  430. required: false,
  431. pattern:
  432. /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/,
  433. message: '请输入正确的金额',
  434. },
  435. ]"
  436. >
  437. 签退为异常签退,扣减
  438. <el-input
  439. v-model="form['155']"
  440. placeholder="请输入金额"
  441. class="chiose"
  442. >
  443. <template slot="append">
  444. <el-select class="append" v-model.trim="form['156']">
  445. <el-option label="元" value="1"> </el-option>
  446. <el-option label="%" value="2"> </el-option>
  447. </el-select>
  448. </template>
  449. </el-input>。
  450. </el-form-item>
  451. </el-row>
  452. <p class="example" v-if="form['151']">
  453. 例:
  454. <span style="color: #f56c6c; margin-right: 4px">13:00:00</span>
  455. 结束的课程,异常签退时间为
  456. <span style="color: #f56c6c; margin-right: 4px">{{
  457. reduceFormMinuteMS("13:00:00", form["151"])
  458. }}</span
  459. >之前。
  460. </p>
  461. <p class="subtitle">未签退:</p>
  462. <el-row>
  463. <el-form-item
  464. prop="157"
  465. :rules="[
  466. {
  467. required: false,
  468. pattern:
  469. /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/,
  470. message: '请输入正确的金额',
  471. },
  472. ]"
  473. >
  474. 课程未签退扣减课酬
  475. <el-input
  476. v-model="form['157']"
  477. placeholder="请输入金额"
  478. class="chiose"
  479. >
  480. <template slot="append">
  481. <el-select class="append" v-model.trim="form['158']">
  482. <el-option label="元" value="1"> </el-option>
  483. <el-option label="%" value="2"> </el-option>
  484. </el-select>
  485. </template>
  486. </el-input>。
  487. </el-form-item>
  488. </el-row>
  489. <p class="subtitle">签退提醒:</p>
  490. <el-row>
  491. <el-form-item
  492. prop="14"
  493. :rules="[
  494. {
  495. required: false,
  496. pattern: /^[1-9][0-9]*$/,
  497. message: '请输入正确的时间',
  498. },
  499. ]"
  500. >
  501. 课程结束
  502. <el-input v-model="form['14']" placeholder="请输入时间">
  503. <template slot="append">分钟</template>
  504. </el-input>
  505. 后,对未签退老师发送短信提醒。
  506. </el-form-item>
  507. </el-row>
  508. <el-alert
  509. style="margin: 10px 0"
  510. title="乐团线下连堂课"
  511. :closable="false"
  512. type="info"
  513. >
  514. </el-alert>
  515. <p class="subtitle">
  516. 乐团线下连堂课:
  517. <el-tooltip placement="top" popper-class="mTooltip">
  518. <div slot="content">
  519. <p style="color: #fff">
  520. 1.同一天同一个老师,同一个教学点,上一节课的结束时间与下一节课的开始时间在N分钟内视为连堂课,老师第一节有签到记录,第二节课只要在考勤范围内,课程结束之前签到就是正常签到,签退按照正常考勤规则签退。
  521. </p>
  522. <p style="color: #fff">
  523. 2.同一天同一个老师不同教学点,有两节以上的课程,第一节课有签到记录,后面的课程只要在考勤范围内,课程结束之前签到都是正常签到,退按照正常考勤规则签退。
  524. </p>
  525. </div>
  526. <i
  527. class="el-icon-question micon el-tooltip"
  528. style="font-size: 18px; color: #f56c6c"
  529. ></i>
  530. </el-tooltip>
  531. </p>
  532. <el-row>
  533. <el-form-item
  534. prop="178"
  535. :rules="[
  536. {
  537. required: false,
  538. pattern: /^[1-9][0-9]*$/,
  539. message: '请输入正确的时间',
  540. },
  541. ]"
  542. >
  543. 乐团线下课程间隔
  544. <el-input v-model="form['178']" placeholder="请输入时间">
  545. <template slot="append">分钟</template>
  546. </el-input>
  547. 以内视为连堂课。
  548. </el-form-item>
  549. </el-row>
  550. <el-alert
  551. style="margin: 10px 0"
  552. title="VIP课点名规则"
  553. :closable="false"
  554. type="info"
  555. >
  556. </el-alert>
  557. <!-- <p class="subtitle">未点名:</p> -->
  558. <!-- <el-row>
  559. 未点名扣减课酬
  560. <el-input v-model="form.num" placeholder="请输入金额" class="chiose">
  561. <template slot="append" >
  562. <el-select class="append" v-model.trim="form.organId" >
  563. <el-option label="元" value="1"> </el-option>
  564. <el-option label="%" value="2"> </el-option>
  565. </el-select>
  566. </template>
  567. </el-input>
  568. </el-row> -->
  569. <p class="subtitle">点名时间范围:</p>
  570. <el-row>
  571. <el-form-item
  572. prop="39"
  573. :rules="[
  574. {
  575. required: false,
  576. pattern: /^[1-9][0-9]*$/,
  577. message: '请输入正确的时间',
  578. },
  579. ]"
  580. >
  581. VIP线下课可点名时间范围为课程开始前
  582. <el-input v-model="form['39']" placeholder="请输入时间">
  583. <template slot="append">分钟</template>
  584. </el-input>
  585. </el-form-item>
  586. <el-form-item
  587. prop="40"
  588. :rules="[
  589. {
  590. required: false,
  591. pattern: /^[1-9][0-9]*$/,
  592. message: '请输入正确的时间',
  593. },
  594. ]"
  595. >
  596. 至课程结束后
  597. <el-input v-model="form['40']" placeholder="请输入时间">
  598. <template slot="append">分钟</template>
  599. </el-input>不填则当天内都能点名。
  600. </el-form-item>
  601. </el-row>
  602. <el-alert
  603. style="margin: 10px 0"
  604. title="试用期课酬"
  605. :closable="false"
  606. type="info"
  607. />
  608. <p class="subtitle">试用期课酬规则:</p>
  609. <el-row>
  610. <el-form-item
  611. prop="180"
  612. :rules="[
  613. { pattern: /^([1-9]\d?|100)$/, message: '请输入正确的百分比' },
  614. ]"
  615. >
  616. 试用期内的课程按预计课酬
  617. <el-input v-model="form['180']" placeholder="请输入百分比">
  618. <template slot="append">%</template>
  619. </el-input>结算。
  620. </el-form-item>
  621. </el-row>
  622. <el-alert
  623. style="margin: 10px 0"
  624. title="考勤申诉规则"
  625. :closable="false"
  626. type="info"
  627. />
  628. <p class="subtitle">考勤申诉:课程结束后,如果考勤异常,老师可以在APP端进行考勤申诉,但已结算的课程无法再进行申诉,系统常规会在次月6号进行结算。</p>
  629. <el-row>
  630. 全职老师
  631. <el-select
  632. v-model.trim="form['184']"
  633. placeholder="申述方式"
  634. @change="
  635. () => {
  636. $set(form, '183', null);
  637. }
  638. "
  639. >
  640. <el-option label="按时间" value="1"> </el-option>
  641. <el-option label="按日期" value="2"> </el-option>
  642. </el-select>
  643. <span v-if="form['184'] == 1">
  644. <el-form-item
  645. prop="183"
  646. :rules="[
  647. {
  648. required: false,
  649. pattern: /^[1-9][0-9]*$/,
  650. message: '请输入正确的时间',
  651. },
  652. ]"
  653. >
  654. 在课程结束后
  655. <el-input v-model="form['183']" placeholder="请输入时间">
  656. <template slot="append">分钟</template> </el-input
  657. >内可以提交考勤申诉。
  658. </el-form-item>
  659. </span>
  660. <span v-if="form['184'] == 2">
  661. <el-form-item
  662. prop="183"
  663. :rules="[
  664. {
  665. required: false,
  666. pattern: /^[1-9][0-9]*$/,
  667. message: '请输入正确的时间',
  668. },
  669. ]"
  670. >
  671. 在次月
  672. <el-input v-model="form['183']" placeholder="请输入时间">
  673. <template slot="append">号</template> </el-input
  674. >内可以提交考勤申诉。</el-form-item
  675. >
  676. </span>
  677. </el-row>
  678. <el-row>
  679. 兼职老师
  680. <el-select
  681. v-model.trim="form['182']"
  682. placeholder="申述方式"
  683. @change="
  684. () => {
  685. $set(form, '181', null);
  686. }
  687. "
  688. >
  689. <el-option label="按时间" value="1"> </el-option>
  690. <el-option label="按日期" value="2"> </el-option>
  691. </el-select>
  692. <span v-if="form['182'] == 1">
  693. <el-form-item
  694. prop="181"
  695. :rules="[
  696. {
  697. required: false,
  698. pattern: /^[1-9][0-9]*$/,
  699. message: '请输入正确的时间',
  700. },
  701. ]"
  702. >
  703. 在课程结束后
  704. <el-input v-model="form['181']" placeholder="请输入时间">
  705. <template slot="append">分钟</template> </el-input
  706. >内可以提交考勤申诉。
  707. </el-form-item>
  708. </span>
  709. <span v-if="form['182'] == 2">
  710. <el-form-item
  711. prop="181"
  712. :rules="[
  713. {
  714. required: false,
  715. pattern: /^[1-9][0-9]*$/,
  716. message: '请输入正确的时间',
  717. },
  718. ]"
  719. >
  720. 在次月
  721. <el-input v-model="form['181']" placeholder="请输入时间">
  722. <template slot="append">号</template> </el-input
  723. >内可以提交考勤申诉。</el-form-item
  724. >
  725. </span>
  726. </el-row>
  727. <el-row>
  728. 劳务老师
  729. <el-select
  730. v-model.trim="form['186']"
  731. placeholder="申述方式"
  732. @change="
  733. () => {
  734. $set(form, '185', null);
  735. }
  736. "
  737. >
  738. <el-option label="按时间" value="1"> </el-option>
  739. <el-option label="按日期" value="2"> </el-option>
  740. </el-select>
  741. <span v-if="form['186'] == 1">
  742. <el-form-item
  743. prop="185"
  744. :rules="[
  745. {
  746. required: false,
  747. pattern: /^[1-9][0-9]*$/,
  748. message: '请输入正确的时间',
  749. },
  750. ]"
  751. >
  752. 在课程结束后
  753. <el-input v-model="form['185']" placeholder="请输入时间">
  754. <template slot="append">分钟</template> </el-input
  755. >内可以提交考勤申诉。
  756. </el-form-item>
  757. </span>
  758. <span span v-if="form['186'] == 2">
  759. <el-form-item
  760. prop="185"
  761. :rules="[
  762. {
  763. required: false,
  764. pattern: /^[1-9][0-9]*$/,
  765. message: '请输入正确的时间',
  766. },
  767. ]"
  768. >
  769. 在次月
  770. <el-input v-model="form['185']" placeholder="请输入时间">
  771. <template slot="append">号</template> </el-input
  772. >内可以提交考勤申诉。</el-form-item
  773. >
  774. </span>
  775. </el-row>
  776. </el-form>
  777. <el-button
  778. type="primary"
  779. @click="save"
  780. class="saveBtn"
  781. v-if="!isPlatform"
  782. v-permission="'sysTenantConfig/batchUpSet_offlineTeamRules'"
  783. >保存</el-button
  784. >
  785. <el-button
  786. type="primary"
  787. @click="save"
  788. class="saveBtn"
  789. v-else
  790. v-permission="'sysConfig/batchUpdate_offlineTeamRules'"
  791. >保存</el-button
  792. >
  793. </div>
  794. </div>
  795. </template>
  796. <script>
  797. import { getSysTenantConfig, setSysTenantConfig } from "../api";
  798. import { sysConfigList, sysConfigUpdate } from "@/api/generalSettings"; // 平台的修改和查
  799. import {
  800. addFormMinute,
  801. addFormMinuteAddS,
  802. reduceFormMinute,
  803. reduceFormMinuteAddS,
  804. addFormMinuteMS,
  805. reduceFormMinuteMS,
  806. } from "@/utils/date";
  807. export default {
  808. props: ["isPlatform"],
  809. data() {
  810. return {
  811. form: {},
  812. questionList: [],
  813. rulesVisiable: false,
  814. };
  815. },
  816. async mounted() {
  817. this.getRules();
  818. },
  819. methods: {
  820. getRules() {
  821. if (this.isPlatform) {
  822. this.getPlatformRules();
  823. } else {
  824. this.getInstitutionRules();
  825. }
  826. },
  827. async getPlatformRules() {
  828. try {
  829. const res = await sysConfigList({ group: "OFFLINE" });
  830. res.data.forEach((item) => {
  831. // this.form[item.paramName] = item.paranValue
  832. this.$set(this.form, item.id, item.paranValue);
  833. });
  834. // this.$forceUpdate()
  835. console.log(this.form);
  836. } catch (e) {
  837. console.log(e);
  838. }
  839. },
  840. async getInstitutionRules() {
  841. try {
  842. const res = await getSysTenantConfig({ group: "OFFLINE" });
  843. res.data.forEach((item) => {
  844. // this.form[item.paramName] = item.paranValue
  845. this.$set(this.form, item.id, item.paranValue);
  846. });
  847. // this.$forceUpdate()
  848. console.log(this.form);
  849. } catch (e) {
  850. console.log(e);
  851. }
  852. },
  853. savePlatform() {
  854. this.$refs.form.validate(async (valid) => {
  855. if (valid) {
  856. let param = [];
  857. for (let i in this.form) {
  858. param.push({
  859. id: i,
  860. paranValue: this.form[i],
  861. });
  862. }
  863. try {
  864. const res = await sysConfigUpdate(param);
  865. this.$message.success("保存成功");
  866. this.getRules();
  867. } catch (e) {
  868. console.log(e);
  869. }
  870. }
  871. });
  872. },
  873. saveInstitution() {
  874. this.$refs.form.validate(async (valid) => {
  875. if (valid) {
  876. let param = [];
  877. for (let i in this.form) {
  878. param.push({
  879. id: i,
  880. paranValue: this.form[i],
  881. });
  882. }
  883. try {
  884. const res = await setSysTenantConfig(param);
  885. this.$message.success("保存成功");
  886. this.getRules();
  887. } catch (e) {
  888. console.log(e);
  889. }
  890. }
  891. });
  892. },
  893. save() {
  894. if (this.isPlatform) {
  895. this.savePlatform();
  896. } else {
  897. this.saveInstitution();
  898. }
  899. },
  900. addFormMinute(timerStr, time) {
  901. return addFormMinute(timerStr, time);
  902. },
  903. addFormMinuteAddS(timerStr, time) {
  904. return addFormMinuteAddS(timerStr, time);
  905. },
  906. reduceFormMinute(timerStr, time) {
  907. return reduceFormMinute(timerStr, time);
  908. },
  909. reduceFormMinuteAddS(timerStr, time) {
  910. return reduceFormMinuteAddS(timerStr, time);
  911. },
  912. addFormMinuteMS(timerStr, time) {
  913. return addFormMinuteMS(timerStr, time);
  914. },
  915. reduceFormMinuteMS(timerStr, time) {
  916. return reduceFormMinuteMS(timerStr, time);
  917. },
  918. validateMin(rule, value, callback) {
  919. const one = Number(value);
  920. const max = Number(this.form[80]);
  921. if (!max || one < max) {
  922. return callback();
  923. }
  924. return callback(new Error(`最早可提前${this.form[80] - 1}分钟进入教室`));
  925. },
  926. },
  927. };
  928. </script>
  929. <style lang="scss" scoped>
  930. @import "../index.scss";
  931. </style>