caichengyu há 1 mês atrás
pai
commit
ef24d69f48

+ 2 - 2
config/stage.env.js

@@ -2,8 +2,8 @@
 module.exports = {
     NODE_ENV: '"production"',
     BASE_IMG_URL: '"https://file-dev.xyyxt.net/"', //图片上传api
-    BASE_URL: '"https://testapi.xyyxt.net"',
-    // BASE_URL: '"http://120.79.166.78:19012"',
+    // BASE_URL: '"https://testapi.xyyxt.net"',
+    BASE_URL: '"http://120.79.166.78:19012"',
     TENANT_ID: '"867735392558919680"',
     ENV_ID: '"stage"',//测试环境
     WEAPP_LOGO: '"@/assets/xcxqrcode.jpg"', // 微信小程序扫码图片

+ 109 - 2
package-lock.json

@@ -5102,8 +5102,7 @@
     "escalade": {
       "version": "3.1.1",
       "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
-      "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
-      "dev": true
+      "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw=="
     },
     "escape-html": {
       "version": "1.0.3",
@@ -5987,6 +5986,11 @@
       "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==",
       "dev": true
     },
+    "get-east-asian-width": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.4.0.tgz",
+      "integrity": "sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q=="
+    },
     "get-intrinsic": {
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
@@ -8345,6 +8349,11 @@
       "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
       "dev": true
     },
+    "kleur": {
+      "version": "4.1.5",
+      "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz",
+      "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ=="
+    },
     "last-call-webpack-plugin": {
       "version": "2.1.2",
       "resolved": "https://registry.npmjs.org/last-call-webpack-plugin/-/last-call-webpack-plugin-2.1.2.tgz",
@@ -9177,6 +9186,99 @@
         "minimist": "^1.2.5"
       }
     },
+    "module": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/module/-/module-2.0.0.tgz",
+      "integrity": "sha512-3ZjXmzvknNRH1iiJAMDBw8xqLKd2ZB4lJH20phnb6UxjhLjk6ufFrB0s0LEi7r0FzvDz+tE+WM5CyRWJjV+wtQ==",
+      "requires": {
+        "kleur": "^4.1.5",
+        "tildify": "^3.0.0",
+        "yargs": "^18.0.0"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "6.2.2",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+          "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg=="
+        },
+        "ansi-styles": {
+          "version": "6.2.3",
+          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz",
+          "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg=="
+        },
+        "cliui": {
+          "version": "9.0.1",
+          "resolved": "https://registry.npmjs.org/cliui/-/cliui-9.0.1.tgz",
+          "integrity": "sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==",
+          "requires": {
+            "string-width": "^7.2.0",
+            "strip-ansi": "^7.1.0",
+            "wrap-ansi": "^9.0.0"
+          }
+        },
+        "emoji-regex": {
+          "version": "10.6.0",
+          "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz",
+          "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A=="
+        },
+        "get-caller-file": {
+          "version": "2.0.5",
+          "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+          "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="
+        },
+        "string-width": {
+          "version": "7.2.0",
+          "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz",
+          "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==",
+          "requires": {
+            "emoji-regex": "^10.3.0",
+            "get-east-asian-width": "^1.0.0",
+            "strip-ansi": "^7.1.0"
+          }
+        },
+        "strip-ansi": {
+          "version": "7.1.2",
+          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
+          "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
+          "requires": {
+            "ansi-regex": "^6.0.1"
+          }
+        },
+        "wrap-ansi": {
+          "version": "9.0.2",
+          "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz",
+          "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==",
+          "requires": {
+            "ansi-styles": "^6.2.1",
+            "string-width": "^7.0.0",
+            "strip-ansi": "^7.1.0"
+          }
+        },
+        "y18n": {
+          "version": "5.0.8",
+          "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+          "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA=="
+        },
+        "yargs": {
+          "version": "18.0.0",
+          "resolved": "https://registry.npmjs.org/yargs/-/yargs-18.0.0.tgz",
+          "integrity": "sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==",
+          "requires": {
+            "cliui": "^9.0.1",
+            "escalade": "^3.1.1",
+            "get-caller-file": "^2.0.5",
+            "string-width": "^7.2.0",
+            "y18n": "^5.0.5",
+            "yargs-parser": "^22.0.0"
+          }
+        },
+        "yargs-parser": {
+          "version": "22.0.0",
+          "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-22.0.0.tgz",
+          "integrity": "sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw=="
+        }
+      }
+    },
     "moment": {
       "version": "2.29.2",
       "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.2.tgz",
@@ -15390,6 +15492,11 @@
       "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==",
       "dev": true
     },
