'-'
zhangwei
4 天以前 ddbf9504fc5faf6764fffa4e9263a3ad927331d8
'-'
11个文件已修改
2个文件已添加
629 ■■■■ 已修改文件
src/api/register/index.ts 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/upload/index.ts 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/util.ts 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/router/modules/mine.ts 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/store/modules/user.ts 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/style/login.css 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/style/reset.scss 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/home/index.vue 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/login/index.vue 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mine/index.vue 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/register/registernav.vue 541 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/welcome/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
vite.config.ts 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/register/index.ts
@@ -41,10 +41,17 @@
};
// 注册角色用户资料
export const createrExRolsInformationexport = (data?: object) => {
export const createrExRolsInformation = (data?: object) => {
  return http.request(
    "post",
    baseUrlApi("/api/customer/createrExRolsInformationexport"),
    baseUrlApi("/api/customer/createrExRolsInformation"),
    { data }
  );
};
// 获取企业类型
export const enterpriseTypes = (data?: object) => {
  return http.request("post", baseUrlApi("/api/customer/enterpriseTypes"), {
    data
  });
};
src/api/upload/index.ts
@@ -18,21 +18,9 @@
  return http.request("post", baseUrlApi("/api/upFile/upBizLicense"), { data });
};
export const captcha = () => {
  return http.request<Result>("get", baseUrlApi("/api/zCSMS/captcha"));
};
//获取角色
export const exRole = () => {
  return http.request<Result>("get", baseUrlApi("/api/customer/exRole"));
};
// 获取手机验证码
export const phoneNumberCode = (params?: object) => {
  return http.request(
    "post",
    baseUrlApi(
      `/api/zCSMS/sendSMS/${params.phone}/${params.code}/${params.codeId}`
    )
  );
// 上传身份证
export const uploadIdCord = (params?: object) => {
  return http.request("post", baseUrlApi("/api/upFile/uploadIdCord"), {
    params
  });
};
src/api/util.ts
@@ -2,4 +2,4 @@
export const baseUrlApi = (url: string) =>
  process.env.NODE_ENV === "development"
    ? `/api${url}`
    : `http://114.132.78.38:8096${url}`;
    : `192.168.18.52:5005${url}`;
src/router/modules/mine.ts
New file
@@ -0,0 +1,12 @@
export default {
  path: "/item",
  component: () => import("@/views/item/index.vue"),
  name: "item",
  // redirect: "/error/403",
  meta: {
    icon: "ep/home-filled",
    // showLink: false,
    title: "个人中心",
    rank: 9
  }
} satisfies RouteConfigsTable;
src/store/modules/user.ts
@@ -49,6 +49,8 @@
    },
    /** 存储角色 */
    SET_ROLES(roles: Array<string>) {
      console.log(roles, "setroles");
      this.roles = roles;
    },
    /** 存储按钮级别权限 */
