ccf пре 3 година
родитељ
комит
702224d050

+ 33 - 833
pages/otherpage/companyComplete/add.vue

@@ -1,5 +1,5 @@
 <template>
-  <div class="lenrn_content" style="margin: 20px 0 30px !important">
+  <div class="lenrn_content">
     <el-container>
       <el-container>
         <el-container>
@@ -13,291 +13,36 @@
             <el-divider></el-divider>
           </el-header>
           <el-main>
-            <el-form v-if="active==1" style="margin-top: 60px" ref="form" label-width="80px">
-              <div class="text-content">
-                <div class="title">1、技术服务商认证的优势?</div>
-                <p class="desc">整包类型项目绝对优先派单给认证后的团队。</p>
-                <p class="desc">客栈有大量中大型整包业务,需要技术服务团队的支持。</p>
-                <div class="m40"></div>
-                <div class="title">2、认证面向谁?</div>
-                <p class="desc">需要以团队身份接单的用户,比如技术外包开发公司/工作室、SaaS产品及定制化服务公司等。</p>
-                <div class="m40"></div>
-                <div class="title">3、认证的条件要求?</div>
-                <p class="desc">必须为企业法人单位,且注册资金不低于20万。</p>
-                <div class="m40"></div>
-                <div class="title">4、认证后还需要签约嘛?</div>
-                <p class="desc">不用再签约即可接单。</p>
-                <div class="m40"></div>
-                <p class="tips">准确的企业信息是与客户建立信任感的桥梁</p>
-                <div class="m40"></div>
-                <p class="tips">主体信息登记
-                  <span v-if="company_info.status==1" style="color: red">(审核中)</span>
-                  <span v-if="company_info.status==2" style="color: #67C23A">(审核通过)</span>
-                  <span v-if="company_info.status==3" style="color: red">(已拒绝)</span>
-                </p>
-                <div class="m40"></div>
-                <el-form-item label="公司名称" style="max-width: 400px">
-                  <el-input  :disabled="company_info.status!=2?false:true" show-word-limit maxlength="30" v-model="company_info.name"></el-input>
-                </el-form-item>
-                <el-form-item label="营业执照">
-                  <div class="common-upload">
-                    <el-upload
-                      class="avatar-uploader"
-                      :disabled="company_info.status!=2?false:true"
-                      action="/upload_image"
-                      :show-file-list="false"
-                      :on-success="(response, file, fileList)=> upload_img_success(response, file, fileList,1)">
-                      <img v-if="company_info.photo_url" :src="company_info.photo_url" class="avatar">
-                      <i v-else class="el-icon-plus avatar-uploader-icon" style="border-radius: 6px;border: 1px dashed #d9d9d9;height: 178px;line-height: 178px;width: 178px"></i>
-                    </el-upload>
-                  </div>
-                </el-form-item>
-                <el-form-item>
-                  <el-button v-if="company_info.status==2" @click="active_set(2,false)" type="primary">下一步</el-button>
-                  <el-button v-if="company_info.status!=2" @click="active_set(2,false)" type="primary">保存企业信息</el-button>
-                </el-form-item>
-              </div>
-            </el-form>
-
-            <el-form v-if="active==2" style="margin-top: 60px" ref="form" label-width="80px">
-              <el-drawer
-                title="添加解决方案"
-                :size="solution_add_size"
-                :append-to-body="true"
-                :modal-append-to-body="true"
-                :wrapperClosable="false"
-                :visible.sync="drawer"
-                :direction="direction"
-                :destroy-on-close="true">
-                <solution_add @service_provider="service_provider" :lastId="solution_id"></solution_add>
-              </el-drawer>
-
-              <div class="text-content">
-                <div  v-for="item in service_provider_data" class="solution_item">
-                  <img :src="item.images"/>
-                  <div style="display: flex;flex-direction: column;flex: 1">
-                    <div class="title-box">
-                        <div class="title">{{item.title}}</div>
-                        <span>{{item.status_text}}</span>
-                    </div>
-                    <div class="desc">
-                      {{item.description}}
-                    </div>
-                    <div class="flex-1"></div>
-                    <div class="edit">
-                        <span @click="solution_add(item.id)">编辑</span>
-                        <span @click="delete_provider(item.id)">删除</span>
-                    </div>
-                  </div>
-                </div>
-
-                <el-form-item>
-                  <el-button @click="solution_add(0)" type="primary">添加解决方案</el-button>
-                  <el-button @click="active_set(2,false)" type="primary">下一步</el-button>
-                </el-form-item>
-              </div>
-            </el-form>
-
-            <el-form v-if="active==3" style="margin-top: 60px" ref="form"  label-width="80px">
-              <el-form-item label="视频封面">
-                <div class="common-upload">
-                  <el-upload
-                    class="avatar-uploader"
-                    action="/upload_image"
-                    :show-file-list="false"
-                    :on-success="(response, file, fileList)=> upload_img_success(response, file, fileList,3)">
-                    <img v-if="saleInfo.video_img" :src="saleInfo.video_img" class="avatar">
-                    <i v-else class="el-icon-plus avatar-uploader-icon" style="border-radius: 6px;border: 1px dashed #d9d9d9;height: 178px;line-height: 178px;width: 178px"></i>
-                  </el-upload>
-                  <div class="look-img">
-                    <div class="text-hover">
-                      <span class="text">查看示意图</span>
-                      <div class="img">
-                        <img class="active-img2" src="@/assets/img/learn/video-add@2x.png"/>
-                      </div>
-                    </div>
-                  </div>
-                </div>
-              </el-form-item>
-              <el-form-item  label="章节管理">
-                <div v-for="(item,index) in video_list" :key="item.id">
-                  <el-input style="margin-top: 10px" placeholder="请输入内容" v-model="item.video_name">
-                    <template slot="prepend">第{{index+1}}章</template>
-                    <el-button slot="append" @click="del_zj(index,item.id)" icon="el-icon-delete"></el-button>
-                  </el-input>
-
-                  <div v-for="(item2,index2) in item.list" :key="item2.id" style="background: #f6f6f6;padding: 10px;margin-top: 10px">
-                    <el-input style="margin-top: 10px" placeholder="请输入课程名称" v-model="item2.video_name" class="input-with-select">
-                      <div slot="prepend" style="width: 120px;text-align: center">{{index+1}}-{{index2+1}}</div>
-                      <el-checkbox slot="append" style="margin-right: 15px" v-model="item2.checked">试看</el-checkbox>
-                      <el-button slot="append"  @click="del_kc(index,index2,item2.id)" icon="el-icon-delete"></el-button>
-                    </el-input>
-                    <div style="padding-top: 10px;padding-bottom: 10px">
-                      <el-upload
-                        class="upload-demo"
-                        style="display: inline-block"
-                        action=""
-                        :show-file-list="false"
-                        :http-request="(e)=> fileChange(e,index,index2)">
-                        <el-button size="small" type="primary">点击上传</el-button>
-                      </el-upload>
-                      <div class="file-upload" style="margin-top: 10px">
-                        <el-progress :text-inside="true" :stroke-width="20" :percentage="item2.progress"></el-progress>
-                      </div>
-                    </div>
-                  </div>
-
-                  <div style="background: #f6f6f6;padding: 10px;margin-top: 10px;text-align:center">
-                    <el-button @click="add_new_kc(index)" :disabled="kc_disabled" type="primary">添加新的课程</el-button>
-                    <el-button @click="add_new_zj()" :disabled="zj_disabled" type="primary">添加新的章节</el-button>
-                  </div>
-                </div>
-
-              </el-form-item>
-              <el-form-item>
-                <el-button @click="active_set(2,true)" type="primary">上一步</el-button>
-                <el-button @click="active_set(4,false)" type="primary">下一步</el-button>
-              </el-form-item>
-            </el-form>
-
-            <el-form v-if="active==4" style="margin-top: 60px" ref="form"  label-width="80px">
-              <el-form-item style="display: none" label="群二维码">
-                <el-upload
-                  class="avatar-uploader"
-                  action="/upload_image"
-                  :show-file-list="false"
-                  :on-success="(response, file, fileList)=> upload_img_success(response, file, fileList,4)">
-                  <img v-if="saleInfo.ewm" :src="saleInfo.ewm" class="avatar">
-                  <i v-else class="el-icon-plus avatar-uploader-icon" style="border-radius: 6px;border: 1px dashed #d9d9d9;height: 178px;line-height: 178px;width: 178px"></i>
-                </el-upload>
-              </el-form-item>
-              <el-form-item label="公告栏">
-                <div class="content-field">
-                  <div class="content-editor">
-                    <editor
-                      :hideImage="false"
-                      :content="saleInfo.notice_msg"
-                      @change="(val)=> editor_change(val,3)"
-                      placeholder="公告栏用于发布课程通知,常见用于课件下载等信息。"></editor>
-                  </div>
-                </div>
-              </el-form-item>
-              <el-form-item>
-                <el-button @click="active_set(3,true)" type="primary">上一步</el-button>
-                <el-button @click="active_set(5,false)" type="primary">确认提交</el-button>
-              </el-form-item>
+            <el-form  style="padding: 20px">
+              <company @active_set="active_set" v-if="active==1"></company>
+              <solution_list @active_set="active_set" v-if="active==2"></solution_list>
+              <money v-if="active==3"></money>
             </el-form>
           </el-main>
         </el-container>
       </el-container>
     </el-container>
