yinxiangke hai 1 mes
pai
achega
76f5a450cc

+ 2 - 2
.env.development

@@ -1,6 +1,6 @@
 # 乔功
-VITE_API_BASE_URL=http://192.168.100.134:8080/api
+# VITE_API_BASE_URL=http://192.168.100.134:8080/api
 # 高运甲
-# VITE_API_BASE_URL=http://192.168.100.89:8080/api
+VITE_API_BASE_URL=http://192.168.100.89:8080/api
 
 

+ 34 - 0
src/api/my.js

@@ -82,3 +82,37 @@ export function delectPublish(data = {}) {
 export function recordList(data = {}) {
   return request.get('/record/list',data)
 }
+
+// 部门列表
+export function deptList(data = {}) {
+  return request.get('/dept/list',data)
+}
+
+// 添加部门
+export function applyDept(data = {}) {
+  return request.post('/dept',data)
+}
+// 添加员工
+export function addSubAccount(data = {}) {
+  return request.post('/employee/addSubAccount',data)
+}
+
+// 给员工发送验证码
+export function sendSubAccount(data = {}) {
+  return request.post('/employee/sendSubAccount',data)
+}
+
+// 分配积分
+export function allocatePoints(data = {}) {
+  return request.post('/employee/allocatePoints',data)
+}
+
+// 计算可分配积分
+export function getAvailablePoints(data = {}) {
+  return request.get('/employee/getAvailablePoints',data)
+}
+
+// 删除员工
+export function deleteSubAccount(data = {}) {
+  return request.del(`/employee/deleteSubAccount/${data}`)
+}

BIN=BIN
src/assets/imgs/my/accout@2x.png


BIN=BIN
src/assets/imgs/my/icon8a@2x.png


BIN=BIN
src/assets/imgs/my/icon9@2x.png


BIN=BIN
src/assets/imgs/my/jia1@2x.png


BIN=BIN
src/assets/imgs/my/jia2@2x.png


BIN=BIN
src/assets/imgs/my/jifen@2x.png


BIN=BIN
src/assets/imgs/my/set@2x.png


+ 4 - 0
src/locales/en.js

@@ -88,6 +88,7 @@ export default {
     fileAddressNotExist: 'File Address Not Exist',
     balanceNotEnough: 'Your balance is not enough, whether to go to recharge?',
     use:"Use",
+    available:"Available",
     workflowPreview:"Workflow Preview",
     Detail:"Detail",
     free:"Free",
@@ -104,6 +105,7 @@ export default {
     exchange:"Exchange",
     placeholderInput:"Please input",
     modify:"Modify",
+    rmb:"RMB",
   },
   login: {
     smsLogin: 'SMS Login',
@@ -236,5 +238,7 @@ export default {
     orderNumber: 'Order Number',
     details: ' Details',
     vipEndTime: 'VIP End Time',
+    businessManagement:'Enterprise information management',
+    serviceManagement:'Customer Service Management',
   }
 }

+ 5 - 0
src/locales/zh-CN.js

@@ -1,5 +1,6 @@
 import { all } from "axios";
 import PersonalCenter from "../pages/PersonalCenter.vue";
+import BusinessManagement from "../pages/Personal/BusinessManagement.vue";
 
 export default {
   // 通用模块
@@ -92,6 +93,7 @@ export default {
     fileAddressNotExist: '文件地址不存在',
     balanceNotEnough: '您的余额不足,是否前往充值?',
     use:"使用",
+    available:"可获得",
     workflowPreview:"工作流预览",
     Detail:"详情",
     free:"免费",
@@ -109,6 +111,7 @@ export default {
     placeholderInput:"请输入",
     addTags:'添加标签',
     modify:"修改",
+    rmb:'人民币'
   },
   login: {
     smsLogin: '短信登录',
@@ -239,6 +242,8 @@ export default {
     orderNumber: '订单编号',
     details: '明细',
     vipEndTime: '会员到期时间',
+    businessManagement:'企业信息管理',
+    serviceManagement:'客服管理'
   }
 
 }

+ 221 - 0
src/pages/Personal/BusinessManagement.vue

@@ -0,0 +1,221 @@
+<template>
+  <div class="businessManagement">
+    <div class="businessManagement-left">
+      <div class="title flex-between">
+        <div class="title_f">部门管理</div>
+        <div class="title_btn flex-center">
+          <img src="/src/assets/imgs/my/jia2@2x.png" alt="">
+          <div class="">新增</div>
+        </div>
+      </div>
+      <el-tree ref="treeRef2" :data="dataSource" node-key="id" default-expand-all :expand-on-click-node="false"
+        :props="defaultProps" @node-click="handleNodeClick">
+        <template #default="{ node, data }">
+          <div class="custom-tree-node flex-center-between flex_1">
+            <div class="">{{ node.label }}</div>
+            <div class="flex-align-center custom-tree-node-right">
+              <img src="/src/assets/imgs/my/jia2@2x.png" alt="">
+
+              <img src="/src/assets/imgs/my/bianji@2x.png" alt="">
+              <img src="/src/assets/imgs/my/shanchu@2x.png" alt="">
+              <!-- <el-button type="primary" link @click="append(data)">
+                Append
+              </el-button>
+              <el-button style="margin-left: 4px" type="danger" link @click="remove(node, data)">
+                Delete
+              </el-button> -->
+            </div>
+          </div>
+        </template>
+      </el-tree>
+    </div>
+    <div class="businessManagement-right">
+      <div class="">我的员工</div>
+      <div class="">
+        <div class=""></div>
+        <div class="flex-align-center">
+          <div class="">
+            <img src="" alt="">
+          </div>
+        </div>
+      </div>
+      <ul class="list">
+        <li>
+          <div class="list_left">
+            <el-avatar :size="52" :src="''" />
+            <div class="list_left_con">
+              <div class="">苗子辰</div>
+              <div class="">米币:1000</div>
+            </div>
+          </div>
+          <div class="list_right">
+            <div class="">
+              <img src="/src/assets/imgs/my/jifen@2x.png" alt="">
+              <span>分配</span>
+            </div>
+            <div class="">
+              <img src="/src/assets/imgs/my/shanchu@2x.png" alt="">
+              <span>删除</span>
+            </div>
+          </div>
+        </li>
+      </ul>
+    </div>
+  </div>
+</template>
+<script setup lang="ts">
+import { ref, onMounted } from 'vue';
+import { deptList } from '@/api/my';
+const list = ref([]);
+const dataSource = ref([])
+
+const defaultProps = {
+  children: 'children',
+  label: 'deptName',
+}
+
+const getList = async () => {
+  let res = await deptList();
+  console.log(res.rows);
+  dataSource.value = res.rows;
+}
+
+const handleNodeClick = (data) => {
+  console.log(data)
+}
+
+onMounted(() => {
+  getList()
+})
+</script>
+<style lang="scss" scoped>
+.businessManagement {
+  padding: 16px 0;
+  display: flex;
+
+  .businessManagement-left {
+    width: 300px;
+    padding: 16px;
+    background: #F5F7FA;
+    border-radius: 16px;
+
+    .title {
+      margin-bottom: 16px;
+
+      &_f {
+        color: #262626;
+        font-size: 20px;
+        font-weight: bold;
+      }
+    }
+
+    .title_btn {
+      width: 62px;
+      height: 28px;
+      cursor: pointer;
+      background: #FFFFFF;
+      color: #2D71FF;
+      font-size: 14px;
+      border-radius: 4px;
+
+      img {
+        width: 14px;
+        height: 14px;
+        margin-right: 4px;
+      }
+    }
+
+    ::v-deep .el-tree {
+      background: transparent;
+    }
+  }
+
+  .businessManagement-right {
+    margin-left: 16px;
+    flex: 1;
+  }
+}
+
+.custom-tree-node {
+  height: 30px;
+  margin-top: 4px;
+  color: #262626;
+  font-size: 14px;
+
+  .custom-tree-node-right {
+    gap: 8px;
+
+    img {
+      width: 14px;
+      height: 14px;
+    }
+  }
+}
+
+.list {
+  display: flex;
+  justify-content: space-between;
+  gap: 16px;
+
+  li {
+    width: 420px;
+    padding: 16px;
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    background: #F5F7FA;
+    border-radius: 16px;
+
+    .list_left {
+      display: flex;
+      align-items: center;
+
+      .list_left_con {
+        margin-left: 10px;
+
+        div {
+          &:first-child {
+            font-size: 18px;
+            margin-bottom: 4px;
+            font-weight: bold;
+          }
+
+          &:last-child {
+            color: #666666;
+            font-size: 14px;
+          }
+        }
+      }
+    }
+
+    .list_right {
+      display: flex;
+      align-items: center;
+      gap: 8px;
+
+      div {
+        display: flex;
+        cursor: pointer;
+        align-items: center;
+        justify-content: center;
+        width: 62px;
+        height: 32px;
+        background: #FFFFFF;
+        border-radius: 4px;
+        font-size: 14px;
+        color: #2D71FF;
+        img {
+          width: 14px;
+          height: 14px;
+          margin-right: 4px;
+        }
+        &:last-child {
+          div {
+            color: #E43434;
+          }
+        }
+      }
+    }
+  }
+}
+</style>

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

@@ -109,11 +109,11 @@
         <ul class="detail-list">
           <li v-for="(item, index) in recordList" :key="index">
             <div class="flex-align-center detail-list-left">
-              <el-avatar :size="20" :src="''" />
-              <div class="">花花</div>
-              <div class="">13176012742</div>
+              <el-avatar :size="20" :src="item.userAvatar" />
+              <div class="">{{ item.applyUserName }}</div>
+              <div class="">{{ item.userPhone }}</div>
             </div>
-            <div class="detail-list-number">{{ $t('personalCenter.gongzuoliuliang') }}:15</div>
+            <div class="detail-list-number">{{ $t('personalCenter.gongzuoliuliang') }}:{{ item.publishCount }}</div>
             <div class="flex-align-center detail-list-right">
               <div class="lex-align-center btn green">
                 <img src="/src/assets/imgs/my/dui@2x.png" alt="">

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

@@ -8,7 +8,7 @@
       <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="">{{ item.amount }}</div>
+          <div class="">{{ item.amount }}{{ $t('common.baomibi') }}</div>
         </div>
         <div class="member-details-list-b flex-center-between">
           <!-- <div class="">{{ $t('personalCenter.youxiaoqi') }}:2026-01-01至2026-02-01</div> -->

+ 112 - 89
src/pages/Personal/Orders.vue

@@ -1,22 +1,24 @@
 <template>
   <div class="order">
-    <el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick">
+    <el-tabs v-model="form.orderStatus" class="demo-tabs" @tab-click="handleClick">
       <el-tab-pane v-for="tab in tabs" :key="tab.name" :label="$t(tab.label)" :name="tab.name">
         <ul class="order-list">
           <li v-for="(item, index) in list" :key="index">
             <div class="order-list-top flex-center-between">
               <div class="order-list-top-l flex-align-center">
-                <el-tag :type="item.orderStatus == 0 ? 'primary' : item.orderStatus == 1 ? 'success' : item.orderStatus == 3 ? 'danger' : ''">{{ item.orderStatus == 0 ?
-                  $t('personalCenter.daifukuan') : item.orderStatus == 1 ? $t('personalCenter.yiwancheng') : item.orderStatus == 3 ?
-                    $t('personalCenter.yiquxiao') : '' }}</el-tag>
+                <el-tag
+                  :type="item.orderStatus == 0 ? 'primary' : item.orderStatus == 1 ? 'success' : item.orderStatus == 3 ? 'danger' : ''">{{
+                    item.orderStatus == 0 ?
+                      $t('personalCenter.daifukuan') : item.orderStatus == 1 ? $t('personalCenter.yiwancheng') :
+                        item.orderStatus == 3 ?
+                          $t('personalCenter.yiquxiao') : '' }}</el-tag>
                 <div class="">{{ $t('personalCenter.dingdanhao') }}: {{ item.orderNo }}</div>
               </div>
               <div class="order-list-top-r">{{ $t('common.orderTime') }}: {{ item.createTime }}</div>
             </div>
             <div class="order-list-main flex">
-              <img class="image"
-                :src="item.orderImage" alt="">
-              <div class="order-list-con flex-center-between flex_1">
+              <div class="order-list-main-l flex">
+                <img class="image" :src="item.orderImage" alt="">
                 <div class="">
                   <div class="title">{{ item.orderTypeName }}</div>
                   <div class="">{{ item.description }}
@@ -24,51 +26,59 @@
                     <el-button type="primary" size="small" plain>技能标签</el-button> -->
                   </div>
                 </div>
-                <div class="mi_price">
+              </div>
+              <div class="order-list-main-r flex">
+                <div class="order-list-con flex-center-between flex_1">
+
+                  <!-- <div class="mi_price">
                   <div class="">{{ item.amount }}</div>
                   <div class="">{{ item.payMethod == 'BMI' ? $t('common.baomibi') : $t('common.mibi') }}</div>
-                </div>
-                <div class="mi_price price">
-                  <div class="">{{ item.discountAmount || 0 }}{{ item.amountUnit }}</div>
-                  <div class="">{{ $t('common.actualAmount') }}</div>
-                </div>
-                <div class="" >
-                  <div v-if="item.invoiceStatus == 0" @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="mi_price price">
+                    <div class="">{{ item.amount || 0 }}{{ item.amountUnit }}</div>
+                    <div class="">{{ item.payMethod == 'BMI' ? $t('common.baomibi') : item.payMethod == 'MI' ?
+                      $t('common.mibi') : $t('common.rmb') }}</div>
                   </div>
-                  <div class="btn_kong" v-else></div>
-                  <template v-if="false">
-                    <template v-if="index == 0">
-                      <div class="gradient btn">
-                        <img src="/src/assets/imgs/my/order1@2x.png" alt="">
-                        <div class="">{{ $t('common.goPay') }}</div>
-                      </div>
-                      <div class="blue btn mt8">
-                        <img src="/src/assets/imgs/my/order2@2x.png" alt="">
-                        <div class="">{{ $t('common.cancelOrder') }}</div>
-                      </div>
-                    </template>
-                    <template v-else-if="index == 1">
-                      <div class="blue btn">
-                        <img src="/src/assets/imgs/my/order3@2x.png" alt="">
-                        <div class="">{{ $t('common.applyInvoice') }}</div>
-                      </div>
-                      <div class="red btn mt8">
-                        <img src="/src/assets/imgs/my/order4@2x.png" alt="">
-                        <div class="">{{ $t('common.applyRefund') }}</div>
-                      </div>
+                  <div class="">
+                    <div v-if="item.invoiceStatus == 0" @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="btn_kong" v-else></div>
+                    <template v-if="false">
+                      <template v-if="index == 0">
+                        <div class="gradient btn">
+                          <img src="/src/assets/imgs/my/order1@2x.png" alt="">
+                          <div class="">{{ $t('common.goPay') }}</div>
+                        </div>
+                        <div class="blue btn mt8">
+                          <img src="/src/assets/imgs/my/order2@2x.png" alt="">
+                          <div class="">{{ $t('common.cancelOrder') }}</div>
+                        </div>
+                      </template>
+                      <template v-else-if="index == 1">
+                        <div class="blue btn">
+                          <img src="/src/assets/imgs/my/order3@2x.png" alt="">
+                          <div class="">{{ $t('common.applyInvoice') }}</div>
+                        </div>
+                        <div class="red btn mt8">
+                          <img src="/src/assets/imgs/my/order4@2x.png" alt="">
+                          <div class="">{{ $t('common.applyRefund') }}</div>
+                        </div>
+                      </template>
+                      <template v-else-if="index == 2">
+                        <div class="btn gradient">
+                          <img src="/src/assets/imgs/my/order5@2x.png" alt="">
+                          <div class="">{{ $t('common.reorder') }}</div>
+                        </div>
+                      </template>
                     </template>
-                    <template v-else-if="index == 2">
-                      <div class="btn gradient">
-                        <img src="/src/assets/imgs/my/order5@2x.png" alt="">
-                        <div class="">{{ $t('common.reorder') }}</div>
-                      </div>
-                    </template>
-                  </template>
 
+                  </div>
                 </div>
               </div>
+
+
             </div>
           </li>
         </ul>
@@ -79,7 +89,7 @@
         @page-change="handlePageChange" />
     </template>
     <el-empty v-else :description="$t('common.empty')" />
-    <el-dialog v-model="dialogVisible" title="申请开票" width="784" :before-close="handleClose">
+    <el-dialog v-model="dialogVisible" title="申请开票" width="784">
       <div class="dialog_title">发票抬头信息</div>
       <el-form :model="invoiceData" class="demo-form-inline" label-position="top" :rules="rules" ref="ruleFormRef">
         <el-row :gutter="16">
@@ -97,38 +107,46 @@
             </el-form-item>
           </el-col>
         </el-row>
-        <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>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="公司地址">
-              <el-input v-model="invoiceData.otherInfo.address" placeholder="请输入" 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.mobile" placeholder="请输入" 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>
-          </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>
-          </el-col>
+        <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>
+            </el-col>
+
+            <el-col :span="12">
+              <el-form-item label="公司地址">
+                <el-input v-model="invoiceData.otherInfo.address" placeholder="请输入" clearable />
+              </el-form-item>
+            </el-col>
+
+
+          </el-row>
+        </template>
+        <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>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="公司开户行">
+                <el-input v-model="invoiceData.otherInfo.bank" placeholder="请输入" 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>
+            </el-col>
+
+          </el-row>
+        </template>
 
-        </el-row>
         <el-row :gutter="16" v-if="false">
           <el-col :span="12">
             <el-form-item label="电子邮箱">
@@ -145,7 +163,8 @@
       <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="submitForm(ruleFormRef)">{{ $t('common.confirm') }}</el-button>
+          <el-button class="gradient" type="primary" @click="submitForm(ruleFormRef)">{{ $t('common.confirm')
+          }}</el-button>
         </div>
       </template>
     </el-dialog>
@@ -159,13 +178,12 @@ import Pagination from '@/components/Pagination.vue'
 import { orderList, applyInvoice } from '@/api/my.js'
 
 const tabs = ref([
-  { label: 'personalCenter.allOrders', name: 'first' },
-  { label: 'personalCenter.daifukuan', name: 'second' },
-  { label: 'personalCenter.yiwancheng', name: 'third' },
-  { label: 'personalCenter.yiquxiao', name: 'fourth' },
+  { label: 'personalCenter.allOrders', name: '' },
+  { label: 'personalCenter.daifukuan', name: 0 },
+  { label: 'personalCenter.yiwancheng', name: 1 },
+  { label: 'personalCenter.yiquxiao', name: 2 },
 ])
 
-const activeName = ref('first')
 const list = ref([]);
 
 import type { FormInstance, FormRules } from 'element-plus'
@@ -178,8 +196,7 @@ const form = ref({
   pageNum: 1,
   pageSize: 10,
   total: 0,
-  activeName: 0,
-  orderTypeMenu: 2
+  orderStatus: ''
 })
 const dialogVisible = ref(false)
 const ruleFormRef = ref<FormInstance>()
@@ -236,9 +253,8 @@ const submitForm = async (formEl: FormInstance | undefined) => {
 }
 
 const handleClick = (tab: TabsPaneContext) => {
-  list.value = []
   form.value.pageNum = 1;
-  form.value.activeName = tab.props.name;
+  form.value.orderStatus = tab.props.name;
   getList()
 }
 
@@ -253,12 +269,10 @@ const applyInvoices = (item, index) => {
 // 获取我的订单
 const getList = async () => {
   let res = await orderList(form.value);
-  console.log(res.rows)
   list.value = res.rows || [];
   form.value.total = res.total;
 }
 const handlePageChange = (page) => {
-  list.value = []
   form.value.pageNum = page;
   getList()
 }
@@ -306,6 +320,11 @@ onMounted(() => {
         border-radius: 0 0 16px 16px;
         border: 1px solid #EBEEF5;
 
+        .order-list-main-l,
+        .order-list-main-r {
+          width: 50%;
+        }
+
         .image {
           width: 160px;
           height: 90px;
@@ -335,6 +354,8 @@ onMounted(() => {
         }
 
         .price {
+          text-align: center;
+
           div {
             &:first-child {
               color: #FD5F3C;
@@ -366,6 +387,7 @@ onMounted(() => {
             color: #FFFFFF;
           }
         }
+
         .btn_kong {
           width: 106px;
         }
@@ -391,6 +413,7 @@ onMounted(() => {
     }
   }
 }
+
 .dialog_title {
   color: #3D3D3D;
   font-weight: bold;

+ 87 - 40
src/pages/Personal/Wallet.vue

@@ -4,7 +4,7 @@
       <li class="gradient flex-center-between" v-for="(item, index) in 2" :key="index">
         <div class="wallet-list-li-left">
           <div class="">{{ index == 0 ? $t('common.mibi') : $t('common.baomibi') }} {{ $t('personalCenter.yue') }}</div>
-          <div class="">{{ index == 0 ? userInfo.pointsBalance || 0 || 0 : userInfo.baoMiBalance || 0 }}</div>
+          <div class="">{{ index == 0 ? userInfo?.pointsBalance || 0 || 0 : userInfo?.baoMiBalance || 0 }}</div>
         </div>
         <div class="wallet-list-li-right flex-align-center">
           <div class="flex-align-center btn" v-if="index == 1">
@@ -22,11 +22,12 @@
     <el-tabs v-model="form.changeType" class="demo-tabs" @tab-click="handleClick">
       <el-tab-pane :label="$t(tab.label)" v-for="tab in tabs" :key="tab.name" :name="tab.name">
         <div class="tabs flex-align-center">
-          <div @click="changeType(index)" :class="{ active: index + 1 == form.balanceType }" class="tab" v-for="(item, index) in 2">{{
-            index == 0 ? $t('common.mibi') : $t('common.baomibi') }}{{ $t('personalCenter.details') }}
+          <div @click="changeType(index)" :class="{ active: index + 1 == form.balanceType }" class="tab"
+            v-for="(item, index) in 2">{{
+              index == 0 ? $t('common.mibi') : $t('common.baomibi') }}{{ $t('personalCenter.details') }}
           </div>
         </div>
-        <ul class="wallet-page-list" v-if="list.length">
+        <ul class="wallet-page-list" v-if="list?.length">
           <li v-for="(item, index) in list" :key="index">
             <div class="title">
               <div class="">{{ item.bizTypeName }}</div>
@@ -37,7 +38,7 @@
         </ul>
       </el-tab-pane>
     </el-tabs>
-    <template v-if="list.length">
+    <template v-if="list?.length">
       <Pagination :total="form.total" :page-size="form.pageSize" :current-page="form.pageNum"
         @page-change="handlePageChange" />
     </template>
@@ -47,39 +48,45 @@
       :title="`${transformationIndex == 0 ? $t('personalCenter.zhuanhuanbaomibi') : $t('personalCenter.zhuanghuanmibi')}`"
       width="523">
       <el-form :model="walletForm" label-width="auto" label-position="top">
-        <el-row :gutter="16" v-if="transformationIndex">
+        <el-row>
           <el-col :span="24">
-            <el-form-item :label="$t('common.baomibi')">
-
-              <el-input-number v-model="walletForm.orderAmt" :min="1" controls-position="right" size="large"
-                @change="handleChange" style="width: 100%;" />
-            </el-form-item>
-          </el-col>
-          <el-col :span="24">
-            <el-form-item :label="$t('common.mibi')">
-              <el-input v-model="walletForm.targetAmount" placeholder="请输入" readonly disabled />
-            </el-form-item>
-          </el-col>
-          <el-col :span="24">
-            <el-form-item label="手续费率">
-              <el-input v-model="walletForm.feeRate" placeholder="请输入" readonly disabled />
-            </el-form-item>
+            <div class="input">
+              <el-form-item :label="$t('common.use') + $t('common.baomibi')" v-if="transformationIndex">
+                <el-input-number v-model="walletForm.orderAmt" :min="1" controls-position="right" size="large"
+                  @change="handleChange" style="width: 100%;" placeholder="请输入" align="left"
+                  :input-style="{ fontSize: '28px' }" class="inputStyle" />
+              </el-form-item>
+
+              <el-form-item :label="$t('common.use') + $t('common.mibi')" v-else>
+                <el-input-number v-model="walletForm.orderAmt" :min="configTxt.configValue"
+                  :step="configTxt.configValue" controls-position="right" size="large" @change="handleChange"
+                  style="width: 100%;" placeholder="请输入" align="left" :input-style="{ fontSize: '28px' }"
+                  class="inputStyle" />
+              </el-form-item>
+            </div>
           </el-col>
         </el-row>
-        <el-row :gutter="16" v-else>
-          <el-col :span="12">
-            <el-form-item :label="$t('common.mibi')">
-              <el-input-number v-model="walletForm.orderAmt" :min="configTxt.configValue" :step="configTxt.configValue"
-                controls-position="right" size="large" @change="handleChange" style="width: 100%;" />
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item :label="$t('common.baomibi')">
-              <el-input v-model="walletForm.targetAmount" placeholder="请输入" readonly disabled />
-            </el-form-item>
+        <div class="line">
+          <img src="/src/assets/imgs/my/arrow-left-right-fill@2x.png" alt="">
+        </div>
+        <el-row>
+          <el-col :span="24">
+            <div class="input">
+              <el-form-item v-if="transformationIndex"
+                :label="$t('common.available') + $t('common.mibi') + `(手续费率:${walletForm.feeRate})`">
+                <el-input v-model="walletForm.targetAmount" placeholder="请输入" readonly disabled
+                  :input-style="{ fontSize: '28px' }" class="inputStyle" />
+              </el-form-item>
+              <el-form-item v-else :label="$t('common.available') + $t('common.baomibi')">
+                <el-input v-model="walletForm.targetAmount" placeholder="请输入" readonly disabled
+                  :input-style="{ fontSize: '28px' }" class="inputStyle" />
+              </el-form-item>
+            </div>
           </el-col>
         </el-row>
-        <div class="">{{ configTxt.configName }}{{ configTxt.configValue }}</div>
+
+        <div class="" style="font-size: 14px;margin-top: 16px;"> <text style="color: #E43434;">*</text> {{
+          configTxt.configName }}{{ configTxt.configValue }}</div>
       </el-form>
       <template #footer>
         <div class="dialog-footer flex-center">
@@ -188,21 +195,21 @@ const handleChange = async () => {
     orderType: walletForm.value.orderType,
     orderNum: walletForm.value.orderAmt
   });
-  walletForm.value.feeRate = res.data.feeRate
-  walletForm.value.targetAmount = res.data.targetAmount
-
-  console.log(res);
+  if (res.code === 200) {
+    walletForm.value.feeRate = res.data.feeRate
+    walletForm.value.targetAmount = res.data.targetAmount
+  }
 }
 // 米币暴米币切换
 const changeType = (index) => {
-  list.value = []
+  // list.value = []
   form.value.pageNum = 1;
   form.value.balanceType = index + 1;
   getList()
 }
 
 const handleClick = (tab: TabsPaneContext) => {
-  list.value = []
+  // list.value = []
   form.value.pageNum = 1;
   form.value.changeType = tab.props.name;
   getList()
@@ -214,7 +221,7 @@ const getList = async () => {
 }
 
 const handlePageChange = (newPage: number) => {
-  list.value = []
+  // list.value = []
   form.value.pageNum = page;
   getList()
 }
@@ -305,6 +312,7 @@ onMounted(() => {
 
 .wallet-page-list {
   margin-top: 16px;
+
   li {
     display: flex;
     align-items: center;
@@ -338,4 +346,43 @@ onMounted(() => {
     }
   }
 }
+
+.input {
+  padding: 16px;
+  background: #F5F7FA;
+  border-radius: 16px;
+}
+
+.line {
+  height: 16px;
+  position: relative;
+
+  img {
+    top: 50%;
+    width: 40px;
+    height: 40px;
+    left: 50%;
+    z-index: 9;
+    transform: translate(-50%, -50%);
+    position: absolute;
+  }
+}
+
+.inputStyle {
+
+  ::v-deep .el-input__wrapper {
+    background-color: transparent;
+    box-shadow: none;
+    padding: 0;
+  }
+
+  ::v-deep .el-input__inner {
+    font-size: 28px;
+  }
+
+  ::v-deep .el-input-number__increase,
+  ::v-deep .el-input-number__decrease {
+    display: none;
+  }
+}
 </style>

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

@@ -20,8 +20,8 @@
           <div class="flex_1">
             <div class="info flex-center-between">
               <div class="info-left flex-align-center">
-                <el-avatar :size="30" :src="''" />
-                <div class="">花花</div>
+                <el-avatar :size="30" :src="item.userAvatar" />
+                <div class="">{{ item.nickName }}</div>
               </div>
               <div class="info-right flex-align-center">
                 <img src="/src/assets/imgs/yun.png" alt="">

+ 29 - 13
src/pages/PersonalCenter.vue

@@ -3,28 +3,28 @@
     <Breadcrumb />
     <div class="personal-head">
       <div class="personal-head-left">
-        <el-avatar :size="100" :src="appStore.userInfo.userAvatar ? appStore.userInfo.userAvatar : appStore.avatarDefault" />
+        <el-avatar :size="100" :src="appStore?.userInfo?.userAvatar ? appStore.userInfo.userAvatar : appStore.avatarDefault" />
         <div class="personal-user-info">
           <div class="personal-username">
-            <div class="">{{ appStore.userInfo.nickName }}</div>
-            <template v-if="['0', '1', '2'].includes(appStore.userInfo.memberType)"></template>
-            <img :src="`/src/assets/imgs/my/vip${appStore.userInfo.memberType}@2x.png`" alt="">
+            <div class="">{{ appStore?.userInfo?.nickName }}</div>
+            <template v-if="['0', '1', '2'].includes(appStore?.userInfo?.memberType)"></template>
+            <img :src="`/src/assets/imgs/my/vip${appStore?.userInfo?.memberType}@2x.png`" alt="">
             <!-- memberType  会员类型memberType 会员类型分为企业会员(2)和个人会员(1)、免费会员(0) -->
           </div>
-          <div class="personal-user-phone mt4">{{ $t('personalCenter.phoneNumber') }}:{{ appStore.userInfo.userPhone }}
+          <div class="personal-user-phone mt4">{{ $t('personalCenter.phoneNumber') }}:{{ appStore?.userInfo?.userPhone }}
           </div>
-          <div class="">{{ $t('personalCenter.vipEndTime') }}: {{ appStore.userInfo.memberExpire }}</div>
-          <div class="mt4" v-if="appStore.userInfo.skillTags">
+          <div class="">{{ $t('personalCenter.vipEndTime') }}: {{ appStore?.userInfo?.memberExpire }}</div>
+          <div class="mt4" v-if="appStore?.userInfo?.skillTags">
             <el-button v-for="(item,index) in appStore.userInfo.skillTags.split(',')" type="primary" plain>{{ item }}</el-button>
           </div>
           <div class="personal-user-list">
             <div class="personal-user-li">
-              <span>{{ appStore.userInfo.pointsBalance }}</span>
+              <span>{{ appStore?.userInfo?.pointsBalance || 0}}</span>
               <span>{{ $t('common.mibi') }}</span>
             </div>
             <div class="personal-user-line"></div>
             <div class="personal-user-li">
-              <span>{{ appStore.userInfo.baoMiBalance }}</span>
+              <span>{{ appStore?.userInfo?.baoMiBalance || 0 }}</span>
               <span>{{ $t('common.baomibi') }}</span>
             </div>
             <div class="personal-user-line"></div>
@@ -251,6 +251,19 @@ const navList = ref([
     path: '/personal-center/workflow',
     icon: '/src/assets/imgs/my/icon7@2x.png',
     iconActive: '/src/assets/imgs/my/icon7a@2x.png'
+  },
+  {
+    name: 'personalCenter.businessManagement',
+    path: '/personal-center/business-management',
+    icon: '/src/assets/imgs/my/icon8@2x.png',
+    iconActive: '/src/assets/imgs/my/icon8a@2x.png',
+    show:true,
+  },
+  {
+    name: 'personalCenter.serviceManagement',
+    path: '/personal-center/business-management',
+    icon: '/src/assets/imgs/my/icon9@2x.png',
+    iconActive: '/src/assets/imgs/my/icon9a@2x.png'
   }
 ])
 
@@ -282,6 +295,9 @@ const navIndex = computed(() => {
     case 'Workflow':
       return 6
       break;
+    case 'BusinessManagement':
+      return 7
+      break;
     default:
       break;
   }
@@ -317,16 +333,16 @@ const signIn = async () => {
   let res = await checkIn({ actionType: 1 });
   if (res.code === 200) {
     appStore.USERINFO();
-    DGTMessage.success(`${t('common.checkIn')}${t('common.success')}`)
+    DGTMessage.success(`${t('personalCenter.checkIn')}${t('common.success')}`)
   }
 }
 // 获取用户信息
 const getInfo = async () => {
   let res = await getUserInfo();
-  if (res.user.userAvatar) {
+  if (res?.user?.userAvatar) {
     coverImage.value = [{url:res.user.userAvatar}]
   }
-  if (res.user.skillTags) {
+  if (res?.user?.skillTags) {
     dynamicTags.value = res.user.skillTags.split(',')
   }
   userInfo.value = res.user;
@@ -363,7 +379,7 @@ const handleInputConfirm = () => {
 
 const getCount = async () => {
   let res = await queryCollectCount();
-  collectCount.value = res.data.collectCount;
+  collectCount.value = res?.data?.collectCount;
 }
 
 onMounted(() => {

+ 5 - 0
src/router/index.js

@@ -160,6 +160,11 @@ const routes = [
         path: 'workflow',
         name: 'Workflow',
         component: () => import('@/pages/Personal/Workflow.vue')
+      },
+      {
+        path: 'business-management',
+        name: 'BusinessManagement',
+        component: () => import('@/pages/Personal/BusinessManagement.vue')
       }
     ]
   },