src/style/login.css
@@ -6,11 +6,11 @@
  bottom: 0;
  z-index: -1;
  width: 50%;
        height: 100%;
        float: left;
        justify-content: center;
        background: url('@/assets/login/bg.png')  no-repeat left center;
        background-size: cover;
  height: 100%;
  float: left;
  justify-content: center;
  background: url('@/assets/login/bg.png')  no-repeat left center;
  background-size: cover;
}
.logo1{
  padding:40px;
src/style/reset.scss
@@ -1,7 +1,7 @@
#app {
  width: 100%;
  height: 100%;
  background: #f8f8f8;
  // background: #f8f8f8;
  overflow: auto;
}
src/views/home/index.vue
@@ -402,7 +402,12 @@
import { getToken } from "@/utils/auth";
import { useRoute, useRouter } from "vue-router";
const router = useRouter();
import { useUserStore } from "@/store/modules/user";
const userStore = useUserStore();
// 访问 state 属性
console.log(userStore.roles,'-'); // 直接获取值
defineOptions({
  name: "Main"
});
@@ -446,7 +451,7 @@
  if (role.hasFlsh) {
    return router.push({ name: "Welcome" });
  }
  router.push({ name: "RegisterNav" });
  router.push({ name: "RegisterNav", query: { code: role.code } });
};
// 去登录
const toLogin = item => {
src/views/login/index.vue
@@ -182,7 +182,10 @@
              if (!res.result.exRoles.hasFlsh) {
                disabled.value = true;
                router
                  .replace("registernav")
                  .replace({
                    name: "RegisterNav",
                    query: { code: res?.result?.exRoles.code }
                  })
                  .then(() => {
                    message("登录成功", { type: "success" });
                  })
src/views/mine/index.vue
New file
@@ -0,0 +1,11 @@
<script setup lang="ts">
defineOptions({
  name: "mine"
});
</script>
<template>
  <div>我是个人之心</div>
</template>
<style lang="sass" scoped></style>
src/views/register/registernav.vue
@@ -17,28 +17,103 @@
          <el-step title="信息登记完成" />
        </el-steps>
      </div>
      <div v-if="active == 1" class="h-[100%]">
      <div v-if="active == 0" class="h-[480px]">
        <div class="text-center pt-5 pb-1.5">注册条款</div>
        <div
          class="w-[95%] h-65 border-1 border-[#E5E5E5] mx-auto p-2 overflow-y-auto"
        >
          <h3>注册采购供应商应具备以下条件</h3>
          <h3>注册采购供应商应具备以下条件</h3>
          <h3>注册采购供应商应具备以下条件</h3>
          <h3>注册采购供应商应具备以下条件</h3>
          <h3>注册采购供应商应具备以下条件</h3>
          <h3>注册采购供应商应具备以下条件</h3>
          <h3>注册采购供应商应具备以下条件</h3>
          <h3>注册采购供应商应具备以下条件</h3>
          <h3>注册采购供应商应具备以下条件</h3>
          <h3>注册采购供应商应具备以下条件</h3>
          <h3>注册采购供应商应具备以下条件</h3>
          <h3>注册采购供应商应具备以下条件</h3>
          <h3>注册采购供应商应具备以下条件</h3>
          <h3>注册采购供应商应具备以下条件</h3>
        <div class="w-[95%] h-105 border-1 border-[#E5E5E5] mx-auto p-2">
          <el-scrollbar max-height="400px">
            <p>
              根据《中华人民共和国合同法》、《中华人民共和国著作权法》、《全国人大常委会关于维护互联网安全的决定》、《中华人民共和国政府采购法》、《互联网信息服务管理办法》、《互联网电子公告服务管理规定》等有关法律、法规、规章,制订本条款。所有进入本平台的用户,在使用本平台提供的任何服务前,必须事先认真阅读并同意本服务协议。用户通过点击“我同意”按钮即表示用户与本招标采购平台达成协议,接受本招标采购平台服务条款全部内容。点击“不同意”按钮,视为放弃本招标采购平台提供的服务,并表示放弃注册信息库。
            </p>
            <h3><strong>一、用户资料 </strong></h3>
            <p>用户同意:</p>
            <p>
              (一)在申请使用本招标采购平台提供的服务时,向本招标采购平台提供真实、准确、完整的单位或个人资料。
            </p>
            <p>
              (二)如用户的单位或个人资料有任何变更,用户应及时更新注册资料。如果用户提供的资料不完整或者用户提供的资料包含有不正确或不准确的信息,由此相关的一切后果均应当由用户自行承担。
            </p>
            <p>
              (三)用户资料包括您在注册、购标、答疑、投标、澄清、评标等过程中,以任何网络形式向本平台传送的任何资料,包括数据、文本、照片、图画、影像、词句或其他材料。您应对“您的资料”负全部责任,倘若本平台认为“您的资料”可能使我方承担任何法律或道义上的责任,则本平台可自行全权决定对“您的资料”采取我方认为必要或适当的任何行动,包括但不限于删除该类资料。您特此保证,您对提交给本平台的“您的资料”拥有全部合法权利。
              平台注册用户应遵循诚实信用原则,如发现恶意注册者,平台将冻结其姓名与联系方式、加入失信黑名单并予以公布,禁止一定期限内参与任何项目,同时追究恶意注册者法律责任。
            </p>
            <h3><strong>二、服务条款的修改</strong></h3>
            本招标采购平台有权根据需要修改服务条款,本招标采购平台服务条款一旦发生修改或其它变动,将在条款相关页面予以提示。用户可自由点击选择“同意”或“不同意”。如点击“同意”,则视为对原服务条款的变更,本平台将即刻按照最新的服务协议约定为您提供服务。如点击“不同意”,则该服务将无法为您提供,您有权选择暂停使用或注销该账户。除另有明确声明外,任何使“服务”范围扩大或功能增强的新内容均受本协议约束。
            <h3><strong>三、隐私保护</strong></h3>
            <p>
              本招标采购平台承诺不会公开、转让或透露其用户的不可公开的注册资料及用户在本招标采购平台中保存的非公开内容,除非:
            </p>
            <p>(一)有关法律、法规、规章的强制性规定;</p>
            <p>(二)有关司法、行政机关的要求;</p>
            <p>(三)保持或维护本招标采购平台的合法权益;</p>
            <p>(四)事先获得用户的明确授权。</p>
            <p>
              用户不得对任何资料作商业性利用,包括但不限于在未经本平台运营方书面批准的情况下,复制在本平台上展示的任何资料,包括系统的功能结构和画面等。
            </p>
            <h3><strong>四、用户的帐号、密码和安全性</strong></h3>
            <p>
              用户在本招标采购平台注册成功后,将获得一个帐号和密码。该帐号和密码由用户负责保管,用户可随时改变其密码。每个用户都要对其帐户中的所有活动和事件负全部责任,用户同意若发现任何非法使用用户帐号或安全漏洞的情况,立即通告本招标采购平台。本招标采购平台承诺不将用户帐号和密码透露给第三方。但因用户原因造成密码泄露,用户需自行承担全部责任和相关后果。因用户原因造成帐号由他人使用,用户需自行承担全部责任和相关后果,同时,本招标采购平台视为用户进行了相关操作。
            </p>
            <h3><strong>五、收费</strong></h3>
            <p>
              本平台保留收取“服务”费用的权利。您因进行投标或获取相关信息等向本平台运营方获取有偿服务或接触本平台服务器而发生的所有应纳税赋,以及相关硬件、软件、通讯、网络服务及其他方面的费用均由您自行承担。本平台保留在无需发出书面通知、仅在本平台网上公示的情况下,暂时或永久地更改或停止部分或全部“服务”的权利。
            </p>
            <h3><strong> 六、免责条款</strong></h3>
            <p>
              因本招标采购平台无法预见客观环境的改变及任何技术上的问题或其他困难(包括但不限于:计算机病毒攻击、黑客入侵、网络中断等),由此导致的数据损失或其他服务中断等情形,会员用户对此应表示理解,并同意自行承担利用本招标采购平台进行操作的所有风险。本招标采购平台在此声明:
            </p>
            <p>
              本平台不提供任何类型的非本平台可控承诺,包括但不限于所提供的服务一定能满足用户的要求,服务不会中断,信息能否完全准确、及时、顺利的传送,是否能修改相关软件中的漏洞。用户理解、判断、或决定是否接受任何通过本招标采购平台服务或所取得信息资料的可靠性,完全取决于用户自己承担相关的风险,并包括系统受损或资料丢失的所有风险。
            </p>
            <p>
              平台用户在本招标采购平台的注册成功,并不能替代用户在投标(或其他采购竞争方式)时招标人、代理机构、评标(审)委员会对其资格的审查。
            </p>
            <h3><strong>七、信息的储存及限制</strong></h3>
            <p>
              本招标采购平台不对用户所发布信息的删除或储存失败负责。本招标采购平台拥有判定用户的行为是否符合本招标采购平台服务条款的要求和精神的保留权利,如果用户违背了服务条款的规定,或其在网站的相关行为有理由被判断为不利于网站,则随时有权中断对其服务,包括帐号。
            </p>
            <h3>八、用户信息管理</h3>
            <p>
              用户自行承担其所传输内容的所有责任,对本招标采购平台的使用符合法律、法规及规章的要求,同时遵循以下原则:
            </p>
            <p>
              (一)从中国境内向外传输技术性资料时必须符合中国有关法律法规;
            </p>
            <p>(二)使用信息服务不作非法用途;</p>
            <p>(三)不干扰或混乱网络服务;</p>
            <p>(四)遵守所有使用服务的网络协议、规定、程序和惯例。</p>
            <p>(五)其他情形。</p>
            <p>
              用户的行为准则是以因特网法规,政策、程序和惯例为根据的。用户须承诺不传输任何非法的、骚扰性的、中伤他人的、辱骂性的、恐吓性的、伤害性的、庸俗的和淫秽的信息资料。不传输任何教唆他人构成犯罪行为的资料;不传输助长国内不利条件和涉及国家安全的资料;不传输任何不符合当地法规、国家法律和国际法律的资料。若用户的行为不符合以上提到的服务条款,本招标采购平台一经发现将做出独立判断并取消用户服务和帐号。用户若在本招标采购平台上散布和传播反动、色情或其他违反国家法律的信息,网站的系统记录有可能作为用户违反法律的证据。
              如果用户在发表的信息中加入宣传资料或参与广告策划,在本招标采购平台的服务上展示产品,任何这类促销方法,包括运输货物、付款、服务、商业条件、担保及与广告有关的行为或描述,由用户和这类商业宣传发布者独立负责。本招标采购平台对此类商业宣传不承担任何责任,也没有义务为此类商业宣传承担任何可能责任。用户该行为给本平台造成涉诉或不良商誉、其他损失的,本平台有权向用户追责。
            </p>
            <h3>九、保障</h3>
            <p>
              用户同意保障和维护本招标采购平台及其他用户的利益,负责支付违反服务条款的损害补偿费用,由其它使用用户的帐号和口令的人造成的损害赔偿费用和其它侵犯知识产权而产生的追索赔偿费用。
            </p>
            <h3>十、终止服务</h3>
            <p>
              用户可根据实际情况,主动终止本招标采购平台提供的服务,同时,用户使用本招标采购平台服务的权利也将被终止。终止生效后,用户没有权利传送任何未处理的信息或未完成的服务,本招标采购平台亦无此类义务。对于此种终止,本招标采购平台无需承担任何责任。
            </p>
            <h3>十一、通知与送达</h3>
            <p>
              所有发给用户的通知都可通过相关页面的公告、系统通知或手机短信中的一种或多种方式传送,通知一经发出即视为送达。
            </p>
            <h3>十二、知识产权</h3>
            <p>
              本招标采购平台商标权、运作权、解释权、著作权、所有权、版权等知识产权归本平台唯一所有。用户在平台上发布的信息不得侵犯任何第三人的知识产权,未经具有相关所有权所有者之事先书面同意,用户不得以任何方式上传、发布、修改、传播或复制任何受著作权保护的材料、商标或属于其他人的专有信息。如果收到任何著作权人或其合法代表发给新点的适当通知后,我们将在审查的基础上移除该等侵犯他人著作权的内容。
            </p>
            <h3>十三、条款的法律解释</h3>
            <p>
              以上条款解释权归本平台所有。如发生本招标采购平台服务条款或所发布的其它条款与中华人民共和国法律、法规及规章相抵触时,则这些条款将完全按有关法律、法规及规章规定重新解释,而其它条款则依旧保持对用户的约束力。特别声明,任何情形下,对于任何相关的争议,均只适用中华人民共和国法律、法规及规章管辖,若用户与本单位就服务条款发生任何争议,双方应尽量友好协商解决;协商不成时,任何一方应向成都仲裁委仲裁解决。
            </p>
            <p>感谢您对本平台和服务的信任和使用!</p>
          </el-scrollbar>
          <!-- <p class="text-center xieyi">注册协议</p> -->
        </div>
      </div>
      <div v-else-if="active == 2" class="flex justify-center mt-5">
      <div v-else-if="active == 1" class="flex justify-center mt-5">
        <el-form
          ref="ruleFormRef"
          style="width: 95%"
@@ -48,21 +123,25 @@
        >
          <el-row>
            <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
              <el-form-item label="企业类型">
              <el-form-item label="企业类型" prop="enterpriseType">
                <el-select
                  v-model="state.ruleForm.enterpriseType"
                  placeholder="请选择"
                  clearable
                  multiple
                >
                  <el-option label="成立" value="Valid" />
                  <el-option label="驳回" value="Rejected" />
                  <el-option label="其它" value="Other" />
                  <el-option
                    v-for="item in state.enterpriseList"
                    :key="item.id"
                    :label="item.name"
                    :value="item.code"
                  />
                </el-select>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row><div class="baseclass">基本资料</div></el-row>
          <el-row>
          <!-- <el-row>
            <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
              <el-form-item label="交易主体">
                <el-input
@@ -71,21 +150,22 @@
                />
              </el-form-item>
            </el-col>
          </el-row>
          </el-row> -->
          <el-row>
            <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
              <el-form-item label="营业执照">
              <el-form-item label="营业执照" prop="businessLicense">
                <el-upload
                  :limit="1"
                  :action="`${baseUrlApi('/api/upFile/upBizLicense')}`"
                  :show-file-list="false"
                  :on-success="handleAvatarSuccess"
                  :before-upload="beforeAvatarUpload"
                  :headers="state.headers"
                >
                  <img
                    v-if="state.ruleForm.businessLicense"
                    :src="state.ruleForm.businessLicense"
                    class="avatar"
                    width="200px"
                    height="150px"
                  />
                  <el-button v-else type="primary">上传</el-button>
                </el-upload>
@@ -94,9 +174,10 @@
          </el-row>
          <el-row>
            <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
              <el-form-item label="企业名称">
              <el-form-item label="企业名称" prop="enterpriseName">
                <el-input
                  v-model="state.ruleForm.nickName"
                  v-model="state.ruleForm.enterpriseName"
                  disabled
                  placeholder="请输入"
                />
              </el-form-item>
@@ -104,17 +185,22 @@
          </el-row>
          <el-row>
            <el-col :xs="24" :sm="24" :md="12" :lg="8" :xl="8">
              <el-form-item label="统一社会信用代码">
              <el-form-item
                label="统一社会信用代码"
                prop="unifiedSocialCreditCode"
              >
                <el-input
                  v-model="state.ruleForm.nickName"
                  v-model="state.ruleForm.unifiedSocialCreditCode"
                  disabled
                  placeholder="请输入"
                />
              </el-form-item>
            </el-col>
            <el-col :xs="24" :sm="24" :md="12" :lg="8" :xl="8">
              <el-form-item label="注册资金">
              <el-form-item label="注册资金" prop="registeredCapital">
                <el-input
                  v-model="state.ruleForm.nickName"
                  v-model="state.ruleForm.registeredCapital"
                  disabled
                  placeholder="请输入"
                >
                  <template #append>万元</template></el-input
@@ -122,54 +208,54 @@
              </el-form-item>
            </el-col>
            <el-col :xs="24" :sm="24" :md="24" :lg="8" :xl="8">
              <el-form-item label="法定代表人">
              <el-form-item label="法定代表人" prop="legalRepresentativeName">
                <el-input
                  v-model="state.ruleForm.nickName"
                  v-model="state.ruleForm.legalRepresentativeName"
                  disabled
                  placeholder="请输入"
                />
              </el-form-item>
            </el-col>
            <el-col :xs="24" :sm="24" :md="24" :lg="16" :xl="16">
              <el-form-item label="住所地">
              <el-form-item label="住所地" prop="residence">
                <el-input
                  v-model="state.ruleForm.nickName"
                  v-model="state.ruleForm.residence"
                  disabled
                  placeholder="请输入"
                />
              </el-form-item>
            </el-col>
            <el-col :xs="24" :sm="24" :md="12" :lg="8" :xl="8">
              <el-form-item label="联系电话">
              <el-form-item label="成立时间" prop="establishmentTime">
                <el-input
                  v-model="state.ruleForm.nickName"
                  v-model="state.ruleForm.establishmentTime"
                  disabled
                  placeholder="请输入"
                />
              </el-form-item>
            </el-col>
            <el-col :xs="24" :sm="24" :md="12" :lg="8" :xl="8">
              <el-form-item label="成立时间">
            <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
              <el-form-item label="主营业务" prop="mainBusiness">
                <el-input
                  v-model="state.ruleForm.nickName"
                  v-model="state.ruleForm.mainBusiness"
                  disabled
                  placeholder="请输入"
                />
              </el-form-item>
            </el-col>
            <el-col :xs="24" :sm="24" :md="12" :lg="8" :xl="8">
              <el-form-item label="主营业务">
              <el-form-item label="联系电话" prop="enterprisePhone">
                <el-input
                  v-model="state.ruleForm.nickName"
                  v-model="state.ruleForm.enterprisePhone"
                  placeholder="请输入"
                />
              </el-form-item>
            </el-col>
            <el-col :xs="24" :sm="24" :md="12" :lg="8" :xl="8">
              <el-form-item label="邮箱">
              <el-form-item label="邮箱" prop="enterpriseEmail">
                <el-input
                  v-model="state.ruleForm.nickName"
                  v-model="state.ruleForm.enterpriseEmail"
                  placeholder="请输入"
                />
              </el-form-item>
@@ -177,34 +263,48 @@
          </el-row>
          <el-row>
            <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
              <el-form-item label="法定代表人">
                <el-upload>
                  <el-button type="primary">上传身份证</el-button>
              <el-form-item label="法定代表人" prop="legalRepresentativeIdCard">
                <el-upload
                  :action="`${baseUrlApi('/api/upFile/uploadIdCord?PageName=FRONT')}`"
                  :show-file-list="false"
                  :on-success="handleAvatarSuccessLegalRepresentative"
                  :before-upload="beforeAvatarUpload"
                  :headers="state.headers"
                >
                  <img
                    v-if="state.ruleForm.legalRepresentativeIdCard"
                    :src="state.ruleForm.legalRepresentativeIdCard"
                    width="85.6px"
                    height="5.4px"
                  />
                  <el-button v-else type="primary">上传身份证</el-button>
                </el-upload>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :xs="24" :sm="24" :md="12" :lg="8" :xl="8">
              <el-form-item label="姓名">
              <el-form-item label="姓名" prop="legalRepresentativeName">
                <el-input
                  v-model="state.ruleForm.nickName"
                  v-model="state.ruleForm.legalRepresentativeName"
                  disabled
                  placeholder="请输入"
                />
              </el-form-item>
            </el-col>
            <el-col :xs="24" :sm="24" :md="12" :lg="8" :xl="8">
              <el-form-item label="身份证">
              <el-form-item label="身份证" prop="legalRepresentativeIdNumber">
                <el-input
                  v-model="state.ruleForm.nickName"
                  v-model="state.ruleForm.legalRepresentativeIdNumber"
                  disabled
                  placeholder="请输入"
                />
              </el-form-item>
            </el-col>
            <el-col :xs="24" :sm="24" :md="12" :lg="8" :xl="8">
              <el-form-item label="联系电话">
              <el-form-item label="联系电话" prop="legalRepresentativePhone">
                <el-input
                  v-model="state.ruleForm.nickName"
                  v-model="state.ruleForm.legalRepresentativePhone"
                  placeholder="请输入"
                />
              </el-form-item>
@@ -212,50 +312,64 @@
          </el-row>
          <el-row>
            <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
              <el-form-item label="业务经办人">
                <el-upload>
                  <el-button type="primary">上传身份证</el-button>
              <el-form-item label="业务经办人" prop="operatorIdCard">
                <el-upload
                  :action="`${baseUrlApi('/api/upFile/uploadIdCord?PageName=FRONT')}`"
                  :show-file-list="false"
                  :on-success="handleAvatarSuccessOperator"
                  :before-upload="beforeAvatarUpload"
                  :headers="state.headers"
                >
                  <img
                    v-if="state.ruleForm.operatorIdCard"
                    :src="state.ruleForm.operatorIdCard"
                    width="85.6px"
                    height="5.4px"
                  />
                  <el-button v-else type="primary">上传身份证</el-button>
                </el-upload>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :xs="24" :sm="24" :md="12" :lg="8" :xl="8">
              <el-form-item label="姓名">
              <el-form-item label="姓名" prop="operatorName">
                <el-input
                  v-model="state.ruleForm.nickName"
                  v-model="state.ruleForm.operatorName"
                  disabled
                  placeholder="请输入"
                />
              </el-form-item>
            </el-col>
            <el-col :xs="24" :sm="24" :md="12" :lg="8" :xl="8">
              <el-form-item label="身份证">
              <el-form-item label="身份证" prop="operatorIdNumber">
                <el-input
                  v-model="state.ruleForm.nickName"
                  v-model="state.ruleForm.operatorIdNumber"
                  disabled
                  placeholder="请输入"
                />
              </el-form-item>
            </el-col>
            <el-col :xs="24" :sm="24" :md="12" :lg="8" :xl="8">
              <el-form-item label="联系电话">
              <el-form-item label="联系电话" prop="operatorPhone">
                <el-input
                  v-model="state.ruleForm.nickName"
                  v-model="state.ruleForm.operatorPhone"
                  placeholder="请输入"
                />
              </el-form-item>
            </el-col>
            <el-col :xs="24" :sm="24" :md="12" :lg="8" :xl="8">
              <el-form-item label="开户行">
              <el-form-item label="开户行" prop="bankName">
                <el-input
                  v-model="state.ruleForm.nickName"
                  v-model="state.ruleForm.bankName"
                  placeholder="请输入"
                />
              </el-form-item>
            </el-col>
            <el-col :xs="24" :sm="24" :md="24" :lg="16" :xl="16">
              <el-form-item label="银行账号">
              <el-form-item label="银行账号" prop="bankAccount">
                <el-input
                  v-model="state.ruleForm.nickName"
                  v-model="state.ruleForm.bankAccount"
                  placeholder="请输入"
                />
              </el-form-item>
@@ -269,13 +383,13 @@
            <img src="@/assets/home/result.png" />
          </template>
          <template #extra>
            <el-button type="primary">确认</el-button>
            <el-button type="primary" @click="toWelcome">确认</el-button>
          </template>
        </el-result>
      </template>
      <div v-if="active !== 3" class="mx-auto pt-2 pb-5 flex justify-center">
        <el-button :disabled="active == 1" @click="backStep">上一步</el-button>
        <el-button type="primary" @click="nextStep"
        <el-button type="primary" @click="nextStep(ruleFormRef)"
          ><span v-if="active == 1">同意</span>下一步</el-button
        >
      </div>
@@ -283,7 +397,7 @@
  </div>
</template>
<script setup lang="tsx">
import { h, ref, reactive } from "vue";
import { h, ref, reactive, onMounted } from "vue";
import type { FormInstance, FormRules, UploadProps } from "element-plus";
import { message } from "@/utils/message";
import { baseUrlApi } from "@/api/util";
@@ -293,12 +407,27 @@
  updateDialog,
  closeAllDialog
} from "@/components/ReDialog";
import {
  enterpriseTypes,
  createrExRolsInformation
} from "@/api/register/index.ts";
import { cloneDeep } from "@pureadmin/utils";
import { getToken } from "@/utils/auth";
import { useRoute, useRouter } from "vue-router";
const router = useRouter();
const route = useRoute();
defineOptions({
  name: "RegisterNav"
});
const ruleFormRef = ref<FormInstance>();
const state = reactive({
  headers: {
    // Accept: "application/json, text/plain, */*",
    // "Content-Type": "application/x-www-form-urlencoded;charset=UTF-8",
    // "X-Requested-With": "XMLHttpRequest",
    Authorization: `Bearer ${getToken()?.accessToken}`
  },
  isShowPassword: false,
  ruleForm: {
    // 主键(唯一标识)
@@ -348,37 +477,103 @@
    // 企业银行账号
    bankAccount: null // string,可空
  },
  enterpriseList: [],
  type: "",
  rules: {
    phoneVCode: [
    enterpriseType: [
      { required: true, message: "请选择企业类型", trigger: "change" }
    ],
    // transactionCode: [
    //   { required: true, message: "请输入交易主体代码", trigger: "blur" },
    //   { min: 1, message: "交易主体代码最小长度为1", trigger: "blur" }
    // ],
    // transactionName: [
    //   { required: true, message: "请输入交易主体名称", trigger: "blur" }
    // ],
    businessLicense: [
      { required: true, message: "请上传营业执照", trigger: "change" }
    ],
    enterpriseName: [
      { required: true, message: "请输入企业名称", trigger: "blur" }
    ],
    unifiedSocialCreditCode: [
      { required: true, message: "请输入统一社会信用代码", trigger: "blur" }
    ],
    registeredCapital: [
      { required: true, message: "请输入注册资金", trigger: "blur" }
    ],
    legalRepresentativeName: [
      { required: true, message: "请输入法定代表人姓名", trigger: "blur" }
    ],
    legalRepresentativeIdCard: [
      { required: true, message: "请上传法定代表人身份证", trigger: "change" }
    ],
    legalRepresentativeIdNumber: [
      {
        required: true,
        message: "请输入手机验证码",
        message: "请输入法定代表人身份证号码",
        trigger: "blur"
      }
    ],
    nickName: [
    legalRepresentativePhone: [
      { required: true, message: "请输入法定代表人联系电话", trigger: "blur" },
      {
        required: true,
        message: "请输入姓名",
        type: "string",
        pattern: /^1[3-9]\d{9}$/,
        message: "请输入正确的手机号码",
        trigger: "blur"
      }
    ],
    phone: [
    residence: [
      { required: true, message: "请选择企业住所", trigger: "change" }
    ],
    enterprisePhone: [
      { required: true, message: "请输入企业联系电话", trigger: "blur" },
      {
        required: true,
        message: "请输入您的手机号码",
        type: "string",
        pattern: /^1[3-9]\d{9}$/,
        message: "请输入正确的手机号码",
        trigger: "blur"
      }
    ],
    exRoleCode: [
    establishmentTime: [
      { required: true, message: "请选择企业成立时间", trigger: "change" }
    ],
    mainBusiness: [
      { required: true, message: "请输入企业主营业务", trigger: "blur" }
    ],
    enterpriseEmail: [
      { required: true, message: "请输入企业邮箱", trigger: "blur" },
      { type: "email", message: "请输入正确的邮箱地址", trigger: "blur" }
    ],
    operatorName: [
      { required: true, message: "请输入业务经办人姓名", trigger: "blur" }
    ],
    operatorIdCard: [
      { required: true, message: "请上传业务经办人身份证", trigger: "change" }
    ],
    operatorIdNumber: [
      {
        required: true,
        message: "请选择角色",
        message: "请输入业务经办人身份证号码",
        trigger: "blur"
      }
    ],
    operatorPhone: [
      { required: true, message: "请输入业务经办人联系电话", trigger: "blur" },
      {
        type: "string",
        pattern: /^1[3-9]\d{9}$/,
        message: "请输入正确的手机号码",
        trigger: "blur"
      }
    ],
    bankName: [
      { required: true, message: "请输入企业开户行", trigger: "blur" }
    ],
    bankAccount: [
      { required: true, message: "请输入企业银行账号", trigger: "blur" }
    ]
    // code: [{ required: true, message: t('message.account.placeholder4'), trigger: 'blur' }],
  },
  loading: {
    signIn: false
@@ -396,62 +591,138 @@
  phoneSeconds: 0, // 手机验证码倒计时
  roleList: []
});
let active = ref(1);
const nextStep = () => {
  if (active.value >= 2) {
    addDialog({
      width: "20%",
      title: "确认信息",
      contentRenderer: () => (
        <p>
          请您认真核对填报的资料是否正确,如因填报错误影响后续投标等操作,平台不承担任何责任,所有后果需要自行承担,请您谨慎填写!
        </p>
      ), // jsx 语法 (注意在.vue文件启用jsx语法,需要在script开启lang="tsx")
      closeCallBack: ({ options, args }) => {
        // options.props 是响应式的
        // const { formInline } = options.props as FormProps;
        // const text = `姓名:${formInline.user} 城市:${formInline.region}`;
        if (args?.command === "cancel") {
          // 您点击了取消按钮
          message(`您点击了取消按钮,当前表单数据为 `);
          // active.value -= 1;
        } else if (args?.command === "sure") {
          active.value += 1;
          message(`您点击了确定按钮,当前表单数据为 `);
        } else {
          message(
            `您点击了右上角关闭按钮或空白页或按下了esc键,当前表单数据为 `
          );
        }
const toWelcome = () => {
  router.replace("welcome");
};
// 页面初始化
onMounted(async () => {
  state.ruleForm.transactionCode = route.query.code;
  // 企业类型
  let res = await enterpriseTypes();
  state.enterpriseList = res?.result;
});
let active = ref(0);
const nextStep = async (formEl: FormInstance | undefined) => {
  if (active.value >= 1) {
    if (!formEl) return;
    await formEl.validate((valid, fields) => {
      if (valid) {
        addDialog({
          width: "20%",
          title: "确认信息",
          contentRenderer: () => (
            <p>
              请您认真核对填报的资料是否正确,如因填报错误影响后续投标等操作,平台不承担任何责任,所有后果需要自行承担,请您谨慎填写!
            </p>
          ), // jsx 语法 (注意在.vue文件启用jsx语法,需要在script开启lang="tsx")
          closeCallBack: ({ options, args }) => {
            // options.props 是响应式的
            // const { formInline } = options.props as FormProps;
            // const text = `姓名:${formInline.user} 城市:${formInline.region}`;
            if (args?.command === "cancel") {
              // 您点击了取消按钮
              // active.value -= 1;
            } else if (args?.command === "sure") {
              sumbitData();
            } else {
            }
          }
        });
        return;
      } else {
        return;
        console.log("error submit!", fields);
      }
    });
    return;
  }
  active.value += 1;
};
const backStep = () => {
  active.value -= 1;
};
// 提交企业注册信息
const sumbitData = async () => {
  let obj = cloneDeep(state.ruleForm);
  obj.enterpriseType = state.ruleForm.enterpriseType.join(",");
  let res = await createrExRolsInformation(obj);
  if (res.code == "200") {
    active.value = 3;
  } else {
    message(res.message, {
      type: "error"
    });
  }
};
const handleAvatarSuccess: UploadProps["onSuccess"] = (
  response,
  uploadFile
) => {
  state.ruleForm.businessLicense = URL.createObjectURL(uploadFile.raw!);
  if (response.code == "200") {
    // state.ruleForm.businessLicense = URL.createObjectURL(uploadFile.raw!);
    let res = response.result;
    state.ruleForm.businessLicense = res.url; // 营业执照文件路径
    state.ruleForm.enterpriseName = res.info.Name; // 企业名称
    state.ruleForm.unifiedSocialCreditCode = res.info.RegNum; // 统一社会信用代码
    state.ruleForm.registeredCapital = res.info.Capital; // 注册资金(单位:万元)
    state.ruleForm.legalRepresentativeName = res.info.Person; // 法定代表人姓名
    state.ruleForm.establishmentTime = res.info.SetDate; // 企业成立时间(格式示例:2025-07-08 14:56:54)
    state.ruleForm.residence = res.info.Address; // 企业住所(下拉选择,暂以字符串接收)
    state.ruleForm.mainBusiness = res.info.Business; // 企业主营业务
  } else {
    message(response.message, {
      type: "error"
    });
  }
};
const handleAvatarSuccessLegalRepresentative: UploadProps["onSuccess"] = (
  response,
  uploadFile
) => {
  console.log(response);
  if (response.code == "200") {
    // state.ruleForm.businessLicense = URL.createObjectURL(uploadFile.raw!);
    let res = response.result;
    state.ruleForm.legalRepresentativeIdCard = res.url; // 法定代表人身份证文件路径
    state.ruleForm.legalRepresentativeIdNumber = res.info.IdNum; // 法定代表人身份证号码
  } else {
    message(response.message, {
      type: "error"
    });
  }
};
const handleAvatarSuccessOperator: UploadProps["onSuccess"] = (
  response,
  uploadFile
) => {
  if (response.code == "200") {
    // state.ruleForm.businessLicense = URL.createObjectURL(uploadFile.raw!);
    let res = response.result;
    state.ruleForm.operatorName = res.info.Name; // 业务经办人姓名
    state.ruleForm.operatorIdCard = res.url; // 业务经办人身份证文件路径或标识(上传后存储信息)
    state.ruleForm.operatorIdNumber = res.info.IdNum; // 业务经办人身份证号码
  } else {
    message(response.message, {
      type: "error"
    });
  }
};
const beforeAvatarUpload: UploadProps["beforeUpload"] = rawFile => {
  if (rawFile.type !== "image/jpeg") {
    message(`请上传jpeg类型的图片`, {
      type: "error"
    });
    return false;
  } else if (rawFile.size / 1024 / 1024 > 2) {
    message(`图片大小不能超过 2MB!`, {
      type: "error"
    });
    return false;
  }
  // if (rawFile.type !== "image/jpeg") {
  //   message(`请上传jpeg类型的图片`, {
  //     type: "error"
  //   });
  //   return false;
  // } else if (rawFile.size / 1024 / 1024 > 2) {
  //   message(`图片大小不能超过 2MB!`, {
  //     type: "error"
  //   });
  //   return false;
  // }
  return true;
};
</script>
@@ -459,7 +730,7 @@
.content {
  background-color: #f8f8f8;
  width: 100%;
  // height: 100%;
  min-height: 100%;
  .header {
    display: flex;
    align-items: center;
@@ -477,8 +748,22 @@
    height: 20px;
    width: 20px;
  }
  p {
    font-size: 16px;
    line-height: 30px;
  }
  h3 {
    font-size: 1.17em;
    line-height: 30px;
  }
}
:deep .el-step__title {
  font-size: 12px;
}
.xieyi {
  color: #303133;
  font-size: 20px;
  font-weight: 700;
  margin-bottom: 20px;
}
</style>
src/views/welcome/index.vue
@@ -5,5 +5,5 @@
</script>
<template>
  <h1>Pure-Admin-Thin(非国际化版本)</h1>
  <h1>首页</h1>
</template>
vite.config.ts
@@ -27,7 +27,7 @@
      proxy: {
        "/api": {
          // 这里填写后端地址http://114.132.78.38:8096 http://192.168.0.36:5005
          target: "http://114.132.78.38:8096",
          target: "http://192.168.18.52:5005",
          changeOrigin: true,
          rewrite: path => path.replace(/^\/api/, "")
        }