Переглянути джерело

Merge branch 'master' of http://git.dgtis.com/zhangningning/ali_ai_learn_web

zhangningning 3 тижнів тому
батько
коміт
a94ddae183

+ 5 - 0
src/api/my.js

@@ -176,3 +176,8 @@ export function applyWithdraw(data = {}) {
 export function withdrawList(data = {}) {
   return request.get('/withdraw/list',data)
 }
+
+// 创建ai相关账号
+export function createAiAccount(data = {}) {
+  return request.post('/workflow/user/createAiAccount',data)
+}

+ 46 - 2
src/locales/en.js

@@ -272,8 +272,11 @@ export default {
     lishigongdan:'Historical Work Orders',
     changjianwenti:'Common Questions',
     gongdanleixing:'Work Order Type',
+    gongdanleixing_placeholder:'Please select work order type',
     gongdanbiaoti:'Work Order Title',
+    gongdanbiaoti_placeholder:'Please enter work order title',
     gongdanneirong:'Work Order Content',
+    gongdanneirong_placeholder:'Please enter work order content',
     zhanghaowenti:'Account Questions',
     zhifuwenti:'Payment Questions',
     kechengwenti:'Course Questions',
@@ -292,11 +295,52 @@ export default {
     tianjiabumen:'Add Department',
     bianjibumen:'Edit Department',
     qsrbmmc:'Please Enter The Department Name',
-    mbsl:'MiBi Quantity',
+    mbsl:'Allocate MiBi Quantity',
     fenpeimibi:'Assign MiBi',
     qsryfpdmbsl:'Please Enter The Employee\'s MiBi Quantity',
     lookVoucher:'View Voucher',
-    kfpmbsl:'Allocatable rice coins',
+    kfpmb:'Allocatable rice coins',
+    uploadAvatar:'Upload Avatar',
+    nickName:'Nick Name',
+    pinickName:'Please enter a nickname',
+    loginPhone:'Login Phone',
+    phoneCode:'verification code',
+    loginEmail:'Login Email',
+    emailCode:'Email verification code',
+    n8nAccout:'n8n Account',
+    createN8n:'Please create an n8n account',
+    n8nPassword:'n8n Password',
+    ceraten8n:'Synchronously generate an n8n account',
+    cozeAccout:'Coze Account',
+    createCoze:'Please create a Coze account',
+    cozePassword:'Coze Password',
+    ceratenCoze:'Synchronously generate a Coze account',
+    difyAccout:'Dify Account',
+    createDify:'Please create a Dify account',
+    difyPassword:'Dify Password',
+    ceratenDify:'Synchronously generate a Dify account',
+    fastGptAccout:'FastGpt Account',
+    createFastGpt:'Please create a FastGpt account',
+    fastGptPassword:'FastGpt Password',
+    ceratenFastGpt:'Synchronously generate a FastGpt account',
+    skillTag:'Skill Tags',
+    gxxybsc:'The information has been deleted, and the details cannot be viewed',
+    openVip:'Become a member to enjoy exclusive privileges',
+    zxqy:'Premium Benefits',
+    wx:'Infinite',
+    activate:'Activate',
+    gfmc:`Buyer's Name`,
+    downloadInvoice:'Download invoice',
+    rejectReason:'Reason for rejection',
+    personal:'Personal',
+    company:'Company',
+    code:'Unified Social Credit Identifier',
+    companyAddress:'Company Address',
+    companyPhone:'Company Office Number',
+    companyBank:`Company's bank of account`,
+    bankAccount:'account number of the bank of deposit',
+    fpttxx:'Invoice header information',
+    ttlx:'Title Type'
   },
   orderConfirm:{
     personalPay:'Personal Payment',

+ 46 - 2
src/locales/zh-CN.js

@@ -276,8 +276,11 @@ export default {
     lishigongdan:'历史工单',
     changjianwenti:'常见问题',
     gongdanleixing:'工单类型',
+    gongdanleixing_placeholder:'请选择工单类型',
     gongdanbiaoti:'工单标题',
+    gongdanbiaoti_placeholder:'请输入工单标题',
     gongdanneirong:'工单内容',
+    gongdanneirong_placeholder:'请输入工单内容',
     zhanghaowenti:'账号问题',
     zhifuwenti:'支付问题',
     kechengwenti:'课程问题',
@@ -296,11 +299,52 @@ export default {
     tianjiabumen:'添加部门',
     bianjibumen:'编辑部门',
     qsrbmmc:'请输入部门名称',
-    mbsl:'米币数量',
+    mbsl:'分配米币数量',
     fenpeimibi:'分配米币',
+    kfpmb:'可分配米币',
     qsryfpdmbsl:'请输入要分配的米币数量',
     lookVoucher:'查看凭证',
-    kfpmb:'可分配米币',
+    uploadAvatar:'上传头像',
+    nickName:'昵称',
+    pinickName:'请输入昵称',
+    loginPhone:'登录手机号',
+    phoneCode:'手机验证码',
+    loginEmail:'登录邮箱',
+    emailCode:'邮箱验证码',
+    n8nAccout:'n8n账号',
+    createN8n:'请创建n8n账号',
+    n8nPassword:'n8n初始密码',
+    ceraten8n:'同步生成n8n账号',
+    cozeAccout:'Coze账号',
+    createCoze:'请创建Coze账号',
+    cozePassword:'Coze初始密码',
+    ceratenCoze:'同步生成Coze账号',
+    difyAccout:'Dify账号',
+    createDify:'请创建Dify账号',
+    difyPassword:'Dify初始密码',
+    ceratenDify:'同步生成Dify账号',
+    fastGptAccout:'FastGPT账号',
+    createFastGpt:'请创建FastGPT账号',
+    fastGptPassword:'FastGPT初始密码',
+    ceratenFastGpt:'同步生成FastGPT账号',
+    skillTag:'技能标签',
+    gxxybsc:'该信息已被删除,无法查看详情',
+    openVip:'开通会员尊享特权',
+    zxqy:'尊享权益',
+    wx:'无限',
+    activate:'开通',
+    gfmc:'购方名称',
+    downloadInvoice:'下载发票',
+    rejectReason:'拒绝原因',
+    personal:'个人',
+    company:'企业单位',
+    code:'统一社会信用代码',
+    companyAddress:'公司地址',
+    companyPhone:'公司电话',
+    companyBank:'公司开户行',
+    bankAccount:'开户行账号',
+    fpttxx: '发票抬头信息',
+    ttlx:'抬头类型'
   },
   orderConfirm:{
     personalPay:'个人支付',

+ 5 - 5
src/pages/Member.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="member">
     <div class="member-head">
-      <div class="member-head-title">开通会员尊享特权</div>
+      <div class="member-head-title">{{ $t('personalCenter.openVip') }}</div>
       <!-- <ul class="member-head-list">
         <li v-for="(item, index) in 4" :key="index">小标题优惠文案</li>
       </ul> -->
@@ -14,7 +14,7 @@
           <div class="price-left">
             <span>¥</span>
             <span>{{ item.price }}</span>
-            <span>/</span>
+            <span>/{{ item.durationUnit }}</span>
           </div>
           <!-- <div class="price-right">¥79.00/月</div> -->
         </div>
@@ -28,12 +28,12 @@
           productId: item.typeId,
           orderType: 'member_recharge',
           payMethod: 'BMI'
-        })">开通{{ item.typeName }}</div>
-        <div class="line">尊享权益</div>
+        })">{{ $t('personalCenter.activate') }}{{ item.typeName }}</div>
+        <div class="line">{{ $t('personalCenter.zxqy') }}</div>
         <div class="ul">
           <div v-for="(em, ind) in privilegeRes[item.memberType]" :key="ind" class="li flex-center-between">
             <div class="">{{ em.privilegeName }}</div>
-            <div class="">{{ em.privilegeValue == -1 ? '无限' : `${em.privilegeValue}${em.unit ? em.unit : ''}`  }}</div>
+            <div class="">{{ em.privilegeValue == -1 ? $t('personalCenter.wx') : `${em.privilegeValue}${em.unit ? em.unit : ''}`  }}</div>
           </div>
         </div>
       </li>

+ 3 - 3
src/pages/Personal/BusinessManagement.vue

@@ -15,7 +15,7 @@
             <div class="">{{ node.label }}</div>
             <div @click.stop="" v-if="data.isBtn" class="flex-align-center custom-tree-node-right">
               <!-- <el-input v-model="node.label" placeholder="请输入" @keydown="(e) => changeLabel(e, data, node)" /> -->
-              <img @click.stop="changeNode(data, index, 0)" src="/src/assets/imgs/my/jia2@2x.png" alt="">
+              <!-- <img @click.stop="changeNode(data, index, 0)" src="/src/assets/imgs/my/jia2@2x.png" alt=""> -->
 
               <img @click.stop="changeNode(data, index, 1)" src="/src/assets/imgs/my/bianji@2x.png" alt="">
               <img @click.stop="changeNode(data, index, 2)" src="/src/assets/imgs/my/shanchu@2x.png" alt="">
@@ -135,8 +135,8 @@
       </el-form>
       <template #footer>
         <div class="dialog-footer flex-center">
-          <el-button @click="resetForm">{{ $t('common.cancel') }}</el-button>
-          <el-button type="primary" @click="confirmSubAccount(ruleFormRef)">{{ $t('common.confirm') }}</el-button>
+          <el-button  @click="resetForm">{{ $t('common.cancel') }}</el-button>
+          <el-button class="gradient" type="primary" @click="confirmSubAccount(ruleFormRef)">{{ $t('common.confirm') }}</el-button>
         </div>
       </template>
     </el-dialog>

+ 11 - 11
src/pages/Personal/Demand.vue

@@ -8,7 +8,7 @@
               <div class="flex-align-center">
                 <div v-if="form.activeName == 1" class="tag"
                   :class="{ 'tag_red': item.applyStatus == 2 || item.applyStatus == null }">{{
-                    item.applyStatus == 1 ? '报名中' : '已结束' }}</div>
+                    item.applyStatus == 1 ? $t('workflowTrade.demandStatusSignUping') : $t('workflowTrade.demandStatusEnded') }}</div>
                 <div class="title">{{ item.title }}</div>
               </div>
               <div class="price" v-if="item.budgetMin || item.budgetMax">¥{{ item.budgetMin }}-{{ item.budgetMax }}
