banzhengXinxi.vue 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499
  1. <template>
  2. <view class="jz-content-box">
  3. <view :class="isZijiazheng=='true'?'mask-view':''">
  4. <view class="content-body-box">
  5. <view v-if="status =='add'" class="bzsm-tip-box form-top-margin">
  6. <view class="title-btn-box">
  7. <view class="phone-line-title">说明</view>
  8. <view @click="resetFun" class="reset-btn">重置</view>
  9. </view>
  10. <view class="tip-content-box">1.如果不需要办理证书,可直接点击保存按钮。</view>
  11. <view class="tip-content-box">2.点击重置按钮,只重置办证信息,其他信息不改变。</view>
  12. </view>
  13. <!-- 报证机构(picker 实现下拉选择) -->
  14. <view class="form-label-select form-top-margin">
  15. <view class="phone-form-label"><text class="form-label-require">*</text>报证机构</view>
  16. <picker :disabled="(status =='edit'&&localStatus=='')" mode="selector" :range="jigouNames"
  17. @change="jigouChange" class="select-picker-box">
  18. <view class="form-radio-select"
  19. :class="{'form-radio-disabled': (status =='edit'&&localStatus=='')}">
  20. <view>{{ formData.baozhengJigouName || '请选择报证机构' }}</view>
  21. <icon></icon>
  22. </view>
  23. </picker>
  24. </view>
  25. <view v-if="formData.banzhengInfoFlag" class="form-label-select">
  26. <view class="phone-form-label"><text class="form-label-require">*</text>参训时间</view>
  27. <uni-datetime-picker class="form-radio-picker" v-model="formData.canxunshijian" type="date"
  28. @change="canxunShijianChange">
  29. <view class="form-radio-select">
  30. <view>{{formData.canxunshijian}}</view>
  31. <icon></icon>
  32. </view>
  33. </uni-datetime-picker>
  34. </view>
  35. <view v-if="formData.banzhengInfoFlag" class="form-label-input">
  36. <view class="phone-form-label"><text class="form-label-require">*</text>实操成绩</view>
  37. <input v-model="formData.shicaochengji" placeholder="请填写实操成绩" />
  38. </view>
  39. <view v-if="formData.banzhengInfoFlag" class="form-label-input">
  40. <view class="phone-form-label"><text class="form-label-require">*</text>总课时</view>
  41. <input v-model="formData.zongkeshi" placeholder="请填写总课时" />
  42. </view>
  43. <view v-if="formData.needFlag" class="form-label-select">
  44. <view class="phone-form-label"><text class="form-label-require"></text>需要考试</view>
  45. <radio-group @change="kaoshiChange">
  46. <label class="radio-label">
  47. <radio :value="'true'" :checked="formData.needKaoshi == 'true'" color="#3fd2a1"
  48. style="transform:scale(0.65)" />
  49. <text>是</text>
  50. </label>
  51. <label class="radio-label">
  52. <radio :value="'false'" :checked="formData.needKaoshi == 'false'" color="#3fd2a1"
  53. style="transform:scale(0.65)" />
  54. <text>否</text>
  55. </label>
  56. </radio-group>
  57. </view>
  58. <view class="form-label-input">
  59. <view class="phone-form-label"><text class="form-label-require">*</text>职业名称</view>
  60. <view @click="selectZy" class="input-text-row text-ellipsis-row">
  61. <!-- wgy看这 v-for去掉换成一个数组或字符串 -->
  62. <view class="text-ellipsis" v-if="zyNameAndLevel">{{zyNameAndLevel}}</view>
  63. <view class="text-ellipsis" v-else>请选择职业名称</view>
  64. <icon></icon>
  65. </view>
  66. </view>
  67. <view class="form-label-select">
  68. <view class="phone-form-label"><text class="form-label-require">*</text>职业等级</view>
  69. <picker mode="selector" :disabled="isZyFlag" :style="isZyFlag?'color:#999':''" :range="zhiyeLevels"
  70. @change="levelChange" class="select-picker-box">
  71. <view class="form-radio-select">
  72. <view>{{ formData.zhiyeLevelName || '请选择等级' }}</view>
  73. <icon></icon>
  74. </view>
  75. </picker>
  76. </view>
  77. <view v-if="isZijiazheng !='true'" class="page-btn-box">
  78. <button type="default" v-if="isZijiazheng !='true'" @click="goBack"
  79. class="phone-white-btn">返回</button>
  80. <button type="default" v-if="isZijiazheng !='true'" @click="addSaveFormPiliang"
  81. class="phone-green-btn">添加</button>
  82. </view>
  83. </view>
  84. <selectZyLevel ref="selectRef" @confirm-btn="selectZyLevelConfirm" :mode=modeControl
  85. :id="formData.baozhengJigouId"></selectZyLevel>
  86. </view>
  87. </view>
  88. </template>
  89. <script>
  90. import {
  91. getBaozhengJigou,
  92. getJiazhengLevel,
  93. getJiazhengZhiye,
  94. getJiazhengBanzhengCheckKc
  95. } from "@/api/jiazheng.js"
  96. import dayjs from "dayjs";
  97. import selectZyLevel from "@/components/selectZyLevel/index.vue"
  98. export default {
  99. data() {
  100. return {
  101. formData: {
  102. baozhengJigouId: '',
  103. baozhengJigouName: '',
  104. baozhengJigouType: '',
  105. banzhengInfoFlag: false,
  106. zhiyeName: '',
  107. zhiyeId: '',
  108. zhiyeLevelName: '',
  109. zhiyeLevelId: '',
  110. canxunshijian: '',
  111. shicaochengji: '',
  112. zongkeshi: '',
  113. needKecheng: 'false', // 默认选中"是"
  114. needKaoshi: 'false', // 默认选中"是"
  115. kcDisabled: false,
  116. needFlag: false,
  117. id: '',
  118. createTime: ''
  119. },
  120. baozhengJigouOpt: [
  121. ],
  122. zhiyelevelsOpt: [],
  123. zhiyeNameOpt: [
  124. ],
  125. localStatus: '',
  126. currentIndex: '',
  127. isJgFlag: true,
  128. isZyFlag: true,
  129. piliang: '',
  130. piliangArray: [],
  131. zyNameAndLevel: ''
  132. };
  133. },
  134. props: {
  135. status: {
  136. type: String,
  137. },
  138. isZijiazheng: {
  139. type: String,
  140. }
  141. },
  142. components: {
  143. selectZyLevel
  144. },
  145. computed: {
  146. jigouNames() {
  147. return this.baozhengJigouOpt.map(item => item.name);
  148. },
  149. zhiyeNames() {
  150. return this.zhiyeNameOpt.map(item => item.name);
  151. },
  152. zhiyeLevels() {
  153. return this.zhiyelevelsOpt.map(item => item.name);
  154. },
  155. modeControl() {
  156. if (this.localStatus == 'addEdit') {
  157. return 'danxuan'
  158. } else if (this.status == 'add') {
  159. return 'duoxuan'
  160. } else if (this.localStatus == 'editAdd') {
  161. return 'duoxuan'
  162. } else {
  163. return 'danxuan'
  164. }
  165. }
  166. },
  167. created() {
  168. this.getJigou()
  169. this.localStatus = this.status
  170. },
  171. methods: {
  172. selectZy() {
  173. if (this.formData.baozhengJigouId == '') {
  174. uni.showToast({
  175. title: '请选择报证机构',
  176. icon: 'none'
  177. });
  178. return false
  179. }
  180. console.log('this.piliangArray', this.piliangArray);
  181. let newArray = this.piliangArray.map(item => {
  182. return {
  183. zyId: item.id,
  184. zyName: item.name,
  185. };
  186. });
  187. this.$refs.selectRef.handleShow(newArray)
  188. },
  189. selectZyLevelConfirm(data) {
  190. console.log('data', data);
  191. this.piliangArray = [...data]
  192. this.zyNameAndLevel = data.map(item => `${item.name}`).join(',');
  193. console.log('this.piliangArray', this.piliangArray);
  194. this.zhiyeChange(this.piliangArray)
  195. //234
  196. },
  197. // 提交表单
  198. addSaveFormPiliang() {
  199. let req = {
  200. zyLevelName: this.formData.zhiyeLevelName,
  201. zyLevel: this.formData.zhiyeLevelId,
  202. canxunshijian: this.formData.canxunshijian,
  203. jgId: this.formData.baozhengJigouId,
  204. needKaoshi: this.formData.needKaoshi,
  205. needKecheng: this.formData.needKecheng,
  206. shicaochengji: this.formData.shicaochengji,
  207. zongkeshi: this.formData.zongkeshi,
  208. jgType: this.formData.baozhengJigouType,
  209. jgName: this.formData.baozhengJigouName,
  210. id: this.formData.id,
  211. createTime: dayjs().format("YYYY-MM-DD HH:mm:ss")
  212. }
  213. let mergedArray = this.piliangArray.map(item => {
  214. return {
  215. ...req, // 展开req的所有属性
  216. zyId: item.id,
  217. zyName: item.name,
  218. };
  219. });
  220. console.log('this.mergedArray', mergedArray);
  221. if (req.jgId == '') {
  222. uni.showToast({
  223. title: '请选择报证机构',
  224. icon: 'none'
  225. });
  226. return false
  227. }
  228. if (this.piliangArray.length == 0) {
  229. uni.showToast({
  230. title: '请选择职业名称',
  231. icon: 'none'
  232. });
  233. return false
  234. }
  235. if (!req.zyLevel) {
  236. uni.showToast({
  237. title: '请选择职业等级',
  238. icon: 'none'
  239. });
  240. return false
  241. }
  242. // 验证机构类型为1时的必填字段
  243. if (this.formData.baozhengJigouType == 1 &&
  244. (this.formData.shicaochengji == '' ||
  245. this.formData.zongkeshi == '' ||
  246. this.formData.canxunshijian == '')) {
  247. uni.showToast({
  248. title: '请填写参训时间,实操成绩,总课时',
  249. icon: 'none'
  250. });
  251. return false
  252. }
  253. console.log('this.status', this.status);
  254. console.log('this.localStatus', this.localStatus);
  255. console.log('this.mergedArray', mergedArray);
  256. if (this.localStatus == 'addEdit') {
  257. this.$emit('addEdit', mergedArray[0], 'addEdit', this.currentIndex);
  258. } else if (this.status == 'add') {
  259. this.$emit('addSave', mergedArray);
  260. } else if (this.localStatus == 'editAdd') {
  261. this.$emit('editSave', mergedArray, 'editAdd');
  262. } else {
  263. this.$emit('editSave', mergedArray[0], 'edit', this.currentIndex);
  264. }
  265. },
  266. goBack() {
  267. this.isJgFlag = true
  268. this.isZyFlag = true
  269. this.piliangArray = []
  270. this.$emit('goBack');
  271. },
  272. editinfo(data, index) {
  273. this.piliangArray = []
  274. this.$nextTick(() => {
  275. if (!data) {
  276. return false
  277. }
  278. console.log('index', index);
  279. console.log('data', data);
  280. this.currentIndex = index
  281. this.zyNameAndLevel = data.zyName
  282. this.formData.baozhengJigouName = data.jgName;
  283. this.formData.baozhengJigouId = data.jgId;
  284. this.formData.id = data.id;
  285. this.formData.baozhengJigouType = data.jgType;
  286. this.formData.banzhengInfoFlag = data.jgType == 1;
  287. this.formData.zhiyeName = data.zyName;
  288. this.formData.zhiyeId = data.zyId;
  289. this.formData.zhiyeLevelName = data.zyLevelName;
  290. this.formData.zhiyeLevelId = data.zyLevel;
  291. if (this.formData.baozhengJigouId) {
  292. this.isJgFlag = false
  293. }
  294. if (this.formData.baozhengJigouId && this.formData.zhiyeId) {
  295. this.isZyFlag = false
  296. let req = {
  297. jgId: this.formData.baozhengJigouId,
  298. zyId: this.formData.zhiyeId,
  299. }
  300. getJiazhengLevel(req).then(res => {
  301. console.log('res', res);
  302. this.zhiyelevelsOpt = res.data
  303. })
  304. }
  305. this.formData.canxunshijian = data.canxunshijian;
  306. this.formData.zongkeshi = data.zongkeshi;
  307. this.formData.shicaochengji = data.shicaochengji;
  308. this.formData.needKecheng = data.needKecheng ? data.needKecheng.toString() : 'false';
  309. this.formData.needKaoshi = data.needKaoshi ? data.needKaoshi.toString() : 'false';
  310. if (this.formData.banzhengInfoFlag) {
  311. this.formData.needFlag = false
  312. } else {
  313. this.formData.needFlag = true
  314. }
  315. this.piliangArray = [{
  316. id: data.zyId,
  317. name: data.zyName,
  318. zyLevel: data.zyLevel,
  319. zyLevelName: data.zyLevelName
  320. }]
  321. })
  322. },
  323. getJigou() {
  324. getBaozhengJigou({}).then(res => {
  325. console.log('res', res);
  326. this.baozhengJigouOpt = res.data
  327. })
  328. },
  329. getZhiye() {
  330. this.zhiyeNameOpt = []
  331. this.formData.zhiyeName = ''
  332. this.formData.zhiyeId = ''
  333. getJiazhengZhiye({
  334. id: this.formData.baozhengJigouId
  335. }).then(res => {
  336. console.log('res', res);
  337. this.zhiyeNameOpt = res.data
  338. })
  339. },
  340. getZhiyeLevel() {
  341. this.zhiyelevelsOpt = []
  342. this.formData.zhiyeLevelName = ''
  343. this.formData.zhiyeLevelId = ''
  344. let req = {
  345. jgId: this.formData.baozhengJigouId,
  346. zyId: this.formData.zhiyeId,
  347. }
  348. getJiazhengLevel(req).then(res => {
  349. console.log('res', res);
  350. this.zhiyelevelsOpt = res.data
  351. })
  352. },
  353. resetData() {
  354. this.formData.zhiyeName = ''
  355. this.formData.zhiyeId = ''
  356. this.formData.zhiyeLevelName = ''
  357. this.formData.zhiyeLevelId = ''
  358. this.formData.canxunshijian = ''
  359. this.formData.shicaochengji = ''
  360. this.formData.zongkeshi = ''
  361. this.isJgFlag = true
  362. this.isZyFlag = true
  363. this.zyNameAndLevel = ''
  364. this.piliangArray = []
  365. },
  366. resetFun() {
  367. this.formData.zhiyeName = ''
  368. this.formData.zhiyeId = ''
  369. this.formData.zhiyeLevelName = ''
  370. this.formData.zhiyeLevelId = ''
  371. this.formData.canxunshijian = ''
  372. this.formData.shicaochengji = ''
  373. this.formData.zongkeshi = ''
  374. this.formData.baozhengJigouName = ''
  375. this.formData.baozhengJigouId = ''
  376. this.formData.baozhengJigouName = ''
  377. this.formData.needKecheng = 'false'
  378. this.formData.needKaoshi = 'false'
  379. this.formData.needFlag = false
  380. this.formData.kcDisabled = false
  381. this.formData.banzhengInfoFlag = false
  382. this.isJgFlag = true
  383. this.isZyFlag = true
  384. this.piliangArray = []
  385. this.zyNameAndLevel = ''
  386. },
  387. // 报证机构选择
  388. jigouChange(e) {
  389. this.formData.baozhengJigouName = this.baozhengJigouOpt[e.detail.value].name;
  390. this.formData.baozhengJigouId = this.baozhengJigouOpt[e.detail.value].jgId;
  391. this.formData.baozhengJigouType = this.baozhengJigouOpt[e.detail.value].jgType;
  392. this.formData.banzhengInfoFlag = this.baozhengJigouOpt[e.detail.value].jgType == 1;
  393. // 每一次都重置
  394. this.resetData()
  395. console.log('this.formData.banzhengInfoFlag', this.formData.banzhengInfoFlag);
  396. if (this.formData.banzhengInfoFlag) {
  397. this.formData.needFlag = false
  398. this.formData.needKaoshi = 'false'
  399. this.formData.needKecheng = 'false'
  400. } else {
  401. this.formData.needFlag = true
  402. this.formData.needKaoshi = 'true'
  403. this.formData.needKecheng = 'false'
  404. }
  405. if (this.formData.baozhengJigouId) {
  406. this.isJgFlag = false //开启
  407. //this.getZhiye()
  408. }
  409. },
  410. // 职业等级选择
  411. levelChange(e) {
  412. this.formData.zhiyeLevelId = this.zhiyelevelsOpt[e.detail.value].id;
  413. this.formData.zhiyeLevelName = this.zhiyelevelsOpt[e.detail.value].name;
  414. },
  415. checkKc() {
  416. let req = {
  417. zyId: this.formData.zhiyeId,
  418. zyLevel: this.formData.zhiyeLevelId
  419. }
  420. getJiazhengBanzhengCheckKc(req).then(res => {
  421. console.log('res', res);
  422. if (res.data.pass.toString() == 'true') {
  423. this.formData.kcDisabled = false
  424. this.formData.needKecheng = 'true'
  425. } else {
  426. uni.showToast({
  427. title: res.data.msg,
  428. icon: 'none'
  429. });
  430. this.formData.needKecheng = 'false'
  431. this.formData.kcDisabled = true
  432. }
  433. // this.zhiyelevelsOpt = res.data
  434. })
  435. },
  436. // 职业名称选择
  437. zhiyeChange(data) {
  438. //123
  439. // this.formData.zhiyeName = this.zhiyeNameOpt[e.detail.value].name;
  440. this.formData.zhiyeId = data[0].id;
  441. if (this.formData.baozhengJigouId && this.formData.zhiyeId) {
  442. this.isZyFlag = false
  443. this.getZhiyeLevel()
  444. }
  445. },
  446. canxunShijianChange(e) {
  447. console.log('e', e);
  448. this.formData.canxunshijian = e
  449. },
  450. // 需要课程选择
  451. kechengChange(e) {
  452. this.formData.needKecheng = e.detail.value.toString();
  453. console.log('this.formData.needKecheng', this.formData.needKecheng);
  454. if (this.formData.needKecheng == 'true') {
  455. if (this.formData.zhiyeId && this.formData.zhiyeLevelId) {
  456. this.checkKc()
  457. } else {
  458. uni.showToast({
  459. title: '请选择职业以及职业等级',
  460. icon: 'none'
  461. });
  462. setTimeout(() => {
  463. this.formData.needKecheng = 'false'
  464. }, 1000)
  465. return false
  466. }
  467. }
  468. },
  469. // 需要考试选择
  470. kaoshiChange(e) {
  471. this.formData.needKaoshi = e.detail.value.toString();
  472. },
  473. currentMove(data) {
  474. console.log('data', data);
  475. // currentMove 编辑状态下的新增
  476. this.localStatus = data
  477. console.log('localStatus', this.localStatus);
  478. }
  479. }
  480. };
  481. </script>