searchBoxNew.vue 29 KB

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