@@ -83,9 +83,9 @@
         <div class="detail-top">
           <div class="flex-center-between">
             <div class="flex-align-center">
-              <div class="tag" :class="{ 'tag_red': itemData.applyStatus == '2' }">{{ itemData.applyStatus == 1 ? '报名中'
+              <div class="tag" :class="{ 'tag_red': itemData.applyStatus == '2' }">{{ itemData.applyStatus == 1 ? $t('workflowTrade.demandStatusSignUping')
                 :
-                '已结束'
+                $t('workflowTrade.demandStatusEnded')
               }}</div>
               <div class="name">{{ itemData.title }}</div>
             </div>
@@ -113,8 +113,8 @@
         </div>
         <div class="detail-txt">{{ $t('personalCenter.baomiliang') }}({{ itemData.questApplyCount || 0 }} {{
           $t('personalCenter.ren') }})</div>
-        <ul class="detail-list">
-          <li v-for="(item, index) in recordList" :key="index">
+        <div class="detail-list">
+          <div v-for="(item, index) in recordList" :key="index" class="li">
             <div class="flex-align-center detail-list-left">
               <el-avatar :size="20" :src="item.userAvatar" />
               <div class="">{{ item.applyUserName }}</div>
@@ -138,13 +138,13 @@
                 <div class="">{{ $t('common.viewHomepage') }}</div>
               </div> -->
             </div>
-          </li>
-        </ul>
+          </div>
+        </div>
       </div>
       <template #footer>
         <div class="dialog-footer flex-center">
-          <el-button @click="dialogVisible = false">{{ $t('common.cancel') }}</el-button>
-          <el-button type="primary" class="gradient" @click="dialogVisible = false">
+          <el-button @click.prevent="dialogVisible = false">{{ $t('common.cancel') }}</el-button>
+          <el-button type="primary" class="gradient" @click.prevent="dialogVisible = false">
             {{ $t('common.confirm') }}
           </el-button>
         </div>
@@ -301,7 +301,7 @@ const toDetail = (item) => {
       }
     })
   } else {
-    DGTMessage.warning('该信息已被删除,无法查看详情')
+    DGTMessage.warning(t('personalCenter.gxxybsc'))
   }
 
 }
