searchBoxNew.vue 29 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048
  1. <template>
  2. <div id="searchBoxNew">
  3. <div class="inputListBox" v-if="topType">
  4. <div class="fon_s">商品类型:</div>
  5. <div>
  6. <el-button
  7. :type="formData.goodsType === item.value ? 'primary' : ''"
  8. :size="size"
  9. v-for="(item, index) in $methodsTools.getGoodsType(false)"
  10. :key="index"
  11. @click="topSearch(item.value)"
  12. >{{ item.label }}</el-button
  13. >
  14. </div>
  15. </div>
  16. <div class="inputListBox" v-if="pendingType">
  17. <div class="fon_s">审核状态:</div>
  18. <div>
  19. <el-button
  20. :type="formData.periodStatus === item.value ? 'primary' : ''"
  21. :size="size"
  22. v-for="(item, index) in pendlists"
  23. :key="index"
  24. @click="topPendingType(item.value)"
  25. >{{ item.label }}</el-button
  26. >
  27. </div>
  28. </div>
  29. <div class="inputListBox" v-if="classStatus">
  30. <div class="fon_s">开班状态:</div>
  31. <div>
  32. <el-button
  33. :type="formData.classStatus === item.value ? 'primary' : ''"
  34. :size="size"
  35. v-for="(item, index) in classType"
  36. :key="index"
  37. @click="topClassType(item.value)"
  38. >{{ item.label }}</el-button
  39. >
  40. </div>
  41. </div>
  42. <div class="inputListBox" v-if="shType">
  43. <div class="fon_s">审核状态:</div>
  44. <div>
  45. <el-button
  46. :type="formData.status === item.value ? 'primary' : ''"
  47. :size="size"
  48. v-for="(item, index) in lists5"
  49. :key="index"
  50. @click="topSearchsh(item.value)"
  51. >{{ item.label }}</el-button
  52. >
  53. </div>
  54. </div>
  55. <div class="inputListBox" v-if="hoursType">
  56. <div class="fon_s">审核状态:</div>
  57. <div>
  58. <el-button
  59. :type="formData.periodStatus === item.value ? 'primary' : ''"
  60. :size="size"
  61. v-for="(item, index) in lists6"
  62. :key="index"
  63. @click="topHoursSearchsh(item.value)"
  64. >{{ item.label }}</el-button
  65. >
  66. </div>
  67. </div>
  68. <!-- <div class="inputListBox" v-if="classType">
  69. <div>
  70. <el-button
  71. :type="formData.goodsType === item.value ? 'primary' : ''"
  72. :size="size"
  73. v-for="(item, index) in classLists"
  74. :key="index"
  75. @click="classSearch(item.value)"
  76. >{{ item.label }}</el-button
  77. >
  78. </div>
  79. </div> -->
  80. <div class="inputListBoxs">
  81. <div class="fon_sIcon" v-if="redIcon">
  82. <el-tooltip
  83. effect="light"
  84. class="item"
  85. content="该页面中的数据查询,针对的是「有效、有课程内容」的视频商品"
  86. placement="bottom-start"
  87. >
  88. <i class="el-icon-warning-outline iconStyS"></i>
  89. </el-tooltip>
  90. </div>
  91. <div
  92. class="fon_s"
  93. style="padding-top: 10px; width: 70px; text-align: end"
  94. v-else
  95. >
  96. 筛选:
  97. </div>
  98. <el-form
  99. @submit.native.prevent="() => {}"
  100. :inline="true"
  101. :model="formData"
  102. class="tsxnz demo-form-inline"
  103. >
  104. <el-form-item
  105. v-for="(item, index) in formListComput(formList)"
  106. :key="index"
  107. :label="item.label"
  108. >
  109. <!-- 教育类型 -->
  110. <el-select
  111. v-if="item.scope === 'educationType'"
  112. v-model="formData[item.prop]"
  113. :placeholder="item.placeholder"
  114. :size="size"
  115. @change="changeEducationType"
  116. >
  117. <el-option
  118. v-for="(items, indexs) in educationType"
  119. v-show="!item.filter || (item.filter && items.educationName === '继续教育')"
  120. :key="indexs"
  121. :label="items.educationName"
  122. :value="items.id"
  123. ></el-option>
  124. </el-select>
  125. <!-- 项目类型 -->
  126. <el-select
  127. v-else-if="item.scope === 'projectLevel'"
  128. v-model="formData[item.prop]"
  129. :placeholder="item.placeholder"
  130. :size="size"
  131. >
  132. <el-option
  133. v-for="(items, indexs) in newProjectLevel"
  134. :key="indexs"
  135. :label="items.projectName"
  136. :value="items.id"
  137. ></el-option>
  138. </el-select>
  139. <!-- 业务层次 -->
  140. <el-select
  141. v-else-if="item.scope === 'businessLevel'"
  142. v-model="formData[item.prop]"
  143. :placeholder="item.placeholder"
  144. :size="size"
  145. @change="changeBusinessLevel($event)"
  146. >
  147. <el-option
  148. v-for="(items, indexs) in newBusinessLevel"
  149. :key="indexs"
  150. v-show="!item.filter || (item.filter && (items.projectName === '造价师' || items.projectName === '建造师') && items.businessName === '二级')"
  151. :label="items.projectName + '-' + items.businessName"
  152. :value="items.id"
  153. ></el-option>
  154. </el-select>
  155. <!-- 机构列表 -->
  156. <el-select
  157. v-else-if="item.scope === 'systemtenantlist'"
  158. v-model="formData[item.prop]"
  159. :placeholder="item.placeholder"
  160. :size="size"
  161. clearable
  162. >
  163. <el-option
  164. v-for="(items, indexs) in systemtenantlist"
  165. :key="indexs"
  166. :label="items.tenantName"
  167. :value="items.tenantId"
  168. ></el-option>
  169. </el-select>
  170. <!-- 院校 -->
  171. <el-select
  172. v-else-if="item.scope === 'schoolList'"
  173. v-model="formData[item.prop]"
  174. :placeholder="item.placeholder"
  175. :size="size"
  176. >
  177. <el-option
  178. v-for="(items, indexs) in newSchoolList"
  179. :key="indexs"
  180. :label="items.schoolName"
  181. :value="items.id"
  182. ></el-option>
  183. </el-select>
  184. <!-- 专业-根据教育类型筛选 -->
  185. <el-select
  186. v-else-if="item.scope === 'Professional'"
  187. v-model="formData[item.prop]"
  188. :placeholder="item.placeholder"
  189. :size="size"
  190. >
  191. <el-option
  192. v-for="(items, indexs) in newProfessional"
  193. :key="indexs"
  194. :label="items.categoryName"
  195. :value="items.id"
  196. ></el-option>
  197. </el-select>
  198. <!-- 专业 -->
  199. <el-select
  200. v-else-if="item.scope === 'ProfessionalList'"
  201. v-model="formData[item.prop]"
  202. :placeholder="item.placeholder"
  203. :size="size"
  204. >
  205. <el-option
  206. v-for="(items, indexs) in Professional"
  207. :key="indexs"
  208. :label="items.categoryName"
  209. :value="items.id"
  210. ></el-option>
  211. </el-select>
  212. <!-- 科目 -->
  213. <el-select
  214. v-else-if="item.scope === 'sujectType'"
  215. v-model="formData[item.prop]"
  216. :placeholder="item.placeholder"
  217. :size="size"
  218. >
  219. <el-option
  220. v-for="(items, indexs) in newSujectType"
  221. :key="indexs"
  222. :label="items.subjectName"
  223. :value="items.id"
  224. ></el-option>
  225. </el-select>
  226. <!-- 题目类型 -->
  227. <el-select
  228. v-else-if="item.scope === 'selectBank'"
  229. v-model="formData[item.prop]"
  230. :placeholder="item.placeholder"
  231. :size="size"
  232. >
  233. <el-option
  234. v-for="(items, indexs) in optionsBank"
  235. :key="indexs"
  236. :label="items.label"
  237. :value="items.value"
  238. ></el-option>
  239. </el-select>
  240. <!-- 试卷类型 -->
  241. <el-select
  242. v-else-if="item.scope === 'paperType'"
  243. v-model="formData[item.prop]"
  244. :placeholder="item.placeholder"
  245. :size="size"
  246. >
  247. <el-option
  248. v-for="(items, indexs) in paperType"
  249. :key="indexs"
  250. :label="items.label"
  251. :value="items.value"
  252. ></el-option>
  253. </el-select>
  254. <!-- 证书类型 -->
  255. <el-select
  256. v-else-if="item.scope === 'certificate'"
  257. v-model="formData[item.prop]"
  258. :placeholder="item.placeholder"
  259. :size="size"
  260. >
  261. <el-option
  262. v-for="(items, indexs) in certificate"
  263. :key="indexs"
  264. :label="items.certificateName"
  265. :value="items.id"
  266. ></el-option>
  267. </el-select>
  268. <!-- 考试标题 -->
  269. <el-select
  270. v-else-if="item.scope === 'examLists'"
  271. v-model="formData[item.prop]"
  272. :placeholder="item.placeholder"
  273. :size="size"
  274. >
  275. <el-option
  276. v-for="(items, indexs) in examLists"
  277. :key="indexs"
  278. :label="items.applyName"
  279. :value="items.applyId"
  280. ></el-option>
  281. </el-select>
  282. <!-- 考试标题:只显示已启用 -->
  283. <el-select
  284. v-else-if="item.scope === 'examList'"
  285. v-model="formData[item.prop]"
  286. :placeholder="item.placeholder"
  287. :size="size"
  288. >
  289. <el-option
  290. v-for="(items, indexs) in examList"
  291. :key="indexs"
  292. :label="items.applyName"
  293. :value="items.applyId"
  294. ></el-option>
  295. </el-select>
  296. <!-- 考试地点 -->
  297. <el-select
  298. v-else-if="item.scope === 'applySiteAddress'"
  299. v-model="formData[item.prop]"
  300. :placeholder="item.placeholder"
  301. :size="size"
  302. >
  303. <el-option
  304. v-for="(items, indexs) in applySiteAddress"
  305. :key="indexs"
  306. :label="items.siteAddress"
  307. :value="item.getType === 1 ? items.siteAddress : items.siteId"
  308. ></el-option>
  309. </el-select>
  310. <!-- 考试地点:手动过滤 -->
  311. <el-select
  312. v-else-if="item.scope === 'applySiteAddressX'"
  313. v-model="formData[item.prop]"
  314. :placeholder="item.placeholder"
  315. :size="size"
  316. >
  317. <el-option
  318. v-for="(items, indexs) in applySiteAddressX"
  319. :key="indexs"
  320. :label="items.siteAddress"
  321. :value="item.getType === 1 ? items.siteAddress : items.siteId"
  322. ></el-option>
  323. </el-select>
  324. <!-- 前培标题:只显示启用 -->
  325. <el-select
  326. v-else-if="item.scope === 'beforeList'"
  327. v-model="formData[item.prop]"
  328. :placeholder="item.placeholder"
  329. :size="size"
  330. >
  331. <el-option
  332. v-for="(items, indexs) in beforeList"
  333. :key="indexs"
  334. :label="items.beforeName"
  335. :value="items.beforeId"
  336. ></el-option>
  337. </el-select>
  338. <!-- 前培标题 -->
  339. <el-select
  340. v-else-if="item.scope === 'beforeLists'"
  341. v-model="formData[item.prop]"
  342. :placeholder="item.placeholder"
  343. :size="size"
  344. >
  345. <el-option
  346. v-for="(items, indexs) in beforeLists"
  347. :key="indexs"
  348. :label="items.beforeName"
  349. :value="items.beforeId"
  350. ></el-option>
  351. </el-select>
  352. <!-- 自定义select -->
  353. <el-select
  354. :clearable="item.noClear === false ? false : true"
  355. v-else-if="item.scope === 'select'"
  356. v-model="formData[item.prop]"
  357. :placeholder="item.placeholder"
  358. :size="size"
  359. >
  360. <el-option
  361. v-for="(items, indexs) in item.options"
  362. :key="indexs"
  363. :label="items.label"
  364. :value="items.value"
  365. :disabled="items.disable"
  366. ></el-option>
  367. </el-select>
  368. <div v-else-if="item.scope === 'numList'">
  369. <el-input-number
  370. :controls="false"
  371. v-model="formData[item.prop1]"
  372. controls-position="right"
  373. :min="0"
  374. :max="100"
  375. :size="size"
  376. @change="
  377. handleChanges(formData[item.prop1], formData[item.prop2])
  378. "
  379. ></el-input-number
  380. >~
  381. <el-input-number
  382. :controls="false"
  383. v-model="formData[item.prop2]"
  384. controls-position="right"
  385. :min="0"
  386. :max="100"
  387. :size="size"
  388. @change="
  389. handleChanges(formData[item.prop1], formData[item.prop2])
  390. "
  391. ></el-input-number>
  392. </div>
  393. <el-input-number
  394. v-else-if="item.scope === 'inputNumber'"
  395. v-model="formData[item.prop]"
  396. controls-position="right"
  397. :min="0"
  398. :max="100"
  399. :size="size"
  400. ></el-input-number>
  401. <el-input
  402. v-else-if="item.scope === 'textarea' && formData[item.prop]"
  403. type="textarea"
  404. :size="size"
  405. readonly
  406. :rows="3"
  407. placeholder="请输入身份证"
  408. v-model="formData[item.prop]"
  409. >
  410. </el-input>
  411. <el-cascader
  412. v-else-if="item.scope === 'cascader'"
  413. v-model="formData[item.prop]"
  414. :options="item.options"
  415. :size="size"
  416. :props="{
  417. label: item.props.label,
  418. value: item.props.value,
  419. checkStrictly: true,
  420. emitPath: false,
  421. }"
  422. ></el-cascader>
  423. <el-cascader
  424. v-else-if="item.scope === 'cascaderDZ'"
  425. v-model="formData[item.prop]"
  426. :options="item.options"
  427. :size="size"
  428. :props="{
  429. label: item.props.label,
  430. value: item.props.value,
  431. checkStrictly: true,
  432. emitPath: false,
  433. }"
  434. clearable
  435. ></el-cascader>
  436. <el-date-picker
  437. v-else-if="item.scope === 'datePicker'"
  438. v-model="formData[item.prop]"
  439. type="datetimerange"
  440. :picker-options="pickerOptions"
  441. range-separator="至"
  442. start-placeholder="开始日期"
  443. end-placeholder="结束日期"
  444. align="right"
  445. :size="size"
  446. value-format="timestamp"
  447. >
  448. </el-date-picker>
  449. <el-date-picker
  450. v-else-if="item.scope === 'datePickerA'"
  451. v-model="formData[item.prop]"
  452. type="datetime"
  453. :size="size"
  454. :placeholder="item.placeholder"
  455. value-format="timestamp"
  456. >
  457. </el-date-picker>
  458. <div v-else-if="item.scope === 'moreDataPicker'">
  459. <el-date-picker
  460. v-model="formData[item.prop1]"
  461. :type="item.Diszing ? 'datetime' : 'date'"
  462. value-format="timestamp"
  463. :size="size"
  464. :placeholder="item.placeholder1"
  465. @change="change1(item.prop1, item.prop2)"
  466. >
  467. </el-date-picker>
  468. <el-date-picker
  469. style="margin-left: 10px"
  470. v-model="formData[item.prop2]"
  471. :type="item.Diszing ? 'datetime' : 'date'"
  472. :size="size"
  473. value-format="timestamp"
  474. :placeholder="item.placeholder2"
  475. @change="change2(item.prop1, item.prop2)"
  476. >
  477. </el-date-picker>
  478. </div>
  479. <el-input
  480. :style="item.prop === 'searchKey' ? 'width:260px;' : ''"
  481. v-else-if="!item.scope"
  482. clearable
  483. v-model="formData[item.prop]"
  484. :placeholder="item.placeholder"
  485. :size="size"
  486. @keyup.enter.native="search"
  487. ></el-input>
  488. </el-form-item>
  489. <el-form-item>
  490. <el-button
  491. v-if="advanced"
  492. :size="size"
  493. type="success"
  494. @click="emitAdvanced"
  495. >{{ advancedName }}</el-button
  496. >
  497. <el-button :size="size" type="primary" @click="search"
  498. >查询</el-button
  499. >
  500. <el-button :size="size" @click="init">重置</el-button>
  501. <slot name="customize"></slot>
  502. </el-form-item>
  503. </el-form>
  504. </div>
  505. </div>
  506. </template>
  507. <script>
  508. import { mapGetters } from "vuex";
  509. import handout from "../newApi/handout";
  510. export default {
  511. props: [
  512. "formList",
  513. "topType",
  514. "pendingType",
  515. "formData",
  516. "shType",
  517. "hoursType",
  518. "redIcon",
  519. "advanced",
  520. "advancedName",
  521. "classStatus",
  522. ], //参考文档 component.md
  523. data() {
  524. return {
  525. tireStatus: "", //当前选择的教育类型tireStatus
  526. lists: [
  527. {
  528. label: "全部",
  529. value: "",
  530. },
  531. {
  532. label: "视频",
  533. value: 1,
  534. },
  535. {
  536. label: "题库",
  537. value: 2,
  538. },
  539. {
  540. label: "补考",
  541. value: 3,
  542. },
  543. {
  544. label: "前培",
  545. value: 4,
  546. },
  547. ],
  548. classType: [
  549. {
  550. label: "全部",
  551. value: "",
  552. },
  553. {
  554. label: "已开班",
  555. value: 1,
  556. },
  557. {
  558. label: "预报名(未开班)",
  559. value: 0,
  560. },
  561. ],
  562. pendlists: [
  563. {
  564. label: "初审",
  565. value: 0,
  566. },
  567. {
  568. label: "复审",
  569. value: "1,2",
  570. },
  571. {
  572. label: "不通过",
  573. value: "-1,-2",
  574. },
  575. {
  576. label: "已通过",
  577. value: 3,
  578. },
  579. ],
  580. lists5: [
  581. {
  582. label: "全部",
  583. value: "",
  584. },
  585. {
  586. label: "待审核",
  587. value: 2,
  588. },
  589. {
  590. label: "不通过",
  591. value: 3,
  592. },
  593. {
  594. label: "通过",
  595. value: 1,
  596. },
  597. ],
  598. lists6: [
  599. {
  600. label: "待审核",
  601. value: 2,
  602. },
  603. {
  604. label: "审核中",
  605. value: 3,
  606. },
  607. ],
  608. // classLists: [
  609. // {
  610. // label: "全部",
  611. // value: "",
  612. // },
  613. // {
  614. // label: "二建继教",
  615. // value: 1,
  616. // },
  617. // {
  618. // label: "七大员继教",
  619. // value: 2,
  620. // },
  621. // {
  622. // label: "七大员新考",
  623. // value: 3,
  624. // },
  625. // ],
  626. paperType: [
  627. {
  628. label: "发布",
  629. value: 1,
  630. },
  631. {
  632. label: "未发布",
  633. value: 0,
  634. },
  635. ],
  636. optionsBank: [
  637. {
  638. label: "单选题",
  639. value: 1,
  640. },
  641. {
  642. label: "多选题",
  643. value: 2,
  644. },
  645. {
  646. label: "判断题",
  647. value: 3,
  648. },
  649. {
  650. label: "案例题",
  651. value: 4,
  652. },
  653. {
  654. label: "简答题",
  655. value: 5,
  656. },
  657. ], //题目类型
  658. size: "small", //输入框尺寸类型
  659. newProjectLevel: [], //项目类型-筛选后的数据
  660. newBusinessLevel: [], //业务层次-筛选后的数据
  661. newSchoolList: [], //院校-筛选后的数据
  662. newProfessional: [], //专业-筛选后的数据
  663. newSujectType: [], //科目-筛选后的数据
  664. applySiteAddressX: [], //考试地点-根据考试计划过滤而来
  665. pickerOptions: {
  666. //日期选择器近期功能
  667. shortcuts: [
  668. {
  669. text: "最近一周",
  670. onClick(picker) {
  671. const end = new Date();
  672. const start = new Date();
  673. start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
  674. picker.$emit("pick", [start, end]);
  675. },
  676. },
  677. {
  678. text: "最近一个月",
  679. onClick(picker) {
  680. const end = new Date();
  681. const start = new Date();
  682. start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
  683. picker.$emit("pick", [start, end]);
  684. },
  685. },
  686. {
  687. text: "最近三个月",
  688. onClick(picker) {
  689. const end = new Date();
  690. const start = new Date();
  691. start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
  692. picker.$emit("pick", [start, end]);
  693. },
  694. },
  695. ],
  696. },
  697. };
  698. },
  699. computed: {
  700. ...mapGetters([
  701. "educationType",
  702. "Professional",
  703. "examList",
  704. "examLists",
  705. "beforeList",
  706. "beforeLists",
  707. "applySiteAddress",
  708. "certificate",
  709. "systemtenantlist"
  710. ]),
  711. /**
  712. * @remarks 过滤选择器列表
  713. */
  714. formListComput: function () {
  715. return function (item) {
  716. var newOption = JSON.parse(JSON.stringify(item));
  717. const arrsy = newOption.filter((items) => {
  718. if (
  719. items.scope === "businessLevel" ||
  720. items.scope === "schoolList" ||
  721. items.scope === "Professional" ||
  722. items.scope === "sujectType"
  723. ) {
  724. if (!this.formData[items.edu]) {
  725. } else {
  726. if (this.educationType) {
  727. const indexType = this.educationType.findIndex((its) => {
  728. return its.id === this.formData[items.edu];
  729. });
  730. if (
  731. items.scope === "businessLevel" &&
  732. this.educationType[indexType].tireStatus.indexOf("2") !== -1
  733. ) {
  734. return items;
  735. }
  736. if (
  737. items.scope === "schoolList" &&
  738. this.educationType[indexType].tireStatus.indexOf("3") !==
  739. -1 &&
  740. this.formData["businessId"]
  741. ) {
  742. return items;
  743. }
  744. if (
  745. items.scope === "Professional" &&
  746. this.educationType[indexType].tireStatus.indexOf("4") !==
  747. -1 &&
  748. this.formData["businessId"]
  749. ) {
  750. return items;
  751. }
  752. if (
  753. items.scope === "sujectType" &&
  754. this.formData["businessId"]
  755. ) {
  756. return items;
  757. }
  758. }
  759. }
  760. } else {
  761. if (items.diff === "gfxs") {
  762. if (
  763. this.formData["studyStatus"] == 2 &&
  764. this.formData["periodStatus"] == 1
  765. ) {
  766. return items;
  767. }
  768. } else if (items.diff === "ksdd") {
  769. if (this.formData["applyId"]) {
  770. return items;
  771. }
  772. } else if (items.scope === "projectLevel") {
  773. if (this.formData["educationId"]) {
  774. return items;
  775. }
  776. } else {
  777. return items;
  778. }
  779. }
  780. });
  781. return arrsy;
  782. };
  783. },
  784. },
  785. watch: {
  786. /**
  787. *
  788. * @param {Number} val
  789. * @remards 考试计划监听-获取对应考试地点
  790. */
  791. "formData.applyId"(val) {
  792. const Astatus = this.formList.some((item) => {
  793. return item.scope === "applySiteAddressX";
  794. });
  795. if (Astatus) {
  796. this.getChangeAdress(val);
  797. if (this.formData.applySiteAddress) {
  798. this.formData.applySiteAddress = "";
  799. }
  800. }
  801. },
  802. },
  803. methods: {
  804. /**
  805. * 手动过滤考试地点
  806. */
  807. getChangeAdress(id) {
  808. this.$api
  809. .inquirepayservesiteInfo({
  810. applyId: id,
  811. addressStatus: 1,
  812. })
  813. .then((res) => {
  814. this.applySiteAddressX = res.rows;
  815. });
  816. },
  817. /**
  818. * @remark 高级搜索
  819. */
  820. emitAdvanced() {
  821. this.$emit("Advanced", this.formData);
  822. },
  823. /**
  824. *
  825. * @param {int} data1
  826. * @param {int} data2
  827. * @remark 日期搜索-时间开始选择器触发
  828. */
  829. change1(data1, data2) {
  830. if (this.formData[data1]) {
  831. if (
  832. this.formData[data2] &&
  833. this.formData[data1] > this.formData[data2]
  834. ) {
  835. this.formData[data1] = "";
  836. this.$message.warning("开始时间不能大于结束时间,请重新选择开始时间");
  837. }
  838. }
  839. },
  840. /**
  841. *
  842. * @param {int} data1
  843. * @param {int} data2
  844. * @remark 日期搜索-时间结束选择器触发
  845. */
  846. change2(data1, data2) {
  847. if (this.formData[data2]) {
  848. if (
  849. this.formData[data1] &&
  850. this.formData[data2] < this.formData[data1]
  851. ) {
  852. this.formData[data2] = "";
  853. this.$message.warning("结束时间不能小于开始时间,请重新选择结束时间");
  854. }
  855. }
  856. },
  857. /**
  858. *
  859. * @param {int} status
  860. * @remark 顶部定制按钮-根据商品类型点击快速搜索
  861. */
  862. topSearch(status) {
  863. this.formData.goodsType = status;
  864. this.$emit("search", 3);
  865. },
  866. /**
  867. *
  868. * @param {int} status
  869. * @remark 顶部定制按钮-根据审核状态类型点击快速搜索
  870. */
  871. topPendingType(status) {
  872. this.formData.periodStatus = status;
  873. this.$emit("search", 4);
  874. },
  875. /**
  876. *
  877. * @param {int} status
  878. * @remark 顶部定制按钮-根据审核状态类型点击快速搜索
  879. */
  880. topClassType(status) {
  881. this.formData.classStatus = status;
  882. this.$emit("search", 4);
  883. },
  884. /**
  885. *
  886. * @param {int} status
  887. * @remark 顶部定制按钮-根据审核状态点击快速搜索
  888. */
  889. topSearchsh(types) {
  890. this.formData.status = types;
  891. this.$emit("search", 3);
  892. },
  893. /**
  894. *
  895. * @param {int} status
  896. * @remark 顶部定制按钮-根据学时审核状态点击快速搜索
  897. */
  898. topHoursSearchsh(types) {
  899. this.formData.periodStatus = types;
  900. this.$emit("search", 2);
  901. },
  902. /**
  903. * @remark 搜索
  904. */
  905. search() {
  906. this.$emit("search", 1);
  907. },
  908. /**
  909. * @remark 重置
  910. */
  911. init() {
  912. this.$emit("init");
  913. },
  914. /**
  915. *
  916. * @param {int} int1
  917. * @param {int} int2
  918. * @remark 数值取值范围选择器
  919. */
  920. handleChanges(int1, int2) {
  921. if (int1 !== undefined && int2 !== undefined) {
  922. if (int1 > int2) {
  923. this.$message.error("请规范输入取值范围");
  924. }
  925. }
  926. },
  927. /**
  928. *
  929. * @param {int} id
  930. * @param {bool} status1 //是否不清空业务层级
  931. * @remark 点击教育类型触发事件
  932. */
  933. changeEducationType(id, status1) {
  934. if (!id) {
  935. return;
  936. }
  937. const indexs = this.educationType.findIndex((item) => {
  938. return item.id === id;
  939. });
  940. this.tireStatus = this.educationType[indexs].tireStatus;
  941. if (!status1) {
  942. if (this.formData.projectId) {
  943. this.formData.projectId = "";
  944. }
  945. if (this.formData.businessId) {
  946. this.formData.businessId = "";
  947. }
  948. }
  949. if (this.formData.subjectId) {
  950. this.formData.subjectId = "";
  951. }
  952. this.$api
  953. .inquireCourseProjectType({ status: 1, educationId: id })
  954. .then((res) => {
  955. this.newProjectLevel = res.rows;
  956. });
  957. this.$api
  958. .inquirebusinessList({ status: 1, educationId: id })
  959. .then((res) => {
  960. this.newBusinessLevel = res.rows;
  961. });
  962. if (!status1) {
  963. this.$api
  964. .inquireCourseSubject({ status: 1, educationId: id })
  965. .then((res) => {
  966. this.newSujectType = res.rows;
  967. });
  968. }
  969. },
  970. /**
  971. *
  972. * @param {int} id
  973. * @remark 点击业务层次触发事件
  974. */
  975. changeBusinessLevel(v) {
  976. if (this.formData.schoolId) {
  977. this.formData.schoolId = "";
  978. }
  979. this.$api.inquireUserSchool({ status: 1, businessId: v }).then((res) => {
  980. this.newSchoolList = res.rows;
  981. });
  982. if (this.formData.majorId) {
  983. this.formData.majorId = "";
  984. }
  985. this.$api.inquireCourseMajor({ status: 1, businessId: v }).then((res) => {
  986. this.newProfessional = res.rows;
  987. });
  988. if (this.formData.subjectId) {
  989. this.formData.subjectId = "";
  990. }
  991. this.$api
  992. .inquireCourseSubject({ status: 1, businessId: v })
  993. .then((res) => {
  994. this.newSujectType = res.rows;
  995. });
  996. },
  997. /**
  998. * 外部调用-商品新增编辑页
  999. */
  1000. changeSuject(v) {
  1001. if (v) {
  1002. this.$api
  1003. .inquireCourseSubject({ status: 1, projectId: v })
  1004. .then((res) => {
  1005. this.newSujectType = res.rows;
  1006. });
  1007. } else {
  1008. this.newSujectType = [];
  1009. }
  1010. },
  1011. },
  1012. };
  1013. </script>
  1014. <style lang="less" scoped>
  1015. .fon_s {
  1016. font-size: 14px;
  1017. color: #6b6b6b;
  1018. }
  1019. .fon_sIcon {
  1020. width: 50px;
  1021. display: flex;
  1022. align-items: center;
  1023. justify-content: center;
  1024. }
  1025. .iconStyS {
  1026. font-size: 24px;
  1027. font-weight: bold;
  1028. color: red;
  1029. }
  1030. .inputListBox {
  1031. display: flex;
  1032. align-items: center;
  1033. margin-bottom: 12px;
  1034. }
  1035. .inputListBoxs {
  1036. display: flex;
  1037. margin-bottom: 12px;
  1038. }
  1039. .tsxnz {
  1040. flex: 1;
  1041. /deep/ .el-form-item {
  1042. margin-bottom: 0px;
  1043. }
  1044. }
  1045. </style>