banzhengXinxi.vue 18 KB

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