@@ -518,7 +518,7 @@ onMounted(() => {
   }
 
   .detail-list {
-    li {
+    .li {
       display: flex;
       padding: 0 16px;
       align-items: center;

+ 9 - 11
src/pages/Personal/Invoice.vue

@@ -36,16 +36,16 @@
     </template>
     <el-empty v-else :description="$t('common.empty')" />
 
-    <el-dialog v-model="dialogVisible" title="详情" width="700">
-      <el-form :model="invoiceData">
+    <el-dialog v-model="dialogVisible" :title="$t('common.Detail')" width="700">
+      <el-form :model="invoiceData" label-position="top">
         <el-row :gutter="16">
           <el-col :span="12">
-            <el-form-item label="购方名称">
+            <el-form-item :label="$t('personalCenter.gfmc')">
               <el-input v-model="invoiceData.invoiceTitle" disabled />
             </el-form-item>
           </el-col>
           <el-col :span="12" v-if="invoiceData.invoiceType">
-            <el-form-item label="购方税号">
+            <el-form-item :label="$t('personalCenter.code')">
               <el-input v-model="invoiceData.taxNumber" disabled />
             </el-form-item>
           </el-col>
@@ -53,24 +53,24 @@
         <template v-if="invoiceData.invoiceType">
           <el-row :gutter="16">
             <el-col :span="12">
-              <el-form-item label="公司地址">
+              <el-form-item :label="$t('personalCenter.companyAddress')">
                 <el-input v-model="invoiceData.otherInfo.address" disabled />
               </el-form-item>
             </el-col>
             <el-col :span="12">
-              <el-form-item label="公司电话">
+              <el-form-item :label="$t('personalCenter.companyPhone')">
                 <el-input v-model="invoiceData.otherInfo.mobile" disabled />
               </el-form-item>
             </el-col>
           </el-row>
           <el-row :gutter="16">
             <el-col :span="12">
-              <el-form-item label="公司开户行">
+              <el-form-item :label="$t('personalCenter.companyBank')">
                 <el-input v-model="invoiceData.otherInfo.bank" disabled />
               </el-form-item>
             </el-col>
             <el-col :span="12">
-              <el-form-item label="开户行账号">
+              <el-form-item :label="$t('personalCenter.bankAccount')">
                 <el-input v-model="invoiceData.otherInfo.account" disabled />
               </el-form-item>
             </el-col>
@@ -81,9 +81,7 @@
       <template #footer>
         <div class="dialog-footer">
           <!-- <el-button @click="dialogVisible = false">Cancel</el-button> -->
-          <el-button type="primary" @click="handleClick">
-            下载发票
-          </el-button>
+          <el-button type="primary" @click="handleClick">{{ $t('personalCenter.downloadInvoice') }}</el-button>
         </div>
       </template>
     </el-dialog>

+ 3 - 3
src/pages/Personal/MemberDetails.vue

@@ -7,7 +7,7 @@
     <ul class="member-details-list">
       <li v-for="(item, index) in list" :key="index">
         <div class="member-details-list-t flex-center-between">
-          <div class="">{{ $t('personalCenter.goumaishichang') }}:{{ item.orderNum }}个月 {{ item.description }}</div>
+          <div class="">{{ $t('personalCenter.goumaishichang') }}:{{ item.description }}</div>
           <div class="">{{ item.amount }}{{ $t('common.baomibi') }}</div>
         </div>
         <div class="member-details-list-b flex-center-between">
@@ -41,8 +41,8 @@ const list = ref([])
 
 const getList = async () => {
   let res = await orderList(form.value);
-  form.value.total = res.total;
-  list.value = res.rows
+  form.value.total = res?.total;
+  list.value = res?.rows || [];
 }
 const handlePageChange = (page) => {
   list.value = []

+ 33 - 26
src/pages/Personal/Orders.vue

@@ -33,26 +33,33 @@
 
                   <div class="mi_price">
                     <div class="">x{{ item.orderNum }}</div>
-                    <div class="">数量</div>
+                    <div class="">{{ $t('common.quantity') }}</div>
                   </div>
                   <div class="mi_price price">
                     <div class="">{{ item.amount || 0 }}{{ item.amountUnit }}</div>
                     <div class="">{{ item.payMethodName }}</div>
                   </div>
 
-                  <div class="">
-                    <div v-if="item.invoiceStatus == 0 && item.orderStatus == 1" @click="applyInvoices(item, index)"
-                      class="blue btn">
-                      <img src="/src/assets/imgs/my/order3@2x.png" alt="">
-                      <div class="">{{ $t('common.applyInvoice') }}</div>
-                    </div>
+                  <div class="flex-center-flex-end" style="width: 300px;">
+                    <template v-if="item.invoiceStatus == 0 && item.orderStatus == 1">
+                      <el-tag style="margin-right: 16px;" :type=" item.shipStatus == 0 ? 'primary' : 'shipStatus'" v-if="item.orderType == 'mi_mall'">{{ item.shipStatusName }}</el-tag>
+                      <div @click="applyInvoices(item, index)" class="blue btn">
+                        <img src="/src/assets/imgs/my/order3@2x.png" alt="">
+                        <div class="">{{ $t('common.applyInvoice') }}</div>
+                      </div>
+                      
+                    </template>
+
 
                     <div class="gradient btn" v-else-if="item.orderStatus == 0" @click="pay(item)">
                       <img src="/src/assets/imgs/my/order1@2x.png" alt="">
                       <div class="">{{ $t('personalCenter.lookVoucher') }}</div>
                     </div>
+
                     <div class="" v-else-if="item.orderStatus == 5">
-                      <el-text class="mx-1" type="danger" size="large">拒绝原因:{{ item.transferSug }}</el-text>
+                      <el-text class="mx-1" type="danger" size="large">{{ $t('personalCenter.rejectReason') }}:{{
+                        item.transferSug
+                        }}</el-text>
                     </div>
                     <div class="btn_kong" v-else></div>
                     <template v-if="false">
@@ -99,35 +106,35 @@
         @page-change="handlePageChange" />
     </template>
     <el-empty v-else :description="$t('common.empty')" />
-    <el-dialog v-model="dialogVisible" title="申请开票" width="784">
-      <div class="dialog_title">发票抬头信息</div>
+    <el-dialog v-model="dialogVisible" :title="$t('common.applyInvoice')" width="784">
+      <div class="dialog_title">{{ $t('personalCenter.fpttxx') }}</div>
       <el-form :model="invoiceData" class="demo-form-inline" label-position="top" :rules="rules" ref="ruleFormRef">
         <el-row :gutter="16">
           <el-col :span="12">
-            <el-form-item label="抬头类型">
+            <el-form-item :label="$t('personalCenter.ttlx')">
               <el-radio-group v-model="invoiceData.invoiceType">
-                <el-radio value="0" size="large">个人</el-radio>
-                <el-radio value="1" size="large">企业单位</el-radio>
+                <el-radio value="0" size="large">{{ $t('personalCenter.personal') }}</el-radio>
+                <el-radio value="1" size="large">{{ $t('personalCenter.company') }}</el-radio>
               </el-radio-group>
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="购方名称" prop="invoiceTitle">
-              <el-input v-model="invoiceData.invoiceTitle" placeholder="请输入" clearable />
+            <el-form-item :label="$t('personalCenter.gfmc')" prop="invoiceTitle">
+              <el-input v-model="invoiceData.invoiceTitle" :placeholder="$t('common.placeholderInput')" clearable />
             </el-form-item>
           </el-col>
         </el-row>
         <template v-if="invoiceData.invoiceType == 1">
           <el-row :gutter="16">
             <el-col :span="12">
-              <el-form-item label="购方税号" prop="taxNumber">
-                <el-input v-model="invoiceData.taxNumber" placeholder="请输入" clearable />
+              <el-form-item :label="$t('personalCenter.code')" prop="taxNumber">
+                <el-input v-model="invoiceData.taxNumber" :placeholder="$t('common.placeholderInput')" clearable />
               </el-form-item>
             </el-col>
 
             <el-col :span="12">
-              <el-form-item label="公司地址">
-                <el-input v-model="invoiceData.otherInfo.address" placeholder="请输入" clearable />
+              <el-form-item :label="$t('personalCenter.companyAddress')">
+                <el-input v-model="invoiceData.otherInfo.address" :placeholder="$t('common.placeholderInput')" clearable />
               </el-form-item>
             </el-col>
 
@@ -137,20 +144,20 @@
         <template v-if="invoiceData.invoiceType == 1">
           <el-row :gutter="16">
             <el-col :span="12">
-              <el-form-item label="公司电话">
-                <el-input v-model="invoiceData.otherInfo.mobile" placeholder="请输入" clearable />
+              <el-form-item :label="$t('personalCenter.companyPhone')">
+                <el-input v-model="invoiceData.otherInfo.mobile" :placeholder="$t('common.placeholderInput')" clearable />
               </el-form-item>
             </el-col>
             <el-col :span="12">
-              <el-form-item label="公司开户行">
-                <el-input v-model="invoiceData.otherInfo.bank" placeholder="请输入" clearable />
+              <el-form-item :label="$t('personalCenter.companyBank')">
+                <el-input v-model="invoiceData.otherInfo.bank" :placeholder="$t('common.placeholderInput')" clearable />
               </el-form-item>
             </el-col>
           </el-row>
           <el-row :gutter="16">
             <el-col :span="12">
-              <el-form-item label="开户行账号">
-                <el-input v-model="invoiceData.otherInfo.account" placeholder="请输入" clearable />
+              <el-form-item :label="$t('personalCenter.bankAccount')">
+                <el-input v-model="invoiceData.otherInfo.account" :placeholder="$t('common.placeholderInput')" clearable />
               </el-form-item>
             </el-col>
 
@@ -415,7 +422,7 @@ li {
           display: flex;
           align-items: center;
           justify-content: center;
-          width: 106px;
+          padding: 0 16px;
           height: 32px;
           cursor: pointer;
           border-radius: 4px;

+ 11 - 3
src/pages/Personal/Wallet.vue

@@ -32,7 +32,10 @@
           <div class="wallet-page-list">
             <div class="lis" v-for="(item, index) in list" :key="index">
               <div class="flex-center-between">
-                <div class="">{{ item.applyStatus == 0 ? '待审核' : item.applyStatus == 1 ? '已通过' : '未通过' }}</div>
+                <el-tag
+                  :type="item.applyStatus == 0 ? 'primary' : item.applyStatus == 1 ? 'success' : item.applyStatus == 2 ? 'danger' : ''">{{
+                    item.applyStatus == 0 ? '待审核' : item.applyStatus == 1 ? '已通过' : '未通过' }}</el-tag>
+
                 <div class="price">¥{{ item.applyAmount }}</div>
               </div>
 
@@ -42,10 +45,15 @@
               </div>
               <div class="flex-center-between">
                 <div class="">提现方式:{{ item.settleType == 'alipay' ? '支付宝' : item.settleType == 'wechat' ? '微信' : '银行卡'
-                  }}</div>
+                }}</div>
                 <div class="">提现账号:{{ item.receiveAccount }}</div>
               </div>
-              <div class="">申请时间:{{ item.createTime }}</div>
+              <div class="flex-center-between">
+                 <div class="">申请时间:{{ item.createTime }}</div>
+                
+                <el-text v-if=" item.applyStatus == 2" class="mx-1" type="danger">拒绝理由:{{ item.auditRemark }}</el-text>
+              </div>
+             
             </div>
           </div>
         </template>

+ 1 - 1
src/pages/Personal/Workflow.vue

@@ -25,7 +25,7 @@
               </div>
               <div class="info-right flex-align-center">
                 <img src="/src/assets/imgs/yun.png" alt="">
-                <div class="">{{ item.categoryName1 }}平台</div>
+                <div class="">{{ item.categoryName1 }}{{ $t('common.platform') }}</div>
               </div>
             </div>
             <div class="footer flex-center-between">

+ 90 - 75
src/pages/PersonalCenter.vue

@@ -111,17 +111,17 @@
           <template v-if="activeName == 0">
             <el-form ref="ruleFormRef" :model="ruleForm" :rules="rules" label-width="auto">
               <el-form-item :label="`${$t('personalCenter.gongdanleixing')}`" prop="issueCategory">
-                <el-select v-model="ruleForm.issueCategory" :placeholder="`${$t('common.qingxuanze')}`"
+                <el-select v-model="ruleForm.issueCategory" :placeholder="`${$t('personalCenter.gongdanleixing_placeholder')}`"
                   style="width: 100%">
                   <el-option v-for="item in workTypeList" :key="item.value" :label="`${$t(item.label)}`"
                     :value="item.value" />
                 </el-select>
               </el-form-item>
               <el-form-item :label="`${$t('personalCenter.gongdanbiaoti')}`" prop="issueTitle">
-                <el-input v-model="ruleForm.issueTitle" :placeholder="`${$t('common.placeholderInput')}`" />
+                <el-input v-model="ruleForm.issueTitle" :placeholder="`${$t('personalCenter.gongdanbiaoti_placeholder')}`" />
               </el-form-item>
               <el-form-item :label="`${$t('personalCenter.gongdanneirong')}`" prop="issueContent">
-                <el-input v-model="ruleForm.issueContent" :placeholder="`${$t('common.placeholderInput')}`" :rows="2"
+                <el-input v-model="ruleForm.issueContent" :placeholder="`${$t('personalCenter.gongdanneirong_placeholder')}`" :rows="10"
                   type="textarea" />
               </el-form-item>
             </el-form>
@@ -163,12 +163,11 @@
 
 
 
-    <el-dialog v-model="dialogVisible" title="编辑资料" width="784">
-      <el-form :model="userInfo" label-width="auto" label-position="top">
-
+    <el-dialog v-model="dialogVisible" :title="$t('personalCenter.editProfile')" width="784">
+      <el-form ref="userFormRef" :model="userInfo" label-width="auto" label-position="top" :rules="rules">
         <el-row :gutter="16">
           <el-col :span="12">
-            <el-form-item label="上传头像">
+            <el-form-item :label="$t('personalCenter.uploadAvatar')">
               <!-- 图片类型 -->
               <FileUploader ref="fileUploader" accept="image/*" :multiple="false" :limit="1" :auto-upload="true"
                 list-type="picture-card" :data="{ directory: 'workflow' }" buttonText="" v-model="coverImage" tip="" />
@@ -177,8 +176,8 @@
         </el-row>
         <el-row :gutter="16">
           <el-col :span="12">
-            <el-form-item label="昵称">
-              <el-input v-model="userInfo.nickName" :placeholder="$t('common.placeholderInput')" class="inputStyle"
+            <el-form-item :label="$t('personalCenter.nickName')" prop="nickName">
+              <el-input v-model="userInfo.nickName" :placeholder="$t('personalCenter.pinickName')" class="inputStyle"
                 :input-style="{
                   backgroundColor: 'transparent',
                 }" />
@@ -188,16 +187,16 @@
         </el-row>
         <el-row :gutter="16">
           <el-col :span="12">
-            <el-form-item label="登录手机号">
-              <el-input :disabled="userInfo.userPhone ? true : false" v-model="userInfo.userPhone"
-                :placeholder="$t('common.placeholderInput')" class="inputStyle" :input-style="{
+            <el-form-item :label="$t('personalCenter.loginPhone')">
+              <el-input :disabled="appStore?.userInfo?.userPhone ? true : false" v-model="userInfo.userPhone"
+                :placeholder="$t('workflowTradeAdd.placeholderPhoneNumber')" class="inputStyle" :input-style="{
                   backgroundColor: 'transparent',
                 }" />
             </el-form-item>
           </el-col>
           <el-col :span="12" v-if="!appStore?.userInfo?.userPhone">
-            <el-form-item label="验证码" prop="verifyCode">
-              <el-input v-model="userInfo.verifyCode" :placeholder="$t('common.placeholderInput')" class="inputStyle"
+            <el-form-item :label="$t('personalCenter.phoneCode')" prop="verifyCode">
+              <el-input v-model="userInfo.verifyCode" :placeholder="$t('login.placeholderCaptcha')" class="inputStyle"
                 :input-style="{
                   backgroundColor: 'transparent',
                 }">
@@ -213,17 +212,17 @@
         </el-row>
         <el-row :gutter="16">
           <el-col :span="12">
-            <el-form-item label="登录邮箱">
-              <el-input v-model="userInfo.email" :placeholder="$t('common.placeholderInput')" class="inputStyle"
+            <el-form-item :label="$t('personalCenter.loginEmail')">
+              <el-input v-model="userInfo.email" :placeholder="$t('workflowTradeAdd.placeholderEmail')" class="inputStyle"
                 :input-style="{
                   backgroundColor: 'transparent',
-                }" />
+                }" :disabled="appStore?.userInfo?.email ? true : false" />
             </el-form-item>
 
           </el-col>
           <el-col :span="12" v-if="!appStore?.userInfo?.email">
