edit.vue 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711
  1. <template>
  2. <el-dialog
  3. :title="title"
  4. :visible.sync="dialogVisible"
  5. :close-on-click-modal="false"
  6. :close-on-press-escape="false"
  7. append-to-body
  8. width="60%"
  9. class="dialog exam-dialog"
  10. top="6vh"
  11. @close="closeDialog"
  12. @open="getExamData"
  13. >
  14. <el-form
  15. ref="form"
  16. :label-width="formLabelWidth"
  17. :model="form"
  18. :rules="rules"
  19. class="exam-form"
  20. @submit.native.prevent
  21. >
  22. <el-form-item label="考试名称:" prop="kao_shi_ming_chen">
  23. <el-input
  24. v-model="form.kao_shi_ming_chen"
  25. type="text"
  26. :maxlength="256"
  27. placeholder="请输入考试名称"
  28. :disabled="isDisabled"
  29. />
  30. </el-form-item>
  31. <!-- <el-form-item label="考试类型:" prop="kao_shi_lei_xing_">
  32. <el-select
  33. v-model="form.kao_shi_lei_xing_"
  34. filterable
  35. allow-create
  36. width="100%"
  37. placeholder="请选择考试类型"
  38. >
  39. <el-option
  40. v-for="item in examTypeOptions"
  41. :key="item.value"
  42. :label="item.label"
  43. :value="item.value"
  44. />
  45. </el-select>
  46. </el-form-item> -->
  47. <el-form-item label="考试题库:" prop="ti_ku_id_">
  48. <div class="tiku">
  49. <div>
  50. <ibps-custom-dialog
  51. v-model="form.ti_ku_id_"
  52. size="small"
  53. template-key="tkdhk"
  54. :multiple="false"
  55. :disabled="isDisabled"
  56. type="dialog"
  57. class="custom-dialog"
  58. placeholder="请选择考试题库"
  59. />
  60. </div>
  61. <!-- <el-button
  62. type="primary"
  63. @click="randTiku"
  64. :disabled="randButtonDisabled"
  65. >随机题库</el-button
  66. > -->
  67. </div>
  68. </el-form-item>
  69. <el-form-item>
  70. <template slot="label">
  71. 随机抽题
  72. <el-tooltip
  73. effect="dark"
  74. content="是否开启从题库中随机抽题。"
  75. placement="top"
  76. >
  77. <i class="el-icon-question question-icon">:</i>
  78. </el-tooltip>
  79. </template>
  80. <el-radio-group v-model="form.sui_ji_chou_ti_" :disabled="isDisabled">
  81. <el-radio label="0">关闭</el-radio>
  82. <el-radio label="1" :disabled="!(!!form.ti_ku_id_)">开启</el-radio>
  83. </el-radio-group>
  84. </el-form-item>
  85. <el-form-item v-if="form.sui_ji_chou_ti_ === '1'" class="handrand">
  86. <template slot="label">
  87. 抽题规则
  88. <el-tooltip
  89. effect="dark"
  90. content="设置每类题型的抽题数量,相同题型相同分值可以自由选择抽题数量,相同题型不同分值只能全抽或不抽。"
  91. placement="top"
  92. >
  93. <i class="el-icon-question question-icon">:</i>
  94. </el-tooltip>
  95. </template>
  96. <div v-for="item in handList" :key="item.itemType" class="hand-item">
  97. <template v-if="item.list.length>0">
  98. <span>{{ item.itemType }}:</span>
  99. <el-input-number
  100. v-model="item.questionNumber"
  101. style="width:120px"
  102. :min="0"
  103. :max="item.list.length"
  104. :precision="0"
  105. :disabled="form.sui_ji_chou_ti_ === '0' || isDisabled"
  106. placeholder="请输入抽题数量"
  107. :step="item.step"
  108. step-strictly
  109. />
  110. </template>
  111. </div>
  112. </el-form-item>
  113. <el-form-item prop="xian_kao_shi_jian">
  114. <template slot="label">
  115. 限考时间
  116. <el-tooltip
  117. effect="dark"
  118. content="设置该考试的提交截至时间。"
  119. placement="top"
  120. >
  121. <i class="el-icon-question question-icon">:</i>
  122. </el-tooltip>
  123. </template>
  124. <el-radio-group
  125. v-model="form.isDateLimit"
  126. @change="changeLimit(form.isDateLimit, 'xian_kao_shi_jian', null)"
  127. >
  128. <el-radio label="0">不限</el-radio>
  129. <el-radio label="1">限制</el-radio>
  130. </el-radio-group>
  131. <el-date-picker
  132. v-if="form.isDateLimit === '1'"
  133. v-model="form.xian_kao_shi_jian"
  134. type="datetime"
  135. placeholder="请选择考试限制提交时间"
  136. align="right"
  137. default-time="12:00:00"
  138. class="date-picker"
  139. :picker-options="pickerOptions"
  140. />
  141. </el-form-item>
  142. <el-form-item label="参考人员:" prop="can_kao_ren_yuan_">
  143. <ibps-custom-dialog
  144. v-model="form.can_kao_ren_yuan_"
  145. size="small"
  146. template-key="gjxcxryk"
  147. multiple
  148. :disabled="isDisabled"
  149. type="dialog"
  150. class="custom-dialog"
  151. placeholder="请选择需参加考试的人员"
  152. />
  153. </el-form-item>
  154. <el-form-item prop="isCountLimit" class="inline-item">
  155. <template slot="label">
  156. 限考次数
  157. <el-tooltip
  158. effect="dark"
  159. content="限制是否可重复参加,以及可参加考试的最大次数。"
  160. placement="top"
  161. >
  162. <i class="el-icon-question question-icon">:</i>
  163. </el-tooltip>
  164. </template>
  165. <el-radio-group
  166. v-model="form.isCountLimit"
  167. :disabled="isDisabled"
  168. @change="changeLimit(form.isCountLimit, 'xian_kao_ci_shu_', 1)"
  169. >
  170. <el-radio label="0">不限</el-radio>
  171. <el-radio label="1">限制</el-radio>
  172. </el-radio-group>
  173. <div v-if="form.isCountLimit === '1'" class="time">
  174. <el-input-number
  175. v-model="form.xian_kao_ci_shu_"
  176. :min="1"
  177. :precision="0"
  178. :disabled="isDisabled"
  179. placeholder="请输入单个用户最大限考次数"
  180. />
  181. <div class="unit">次</div>
  182. </div>
  183. </el-form-item>
  184. <el-form-item
  185. v-if="
  186. form.isCountLimit === '0' ||
  187. (form.isCountLimit === '1' && form.xian_kao_ci_shu_ > 1)
  188. "
  189. prop="ji_fen_fang_shi_"
  190. >
  191. <template slot="label">
  192. 计分方式
  193. <el-tooltip
  194. effect="dark"
  195. content="设置对于可重复参加的考试,最终得分的计算方式(仅限考次数大于1时有效)。"
  196. placement="top"
  197. >
  198. <i class="el-icon-question question-icon">:</i>
  199. </el-tooltip>
  200. </template>
  201. <el-radio-group v-model="form.ji_fen_fang_shi_" :disabled="isDisabled">
  202. <el-radio label="平均分">平均分</el-radio>
  203. <el-radio label="最高分">最高分</el-radio>
  204. <el-radio label="最近得分">最近得分</el-radio>
  205. </el-radio-group>
  206. </el-form-item>
  207. <el-form-item prop="isTimeLimit" class="inline-item">
  208. <template slot="label">
  209. 考试时长
  210. <el-tooltip
  211. effect="dark"
  212. content="设置该考试单次作答的最大时长。"
  213. placement="top"
  214. >
  215. <i class="el-icon-question question-icon">:</i>
  216. </el-tooltip>
  217. </template>
  218. <el-radio-group v-model="form.isTimeLimit" :disabled="isDisabled">
  219. <el-radio label="0">不限</el-radio>
  220. <el-radio label="1">限制</el-radio>
  221. </el-radio-group>
  222. <template v-if="form.isTimeLimit === '1'">
  223. <div class="time">
  224. <el-input-number
  225. v-model="form.hours"
  226. :min="0"
  227. :max="72"
  228. :precision="0"
  229. :disabled="isDisabled"
  230. />
  231. <div class="unit">小时</div>
  232. </div>
  233. <div class="time">
  234. <el-input-number
  235. v-model="form.minutes"
  236. :min="0"
  237. :max="59"
  238. :precision="0"
  239. :disabled="isDisabled"
  240. />
  241. <div class="unit">分钟</div>
  242. </div>
  243. </template>
  244. </el-form-item>
  245. <el-form-item prop="da_biao_zhan_bi_">
  246. <template slot="label">
  247. 达标分值占比
  248. <el-tooltip
  249. effect="dark"
  250. content="设置该考试的达标分数线占试题总分的百分比。"
  251. placement="top"
  252. >
  253. <i class="el-icon-question question-icon">:</i>
  254. </el-tooltip>
  255. </template>
  256. <el-input-number
  257. v-model="form.da_biao_zhan_bi_"
  258. :min="50"
  259. :max="100"
  260. :precision="0"
  261. :disabled="isDisabled"
  262. placeholder="请输入达标分值占比"
  263. />
  264. <div class="unit">%</div>
  265. </el-form-item>
  266. <el-form-item prop="yun_xu_bao_ming_">
  267. <template slot="label">
  268. 允许自主报名
  269. <el-tooltip
  270. effect="dark"
  271. content="限制非本考试的参考人员是否可报名参加该考试。"
  272. placement="top"
  273. >
  274. <i class="el-icon-question question-icon">:</i>
  275. </el-tooltip>
  276. </template>
  277. <el-radio-group v-model="form.yun_xu_bao_ming_" :disabled="isDisabled">
  278. <el-radio label="是">是</el-radio>
  279. <el-radio label="否">否</el-radio>
  280. </el-radio-group>
  281. </el-form-item>
  282. <el-form-item
  283. v-if="!isDisabled || form.guan_lian_id_"
  284. prop="guan_lian_id_"
  285. >
  286. <template slot="label">
  287. 关联培训记录
  288. <el-tooltip effect="dark" content="关联培训记录。" placement="top">
  289. <i class="el-icon-question question-icon">:</i>
  290. </el-tooltip>
  291. </template>
  292. <ibps-custom-dialog
  293. v-model="form.guan_lian_id_"
  294. size="small"
  295. template-key="pxjldhk"
  296. :multiple="false"
  297. :disabled="isDisabled"
  298. type="dialog"
  299. class="custom-dialog"
  300. placeholder="请选择培训记录"
  301. />
  302. </el-form-item>
  303. <el-form-item
  304. v-if="!isDisabled || form.kao_shi_miao_shu_"
  305. label="考试描述:"
  306. prop="kao_shi_miao_shu_"
  307. >
  308. <el-input
  309. v-model="form.kao_shi_miao_shu_"
  310. type="textarea"
  311. :rows="4"
  312. :maxlength="512"
  313. placeholder="请输入描述内容"
  314. :disabled="isDisabled"
  315. />
  316. </el-form-item>
  317. </el-form>
  318. <div slot="footer" class="el-dialog--center">
  319. <ibps-toolbar :actions="toolbars" @action-event="handleActionEvent" />
  320. </div>
  321. </el-dialog>
  322. </template>
  323. <script>
  324. import ActionUtils from '@/utils/action'
  325. import { examTypeOptions, scoringType } from '../constants'
  326. export default {
  327. components: {
  328. IbpsCustomDialog: () =>
  329. import('@/business/platform/data/templaterender/custom-dialog')
  330. },
  331. props: {
  332. visible: {
  333. type: Boolean,
  334. default: false
  335. },
  336. id: {
  337. type: String,
  338. default: ''
  339. },
  340. isDisabled: {
  341. type: Boolean,
  342. default: false
  343. }
  344. },
  345. data () {
  346. const {
  347. userList = [],
  348. deptList = [],
  349. userId,
  350. level
  351. } = this.$store.getters || {}
  352. return {
  353. handList: [
  354. { itemType: '单选题', questionNumber: 0, list: [], step: 1 },
  355. { itemType: '多选题', questionNumber: 0, list: [], step: 1 },
  356. { itemType: '判断题', questionNumber: 0, list: [], step: 1 },
  357. { itemType: '填空题', questionNumber: 0, list: [], step: 1 },
  358. { itemType: '简答题', questionNumber: 0, list: [], step: 1 }
  359. ],
  360. userList,
  361. examTypeOptions,
  362. deptList: deptList.filter((i) => i.depth === 4),
  363. title: this.id ? '编辑考试' : '新建考试',
  364. formLabelWidth: '150px',
  365. dialogVisible: this.visible,
  366. dialogLoading: false,
  367. randButtonDisabled: false,
  368. isFirst: true,
  369. form: {
  370. di_dian_: level.second || level.first,
  371. chuang_jian_shi_j: '',
  372. kao_shi_ming_chen: '',
  373. kao_shi_lei_xing_: '常规',
  374. ti_ku_id_: '',
  375. guan_lian_id_: '',
  376. xian_kao_shi_jian: '不限',
  377. xian_kao_ci_shu_: '不限',
  378. can_kao_ren_yuan_: '',
  379. kao_shi_shi_chang: '',
  380. zhuang_tai_: '未发布',
  381. da_biao_zhan_bi_: 60,
  382. ji_fen_fang_shi_: scoringType.length ? scoringType[0].value : '',
  383. kao_shi_miao_shu_: '',
  384. yun_xu_bao_ming_: '否',
  385. isCountLimit: '0',
  386. isTimeLimit: '0',
  387. isDateLimit: '0',
  388. sui_ji_chou_ti_: '0',
  389. chou_ti_zong_fen_: 0,
  390. ti_mu_zong_shu_: 0,
  391. sui_ji_ti_shu_: [],
  392. hours: 2,
  393. minutes: 30
  394. },
  395. pickerOptions: {
  396. disabledDate (time) {
  397. // 禁用当前日期之前的日期
  398. return time.getTime() < Date.now() - 8.64e7
  399. }
  400. },
  401. toolbars: [
  402. {
  403. key: 'submit',
  404. icon: 'ibps-icon-save',
  405. label: '保存',
  406. hidden: () => {
  407. return this.readonly
  408. }
  409. },
  410. { key: 'cancel', label: '关闭' }
  411. ],
  412. rules: {
  413. kao_shi_ming_chen: [
  414. { required: true, message: this.$t('validate.required') }
  415. ],
  416. // kao_shi_lei_xing_: [{ required: true, message: this.$t('validate.required') }],
  417. ti_ku_id_: [{ required: true, message: this.$t('validate.required') }],
  418. xian_kao_shi_jian: [
  419. { required: true, message: this.$t('validate.required') }
  420. ],
  421. xian_kao_ci_shu_: [
  422. { required: true, message: this.$t('validate.required') }
  423. ],
  424. can_kao_ren_yuan_: [
  425. { required: true, message: this.$t('validate.required') }
  426. ],
  427. kao_shi_shi_chang: [
  428. { required: true, message: this.$t('validate.required') }
  429. ],
  430. da_biao_zhan_bi_: [
  431. { required: true, message: this.$t('validate.required') }
  432. ]
  433. }
  434. }
  435. },
  436. watch: {
  437. visible: {
  438. handler: function (val, oldVal) {
  439. this.dialogVisible = this.visible
  440. }
  441. // immediate: true
  442. },
  443. 'form.ti_ku_id_': {
  444. handler (val) {
  445. if (val) {
  446. const sql = `select * from t_questions where parent_id_ = '${val}' and zhuang_tai_ = '启用' order by field(ti_xing_, '单选题', '多选题', '判断题', '填空题', '简答题')`
  447. this.$common.request('sql', sql).then((res) => {
  448. const { data = [] } = res.variables || {}
  449. this.getHandList(data)
  450. })
  451. }
  452. }
  453. }
  454. },
  455. mounted () {
  456. this.getExamData()
  457. },
  458. methods: {
  459. // 题型分类
  460. getHandList (data) {
  461. // 确定每种类型的题目
  462. this.handList.forEach(hand => {
  463. hand.list = data.filter(item => item.ti_xing_ === hand.itemType)
  464. })
  465. if (this.$utils.isEmpty(this.id)) {
  466. // 设置每种类型题目的默认题数
  467. this.handList.forEach(hand => {
  468. hand.questionNumber = hand.list.length
  469. })
  470. } else {
  471. if (!this.isFirst) {
  472. this.handList.forEach(hand => {
  473. hand.questionNumber = hand.list.length
  474. })
  475. } else {
  476. this.isFirst = false
  477. }
  478. }
  479. // 设置每种类型题目的步数
  480. this.handList.forEach(hand => {
  481. if (hand.list.length > 0) {
  482. const isSame = hand.list.every(item => item.fen_zhi_ === hand.list[0].fen_zhi_)
  483. hand.step = isSame ? 1 : hand.list.length
  484. }
  485. })
  486. },
  487. changeLimit (e, type, defaultValue) {
  488. this.form[type] = e === '1' ? defaultValue : '不限'
  489. },
  490. handleActionEvent ({ key }) {
  491. switch (key) {
  492. case 'submit':
  493. this.handleSubmit()
  494. break
  495. case 'cancel':
  496. this.closeDialog()
  497. break
  498. default:
  499. break
  500. }
  501. },
  502. // 获取考试数据
  503. getExamData () {
  504. if (this.$utils.isEmpty(this.id)) {
  505. return
  506. }
  507. if (this.isDisabled) {
  508. this.randButtonDisabled = true
  509. this.$message.info('非未发布状态的考试仅可修改限考时间!')
  510. }
  511. const sql = `select id_, create_by_, ti_ku_id_, guan_lian_id_, kao_shi_ming_chen, kao_shi_lei_xing_, chuang_jian_shi_j, fa_bu_shi_jian_, fa_bu_ren_, xian_kao_shi_jian, xian_kao_ci_shu_, kao_shi_shi_chang, can_kao_ren_yuan_, zhuang_tai_, da_biao_zhan_bi_, ji_fen_fang_shi_, kao_shi_miao_shu_, yun_xu_bao_ming_, sui_ji_chou_ti_, sui_ji_ti_shu_,chou_ti_zong_fen_,ti_mu_zong_shu_ from t_exams where id_ = '${this.id}'`
  512. this.$common.request('sql', sql).then((res) => {
  513. const { data = [] } = res.variables || {}
  514. if (!data.length) {
  515. this.$message.error('数据不存在')
  516. return
  517. }
  518. data[0].isCountLimit = data[0].xian_kao_ci_shu_ === '不限' ? '0' : '1'
  519. data[0].isDateLimit = data[0].xian_kao_shi_jian === '不限' ? '0' : '1'
  520. if (data[0].kao_shi_shi_chang === '不限') {
  521. data[0].isTimeLimit = '0'
  522. data[0].hours = null
  523. data[0].minutes = null
  524. } else {
  525. data[0].isTimeLimit = '1'
  526. data[0].hours = Math.floor(
  527. data[0].kao_shi_shi_chang / (1000 * 60 * 60)
  528. )
  529. data[0].minutes =
  530. (data[0].kao_shi_shi_chang % (1000 * 60 * 60)) / (60 * 1000)
  531. }
  532. this.form = data[0]
  533. if (this.form.sui_ji_chou_ti_ === '1') {
  534. this.form.sui_ji_ti_shu_ = this.form.sui_ji_ti_shu_.split(',')
  535. this.form.sui_ji_ti_shu_.forEach((item, index) => {
  536. this.handList[index].questionNumber = item
  537. })
  538. }
  539. })
  540. },
  541. // 随机题库 弃用
  542. randTiku () {
  543. this.randButtonDisabled = true
  544. const sql = `select id_ from t_question_bank where ti_ku_zhuang_tai_='可用'`
  545. this.$common.request('sql', sql).then((res) => {
  546. const { data = [] } = res.variables || {}
  547. const randNumber = Math.floor(Math.random() * data.length)
  548. this.form.ti_ku_id_ = data[randNumber].id_
  549. this.randButtonDisabled = false
  550. })
  551. },
  552. handleSubmit () {
  553. this.$refs.form.validate((valid) => {
  554. if (valid) {
  555. this.form.sui_ji_ti_shu_ = []
  556. this.form.chou_ti_zong_fen_ = 0
  557. this.form.ti_mu_zong_shu_ = 0
  558. if (this.form.sui_ji_chou_ti_ === '1') {
  559. // 计算总分 总数量
  560. this.handList.forEach(item => {
  561. if (item.list.length > 0) {
  562. this.form.sui_ji_ti_shu_.push(item.questionNumber)
  563. this.form.ti_mu_zong_shu_ += item.questionNumber
  564. this.form.chou_ti_zong_fen_ += item.list.slice(0, item.questionNumber).reduce((pre, cur) => {
  565. return pre + +cur.fen_zhi_
  566. }, 0)
  567. } else {
  568. this.form.sui_ji_ti_shu_.push(0)
  569. }
  570. })
  571. if (this.form.ti_mu_zong_shu_ === 0) {
  572. return this.$message.warning('请填写需要抽取的题目数量!')
  573. }
  574. }
  575. this.form.chou_ti_zong_fen_ += ''
  576. this.form.ti_mu_zong_shu_ += ''
  577. this.form.sui_ji_ti_shu_ = this.form.sui_ji_ti_shu_.join(',')
  578. const { isTimeLimit, xian_kao_shi_jian = '' } = this.form || {}
  579. // 转换考试时长
  580. if (isTimeLimit === '0') {
  581. this.form.kao_shi_shi_chang = '不限'
  582. } else {
  583. this.form.kao_shi_shi_chang =
  584. (this.form.hours * 60 + this.form.minutes) * 60 * 1000
  585. }
  586. delete this.form.isDateLimit
  587. delete this.form.isCountLimit
  588. delete this.form.isTimeLimit
  589. delete this.form.hours
  590. delete this.form.minutes
  591. this.form.chuang_jian_shi_j = this.$common.getDateNow(19)
  592. this.form.xian_kao_shi_jian =
  593. xian_kao_shi_jian !== '不限'
  594. ? this.$common.getFormatDate('string', 16, xian_kao_shi_jian)
  595. : xian_kao_shi_jian
  596. // 表单验证通过,提交表单
  597. this.submitForm()
  598. } else {
  599. ActionUtils.saveErrorMessage()
  600. }
  601. })
  602. },
  603. submitForm () {
  604. const addParams = {
  605. tableName: 't_exams',
  606. paramWhere: [this.form]
  607. }
  608. const updateParams = {
  609. tableName: 't_exams',
  610. updList: [
  611. {
  612. where: {
  613. id_: this.id
  614. },
  615. param: this.form
  616. }
  617. ]
  618. }
  619. const type = this.id ? 'update' : 'add'
  620. const params = type === 'add' ? addParams : updateParams
  621. this.$common.request(type, params).then(() => {
  622. this.$message.success(this.id ? '修改考试成功' : '新建考试成功')
  623. this.closeDialog()
  624. })
  625. },
  626. // 关闭当前窗口
  627. closeDialog () {
  628. this.$emit('close', false)
  629. }
  630. }
  631. }
  632. </script>
  633. <style lang="scss" scoped>
  634. .exam-dialog {
  635. ::v-deep {
  636. .el-dialog {
  637. max-width: 1080px;
  638. }
  639. .el-dialog__body {
  640. height: calc(88vh - 150px);
  641. }
  642. .el-form-item {
  643. margin-bottom: 14px !important;
  644. &:last-child {
  645. margin-bottom: 0 !important;
  646. }
  647. .el-form-item__label {
  648. font-size: 14px !important;
  649. }
  650. }
  651. .el-form-item--small .el-form-item__error {
  652. padding-top: 6px;
  653. }
  654. }
  655. .exam-form {
  656. padding: 20px;
  657. .question-icon {
  658. font-size: 13px;
  659. color: #606060;
  660. }
  661. .date-picker {
  662. margin-left: 20px;
  663. }
  664. .custom-dialog {
  665. ::v-deep {
  666. .el-input--prefix .el-input__inner {
  667. padding-left: 15px;
  668. }
  669. }
  670. }
  671. }
  672. .inline-item {
  673. ::v-deep {
  674. .el-radio-group {
  675. margin-right: 20px;
  676. }
  677. }
  678. .time {
  679. display: inline-block;
  680. }
  681. }
  682. .unit {
  683. display: inline-block;
  684. margin: 0 20px 0 5px;
  685. }
  686. .handrand{
  687. ::v-deep .el-form-item__content{
  688. display: flex;
  689. flex-wrap: wrap;
  690. }
  691. .hand-item{
  692. display: flex;
  693. margin-right: 20px;
  694. margin-bottom: 10px;
  695. }
  696. }
  697. }
  698. .tiku {
  699. .el-button {
  700. margin-left: 20px;
  701. }
  702. }
  703. </style>