invite_comment.vue 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320
  1. <template>
  2. <div class="comment-main" :class="{
  3. 'comment-mobile':mobile
  4. }" >
  5. <el-container>
  6. <el-container>
  7. <el-container>
  8. <el-header>
  9. <el-steps align-center :active="active" style="padding-top: 20px" finish-status="success">
  10. <el-step title="申请认证"></el-step>
  11. <el-step title="审核通过"></el-step>
  12. <el-step title="对接面试"></el-step>
  13. <el-step title="面试评价"></el-step>
  14. </el-steps>
  15. <el-divider></el-divider>
  16. </el-header>
  17. <el-main>
  18. <el-form v-if="active==4" style="margin-top: 60px" ref="form" label-width="0px">
  19. <el-form-item>
  20. <div class="title">
  21. <p>对开发者【技术栈】进行评价</p>
  22. <p>可从技术基础,技术深度和广度谈谈反馈和结论</p>
  23. </div>
  24. <el-input v-model="info.dev_kf" show-word-limit maxlength="200" ></el-input>
  25. </el-form-item>
  26. <el-form-item>
  27. <div class="title">
  28. <p>【技术栈】掌握水平打分</p>
  29. <p>1最低,5最高</p>
  30. </div>
  31. <el-select v-model="info.dev_study" placeholder="请选择分数">
  32. <el-option
  33. v-for="item in fenshu"
  34. :key="item.value"
  35. :label="item.label"
  36. :value="item.value">
  37. </el-option>
  38. </el-select>
  39. </el-form-item>
  40. <el-form-item>
  41. <div class="title">
  42. <p>对开发者【经验/项目经历】进行评价</p>
  43. <p>可从开发年限,项目经验和管理/主导经验谈谈反馈和结论</p>
  44. </div>
  45. <el-input v-model="info.dev_skill" show-word-limit maxlength="200" ></el-input>
  46. </el-form-item>
  47. <el-form-item>
  48. <div class="title">
  49. <p>【经验/项目】工程能力打分</p>
  50. <p>1最低,5最高</p>
  51. </div>
  52. <el-select v-model="info.dev_skill_base" placeholder="请选择分数">
  53. <el-option
  54. v-for="item in fenshu"
  55. :key="item.value"
  56. :label="item.label"
  57. :value="item.value">
  58. </el-option>
  59. </el-select>
  60. </el-form-item>
  61. <el-form-item>
  62. <div class="title">
  63. <p>对开发者【整体映像】进行评价</p>
  64. <p>可从学习能力,交流难度,整体表现进行评价</p>
  65. </div>
  66. <el-input v-model="info.dev_memo" show-word-limit maxlength="200" ></el-input>
  67. </el-form-item>
  68. <el-form-item>
  69. <div class="title">
  70. <p>【整体映像】非技术能力打分</p>
  71. <p>1最低,5最高</p>
  72. </div>
  73. <el-select v-model="info.dev_experience" placeholder="请选择分数">
  74. <el-option
  75. v-for="item in fenshu"
  76. :key="item.value"
  77. :label="item.label"
  78. :value="item.value">
  79. </el-option>
  80. </el-select>
  81. </el-form-item>
  82. <el-form-item>
  83. <div class="title">
  84. <p>最终定级</p>
  85. <p>评级标准链接:https://proginn.feishu.cn/docs/doccnFJSsH0KZ9cTfQNpSRrZ4Of</p>
  86. </div>
  87. <el-radio v-model="info.level" label="1">技术1级:特定场景(包括低代码工具,二次开发)或某一小模块下,能独立开发</el-radio><br/>
  88. <el-radio v-model="info.level" label="2">技术2级:垂直领域上,熟练开发常见应用</el-radio><br/>
  89. <el-radio v-model="info.level" label="3">技术3级:垂直领域上,解决较复杂问题,独当一面</el-radio><br/>
  90. <el-radio v-model="info.level" label="4">技术4级:垂直领域上,能解决绝大部分问题;有大项目经验及一定的技术广度;</el-radio><br/>
  91. <el-radio v-model="info.level" label="5">技术5级:垂直领域的专家,主导过大型项目,能从产品架构上去考虑问题</el-radio><br/>
  92. <el-radio v-model="info.level" label="6">技术6级:更深的架构能力,更高的前瞻性,行业内丰富的经验或垂直领域的更高级专家</el-radio><br/>
  93. <el-radio v-model="info.level" label="0">技术0级【慎选】:完全不能独立开发</el-radio><br/>
  94. </el-form-item>
  95. <el-form-item>
  96. <el-button @click="submitData" type="primary">确认提交</el-button>
  97. </el-form-item>
  98. </el-form>
  99. </el-main>
  100. </el-container>
  101. </el-container>
  102. </el-container>
  103. </div>
  104. </template>
  105. <script>
  106. import { mapState } from "vuex";
  107. export default {
  108. layout: "default_mobile_header_no_jump",
  109. head: {
  110. title: '技术认证面试回访',
  111. },
  112. data () {
  113. return {
  114. fenshu: [{
  115. value: '1',
  116. label: '1分'
  117. }, {
  118. value: '2',
  119. label: '2分'
  120. }, {
  121. value: '3',
  122. label: '3分'
  123. }, {
  124. value: '4',
  125. label: '4分'
  126. }, {
  127. value: '5',
  128. label: '5分'
  129. }],
  130. active:4,
  131. id:0,
  132. sign:"",
  133. info:{},
  134. }
  135. },
  136. mounted () {
  137. var id = this.$route.query.id ? this.$route.query.id : 0;
  138. var sign = this.$route.query.sign ? this.$route.query.sign : "";
  139. this.id=id;
  140. this.sign=sign;
  141. if (id!=0 && sign!="") {
  142. this.getDetail();
  143. }
  144. },
  145. asyncData({app}) {
  146. return {
  147. mobile: app.$deviceType.isMobile(),
  148. }
  149. },
  150. methods: {
  151. async getDetail() {
  152. let res=await this.$axios.$post('/uapi/cert/invite_comment', {id:this.id,sign:this.sign});
  153. if (res.status === 1) {
  154. this.info=res.data.info;
  155. }
  156. },
  157. async submitData() {
  158. var data=JSON.stringify(this.info);
  159. let res=await this.$axios.$post('/uapi/cert/invite_comment_add', {id:this.id,sign:this.sign,data:data});
  160. if (res.status === 1) {
  161. this.$message.success('操作成功!')
  162. }
  163. },
  164. }
  165. }
  166. </script>
  167. <style scope lang="scss">
  168. @import "@/assets/css/consult/create.scss";
  169. .comment-main{
  170. background-color: white;
  171. margin:20px auto 30px;
  172. overflow: hidden;
  173. }
  174. .comment-mobile{
  175. width:100%;
  176. overflow: hidden;
  177. .title{
  178. word-break: break-all;
  179. line-height: 1.5;
  180. margin-bottom: 20px;
  181. }
  182. .el-radio__label{
  183. word-break: break-all;
  184. }
  185. .label-tips{
  186. max-width: 100%;
  187. width: 100%;
  188. display: block;
  189. word-break: break-all;
  190. }
  191. .el-radio{
  192. display: block;
  193. overflow: hidden;
  194. .el-radio__input{
  195. float: left;
  196. }
  197. .el-radio__label{
  198. margin-left: 16px;
  199. display: block;
  200. white-space: normal;
  201. line-height: 1.5;
  202. position: relative;
  203. top: -3px;
  204. }
  205. }
  206. }
  207. .comment-main{
  208. .el-select {
  209. width: 100%;
  210. // max-width: 925px;
  211. .el-input{
  212. width: 100%;
  213. }
  214. }
  215. .title{
  216. p{
  217. // line-height:1.5;
  218. }
  219. p:nth-of-type(1){
  220. font-size: 14px;
  221. color:#000;
  222. }
  223. p:nth-of-type(2){
  224. font-size: 13px;
  225. color:#666;
  226. }
  227. }
  228. }
  229. .common-upload {
  230. display: flex;
  231. align-items: end;
  232. .look-img {
  233. margin-left: 14px;
  234. .text {
  235. font-size: 14px;
  236. font-family: PingFangSC, PingFangSC-Medium;
  237. font-weight: 500;
  238. color: #308eff;
  239. cursor: pointer;
  240. }
  241. .text-hover:hover {
  242. position: relative;
  243. .img {
  244. display: block;
  245. }
  246. }
  247. .img {
  248. background: #fff;
  249. border: 1px solid #e0e5ed;
  250. box-shadow: 0px 2px 20px 0px rgba(22,40,63,0.15);
  251. border-radius: 10px;
  252. text-align: center;
  253. position: relative;
  254. position: absolute;
  255. top: -120px;
  256. left: 0;
  257. width: 300px;
  258. height: 120px;
  259. display: none;
  260. transition: all ease .3s;
  261. .active-img2 {
  262. width: 234px;
  263. height: 71px;
  264. background-size: cover;
  265. overflow: hidden;
  266. margin-top: 24px;
  267. }
  268. .active-img1 {
  269. width: 262px;
  270. height: 78px;
  271. background-size: cover;
  272. overflow: hidden;
  273. margin-top: 22px;
  274. }
  275. }
  276. .img:after {
  277. content: '';
  278. width: 0;
  279. height: 0;
  280. border-right: 10px solid transparent;
  281. border-bottom: 10px solid transparent;
  282. border-top: 10px solid #e0e5ed;
  283. border-left: 10px solid transparent;
  284. position: absolute;
  285. left: 24px;
  286. bottom: -20px;
  287. }
  288. .img:before {
  289. content: '';
  290. width: 0;
  291. height: 0;
  292. border-right: 9px solid transparent;
  293. border-bottom: 9px solid transparent;
  294. border-top: 9px solid #fff;
  295. border-left: 9px solid transparent;
  296. position: absolute;
  297. left: 25px;
  298. bottom: -18px;
  299. z-index: 1;
  300. }
  301. }
  302. }
  303. </style>