-            <el-form-item label="验证码" prop="verifyCode">
-              <el-input v-model="userInfo.verifyCode" :placeholder="$t('common.placeholderInput')" class="inputStyle"
+            <el-form-item :label="$t('personalCenter.emailCode')" prop="verifyCode">
+              <el-input v-model="userInfo.verifyCode" :placeholder="$t('login.placeholderCaptcha')" class="inputStyle"
                 :input-style="{
                   backgroundColor: 'transparent',
                 }">
@@ -239,22 +238,21 @@
         </el-row>
         <el-row :gutter="16">
           <el-col :span="12">
-            <el-form-item label="n8n账号">
-              <el-input v-model="userInfo.name" :placeholder="$t('common.placeholderInput')" class="inputStyle"
+            <el-form-item :label="$t('personalCenter.n8nAccout')">
+              <el-input readonly v-model="userInfo.name" :placeholder="$t('personalCenter.createN8n')" class="inputStyle"
                 :input-style="{
                   backgroundColor: 'transparent',
                 }">
-                <template #append>
-                  <el-tooltip class="box-item" effect="dark" content="同步生成n8n账号" placement="top">
-                    <el-button :icon="Refresh" />
+                <template #append v-if="appStore?.userInfo?.email && !appStore?.userInfo?.name">
+                  <el-tooltip class="box-item" effect="dark" :content="$t('personalCenter.ceraten8n')" placement="top">
+                    <el-button @click="createAi('0')" :icon="Refresh" />
                   </el-tooltip>
