banzhengXinxi.vue 19 KB

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