+    "tildify": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/tildify/-/tildify-3.0.0.tgz",
+      "integrity": "sha512-9ZLMl75qnTLr7oSEmWJbKemFS/fP4TMBiF6PFwGwLpgobebU1ehXoGbadJ+7jT8fjaz2G82JgN9G4taz+o1j1w=="
+    },
     "time-stamp": {
       "version": "2.2.0",
       "resolved": "https://registry.npmmirror.com/time-stamp/-/time-stamp-2.2.0.tgz",

+ 1 - 0
package.json

@@ -29,6 +29,7 @@
     "image-conversion": "^2.1.1",
     "js-base64": "^3.7.2",
     "jsencrypt": "^3.2.1",
+    "module": "^2.0.0",
     "moment": "^2.29.2",
     "print-js": "^1.6.0",
     "swiper": "^6.8.4",

+ 7 - 0
src/apis/course.js

@@ -470,4 +470,11 @@ export default {
 		  method: 'get'
 		})
 	  },
+	techniciancheck(data) {
+		return request({
+			url: '/order/technician/check',
+			method: 'post',
+			data: data
+		})
+	},
 }

+ 1 - 1
src/axios.js

@@ -33,7 +33,7 @@ const err = (error) => {
 
       }
     } else if (message == "Network Error") {
-      message = "系统升级中";
+      message = "网络波动异常,请检查网络。";
       Message({
         message: message,
         type: 'error',

+ 10 - 1
src/components/takePicture/index.vue

@@ -266,8 +266,17 @@ export default {
     async takeOk() {
       this.loading = true;
       this.$emit("returnParameter", this.faceUrl,this.deviceName);
+      this.stopCamera();
       this.takePhotoModal = false;
-    }
+    },
+     stopCamera() {
+    var stream = document.getElementById('video').srcObject;
+    var tracks = stream.getTracks();
+    tracks.forEach(function(track) {
+        track.stop();
+    });
+    document.getElementById('video').srcObject = null;
+},
   }
 };
 </script>

+ 524 - 0
src/components/technician/index.vue

@@ -0,0 +1,524 @@
+
+<template>
+  <div id="">
+    <el-dialog
+      width="1200px"
+      v-if="subjectNames == '技术员'"
+      class="take-photo"
+      :visible.sync="Modal"
+      :close-on-click-modal="false"
+      :close-on-press-escape="false"
+      :show-close="false"
+    >
+      <el-form :model="form0"  :rules="rules0" ref="form0">
+        <!-- <div class="size">
+        广东省建筑工程技术人才职称
+        <el-select v-model="form0.type" placeholder="请选择评审/认定">
+    <el-option label="评审" value="评审"></el-option>
+    <el-option label="认定" value="认定"></el-option>
+  </el-select>
+  评审认定信息预检表(技术员)
+      </div> -->
+        <table class="el-table">
+          <tbody>
+            <tr>
+              <td colspan="6">
+                <div class="size">
+                  广东省建筑工程技术人才职称
+                  <div style="width: 160px; display: inline-block">
+                    <el-form-item label="" prop="type">
+                      <el-select
+                        v-model="form0.type"
+                        placeholder="请选择评审/认定"
+                      >
+                        <el-option label="评审" value="评审"></el-option>
+                        <el-option label="认定" value="认定"></el-option>
+                      </el-select>
+                    </el-form-item>
+                  </div>
+                  评审认定信息预检表(技术员)
+                </div>
+              </td>
+            </tr>
+            <tr class="graybg">
+              <td colspan="6"><div class="cell">基本条件</div></td>
+            </tr>
+            <tr>
+              <td rowspan="2"><div class="cell">申报人员姓名</div></td>
+              <td rowspan="2"><div class="cell">申报等级、专业</div></td>
+              <td rowspan="2"><div class="cell">现工作单位</div></td>
+              <td rowspan="2"><div class="cell">参保单位</div></td>
+              <td colspan="2"><div class="cell">现单位参保起止时间</div></td>
+            </tr>
+            <tr>
+              <td><div class="cell">开始参保时间</div></td>
+              <td><div class="cell">结束参保时间</div></td>
+            </tr>
+            <tr>
+              <td>
+                <div class="cell">
+                  <el-form-item label="" prop="userName">
+                    <el-input v-model="form0.userName" placeholder="姓名"></el-input>
+                  </el-form-item>
+                  <span class='tips userName' style='color:red;font-size:12px;'></span>
+                </div>
+              </td>
+              <td>
+                <div class="cell">
+                  <el-form-item label="" prop="major">
+                    <el-input v-model="form0.major"  placeholder="如建筑施工、技术员"></el-input>
+                  </el-form-item>
+                  <span class='tips major' style='color:red;font-size:12px;'></span>
+                </div>
+              </td>
+              <td>
+                <div class="cell">
+                  <el-form-item label="" prop="companyName">
+                    <el-input v-model="form0.companyName" placeholder="公司名称"></el-input>
+                  </el-form-item>
+                  <span class='tips companyName' style=''></span>
+                </div>
+              </td>
+              <td>
+                <div class="cell">
+                  <el-form-item label="" prop="insured">
+                    <el-input v-model="form0.insured" placeholder="参保公司名称"></el-input>
+                  </el-form-item>
+                  <span class='tips insured'></span>
+                </div>
+              </td>
+              <td>
+                <div class="cell">
+                  <el-form-item label="" prop="insuredStartTime">
+                    <el-date-picker
+                      type="date"
+                      placeholder="选择日期"
+                      format="yyyy-MM-dd"
+      value-format="yyyy-MM-dd"
+                      v-model="form0.insuredStartTime"
+                      style="width: 100%"
+                    ></el-date-picker>
+                  </el-form-item>
+                  <span class='tips insuredStartTime'></span>
+                </div>
+              </td>
+              <td>
+                <div class="cell">
+                  <el-form-item label="" prop="insuredEndTime">
+                    <el-date-picker
+                      type="date"
+                      placeholder="选择日期"
+                      format="yyyy-MM-dd"
+      value-format="yyyy-MM-dd"
+                      v-model="form0.insuredEndTime"
+                      style="width: 100%"
+                    ></el-date-picker>
+                  </el-form-item>
+                  <span class='tips insuredEndTime'></span>
+                </div>
+              </td>
+            </tr>
+                        <tr class="graybg">
+              <td colspan="6"><div class="cell">基本条件</div></td>
+            </tr>
+            <tr>
+              <td><div class="cell">继续教育(评审要,认定不需要)</div></td>
+              <td colspan="3"><div class="cell">学历情况</div></td>
+              <td rowspan="2"><div class="cell">是否持有建筑类其他证书</div></td>
+              <td rowspan="2"><div class="cell">其他说明</div></td>
+            </tr>
+            <tr>
+              <td><div class="cell">(本年度)</div></td>
+              <td><div class="cell">学历等级</div></td>
+              <td><div class="cell">学历专业</div></td>
+              <td><div class="cell">毕业时间</div></td>
+            </tr>
+            <tr>
+              <td>
+                <div class="cell">
+                  <el-form-item label="" prop="education">
+                     <el-select
+                        v-model="form0.education"
+                        placeholder="有/无"
+                      >
+                        <el-option label="有" value="有"></el-option>
+                        <el-option label="无" value="无"></el-option>
+                      </el-select>
+                  </el-form-item>
+                  <span class='tips education'></span>
+                </div>
+              </td>
+              <td>
+                <div class="cell">
+                  <el-form-item label="" prop="existingLevel">
+                    <el-select
+                        v-model="form0.existingLevel"
+                        placeholder="学历等级"
+                      >
+                        <el-option label="小学" value="小学"></el-option>
+                        <el-option label="中学" value="中学"></el-option>
+                        <el-option label="职高" value="职高"></el-option>
+                        <el-option label="高中" value="高中"></el-option>
+                        <el-option label="专科" value="专科"></el-option>
+                        <el-option label="本科" value="本科"></el-option>
+                        <el-option label="硕士研究生" value="硕士研究生"></el-option>
+                        <el-option label="博士研究生" value="博士研究生"></el-option>
+                      </el-select>
+                  </el-form-item>
+                  <span class='tips existingLevel'></span>
+                </div>
+              </td>
+              <td>
+                <div class="cell">
+                  <el-form-item label="" prop="existingMajor">
+                    <el-input v-model="form0.existingMajor" placeholder="如:土木工程"></el-input>
+                  </el-form-item>
+                  <span class='tips existingMajor'></span>
+                </div>
+              </td>
+              <td>
+                <div class="cell">
+                  <el-form-item label="" prop="graduateTime">
+                     <el-date-picker
+                      type="date"
+                      placeholder="选择日期"
+                      format="yyyy-MM-dd"
+      value-format="yyyy-MM-dd"
+                      v-model="form0.graduateTime"
+                      style="width: 100%"
+                    ></el-date-picker>
+                  </el-form-item>
+                  <span class='tips graduateTime'></span>
+                </div>
+              </td>
+              <td>
+                <div class="cell">
+                  <el-form-item label="">
+                     <el-input v-model="form0.isCertificate" placeholder="如 建筑工、安全员"></el-input>
+                  </el-form-item>
+                </div>
+              </td>
+              <td>
+                <div class="cell">
+                  <el-form-item label="">
+                    <el-input v-model="form0.explain"></el-input>
+                  </el-form-item>
+                </div>
+              </td>
+            </tr>
+                        <tr class="graybg">
+              <td colspan="6"><div class="cell">工作经历及业绩情况</div></td>
+            </tr>
+            <tr>
+              <td><div class="cell">单位名称</div></td>
+              <td><div class="cell">工程名称</div></td>
+              <td><div class="cell">开竣工时间(年月日)</div></td>
+              <td><div class="cell">担任职务及负责的工作</div></td>
+              <td><div class="cell">工程造价</div></td>
+              <td><div class="cell">工程获奖情况</div></td>
+            </tr>
+            <tr  v-for="(item, tindex) in form0.experienceBos" :key="tindex + 'tr'">
+              <td>
+                <div class="cell">
+                  <el-form-item label="">
+                    <el-input v-model="item.companyName" placeholder="公司名称"></el-input>
+                  </el-form-item>
+                </div>
+              </td>
+              <td>
+                <div class="cell">
+                  <el-form-item label="">
+                    <el-input v-model="item.projectName" placeholder="工程名称"></el-input>
+                  </el-form-item>
+                </div>
+              </td>
+              <td>
+                <div class="cell">
+                  <el-form-item label="">
+                     <el-col :span="11">
+      <el-date-picker type="date" placeholder="选择日期" format="yyyy-MM-dd"
+      value-format="yyyy-MM-dd" v-model="item.projectStartTime" style="width: 100%;"></el-date-picker>
+    </el-col>
+    <el-col class="line" :span="2">-</el-col>
+    <el-col :span="11">
+      <el-date-picker placeholder="选择日期" format="yyyy-MM-dd"
+      value-format="yyyy-MM-dd" v-model="item.projectEndTime" style="width: 100%;"></el-date-picker>
+    </el-col>
+                  </el-form-item>
+                </div>
+              </td>
+              <td>
+                <div class="cell">
+                  <el-form-item label="">
+                     <el-input v-model="item.work" placeholder="如:施工员,协助项目日常施工管理工作"></el-input>
+                  </el-form-item>
+                </div>
+              </td>
+              <td>
+                <div class="cell">
+                  <el-form-item label="">
+                    <el-input v-model="item.cost" placeholder="XX万元"></el-input>
+                  </el-form-item>
+                </div>
+              </td>
+              <td>
+                <div class="cell">
+                  <el-form-item label="">
+                    <el-input v-model="item.condition" placeholder="荣获“XXXXX奖”..."></el-input>
+                  </el-form-item>
+                </div>
+              </td>
+            </tr>
+          </tbody>
+        </table>
+        <div style="text-align: center;"><el-button type="text" icon="el-icon-circle-plus-outline" @click="addordelrow(0,1)">添加工作经验新行</el-button><el-button type="text" @click="addordelrow(0,2)" icon="el-icon-remove-outline">删除工作经验最后一行</el-button></div>
+        
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="Modal = false">取 消</el-button>
+        <el-button type="primary" @click="submitForm('form0')" :loading="uploading"
+          >确 定</el-button
+        >
+      </div>
+    </el-dialog>
+    <el-dialog
+      width="400px"
+      class="take-photo"
+      :visible.sync="Modal2"
+      :close-on-click-modal="false"
+      :close-on-press-escape="false"
+      :show-close="false"
+    >
+      <span slot="footer" class="dialog-footer">
+        <el-button type="primary" >刷新重学</el-button>
+      </span>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+      Modal: false,
+      subjectNames: 0, //0技术员,1助理工程师
+      Modal2: false,
+      uploading:false,
+      errcode: 0,
+      form0: {goodsId:0, type: "",experienceBos:[{companyName:"",projectStartTime:"",projectEndTime:"",work:"",cost:"",condition:""}] },
+      rules0: {
+          type: [
+            { required: true, message: '请选择评审/认定', trigger: 'blur' }
+          ],
+          userName: [
+            { required: true, message: '请输入姓名', trigger: 'blur' }
+          ],
+          major: [
+            { required: true, message: '请输入', trigger: 'blur' }
+          ],
+          companyName: [
+            { required: true, message: '请输入', trigger: 'blur' }
+          ],
+          insured: [
+            { required: true, message: '请输入', trigger: 'blur' }
+          ],
+          insuredStartTime: [
+            { required: true, message: '请选择日期', trigger: 'blur' }
+          ],
+          insuredEndTime: [
+            { required: true, message: '请选择日期', trigger: 'blur' }
+          ],
+          education: [
+            { required: true, message: '请选择', trigger: 'blur' }
+          ],
+          existingLevel: [
+            { required: true, message: '请输入', trigger: 'blur' }
+          ],
+          existingMajor: [
+            { required: true, message: '请输入', trigger: 'blur' }
+          ],
+          graduateTime: [
+            { required: true, message: '请选择日期', trigger: 'blur' }
+          ],},
+    };
+  },
+  methods: {
+    //拍照
+    openBoxs(subjectNames,goodsId) {
+      this.subjectNames = subjectNames;
+      if(subjectNames=="技术员")
+         this.form0.goodsId=goodsId;
+      this.Modal = true;
+      this.form0={
+  "goodsId": 671805,
+  "type": "评审",
+  "experienceBos": [
+    {
+      "companyName": "大是",
+      "projectStartTime": "2024-11-01",
+      "projectEndTime": "2025-11-11",
+      "work": "发大水",
+      "cost": "奥省的",
+      "condition": "的故事",
+      "projectName": "的发生"
+    }
+  ],
+  "userName": "的撒",
+  "major": "建筑材料",
+  "companyName": "撒大",
+  "insured": "的撒",
+  "insuredStartTime": "2024-11-01",
+  "insuredEndTime": "2025-11-13",
+  "education": "有",
+  "existingLevel": "本科",
+  "existingMajor": "建筑材料",
+  "graduateTime": "2024-11-01",
+  "isCertificate": "答复",
+  "explain": "大是"
+}
+    },
+    addordelrow(num,addordel){
+      if(num==0){
+        if(addordel==1)
+          this.form0.experienceBos.push({companyName:"",projectStartTime:"",projectEndTime:"",work:"",cost:"",condition:""});
+        else
+          this.form0.experienceBos.pop({companyName:"",projectStartTime:"",projectEndTime:"",work:"",cost:"",condition:""});
+      }
+    },
+    submitForm(formName) {
+      this.$refs[formName].validate((valid) => {
+        if (valid) {
+           this.uploading = true;
+           this.$request
+                .techniciancheck(this.form0)
+                .then(res => {
+                  console.log(res);
+                 var tipsarr= document.getElementsByClassName('tips');
+                 for(var i =0;i<tipsarr.length;i++){
+tipsarr[i].innerHTML='';
+                 }
+                 if(res.data.id){//成功
+                  this.$emit("toPaymentTech", res.data.id); //重置
+                 }
+                 else{
+                     var arr_err=res.data.checkVos;
+                     for(var i =0;i<arr_err.length;i++){
+                      let element= document.getElementsByClassName(arr_err[i].field)[0];
+                      // console.log(arr_err[i].field,element);
+                      element.innerHTML = arr_err[i].reason;
+                     }
+                     this.$message.warning('请按要求修改');
+                 }
+                })
+                .catch(err => {
+                  this.$message.warning(err.msg);
+                })
+                .finally(() => {
+                  this.uploading = false;
+                });
+        }
+       else {
+          console.log("error submit!!");
+          return false;
+        }
+      });
+    },
+    openBoxsRestart(errcode) {
+      this.errcode = errcode;
+      this.time = 180;
+      this.Modal2 = true;
+      this.times2 = setInterval(() => {
+        if (this.time <= 0) {
+          clearInterval(this.times2);
+          this.Modal2 = false;
+          if (this.errcode == 557) {
+            location.reload();
+          } else {
+            this.$emit("resetSection", this.errcode); //重置
+          }
+        } else {
+          this.time--;
+        }
+      }, 1000);
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.el-form-item{margin-bottom: unset !important;}
+.el-form-item__error{position: relative !important;}
+.tips{color:red;font-size:12px;}
+.size {
+  font-size: 24px;
+  text-align: center;
+}
+.el-table {
+  width: 100%;
+  border-collapse: collapse;
+}
+
+.el-table .graybg {
+  background-color: #f5f7fa;
+  font-weight: 600;
+}
+.el-table tr {
+  text-align: center;
+  font-weight: 500;
+}
+.el-table th {
+  background-color: #f5f7fa;
+  padding: 12px 0;
+  text-align: left;
+  border-bottom: 1px solid #ebeef5;
+  position: relative;
+  cursor: pointer;
+  user-select: none;
+}
+
+.el-table th:hover {
+  background-color: #f0f2f5;
+}
+
+.el-table th .cell {
+  padding: 0 10px;
+  display: flex;
+  align-items: center;
+}
+
+.el-table th .sort-caret {
+  display: inline-flex;
+  flex-direction: column;
+  margin-left: 5px;
+  color: #c0c4cc;
+}
+
+.el-table th .ascending {
+  margin-bottom: -3px;
+}
+
+.el-table th .descending {
+  margin-top: -3px;
+}
+
+.el-table th .sort-caret.active {
+  color: #409eff;
+}
+
+.el-table td {
+  padding: 12px 0;
+  border: 1px solid #ebeef5;
+}
+
+.el-table td .cell {
+  padding: 0 10px;
+}
+
+.el-table tbody tr:hover {
+  background-color: #f5f7fa;
+}
+
+.el-table .el-table__row--striped {
+  background-color: #fafafa;
+}
+</style>

+ 36 - 2
src/pages/goods-detail/course-detail.vue

@@ -53,14 +53,21 @@
                     </template>
                   </div>
                   <div class="btns">
-                    <el-button
+                     <el-button v-if="goodsDetail.educationName=='技工办证'"
+                      type="primary"
+                      round
+                      class="buynow"
+                      @click="buyBefore()"
+                      >立即申报</el-button
+                    >
+                    <el-button v-else
                       type="primary"
                       round
                       class="buynow"
                       @click="buyNow()"
                       >立即购买</el-button
                     >
-                    <el-button
+                    <el-button v-if="goodsDetail.educationName!='技工办证'"
                       type="primary"
                       round
                       plain
@@ -474,6 +481,7 @@
       :isCarOrBuy="isCarOrBuy"
       @toShopCart="getAddCar($event)"
     ></index-sku-dialog>
+     <technician ref="technician" @toPaymentTech="toPaymentTech"></technician>
   </div>
 </template>
 
@@ -484,6 +492,7 @@ import ToolBar from "@/components/toolbar/index";
 import GoodsItem from "@/components/goodsItem/index";
 import IndexSkuDialog from "@/components/goodsItem/IndexSkuDialog.vue";
 import BuyCourseModal from "@/components/buyCourseModal/index";
+import technician from "@/components/technician/index.vue";
 import { mapMutations } from "vuex";
 export default {
   name: "GoodsDetail",
@@ -494,6 +503,7 @@ export default {
     GoodsItem,
     IndexSkuDialog,
     BuyCourseModal,
+    technician,
   },
   data() {
     return {
@@ -1413,6 +1423,30 @@ export default {
           });
       });
     },
+    //技工证购买前填写申报资料验证
+   async buyBefore(){
+      if (this.$tools.isLogin()) {
+         //是否能购买
+        let canbuy = await this.ordercheckbuy(this.goodsDetail.goodsId);
+        if (!canbuy) {
+          return;
+        }
+        // console.log(this.goodsDetail)
+         this.$refs.technician.openBoxs(this.goodsDetail.subjectNames,this.goodsDetail.goodsId);
+      }
+      else {
+        this.setCurrentRouter(this.$route);
+        this.$router.push({
+          path: "/login",
+        });
+        return;
+      }
+    },
+    toPaymentTech(id){
+      this.goodsDetail.artisanDataId=id;
+      console.log(111,this.goodsDetail)
+       this.toPayment(this.goodsDetail);
+    },
     async buyNow() {
       if (this.$tools.isLogin()) {
         //是否能购买