-
                 </template>
               </el-input>
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="n8n初始密码">
+            <el-form-item :label="$t('personalCenter.n8nPassword')">
               <el-input v-model="userInfo.userPhone" :placeholder="$t('common.placeholderInput')" class="inputStyle"
                 :input-style="{
                   backgroundColor: 'transparent',
@@ -265,23 +263,23 @@
         </el-row>
         <el-row :gutter="16">
           <el-col :span="12">
-            <el-form-item label="Coze账号">
-              <el-input v-model="userInfo.name" :placeholder="$t('common.placeholderInput')" class="inputStyle"
+            <el-form-item :label="$t('personalCenter.cozeAccout')">
+              <el-input v-model="userInfo.name" :placeholder="$t('personalCenter.createCoze')" class="inputStyle"
                 :input-style="{
                   backgroundColor: 'transparent',
                 }">
                 <template #append>
-                  <el-tooltip class="box-item" effect="dark" content="同步生成Coze账号" placement="top">
-                    <el-button :icon="Refresh" />
+                  <el-tooltip class="box-item" effect="dark" :content="$t('personalCenter.ceratenCoze')"
+                    placement="top">
+                    <el-button @click="createAi('1')" :icon="Refresh" />
                   </el-tooltip>
-
                 </template>
               </el-input>
             </el-form-item>
 
           </el-col>
           <el-col :span="12">