-
-    <!-- vueCropper 剪裁图片实现-->
-    <el-dialog title="图片剪裁" :visible.sync="dialogVisible" append-to-body>
-      <div class="cropper-content">
-        <div class="cropper" style="text-align:center">
-          <vueCropper
-            ref="cropper"
-            :img="option.img"
-            :outputSize="option.size"
-            :outputType="option.outputType"
-            :info="true"
-            :full="option.full"
-            :canMove="option.canMove"
-            :canMoveBox="option.canMoveBox"
-            :original="option.original"
-            :autoCrop="option.autoCrop"
-            :fixed="option.fixed"
-            :fixedNumber="option.fixedNumber"
-            :centerBox="option.centerBox"
-            :infoTrue="option.infoTrue"
-            :fixedBox="option.fixedBox"
-          ></vueCropper>
-        </div>
-      </div>
-      <div slot="footer" class="dialog-footer">
-        <el-button @click="dialogVisible = false">取 消</el-button>
-        <el-button type="primary" @click="finish">确认</el-button>
-      </div>
-    </el-dialog>
   </div>
 </template>
 
 <script>
   import { mapState } from "vuex";
-  import editor from "@/components/editor";
-  import solution_add from "@/components/company/solution_add";
-  import multiUploader from '@/components/multi-uploader';
-
-  if(process.client)
-  {
-    import('@/assets/js/aliyun-upload-sdk/aliyun-upload-sdk-1.5.2.min.js');
-  }
+  import money from "./add/money";
+  import company from "./add/company";
+  import solution_list from "./add/solution_list";
 
   export default {
     head: {
-      title: '新建咨询服务',
-    },
-    head() {
-      return {
-        script: [
-          {src: 'https://gosspublic.alicdn.com/aliyun-oss-sdk-6.13.0.min.js'},
-        ]
-      }
+      title: '技术服务商认证',
     },
     components: {
-      editor,
-      multiUploader,
-      solution_add
+      money,
+      company,
+      solution_list
     },
     data () {
       return {
-        sale_id: '', // 编辑时
-        drawer: false,
-        direction: 'rtl',
-        kc_disabled:false,
-        zj_disabled:false,
-        active:2,
-        selectedConsultCate: [],//选中的技能分类
-        consultCate: [], // 技能分类数据源
-        saleInfo:{
-          point:"1",
-          pricetype:"1",
-          img_icon:"",
-          video_img:"",
-          ewm:"",
-          desc:"",
-          price: '0.00',
-          yprice: '0.00'
-        },
-        dialogVisible: false,
-        // 裁剪组件的基础配置option
-        option: {
-          img: '', // 裁剪图片的地址
-          type:'',//类型
-          info: true, // 裁剪框的大小信息
-          outputSize: 1, // 裁剪生成图片的质量
-          outputType: 'jpeg', // 裁剪生成图片的格式
-          canScale: false, // 图片是否允许滚轮缩放
-          autoCrop: true, // 是否默认生成截图框
-          // autoCropWidth: 300, // 默认生成截图框宽度
-          // autoCropHeight: 200, // 默认生成截图框高度
-          fixedBox: true, // 固定截图框大小 不允许改变
-          fixed: true, // 是否开启截图框宽高固定比例
-          fixedNumber: [16, 9], // 截图框的宽高比例
-          full: true, // 是否输出原图比例的截图
-          canMoveBox: false, // 截图框能否拖动
-          original: false, // 上传图片按照原始比例渲染
-          centerBox: false, // 截图框是否被限制在图片里面
-          infoTrue: true // true 为展示真实输出图片宽高 false 展示看到的截图框宽高
-        },
-        teacherInfo:{
-          img:""
-        },
-        company_info:{},//公司信息
-        solution_add_size:"700px",
-        service_provider_data:[],
-        solution_id:0,
+        active:1,
       }
     },
     computed: {
@@ -305,583 +50,38 @@
     },
     mounted () {
       this.needLogin();
-      this.getCompanyInfo();
-      this.service_provider();
-      if (this.deviceType.ios || this.deviceType.android)
-      {
-        this.solution_add_size="100%";
-      }
-      var sale_id = this.$route.query.id ? this.$route.query.id : 0;
-      this._getConsultCate()
-      if (sale_id!=0) {
-        this.sale_id=sale_id;
-        this.getDetail();
-      }
-      if (this.saleInfo.price > 0)
-      {
-        this.saleInfo.pricetype="2";
-      }
-      else
-      {
-        this.saleInfo.pricetype="1";
-      }
     },
     methods: {
-      async delete_provider(id)
-      {
-        let res=await this.$axios.post('/api/kaifawu/delete_provider',{id:id});
-        this.service_provider();
-      },
-      async service_provider()//解决方案列表
-      {
-        this.drawer=false;
-        let res=await this.$axios.post('/uapi/pub/list/company/service_provider/my_list');
-        this.service_provider_data=res.data.data;
-      },
-      solution_add(id){
-        this.drawer=true;
-        this.solution_id=id;
-      },
-      // 点击裁剪,这一步是可以拿到处理后的地址
-      finish() {
-        this.$refs.cropper.getCropBlob((data) => {
-          console.log("裁剪",data)
-          let formData = new FormData();
-          formData.append("file", data);
-          this.$axios.$post('/upload_image', formData,{
-            headers: {
-              "Content-Type": "multipart/form-data"
-            }
-          }).then(res => {
-            this.dialogVisible = false
-            this.type=0;
-            if(this.option.type==1)
-            {
-              this.saleInfo.img_icon=res.filename;
-            }
-            else if(this.option.type==2)
-            {
-              this.teacherInfo.img=res.filename;
-            }
-            else if(this.option.type==3)
-            {
-              this.saleInfo.video_img=res.filename;
-            }
-          }).catch(err => {
-
-          })
-        })
-      },
-      add_new_zj(){
-        this.add_three(2);
-      },
-      add_new_kc(zj_id){
-        this.add_three(3,0,zj_id);
-      },
-      del_kc(zj_id,kc_id,id){
-        /*for(var i=0;i<this.video_list.length;i++)
-        {
-          for(var j=0;j<this.video_list[i].list.length;j++)
-          {
-            if(zj_id==i && kc_id==j)
-            {
-              this.video_list[i].list.splice(j,1);
-            }
-          }
-        }*/
-        this.$axios.$post('/api/sale/del_video', { sale_id: this.sale_id,id:id}).then(res => {
-          if (res.status === 1) {
-            this.video_list=res.data;
-          }
-        }).catch(err => {
-
-        })
-      },
-      del_zj(zj_id,id){
-        if(this.video_list.length==1){
-          this.$message.error('已经是最后一个章节了不能删除了')
-          return false
-        }
-       /* for(var i=0;i<this.video_list.length;i++)
-        {
-          if(zj_id==i)
-          {
-            this.video_list.splice(i,1);
-          }
-        }*/
-        this.$axios.$post('/api/sale/del_video', { sale_id: this.sale_id, id}).then(res => {
-          if (res.status === 1) {
-            this.video_list=res.data;
-          }
-        }).catch(err => {
-
-        })
-      },
-      active_set(val,return_=true){
-        if(return_)
-        {
-          this.active=val;
-          return;
-        }
-        if(val==2)
-        {
-          this.saleInfo.cate_id_one=this.saleInfo.cate_id;
-          this.saleInfo.cate_id_two=0;
-          this.add_one();
-        }
-        else if(val==3)
-        {
-           this.add_two();
-        }
-        else if(val==4)
-        {
-          this.add_three();//效验课程数据
-        }
-        else if(val==5)
-        {
-          this.add_fore();//提交审核
-        }
-        else
-        {
-          this.active=val;
-        }
-      },
-      upload_img_success(res, file, fileList,type){
-        if(type==1)
-        {
-          this.company_info.photo_url=res.filename;
-        }
-        else if(type==2)
-        {
-          let filename=res.filename;
-          // 上传成功后将图片地址赋值给裁剪框显示图片
-          this.$nextTick(() => {
-            this.option.img =filename;
-            this.option.fixedNumber=[100,100]
-            this.option.type=type;
-            this.dialogVisible = true
-          })
-        }
-        else if(type==3)
-        {
-          let filename=res.filename;
-          // 上传成功后将图片地址赋值给裁剪框显示图片
-          this.$nextTick(() => {
-            this.option.img =filename;
-            this.option.fixedNumber=[7,5]
-            this.option.type=type;
-            this.dialogVisible = true
-          })
-        }
-        else if(type==4)
-        {
-          this.saleInfo.ewm=res.filename;
-        }
-      },
-      editor_change(val,type)//编辑器内容发生改变的时候
-      {
-        if(type==1) {
-          this.saleInfo.content = val;
-        }
-        else if(type==2) {
-          this.teacherInfo.content = val;
-        }
-        else if(type==3) {
-          this.saleInfo.notice_msg = val;
-        }
-      },
-      fileChange (e,zj_id,kc_id) {
-        let videoFile = e.file
-        let filename=e.file.name;
-        this.createUploader(videoFile,zj_id,kc_id,filename)
-      },
-      createUploader (videoFile,zj_id,kc_id,filename) {
-        let self = this
-        let uploader = new AliyunUpload.Vod({
-          timeout: 60000,
-          partSize: 1048576,
-          parallel: 5,
-          retryCount: 3,
-          retryDuration: 2,
-          region: 'cn-shanghai',
-          userId: '1024',
-          // 添加文件成功
-          addFileSuccess: function (uploadInfo) {
-            self.statusText = '添加文件成功, 等待上传...'
-            console.log("addFileSuccess: " + uploadInfo.file.name)
-          },
-          // 开始上传
-          onUploadstarted: function (uploadInfo) {
-            self.$axios.$post("/api/sale/video", {filename: uploadInfo.file.name}).then(({data}) => {
-              let uploadAuth = data.UploadAuth;
-              let uploadAddress = data.UploadAddress;
-              let videoId = data.VideoId;
-              self.videoId = data.VideoId;
-              self.video_list[zj_id].list[kc_id].temp_video_id=videoId;
-              self.video_list[zj_id].list[kc_id].video_name=data.filename;
-              uploader.setUploadAuthAndAddress(uploadInfo, uploadAuth, uploadAddress, videoId)
-            })
-            self.statusText = '文件开始上传...'
-            console.log("onUploadStarted:" + uploadInfo.file.name + ", endpoint:" + uploadInfo.endpoint + ", bucket:" + uploadInfo.bucket + ", object:" + uploadInfo.object)
-          },
-          // 文件上传成功
-          onUploadSucceed: function (uploadInfo) {
-            //self.video_list[zj_id].list[kc_id].video_id= self.video_list[zj_id].list[kc_id].temp_video_id;
-            //self.add_three(4);//保存课程
-          },
-          // 文件上传进度,单位:字节, 可以在这个函数中拿到上传进度并显示在页面上
-          onUploadProgress: function (uploadInfo, totalSize, progress) {
-            let progressPercent = Math.ceil(progress * 100)
-            self.video_list[zj_id].list[kc_id].progress=progressPercent;
-            self.video_list[zj_id].list[kc_id].video_id= self.video_list[zj_id].list[kc_id].temp_video_id;
-          },
-        })
-        uploader.addFile(videoFile);
-        uploader.startUpload();//上传文件
-      },
-      /** 获取咨询分类 */
-      async _getConsultCate () {
-        this.$axios.$post('/api/sale/cateListYes', { type: 4, point: 1 }).then(res => {
-          if (res.status === 1) {
-            let consultCate = res.data || []
-            this.consultCate = consultCate.map(item => {
-              let children = item.child_list.map(child => {
-                return {
-                  value: child.category_id,
-                  label: child.name
-                }
-              })
-              return {
-                value: item.category_id,
-                label: item.name,
-                children: children
-              }
-            })
-          }
-        }).catch(err => {
-          console.log('get consult cate error: ', err)
-        })
-      },
-      async getCompanyInfo(){
-        let res=await this.$axios.post('/uapi/pub/info/company/verify_company/info');
-        this.company_info=res.data.data;
-      },
-      /** 第一步添加 */
-      async add_one() {
-        if (this.company_info.status == 2)
-        {
-          this.active = 2;
-          return ;
-        }
-        let res=await this.$axios.post('/api/remote/save_company_verify_apply',this.company_info);
-        if(res.data.status==1)
-        {
-          this.active = 2;
-        }
-      },
-      /** 第二步添加 */
-      async add_two() {
-        this.active=3;
-      },
-      /** 第三步添加 */
-      async add_three(type=1,kc_id=0,zj_id=0) {
-        this.active=4;
-      },
-      /** 第四步添加 */
-      async add_fore() {
-        var video_list=JSON.stringify(this.video_list);
-        var saleInfo=JSON.stringify(this.saleInfo);
-        await this.$axios.$post('/api/sale/sale_add_fore', {sale_id:this.sale_id, video_list, saleInfo}).then(res => {
-          if (res.status === 1) {
-            this.$message.success('我们已经收到您的审核提交,请耐心等待');
-            location.href = `/workbench/learn/index`
-          }
-        }).catch(err => {
-
-        })
-      },
-      /** 课程添加 */
-      async add_video() {
-        this.kc_disabled=true;
-        this.zj_disabled=true;
-        var data=JSON.stringify(this.video_list);
-        await this.$axios.$post('/api/sale/sale_add_video', { data,sale_id:this.sale_id}).then(res => {
-          if (res.status === 1) {
-            this.video_list=res.data;
-          }
-          this.kc_disabled=false;
-          this.zj_disabled=false;
-        }).catch(err => {
-          this.kc_disabled=false;
-          this.zj_disabled=false;
-        })
-      },
-      /** 课程添加 */
-      async getDetail() {
-        await this.$axios.$post('/api/sale/info', {sale_id:this.sale_id}).then(res => {
-          if (res.status === 1) {
-            if(res.data.video.length>0)
-            {
-              this.video_list=res.data.video;
-            }
-            this.saleInfo=res.data.sale;
-            this.teacherInfo=res.data.teacher;
-            this.selectedConsultCate = [res.data.sale.cate_id_one, res.data.sale.cate_id_two]
-          }
-        }).catch(err => {
-
-        })
+      active_set(val){
+        this.active=val;
       },
     }
   }
 </script>
-
-<style scope lang="scss">
-  @import "@/assets/css/consult/create.scss";
-  /*1.显示滚动条:当内容超出容器的时候,可以拖动:*/
-  .el-drawer__body {
-    overflow: auto;
-    /* overflow-x: auto; */
+<style lang="scss" scoped>
+  .lenrn_content{
+    max-width: 1000px;
+    width:100%;
+    margin: 0px auto;
+    background: white;
   }
-
-  /*2.隐藏滚动条,太丑了*/
-  .el-drawer__container ::-webkit-scrollbar {
-    display: none;
+  .el-form{
+    margin-top: 20px;
   }
-  .common-upload {
-    display: flex;
-    align-items: end;
-    .look-img {
-      margin-left: 14px;
-      .text {
-        font-size: 14px;
-        font-family: PingFangSC, PingFangSC-Medium;
-        font-weight: 500;
-        color: #308eff;
-        cursor: pointer;
-      }
-      .text-hover:hover {
-        position: relative;
-        .img {
-          display: block;
-        }
-      }
-      .img {
-        background: #fff;
-        border: 1px solid #e0e5ed;
-        box-shadow: 0px 2px 20px 0px rgba(22,40,63,0.15);
-        border-radius: 10px;
-        text-align: center;
-        position: relative;
-        position: absolute;
-        top: -120px;
-        left: 0;
-        width: 300px;
-        height: 120px;
-        display: none;
-        transition: all ease .3s;
-        .active-img2 {
-          width: 234px;
-          height: 71px;
-          background-size: cover;
-          overflow: hidden;
-          margin-top: 24px;
-        }
-        .active-img1 {
-          width: 262px;
-          height: 78px;
-          background-size: cover;
-          overflow: hidden;
-          margin-top: 22px;
-        }
-      }
-      .img:after {
-        content: '';
-        width: 0;
-        height: 0;
-        border-right: 10px solid transparent;
-        border-bottom: 10px solid transparent;
-        border-top: 10px solid #e0e5ed;
-        border-left: 10px solid transparent;
-        position: absolute;
-        left: 24px;
-        bottom: -20px;
-      }
-      .img:before {
-        content: '';
-        width: 0;
-        height: 0;
-        border-right: 9px solid transparent;
-        border-bottom: 9px solid transparent;
-        border-top: 9px solid #fff;
-        border-left: 9px solid transparent;
-        position: absolute;
-        left: 25px;
-        bottom: -18px;
-        z-index: 1;
-      }
+  @media screen and (max-width: 400px) {
+    .el-form-item__label{
+      text-align: left;
     }
   }
 </style>
-<style>
-  .el-select .el-input {
-    width: 130px;
-  }
-  .avatar-uploader img{max-width: 200px}
-  .input-with-select .el-input-group__prepend {
-    background-color: #fff;
-  }
-  .lenrn_content{max-width: 1000px;width:100%;margin: 0px auto;background: white}
-  input::-webkit-outer-spin-button,
-  input::-webkit-inner-spin-button {
-    -webkit-appearance: none !important;
-  }
-  input[type="number"]{
-    -moz-appearance: textfield !important;
-  }
-  .el-form-item__content .content-field span{line-height: normal}
-  .cropper-content{
-    width: 100%;
-    height: 300px;
-  }
-  .cropper {
-    width: 100%;
-    height: 240px;
-  }
-  .btnGroup{
-    float: right;
-    margin-top: 10px;
-    margin-right: 15px;
-  }
-</style>
-<style lang="scss">
-  // 编辑器样式
-  .content-editor {
-    .my-editor {
-      .ql-snow {
-        border: 1px solid #d7dfe8 !important;
-        border-radius: 3px 3px 0 0 !important;
-      }
-      .quill-editor {
-        border-width: 1px !important;
-        border-top: 0 !important;
-        border-color: #d7dfe8 !important;
-        border-radius: 0 0 3px 3px !important;
-      }
-    }
-  }
-  // 图片上传器样式
-  .consult-image-uploader {
-    .el-upload-list__item {
-      width: 300px !important;
-      height: 168.75px !important;
-      line-height: 168.75px !important;
-    }
-    .el-upload--picture-card {
-      width: 300px !important;
-      height: 168.75px !important;
-      line-height: 168.75px !important;
-      .el-upload-list__item-thumbnail {
-        object-fit: scale-down !important;
-      }
-    }
-    .el-upload-list--picture-card {
-      .el-upload-list__item-thumbnail {
-        object-fit: scale-down !important;
-      }
-    }
-  }
 
-  .text-content{
-    margin-left: 30px;
-    margin-bottom: 40px;
-    .title{
-      font-weight: bold;
-      font-size: 16px;
-      height: 30px;
-      line-height: 30px;
-    }
-    p{
-      font-size: 14px;
-      margin-top: 10px;
-      font-weight: bold;
-    }
-    .m40{
-      margin-top: 40px;
-    }
-
-    .tips{
-      color:#606266;
-    }
-  }
-
-  .solution_item{
-    display: flex;
-    border-bottom: 1px solid #ddd;
-    padding-bottom: 10px;
-    margin-bottom: 20px;
-    img{
-      width: 121px;
-      height: 90px;
-      border-radius: 15px;
-    }
-    .title-box{
-      margin-left: 10px;
-      display: flex;
-      justify-content: space-between;
-      .title{
-        overflow:hidden; //超出的文本隐藏
-        text-overflow:ellipsis; //溢出用省略号显示
-        white-space:nowrap; //溢出不换行
-        flex: 1;
-        margin-right: 10px;
-      }
-      span{
-        width: 70px;
-        text-align: right;
-        font-size: 14px;
-      }
-    }
-
-    .desc{
-      margin-left: 10px;
-      line-height: 25px;
-      font-size: 14px;
-      overflow: hidden;
-      text-overflow: ellipsis;
-      display:-webkit-box; //作为弹性伸缩盒子模型显示。
-      -webkit-box-orient:vertical; //设置伸缩盒子的子元素排列方式--从上到下垂直排列
-      -webkit-line-clamp:2; //显示的行
-    }
-    .flex-1{
-      flex: 1;
+<style>
+  @media screen and (max-width: 400px) {
+    .lenrn_content .el-step__title{
+      font-size: 12px !important;
     }
-    .edit{
-      margin-left: 10px;
-      font-size: 12px;
-      text-align: right;
-      color: #409EFF;
-      span{
-        margin-left: 20px;
-        cursor: pointer;
-      }
+    .lenrn_content .el-form-item__label{
+      text-align: left;
     }
-  }
-
-  @media screen and (max-width: 400px) {
-    .text-content{margin-left: 0px}
-    .el-step__title{font-size: 12px}
-    .el-form{margin-top: 0px !important}
-    .el-form-item__label{text-align: left}
-  }
-
-  .el-header_soltion{
-    height: auto !important;
-  }
-  .el-form{
-    margin-top: 0px !important;
-  }
-  .el-form-item__content{
-    margin-left: 0px !important;
-  }
+  };
 </style>

+ 194 - 0
pages/otherpage/companyComplete/add/company.vue

@@ -0,0 +1,194 @@
+<template>
+  <div class="docker">
+    <div class="title">1、技术服务商认证的优势?</div>
+    <p class="desc">整包类型项目绝对优先派单给认证后的团队。</p>
+    <p class="desc">客栈有大量中大型整包业务,需要技术服务团队的支持。</p>
+    <div class="m40"></div>
+    <div class="title">2、认证面向谁?</div>
+    <p class="desc">需要以团队身份接单的用户,比如技术外包开发公司/工作室、SaaS产品及定制化服务公司等。</p>
+    <div class="m40"></div>
+    <div class="title">3、认证的条件要求?</div>
+    <p class="desc">必须为企业法人单位,且注册资金不低于20万。</p>
+    <div class="m40"></div>
+    <div class="title">4、认证后还需要签约嘛?</div>
+    <p class="desc">不用再签约即可接单。</p>
+    <div class="m40"></div>
+    <p class="tips">准确的企业信息是与客户建立信任感的桥梁</p>
+    <div class="m40"></div>
+    <p class="tips">主体信息登记
+      <span v-if="company_info.status==1" style="color: red">(审核中)</span>
+      <span v-if="company_info.status==2" style="color: #67C23A">(审核通过)</span>
+      <span v-if="company_info.status==3" style="color: red">(已拒绝)</span>
+    </p>
+    <div class="m40"></div>
+    <el-form-item v-loading="loading"  label="公司名称" style="max-width: 400px">
+      <el-input  :disabled="company_info.status!=2?false:true" show-word-limit maxlength="30" v-model="company_info.name"></el-input>
+    </el-form-item>
+    <el-form-item v-loading="loading"  label="营业执照">
+      <div class="common-upload">
+        <el-upload
+          class="avatar-uploader"
+          :disabled="company_info.status!=2?false:true"
+          action="/upload_image"
+          :show-file-list="false"
+          :on-success="(response, file, fileList)=> upload_img_success(response, file, fileList,1)">
+          <img v-if="company_info.photo_url" :src="company_info.photo_url" class="avatar">
+          <i v-else class="el-icon-plus avatar-uploader-icon" style="border-radius: 6px;border: 1px dashed #d9d9d9;height: 178px;line-height: 178px;width: 178px"></i>
+        </el-upload>
+      </div>
+    </el-form-item>
+    <el-form-item>
+      <el-button  @click="save" type="primary">{{save_text}}</el-button>
+    </el-form-item>
+  </div>
+</template>
+
+<script>
+  export default {
+    data() {
+      return {
+        company_info:{},//公司信息
+        save_text:"下一步",
+        loading:true,
+      }
+    },
+    mounted () {
+      this.getCompanyInfo();
+    },
+    methods: {
+      async getCompanyInfo(){
+        let res=await this.$axios.post('/uapi/pub/info/company/verify_company/info');
+        this.company_info=res.data.data;
+        if(this.company_info.status!=2)
+        {
+            this.save_text="保存企业信息";
+        }
+        this.loading=false;
+      },
+      async save(){
+        if (this.company_info.status == 2)
+        {
+          this.$emit("active_set",2);
+          return ;
+        }
+        let res=await this.$axios.post('/api/remote/save_company_verify_apply',this.company_info);
+        if(res.data.status==1)
+        {
+          this.$parent.$parent.$parent.$parent.$parent.active_set(2,true);
+        }
+      }
+    },
+  }
+</script>
+<style lang="scss" scoped>
+  .avatar-uploader img{max-width: 200px}
+  .docker{
+    .title{
+      font-weight: bold;
+      font-size: 16px;
+      height: 30px;
+      line-height: 30px;
+    }
+    p{
+      font-size: 14px;
+      margin-top: 10px;
+    }
+    .m40{
+      margin-top: 40px;
+    }
+
+    .tips{
+      color:#606266;
+    }
+  }
+  .kezhan-account{
+    width: 100%;background: #FFFFFF;border-radius: 1px;border: 1px solid #DCDFE6;margin-top: 10px;margin-bottom: 30px;
+  }
+
+  .kezhan-account-text{
+    padding: 15px;
+  }
+
+  .kezhan-account-text p{
+    font-size: 14px;
+  }
+
+  .steps-conditions-title {
+    height: 28px;
+    line-height: 28px;
+    margin-bottom: 15px;
+    font-size: 20px;
+    font-family: PingFangSC, PingFangSC-Semibold;
+    font-weight: 600;
+    color: #222222;
+  }
+
+  .steps-item {
+    height: 40px;
+    line-height: 40px;
+    font-size: 15px;
+    display: flex;
+    align-items: center;
+  }
+  .steps-item .step-point {
+    width: 10px;
+    height: 10px;
+    background: #d8d8d8;
+    border-radius: 50%;
+    margin-right: 12px;
+  }
+  .steps-item-completed .step-point {
+    background: rgba(39,187,111,1);
+  }
+  .steps-item .step-text {
+    color: #222222;
+    width: 250px;
+  }
+  .steps-item .step-conditions {
+    color: rgba(39,187,111,1);
+    font-family: PingFangSC, PingFangSC-Semibold;
+    font-weight: 600;
+    cursor: pointer;
+    margin-right: 24px;
+    flex-shrink: 0;
+    cursor: pointer;
+  }
+  .money-content{
+    width: 100%;display: flex;justify-content: space-between;margin-bottom: 30px;
+  }
+  .money-content-item{
+    width: 32%;border: 1px solid #DCDFE6;cursor: pointer;
+  }
+
+  .money-content .current{
+    border: 1px solid #308EFF;
+  }
+
+  .money-content-item-text{
+    padding: 15px;
+  }
+
+  .money-content-item-text-title{
+    font-size: 16px;font-weight: bold;color:#0B121A;
+  }
+
+  .money-content-item-text-desc{
+    font-size: 15px;color: #606266;
+  }
+ .el-upload{
+    display: flex;
+  }
+  @media screen and (max-width: 400px) {
+    .money-content{
+      flex-direction: column;
+    }
+    .money-content-item{
+      width: 100%;
+      margin-bottom: 10px;
+    }
+    .el-form-item{
+      display: flex;
+      flex-direction: column;
+    }
+  }
+</style>

+ 254 - 0
pages/otherpage/companyComplete/add/money.vue

@@ -0,0 +1,254 @@
+<template>
+  <div class="docker">
+    <div class="title">1、保证金是什么?</div>
+    <p class="desc">为了保证我们的合作可以互惠互利的进行下去,技术服务商需缴纳保证金。</p>
+    <div class="m40"></div>
+    <div class="title">2、保证金可退还吗?</div>
+    <p class="desc">可以,终止合作后全额退还保证金。</p>
+    <p class="desc">为防止洗钱行为,保证金缴纳后会冻结3个月即可提取。</p>
+    <div class="m40"></div>
+    <div class="title">3、什么情况下会扣除保证金?</div>
+    <p class="desc">①查实因为服务商交付质量过差导致客户抗议、退款,从而造成服务商、客栈、客户三方损失的。</p>
+    <p class="desc">②查实服务商引导客户跳单,绕过客栈成交的不诚信的合作行为。</p>
+    <p class="desc">③其他查实因为服务商单方行为造成多方损失的情况。</p>
+    <div class="m40"></div>
+
+    <div class="kezhan-account">
+      <div class="kezhan-account-text">
+        <p style="font-weight: bold;">仅支持对公打款</p>
+        <p>开户名称:杭州势然网络科技有限公司</p>
+        <p>银行账号:1202220909900059830</p>
+        <p>开户银行:中国工商银行股份有限公司杭州余杭支行</p>
+      </div>
+    </div>
+
+    <div class="steps-conditions-title">请选择保证金金额<span style="color: red">*</span></div>
+    <div class="money-content">
+      <div class="money-content-item" :class="form.type==1?'current':''" @click="set_user_bank_order_type(1)">
+        <div class="money-content-item-text" >
+          <p class="money-content-item-text-title">5万元</p>
+          <p class="money-content-item-text-desc" >可接0-10万元项目金额的需求</p>
+        </div>
+      </div>
+
+      <div class="money-content-item" :class="form.type==2?'current':''" @click="set_user_bank_order_type(2)">
+        <div class="money-content-item-text" >
+          <p class="money-content-item-text-title">10万元</p>
+          <p class="money-content-item-text-desc" >可接10-50万元项目金额的需求</p>
+        </div>
+      </div>
+
+      <div class="money-content-item" :class="form.type==3?'current':''" @click="set_user_bank_order_type(3)">
+        <div class="money-content-item-text" >
+          <p class="money-content-item-text-title">50万元</p>
+          <p class="money-content-item-text-desc" >可接50万元以上项目金额的需求</p>
+        </div>
+      </div>
+    </div>
+
+    <div class="steps-conditions-title">请填写打款凭证<span style="color: red">*</span></div>
+
+    <div class="money-content" style="width: 100%;display: flex;justify-content: space-between;margin-bottom: 30px;margin-top: 30px">
+      <p style="font-size: 16px;font-weight: bold;color:#0B121A;width: 120px;height: 40px;line-height: 40px">账户名称:</p>
+      <el-input v-model="form.account" placeholder="请输入打款的账号名称"></el-input>
+    </div>
+
+    <div class="money-content" style="width: 100%;display: flex;justify-content: space-between;margin-bottom: 30px">
+      <p style="font-size: 16px;font-weight: bold;color:#0B121A;width: 120px;height: 40px;line-height: 40px">卡后四位:</p>
+      <el-input v-model="form.number" placeholder="请输入打款的银行卡后四位"></el-input>
+    </div>
+
+    <div class="steps-conditions-title">上传打款截图<span style="color: red">*</span></div>
+
+    <el-upload
+      class="avatar-uploader"
+      action="/upload_image"
+      :show-file-list="false"
+      :on-success="(response, file, fileList)=> upload_img_success(response, file, fileList,1)">
+      <img v-if="form.photo_url" :src="form.photo_url" class="avatar">
+      <i v-else class="el-icon-plus avatar-uploader-icon" style="border-radius: 6px;border: 1px dashed #d9d9d9;height: 178px;line-height: 178px;width: 178px"></i>
+    </el-upload>
+
+    <div class="m40"></div>
+
+    <el-form-item>
+      <el-button @click="save" type="primary">申请认证</el-button>
+    </el-form-item>
+  </div>
+</template>
+
+<script>
+  export default {
+    data() {
+      return {
+        form:{
+          type:1,
+          file:""
+        }
+      }
+    },
+    methods: {
+      set_user_bank_order_type(type)
+      {
+        this.form.type=type;
+      },
+      async save()
+      {
+        let account=this.form.account;
+        let number=this.form.number;
+        let file=this.form.file;
+        if (!account) {
+          this.$message.info('账户名称必须填写')
+          return
+        }
+        if (!number) {
+          this.$message.info('卡号后四位必须填写')
+          return
+        }
+        if (!file) {
+          this.$message.info('文件必须上传')
+          return
+        }
+
+        let order_money=0;
+        if(this.user_bank_order.type==1)
+        {
+          order_money=50000;
+        }
+        else if(this.user_bank_order.type==2)
+        {
+          order_money=100000;
+        }
+        else if(this.user_bank_order.type==3)
+        {
+          order_money=500000;
+        }
+        if (order_money==0) {
+          this.$message.info('订单类型必须选择')
+          return
+        }
+        let buy_memo={"打款账号": account, "卡号后四位": number, "打款凭证": "<a href='"+file+"' target='_blank' style='color:red'>查看明细</a>"};
+        buy_memo=JSON.stringify(buy_memo);
+        //开始提交
+        this.$axios.$post("/uapi/enterprise/user_bank_order/add", { type:1,order_money:order_money,file:file,buy_memo:buy_memo}).then(res => {
+          if (res.status === 1) {
+            this.$message.info('提交成功,请耐心等待审核');
+          }
+        })
+      },
+      upload_img_success(res, file, fileList,type){
+        if(type==1)
+        {
+          this.form.file=res.filename;
+        }
+      },
+    },
+  }
+</script>
+<style lang="scss" scoped>
+  .docker{
+    .title{
+      font-weight: bold;
+      font-size: 16px;
+      height: 30px;
+      line-height: 30px;
+    }
+    p{
+      font-size: 14px;
+      margin-top: 10px;
+    }
+    .m40{
+      margin-top: 40px;
+    }
+
+    .tips{
+      color:#606266;
+    }
+  }
+  .kezhan-account{
+    width: 100%;background: #FFFFFF;border-radius: 1px;border: 1px solid #DCDFE6;margin-top: 10px;margin-bottom: 30px;
+  }
+
+  .kezhan-account-text{
+    padding: 15px;
+  }
+
+  .kezhan-account-text p{
+    font-size: 14px;
+  }
+
+  .steps-conditions-title {
+    height: 28px;
+    line-height: 28px;
+    margin-bottom: 15px;
+    font-size: 20px;
+    font-family: PingFangSC, PingFangSC-Semibold;
+    font-weight: 600;
+    color: #222222;
+  }
+
+  .steps-item {
+    height: 40px;
+    line-height: 40px;
+    font-size: 15px;
+    display: flex;
+    align-items: center;
+  }
+  .steps-item .step-point {
+    width: 10px;
+    height: 10px;
+    background: #d8d8d8;
+    border-radius: 50%;
+    margin-right: 12px;
+  }
+  .steps-item-completed .step-point {
+    background: rgba(39,187,111,1);
+  }
+  .steps-item .step-text {
+    color: #222222;
+    width: 250px;
+  }
+  .steps-item .step-conditions {
+    color: rgba(39,187,111,1);
+    font-family: PingFangSC, PingFangSC-Semibold;
+    font-weight: 600;
+    cursor: pointer;
+    margin-right: 24px;
+    flex-shrink: 0;
+    cursor: pointer;
+  }
+  .money-content{
+    width: 100%;display: flex;justify-content: space-between;margin-bottom: 30px;
+  }
+  .money-content-item{
+    width: 32%;border: 1px solid #DCDFE6;cursor: pointer;
+  }
+
+  .money-content .current{
+    border: 1px solid #308EFF;
+  }
+
+  .money-content-item-text{
+    padding: 15px;
+  }
+
+  .money-content-item-text-title{
+    font-size: 16px;font-weight: bold;color:#0B121A;
+  }
+
+  .money-content-item-text-desc{
+    font-size: 15px;color: #606266;
+  }
+ .el-upload{
+    display: flex;
+  }
+  @media screen and (max-width: 400px) {
+    .money-content{
+      flex-direction: column;
+    }
+    .money-content-item{
+      width: 100%;
+      margin-bottom: 10px;
+    }
+  }
+</style>

+ 158 - 0
pages/otherpage/companyComplete/add/solution_list.vue

@@ -0,0 +1,158 @@
+<template>
+  <div class="docker">
+    <el-drawer
+      title="添加解决方案"
+      :size="solution_add_size"
+      :append-to-body="true"
+      :modal-append-to-body="true"
+      :wrapperClosable="false"
+      :visible.sync="drawer"
+      :direction="direction"
+      :destroy-on-close="true">
+      <solution_add @service_provider="service_provider" :lastId="solution_id"></solution_add>
+    </el-drawer>
+
+    <div  v-for="item in service_provider_data" class="solution_item">
+      <img :src="item.images"/>
+      <div style="display: flex;flex-direction: column;flex: 1">
+        <div class="title-box">
+          <div class="title">{{item.title}}</div>
+          <span>{{item.status_text}}</span>
+        </div>
+        <div class="desc">
+          {{item.description}}
+        </div>
+        <div class="flex-1"></div>
+        <div class="edit">
+          <span @click="solution_add(item.id)">编辑</span>
+          <span @click="delete_provider(item.id)">删除</span>
+        </div>
+      </div>
+    </div>
+
+    <el-form-item>
+      <el-button @click="solution_add(0)" type="primary">添加解决方案</el-button>
+      <el-button @click="next" type="primary">下一步</el-button>
+    </el-form-item>
+  </div>
+</template>
+
+<script>
+  import { mapState } from "vuex";
+  import solution_add from "@/components/company/solution_add";
+  export default {
+    data() {
+      return {
+        solution_add_size:"700px",
+        drawer: false,
+        direction: 'rtl',
+        service_provider_data:[],
+        solution_id:0,
+      }
+    },
+    components: {
+      solution_add,
+    },
+    computed: {
+      ...mapState(["deviceType"]),
+    },
+    mounted () {
+      this.service_provider();
+      if (this.deviceType.ios || this.deviceType.android)
+      {
+        this.solution_add_size="100%";
+      }
+    },
+    methods: {
+      solution_add(id){
+        this.drawer=true;
+        this.solution_id=id;
+      },
+      async delete_provider(id)
+      {
+        let res=await this.$axios.post('/api/kaifawu/delete_provider',{id:id});
+        this.service_provider();
+      },
+      async service_provider()//解决方案列表
+      {
+        this.drawer=false;
+        let res=await this.$axios.post('/uapi/pub/list/company/service_provider/my_list');
+        this.service_provider_data=res.data.data;
+      },
+      async next()
+      {
+        this.$emit("active_set",3);
+      },
+    },
+  }
+</script>
+<style lang="scss" scoped>
+  .docker{
+
+  }
+
+  .solution_item{
+    display: flex;
+    border-bottom: 1px solid #ddd;
+    padding-bottom: 10px;
+    margin-bottom: 20px;
+    img{
+      width: 121px;
+      height: 90px;
+      border-radius: 15px;
+    }
+    .title-box{
+      margin-left: 10px;
+      display: flex;
+      justify-content: space-between;
+      .title{
+        overflow:hidden; //超出的文本隐藏
+        text-overflow:ellipsis; //溢出用省略号显示
+        flex: 1;
+        margin-right: 10px;
+      }
+      span{
+        width: 70px;
+        text-align: right;
+        font-size: 14px;
+      }
+    }
+
+    .desc{
+      margin-left: 10px;
+      line-height: 25px;
+      font-size: 14px;
+      overflow: hidden;
+      text-overflow: ellipsis;
+      display:-webkit-box; //作为弹性伸缩盒子模型显示。
+      -webkit-box-orient:vertical; //设置伸缩盒子的子元素排列方式--从上到下垂直排列
+      -webkit-line-clamp:2; //显示的行
+    }
+    .flex-1{
+      flex: 1;
+    }
+    .edit{
+      margin-left: 10px;
+      font-size: 12px;
+      text-align: right;
+      color: #409EFF;
+      span{
+        margin-left: 20px;
+        cursor: pointer;
+      }
+    }
+  }
+
+  .el-drawer__body {
+    overflow: auto;
+    /* overflow-x: auto; */
+  }
+
+  /*2.隐藏滚动条,太丑了*/
+  .el-drawer__container ::-webkit-scrollbar {
+    display: none;
+  }
+  @media screen and (max-width: 400px) {
+
+  }
+</style>