solution_detail.vue 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382
  1. <template>
  2. <div v-if="detailData">
  3. <el-row>
  4. <el-col :span="24">企业认证审核</el-col>
  5. </el-row>
  6. <el-divider></el-divider>
  7. <el-row>
  8. <el-col :span="16">
  9. <el-image
  10. style="width: 50px; height: 50px"
  11. :src="detailData.verifying && detailData.verifying.icon_url"
  12. :fit="fit"></el-image>
  13. </el-col>
  14. <el-col :span="8">
  15. <el-button size="mini" @click="userinfo(detailData.verifying.uid)" type="info">用户信息</el-button>
  16. <el-button size="mini" @click="woinfo(detailData.verifying.uid)" type="info">主页</el-button>
  17. <el-button size="mini" @click="returnPage()" type="info">返回</el-button>
  18. </el-col>
  19. </el-row>
  20. <el-divider></el-divider>
  21. <el-row>
  22. <el-col :span="19">
  23. 企业认证
  24. </el-col>
  25. <el-col :span="5">
  26. <el-button size="mini">{{this.company_verify_status}}</el-button>
  27. <el-link @click="companyVerifyStatus(detailData.verifying.uid)" type="primary">查看详情</el-link>
  28. </el-col>
  29. </el-row>
  30. <el-divider></el-divider>
  31. <el-row>
  32. <el-col :span="19">
  33. 基本信息
  34. </el-col>
  35. </el-row>
  36. <el-divider></el-divider>
  37. <el-row>
  38. <el-col :span="2">
  39. <el-image
  40. style="width: 50px; height: 50px"
  41. :src="detailData.companyInfo.base.logo"
  42. :fit="fit"></el-image>
  43. </el-col>
  44. <el-col :span="22">
  45. {{detailData.companyInfo.applyInfo.name}}
  46. <br>
  47. </el-col>
  48. </el-row>
  49. <br>
  50. <el-row>
  51. <el-col :span="2">
  52. 企业联系人
  53. </el-col>
  54. <el-col :span="22">
  55. </el-col>
  56. </el-row>
  57. <br>
  58. <el-row>
  59. <el-col :span="2">
  60. 联系方式
  61. </el-col>
  62. <el-col :span="22">
  63. {{detailData.companyInfo.applyInfo.phone}}
  64. </el-col>
  65. </el-row>
  66. <br>
  67. <el-row>
  68. <el-col :span="2">
  69. 职位
  70. </el-col>
  71. <el-col :span="22">
  72. </el-col>
  73. </el-row>
  74. <br>
  75. <el-row>
  76. <el-col :span="2">
  77. 企业介绍
  78. </el-col>
  79. <el-col :span="22">
  80. {{detailData.companyInfo.description}}
  81. </el-col>
  82. </el-row>
  83. <el-divider></el-divider>
  84. <el-row style=" box-shadow: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .04)">
  85. <el-row style="padding: 5px">
  86. 该企业已认证解决方案
  87. </el-row>
  88. <el-row v-for="item in detailData.verifyList" :key="item.id" style="padding: 10px; box-shadow: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .04)">
  89. <el-col :span="3">
  90. <el-image
  91. style="width: 100px; height: 100px"
  92. :src="item.images"
  93. :fit="fit"></el-image>
  94. </el-col>
  95. <el-col :span="15">
  96. <h3>{{item.title}}</h3>
  97. <br>
  98. <p>方案简介:{{item.description}}</p>
  99. <p>成功案例:{{item.successful_case_list}}</p>
  100. </el-col>
  101. <el-col :span="6">
  102. <p>当前状态 <el-button size="mini">{{item.status}}</el-button></p>
  103. <br>
  104. <p>
  105. 修改状态
  106. <el-button size="mini" @click="updateStatus(item)" type="info">不通过 </el-button>
  107. </p>
  108. </el-col>
  109. </el-row>
  110. </el-row>
  111. <br>
  112. <div v-if="detailData.verifying.id">
  113. <el-row style=" box-shadow: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .04)"
  114. >
  115. <el-row style="padding: 5px">
  116. 当前申请认证解决方案
  117. </el-row>
  118. <el-row style="padding: 10px; box-shadow: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .04)">
  119. <el-col :span="3">
  120. <el-image
  121. style="width: 100px; height: 100px"
  122. :src="detailData.verifying.images"
  123. :fit="fit"></el-image>
  124. </el-col>
  125. <el-col :span="15">
  126. <h3>{{detailData.verifying.title}}</h3>
  127. <br>
  128. <p>方案简介:{{detailData.verifying.description}}</p>
  129. <p>成功案例:{{detailData.verifying.successful_case_list}}</p>
  130. </el-col>
  131. <el-col :span="6">
  132. <p>当前状态:{{detailData.verifying.status}}</p>
  133. </el-col>
  134. </el-row>
  135. </el-row>
  136. <br>
  137. <el-row>
  138. <el-radio @change="refuse()" v-model="radio" label="3">拒绝</el-radio>
  139. <el-radio @change="pass()" v-model="radio" label="2">通过</el-radio>
  140. </el-row>
  141. <br>
  142. <el-row>
  143. <h4 style="border-bottom: solid 1px brown">邮件内容</h4>
  144. <el-row v-if="show" id="emailRefuseInfo">
  145. <p>Hi,{{detailData.verifying.nickname}},您好!</p>
  146. <p>谢谢您的申请</p>
  147. <p>您的解决方案 {{detailData.verifying.title}} 暂时不符合我们的认证标准,主要原因是:</p>
  148. <el-input v-model="reason" placeholder="请输入内容"></el-input>
  149. <p>您可以满足以上要求后,继续申请认证.</p>
  150. <p>谢谢您的支持!</p>
  151. <p>程序员客栈敬上:)</p>
  152. </el-row>
  153. <el-row v-else id="emailPassInfo">
  154. <p>Hi,{{detailData.verifying.nickname}},您好!</p>
  155. <p>恭喜您的解决方案 {{detailData.verifying.title}} 通过审核!</p>
  156. <p>谢谢您的支持!</p>
  157. <p>程序员客栈敬上:)</p>
  158. </el-row>
  159. <br>
  160. <el-button @click="sendEmail(detailData.verifying)" size="mini" type="primary">确定并发送邮件</el-button>
  161. </el-row>
  162. </div>
  163. <br>
  164. <el-row style="border-bottom: solid 3px green">
  165. 审核记录
  166. </el-row>
  167. <br>
  168. <el-row v-for="item in detailData.audit_record" :key="item.id" style=" box-shadow: 0 2px 4px #ccc, 0 0 6px #ccc">
  169. <el-col :span="18" ><h4 style="border-bottom: solid 1px brown;padding: 10px">{{item.status_name}}</h4></el-col>
  170. <el-col :span="6" ><p style="border-bottom: solid 1px brown;padding: 10px">{{item.nickname}} {{item.audit_time}}</p></el-col>
  171. <p style="padding: 10px">邮件内容</p>
  172. <div v-html="item.audit_data" style="background-color: #ccc;padding: 10px">
  173. {{item.audit_data}}
  174. </div>
  175. </el-row>
  176. </div>
  177. </template>
  178. <script>
  179. export default {
  180. data() {
  181. return {
  182. id: '',
  183. detailData: '',
  184. radio: '3',
  185. reason:'',
  186. company_verify_status: '未认证',
  187. show:true
  188. }
  189. },
  190. mounted() {
  191. this.id = this.$route.query.id
  192. this.getDetail()
  193. },
  194. methods: {
  195. async getDetail() {
  196. const id = this.id;
  197. const page = 1;
  198. const data = {
  199. id,
  200. page
  201. }
  202. let res = await this.$post("/api/admin/kaifawu/getDetail", data);
  203. if (res && res.status === 1) {
  204. res.data.verifying = res.data.verifying || {}
  205. this.detailData = res.data
  206. switch(this.detailData.companyInfo.applyInfo.status){
  207. case '0':
  208. this.company_verify_status = '未申请';
  209. break;
  210. case '1':
  211. this.company_verify_status = '申请中';
  212. break;
  213. case '2':
  214. this.company_verify_status = '通过';
  215. break;
  216. case '3':
  217. this.company_verify_status = '拒绝';
  218. break;
  219. }
  220. }
  221. },
  222. async userinfo(uid){
  223. let url = window.location.href;
  224. if(url.indexOf('dev')!=-1){
  225. window.open(`https://dev.test.proginn.com/rooter/user/${uid}`)
  226. } else if(url.indexOf('local')!=-1){
  227. window.open(`http://local.proginn.com/rooter/user/${uid}`)
  228. } else {
  229. window.open(`https://proginn.com/rooter/user/${uid}`)
  230. }
  231. },
  232. async woinfo(uid){
  233. let url = window.location.href;
  234. if(url.indexOf('dev')!=-1){
  235. window.open(`https://dev.test.proginn.com/wo/${uid}`)
  236. } else if(url.indexOf('local')!=-1){
  237. window.open(`http://local.proginn.com/wo/${uid}`)
  238. } else {
  239. window.open(`https://proginn.com/wo/${uid}`)
  240. }
  241. },
  242. async returnPage(){
  243. let url = window.location.href;
  244. window.open(`/main/solution/`,'_self')
  245. },
  246. async companyVerifyStatus(uid){
  247. let url = window.location.href;
  248. if(url.indexOf('dev')!=-1){
  249. window.open(`https://dev.test.proginn.com/rooter/companyVerifyAuditItem?uid=${uid}`)
  250. } else if(url.indexOf('local')!=-1){
  251. window.open(`http://local.proginn.com/rooter/companyVerifyAuditItem?uid=${uid}`)
  252. } else {
  253. window.open(`https://proginn.com/rooter/companyVerifyAuditItem?uid=${uid}`)
  254. }
  255. },
  256. async updateStatus(item){
  257. const result = 3;
  258. const auditData = '您的解决方案'+item.title+'审核被拒绝!';
  259. const data ={
  260. 'id':item.id,
  261. result,
  262. auditData
  263. };
  264. let res = await this.$post("/api/admin/kaifawu/auditProvider", data);
  265. if (res && res.status === 1){
  266. this.$message({
  267. message: '修改成功!',
  268. type: 'success'
  269. });
  270. this.getDetail()
  271. }
  272. },
  273. async sendEmail(item){
  274. const result = this.radio;
  275. let auditData = '';
  276. auditData = this.reason;
  277. if(this.show&&(this.reason.length==0)){
  278. this.$message({
  279. message: '请输入拒绝原因!',
  280. type: 'warning'
  281. });
  282. return false;
  283. }
  284. const data ={
  285. 'id':item.id,
  286. result,
  287. auditData
  288. };
  289. let res = await this.$post("/api/admin/kaifawu/auditProvider", data);
  290. if (res && res.status === 1){
  291. this.$message({
  292. message: '修改成功!',
  293. type: 'success'
  294. });
  295. this.getDetail()
  296. }
  297. },
  298. async refuse(){
  299. this.show = true;
  300. },
  301. async pass(){
  302. this.show = false;
  303. },
  304. }
  305. }
  306. </script>
  307. <style lang="scss" scoped>
  308. .header {
  309. display: flex;
  310. }
  311. .title-wrapper {
  312. display: flex;
  313. align-items: center;
  314. }
  315. .title {
  316. line-height: 27px;
  317. font-weight: bold;
  318. font-size: 18px;
  319. color: #101010;
  320. }
  321. .status {
  322. margin-left: 6px;
  323. line-height: 20px;
  324. font-size: 14px;
  325. }
  326. .salary {
  327. margin-top: 13px;
  328. line-height: 24px;
  329. font-size: 16px;
  330. color: #101010;
  331. }
  332. .skill {
  333. margin-top: 8px;
  334. line-height: 24px;
  335. font-size: 16px;
  336. color: #101010;
  337. }
  338. .experience {
  339. margin-top: 8px;
  340. line-height: 24px;
  341. font-size: 16px;
  342. color: #101010;
  343. }
  344. .owner-wrapper {
  345. margin-left: 100px;
  346. text-align: center;
  347. }
  348. .owner-img {
  349. width: 53px;
  350. height: 53px;
  351. border-radius: 50%;
  352. }
  353. .owner-name {
  354. margin-top: 8px;
  355. line-height: 20px;
  356. font-size: 14px;
  357. color: #3F51B5;
  358. }
  359. .description-wrapper {
  360. margin-top: 22px;
  361. }
  362. .description-title {
  363. line-height: 27px;
  364. font-weight: bold;
  365. font-size: 18px;
  366. color: #101010;
  367. }
  368. .description-content {
  369. margin-top: 16px;
  370. line-height: 24px;
  371. font-size: 16px;
  372. color: #101010;
  373. }
  374. </style>