-            <el-form-item label="Coze初始密码">
+            <el-form-item :label="$t('personalCenter.cozePassword')">
               <el-input v-model="userInfo.name" :placeholder="$t('common.placeholderInput')" class="inputStyle"
                 :input-style="{
                   backgroundColor: 'transparent',
@@ -291,22 +289,22 @@
         </el-row>
         <el-row :gutter="16">
           <el-col :span="12">
-            <el-form-item label="Dify账号">
-              <el-input v-model="userInfo.name" :placeholder="$t('common.placeholderInput')" class="inputStyle"
+            <el-form-item :label="$t('personalCenter.difyAccout')">
+              <el-input v-model="userInfo.name" :placeholder="$t('personalCenter.createDify')" class="inputStyle"
                 :input-style="{
                   backgroundColor: 'transparent',
                 }">
                 <template #append>
-                  <el-tooltip class="box-item" effect="dark" content="同步生成Dify账号" placement="top">
-                    <el-button :icon="Refresh" />
+                  <el-tooltip class="box-item" effect="dark" :content="$t('personalCenter.ceratenDify')"
+                    placement="top">
+                    <el-button @click="createAi('2')" :icon="Refresh" />
                   </el-tooltip>
-
                 </template>
               </el-input>
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="Dify初始密码">
+            <el-form-item :label="$t('personalCenter.difyPassword')">
               <el-input v-model="userInfo.name" :placeholder="$t('common.placeholderInput')" class="inputStyle"
                 :input-style="{
                   backgroundColor: 'transparent',
