banzhengXinxi.vue 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489
  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 class="form-label-input">
  81. <view class="phone-form-label"><text class="form-label-require"></text>职业名称等级</view>
  82. <view @click="selectZy" class="input-text-row text-ellipsis-row">
  83. <!-- wgy看这 v-for去掉换成一个数组或字符串 -->
  84. <view class="text-ellipsis" v-for="(item,index) in piliangArray" :key="index">{{item.name}} {{item.zyLevelName}}</view>
  85. <icon></icon>
  86. </view>
  87. </view>
  88. <!--
  89. <view v-if="piliangArray.length>0" v-for="(item,index) in piliangArray" :key="index"
  90. class="bzsm-tip-box form-top-margin">
  91. <view class="tip-content-box">{{item.name}} {{item.zyLevelName}}</view>
  92. </view> -->
  93. <view v-if="isZijiazheng !='true'" class="page-btn-box">
  94. <button type="default" v-if="isZijiazheng !='true'" @click="goBack"
  95. class="phone-white-btn">返回</button>
  96. <button type="default" v-if="isZijiazheng !='true'" @click="addSaveFormPiliang"
  97. class="phone-green-btn">添加</button>
  98. </view>
  99. </view>
  100. <selectZyLevel ref="selectRef" @confirm-btn="selectZyLevelConfirm" :id="13"></selectZyLevel>
  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. import selectZyLevel from "@/components/selectZyLevel/index.vue"
  113. export default {
  114. data() {
  115. return {
  116. formData: {
  117. baozhengJigouId: '',
  118. baozhengJigouName: '',
  119. baozhengJigouType: '',
  120. banzhengInfoFlag: false,
  121. zhiyeName: '',
  122. zhiyeId: '',
  123. zhiyeLevelName: '',
  124. zhiyeLevelId: '',
  125. canxunshijian: '',
  126. shicaochengji: '',
  127. zongkeshi: '',
  128. needKecheng: 'false', // 默认选中"是"
  129. needKaoshi: 'false', // 默认选中"是"
  130. kcDisabled: false,
  131. needFlag: false,
  132. id: '',
  133. createTime: ''
  134. },
  135. baozhengJigouOpt: [
  136. ],
  137. zhiyelevelsOpt: [],
  138. zhiyeNameOpt: [
  139. ],
  140. localStatus: '',
  141. currentIndex: '',
  142. isJgFlag: true,
  143. isZyFlag: true,
  144. piliang: '',
  145. piliangArray: []
  146. };
  147. },
  148. props: {
  149. status: {
  150. type: String,
  151. },
  152. isZijiazheng: {
  153. type: String,
  154. }
  155. },
  156. components: {
  157. selectZyLevel
  158. },
  159. computed: {
  160. jigouNames() {
  161. return this.baozhengJigouOpt.map(item => item.name);
  162. },
  163. zhiyeNames() {
  164. return this.zhiyeNameOpt.map(item => item.name);
  165. },
  166. zhiyeLevels() {
  167. return this.zhiyelevelsOpt.map(item => item.name);
  168. },
  169. },
  170. created() {
  171. this.getJigou()
  172. this.localStatus = this.status
  173. },
  174. methods: {
  175. selectZy() {
  176. if (this.formData.baozhengJigouId == '') {
  177. uni.showToast({
  178. title: '请选择报证机构',
  179. icon: 'none'
  180. });
  181. return false
  182. }
  183. this.$refs.selectRef.handleShow()
  184. },
  185. selectZyLevelConfirm(data) {
  186. console.log('data', data);
  187. this.piliangArray = [...data]
  188. console.log('this.piliangArray', this.piliangArray);
  189. // const dataWithIds = updatedData.map((item, index) => ({
  190. // ...item,
  191. // statusBanzheng: '未办证',
  192. // id: res.data[index]
  193. // }));
  194. // this.allData.kaozhengList = [...this.allData.kaozhengList, ...dataWithIds];
  195. },
  196. // 提交表单
  197. addSaveFormPiliang() {
  198. let req = {
  199. canxunshijian: this.formData.canxunshijian,
  200. jgId: this.formData.baozhengJigouId,
  201. needKaoshi: this.formData.needKaoshi,
  202. needKecheng: this.formData.needKecheng,
  203. shicaochengji: this.formData.shicaochengji,
  204. zongkeshi: this.formData.zongkeshi,
  205. jgType: this.formData.baozhengJigouType,
  206. jgName: this.formData.baozhengJigouName,
  207. id: this.formData.id,
  208. createTime: dayjs().format("YYYY-MM-DD HH:mm:ss")
  209. }
  210. let mergedArray = this.piliangArray.map(item => {
  211. return {
  212. ...req, // 展开req的所有属性
  213. zyId: item.id,
  214. zyName: item.name,
  215. zyLevel: item.zyLevel,
  216. zyLevelName: item.zyLevelName
  217. };
  218. });
  219. console.log('this.mergedArray', mergedArray);
  220. if (req.jgId == '') {
  221. uni.showToast({
  222. title: '请选择报证机构',
  223. icon: 'none'
  224. });
  225. return false
  226. }
  227. if (this.piliangArray.length == 0) {
  228. uni.showToast({
  229. title: '请选择职业名称和职业等级',
  230. icon: 'none'
  231. });
  232. return false
  233. }
  234. // 验证机构类型为1时的必填字段
  235. if (this.formData.baozhengJigouType == 1 &&
  236. (this.formData.shicaochengji == '' ||
  237. this.formData.zongkeshi == '' ||
  238. this.formData.canxunshijian == '')) {
  239. uni.showToast({
  240. title: '请填写参训时间,实操成绩,总课时',
  241. icon: 'none'
  242. });
  243. return false
  244. }
  245. console.log('this.status', this.status);
  246. console.log('this.localStatus', this.localStatus);
  247. console.log('this.mergedArray', mergedArray);
  248. if (this.localStatus == 'addEdit') {
  249. this.$emit('addEdit', mergedArray, 'addEdit', this.currentIndex);
  250. } else if (this.status == 'add') {
  251. this.$emit('addSave', mergedArray);
  252. } else if (this.localStatus == 'editAdd') {
  253. this.$emit('editSave', mergedArray, 'editAdd');
  254. } else {
  255. this.$emit('editSave', mergedArray, 'edit', this.currentIndex);
  256. }
  257. },
  258. goBack() {
  259. this.isJgFlag = true
  260. this.isZyFlag = true
  261. this.piliangArray = []
  262. this.$emit('goBack');
  263. },
  264. editinfo(data, index) {
  265. this.piliangArray = []
  266. this.$nextTick(() => {
  267. if (!data) {
  268. return false
  269. }
  270. this.currentIndex = index
  271. this.formData.baozhengJigouName = data.jgName;
  272. this.formData.baozhengJigouId = data.jgId;
  273. this.formData.id = data.id;
  274. this.formData.baozhengJigouType = data.jgType;
  275. this.formData.banzhengInfoFlag = data.jgType == 1;
  276. this.formData.zhiyeName = data.zyName;
  277. this.formData.zhiyeId = data.zyId;
  278. this.formData.zhiyeLevelName = data.zyLevelName;
  279. this.formData.zhiyeLevelId = data.zyLevel;
  280. if (this.formData.baozhengJigouId) {
  281. this.isJgFlag = false
  282. getJiazhengZhiye({
  283. id: this.formData.baozhengJigouId
  284. }).then(res => {
  285. console.log('res', res);
  286. this.zhiyeNameOpt = res.data
  287. })
  288. }
  289. if (this.formData.baozhengJigouId && this.formData.zhiyeId) {
  290. this.isZyFlag = false
  291. let req = {
  292. jgId: this.formData.baozhengJigouId,
  293. zyId: this.formData.zhiyeId,
  294. }
  295. getJiazhengLevel(req).then(res => {
  296. console.log('res', res);
  297. this.zhiyelevelsOpt = res.data
  298. })
  299. }
  300. this.formData.canxunshijian = data.canxunshijian;
  301. this.formData.zongkeshi = data.zongkeshi;
  302. this.formData.shicaochengji = data.shicaochengji;
  303. this.formData.needKecheng = data.needKecheng ? data.needKecheng.toString() : 'false';
  304. this.formData.needKaoshi = data.needKaoshi ? data.needKaoshi.toString() : 'false';
  305. if (this.formData.banzhengInfoFlag) {
  306. this.formData.needFlag = false
  307. } else {
  308. this.formData.needFlag = true
  309. }
  310. })
  311. },
  312. getJigou() {
  313. getBaozhengJigou({}).then(res => {
  314. console.log('res', res);
  315. this.baozhengJigouOpt = res.data
  316. })
  317. },
  318. getZhiye() {
  319. this.zhiyeNameOpt = []
  320. this.formData.zhiyeName = ''
  321. this.formData.zhiyeId = ''
  322. getJiazhengZhiye({
  323. id: this.formData.baozhengJigouId
  324. }).then(res => {
  325. console.log('res', res);
  326. this.zhiyeNameOpt = res.data
  327. })
  328. },
  329. getZhiyeLevel() {
  330. this.zhiyelevelsOpt = []
  331. this.formData.zhiyeLevelName = ''
  332. this.formData.zhiyeLevelId = ''
  333. let req = {
  334. jgId: this.formData.baozhengJigouId,
  335. zyId: this.formData.zhiyeId,
  336. }
  337. getJiazhengLevel(req).then(res => {
  338. console.log('res', res);
  339. this.zhiyelevelsOpt = res.data
  340. })
  341. },
  342. resetData() {
  343. this.formData.zhiyeName = ''
  344. this.formData.zhiyeId = ''
  345. this.formData.zhiyeLevelName = ''
  346. this.formData.zhiyeLevelId = ''
  347. this.formData.canxunshijian = ''
  348. this.formData.shicaochengji = ''
  349. this.formData.zongkeshi = ''
  350. this.isJgFlag = true
  351. this.isZyFlag = true
  352. },
  353. resetFun() {
  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.formData.baozhengJigouName = ''
  362. this.formData.baozhengJigouId = ''
  363. this.formData.baozhengJigouName = ''
  364. this.formData.needKecheng = 'false'
  365. this.formData.needKaoshi = 'false'
  366. this.formData.needFlag = false
  367. this.formData.kcDisabled = false
  368. this.formData.banzhengInfoFlag = false
  369. this.isJgFlag = true
  370. this.isZyFlag = true
  371. this.piliangArray = []
  372. },
  373. // 报证机构选择
  374. jigouChange(e) {
  375. this.formData.baozhengJigouName = this.baozhengJigouOpt[e.detail.value].name;
  376. this.formData.baozhengJigouId = this.baozhengJigouOpt[e.detail.value].jgId;
  377. this.formData.baozhengJigouType = this.baozhengJigouOpt[e.detail.value].jgType;
  378. this.formData.banzhengInfoFlag = this.baozhengJigouOpt[e.detail.value].jgType == 1;
  379. // 每一次都重置
  380. this.resetData()
  381. console.log('this.formData.banzhengInfoFlag', this.formData.banzhengInfoFlag);
  382. if (this.formData.banzhengInfoFlag) {
  383. this.formData.needFlag = false
  384. this.formData.needKaoshi = 'false'
  385. this.formData.needKecheng = 'false'
  386. } else {
  387. this.formData.needFlag = true
  388. this.formData.needKaoshi = 'true'
  389. this.formData.needKecheng = 'false'
  390. }
  391. if (this.formData.baozhengJigouId) {
  392. this.isJgFlag = false //开启
  393. this.getZhiye()
  394. }
  395. },
  396. // 职业等级选择
  397. levelChange(e) {
  398. this.formData.zhiyeLevelId = this.zhiyelevelsOpt[e.detail.value].id;
  399. this.formData.zhiyeLevelName = this.zhiyelevelsOpt[e.detail.value].name;
  400. },
  401. checkKc() {
  402. let req = {
  403. zyId: this.formData.zhiyeId,
  404. zyLevel: this.formData.zhiyeLevelId
  405. }
  406. getJiazhengBanzhengCheckKc(req).then(res => {
  407. console.log('res', res);
  408. if (res.data.pass.toString() == 'true') {
  409. this.formData.kcDisabled = false
  410. this.formData.needKecheng = 'true'
  411. } else {
  412. uni.showToast({
  413. title: res.data.msg,
  414. icon: 'none'
  415. });
  416. this.formData.needKecheng = 'false'
  417. this.formData.kcDisabled = true
  418. }
  419. // this.zhiyelevelsOpt = res.data
  420. })
  421. },
  422. // 职业名称选择
  423. zhiyeChange(e) {
  424. this.formData.zhiyeName = this.zhiyeNameOpt[e.detail.value].name;
  425. this.formData.zhiyeId = this.zhiyeNameOpt[e.detail.value].id;
  426. if (this.formData.baozhengJigouId && this.formData.zhiyeId) {
  427. this.isZyFlag = false
  428. this.getZhiyeLevel()
  429. }
  430. },
  431. canxunShijianChange(e) {
  432. console.log('e', e);
  433. this.formData.canxunshijian = e
  434. },
  435. // 需要课程选择
  436. kechengChange(e) {
  437. this.formData.needKecheng = e.detail.value.toString();
  438. console.log('this.formData.needKecheng', this.formData.needKecheng);
  439. if (this.formData.needKecheng == 'true') {
  440. if (this.formData.zhiyeId && this.formData.zhiyeLevelId) {
  441. this.checkKc()
  442. } else {
  443. uni.showToast({
  444. title: '请选择职业以及职业等级',
  445. icon: 'none'
  446. });
  447. setTimeout(() => {
  448. this.formData.needKecheng = 'false'
  449. }, 1000)
  450. return false
  451. }
  452. }
  453. },
  454. // 需要考试选择
  455. kaoshiChange(e) {
  456. this.formData.needKaoshi = e.detail.value.toString();
  457. },
  458. currentMove(data) {
  459. console.log('data', data);
  460. // currentMove 编辑状态下的新增
  461. this.localStatus = data
  462. console.log('localStatus', this.localStatus);
  463. }
  464. }
  465. };
  466. </script>