@@ -317,14 +315,15 @@
         <el-row :gutter="16">
 
           <el-col :span="12">
-            <el-form-item label="FastGpt账号">
-              <el-input v-model="userInfo.name" :placeholder="$t('common.placeholderInput')" class="inputStyle"
+            <el-form-item :label="$t('personalCenter.fastGptAccout')">
+              <el-input v-model="userInfo.name" :placeholder="$t('personalCenter.createFastGpt')" class="inputStyle"
                 :input-style="{
                   backgroundColor: 'transparent',
                 }">
                 <template #append>
-                  <el-tooltip class="box-item" effect="dark" content="同步生成FastGpt账号" placement="top">
-                    <el-button :icon="Refresh" />
+                  <el-tooltip class="box-item" effect="dark" :content="$t('personalCenter.ceratenFastGpt')"
+                    placement="top">
+                    <el-button @click="createAi('3')" :icon="Refresh" />
                   </el-tooltip>
 
                 </template>
@@ -332,7 +331,7 @@
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="FastGpt初始密码">
+            <el-form-item :label="$t('personalCenter.fastGptPassword')">
               <el-input v-model="userInfo.name" :placeholder="$t('common.placeholderInput')" class="inputStyle"
                 :input-style="{
                   backgroundColor: 'transparent',
@@ -343,7 +342,7 @@
 
         <el-row>
           <el-col :span="24">
-            <el-form-item label="技能标签">
+            <el-form-item :label="$t('personalCenter.skillTag')">
               <div class="flex tags flex_1">
                 <el-tag v-for="tag in dynamicTags" :key="tag" closable @close="handleClose(tag)">
                   {{ tag }}
@@ -354,7 +353,7 @@
                     <el-button :icon="Plus" />
                   </template></el-input>
                 <el-button v-else class="button-new-tag" size="small" @click="showInput">
-                  + {{ $t('common.addTags') }}
+                  + {{ $t('login.addTags') }}
                 </el-button>
               </div>
             </el-form-item>
@@ -364,7 +363,7 @@
       <template #footer>
         <div class="dialog-footer flex-center">
           <el-button @click="dialogVisible = false">{{ $t('common.cancel') }}</el-button>
-          <el-button class="gradient" type="primary" @click="handleConfirm">
+          <el-button class="gradient" type="primary" @click="handleConfirm(userFormRef)">
             {{ $t('common.confirm') }}
           </el-button>
         </div>
@@ -386,9 +385,9 @@ import type { InputInstance } from 'element-plus'
 
 import { useRoute, useRouter } from 'vue-router'
 
-import { getUserInfo, updateUserInfo,getSmsCode,getEmailCode } from '@/api/auth.js'
+import { getUserInfo, updateUserInfo, getSmsCode, getEmailCode } from '@/api/auth.js'
 
-import { checkIn, queryCollectCount, issue, issueList, faqList, getfaq } from '@/api/my.js'
+import { checkIn, queryCollectCount, issue, issueList, faqList, getfaq, createAiAccount } from '@/api/my.js'
 
 import DGTMessage from '@/utils/message'
 
@@ -409,6 +408,8 @@ interface RuleForm {
 
 const ruleFormRef = ref(null);
 
+const userFormRef = ref();
+
 const { t } = useI18n()
 
 const appStore = useAppStore();
@@ -537,15 +538,20 @@ const rules = ref<FormRules<RuleForm>>({
   issueCategory: [
     {
       required: true,
-      message: '请选择工单类型',
+      message: t('personalCenter.gongdanleixing_placeholder'),
       trigger: 'change',
     },
   ],
   issueTitle: [
-    { required: true, message: '请输入标题', trigger: 'blur' },
+    { required: true, message:  t('personalCenter.gongdanbiaoti_placeholder'), trigger: 'blur' },
   ],
   issueContent: [
-    { required: true, message: '请输入内容', trigger: 'blur' },
+    { required: true, message:  t('personalCenter.gongdanneirong_placeholder'), trigger: 'blur' },
+  ],
+  nickName: [
+    {
+      required: true, message: t('personalCenter.pinickName'), trigger: 'blur'
+    }
   ]
 })
 
@@ -604,17 +610,25 @@ const isPasswordEmail = computed(() => {
   return EMAIL_REGEX.test(passwordForm.account);
 });
 
+// 创建ai相关账号
+const createAi = async (creatFlag) => {
+  let res = await createAiAccount({ creatFlag });
+  if (res.code === 200) {
+    DGTMessage.success(`${t('common.success')}`)
+  }
+}
+
 // 发送短信验证码
 const sendSmsCode = async () => {
-  let account =  appStore?.userInfo?.userPhone ? userInfo.value.email : userInfo.value.userPhone
+  let account = appStore?.userInfo?.userPhone ? userInfo.value.email : userInfo.value.userPhone
   if (!account) {
-    DGTMessage.warning('请先输入手机号或邮箱')
+    DGTMessage.warning( appStore?.userInfo?.userPhone ? t('workflowTradeAdd.placeholderEmail') : t('workflowTradeAdd.placeholderPhoneNumber'))
     return
   }
 
   // 验证手机号格式 
   if (!PHONE_REGEX.test(account) && !EMAIL_REGEX.test(account)) {
-    DGTMessage.warning('请输入正确的手机号或邮箱')
+     DGTMessage.warning( appStore?.userInfo?.userPhone ? t('common.pleaseInputRightEmail') : t('common.pleaseInputRightPhoneNumber'))
     return
   }
 
@@ -634,7 +648,7 @@ const sendSmsCode = async () => {
   }
 
   // 模拟发送验证码
-  DGTMessage.success('验证码发送成功')
+ ElMessage.success(t('login.captchaSendSuccess'))
 
   // 开始倒计时
   smsCountdown.value = 60
@@ -688,25 +702,27 @@ const submitForm = async (formEl) => {
 }
 
 // 更新用户信息
-const handleConfirm = async () => {
-
-
-  // bindType verifyCode
-  if (!appStore.userInfo.userPhone || !appStore.userInfo.email) {
-    userInfo.value.bindType = appStore.userInfo.userPhone ? 'email' : 'phone'
-  }
-  let obj = !appStore.userInfo.userPhone || !appStore.userInfo.email ? {email:userInfo.value.email,bindType:userInfo.value.bindType,userPhone: userInfo.value.userPhone} : {}
-  let res = await updateUserInfo({
-    nickName: userInfo.value.nickName,
-    userAvatar: coverImage.value.map(item => item.url).join(';'),
-    skillTags: dynamicTags.value.join(','),
-    ...obj
+const handleConfirm = async (formEl) => {
+  if (!formEl) return
+  await formEl.validate(async (valid, fields) => {
+    if (valid) {
+      if (!appStore.userInfo.userPhone || !appStore.userInfo.email) {
+        userInfo.value.bindType = appStore.userInfo.userPhone ? 'email' : 'phone'
+      }
+      let obj = !appStore.userInfo.userPhone || !appStore.userInfo.email ? { email: userInfo.value.email, bindType: userInfo.value.bindType, userPhone: userInfo.value.userPhone, verifyCode: userInfo.value.verifyCode } : {}
+      let res = await updateUserInfo({
+        nickName: userInfo.value.nickName,
+        userAvatar: coverImage.value.map(item => item.url).join(';'),
+        skillTags: dynamicTags.value.join(','),
+        ...obj
+      })
+      if (res.code === 200) {
+        appStore.USERINFO();
+        DGTMessage.success(`${t('common.modify')}${t('common.success')}`)
+        dialogVisible.value = false;
+      }
+    }
   })
-  if (res.code === 200) {
-    appStore.USERINFO();
-    DGTMessage.success(`${t('common.modify')}${t('common.success')}`)
-    dialogVisible.value = false;
-  }
 }
 
 const toPath = (item: any, index: number) => {
@@ -733,11 +749,10 @@ const getInfo = async () => {
   }
   userInfo.value = res.user;
   navList.value.forEach(item => {
-    if (item.name === 'personalCenter.businessManagement' && res.user.isCompanyAuth == 1) {
+    if (item.name === 'personalCenter.businessManagement' && res?.user?.isCompanyAuth == 1) {
       item.show = true;
     }
   })
-  // isCompanyAuth
 }
 
 const collectCount = ref(0)