Преглед изворни кода

Merge branch 'ch/jinrui1.0' of eta_mini/eta_mini_crm_front into debug_jr

leichen пре 3 дана
родитељ
комит
ba02bbff51

+ 5 - 10
src/layout/components/HeaderWrap.vue

@@ -22,10 +22,10 @@ const breadcrumbArr=computed(()=>{
   return temarr
   return temarr
 })
 })
 function handleClickBreadcrumb(e){
 function handleClickBreadcrumb(e){
-  console.log(e);
+  const pathTitles = ['客户管理', '系统设置']
   if(e.path){
   if(e.path){
     router.push(e.path)
     router.push(e.path)
-  }else{
+  } else if(!pathTitles.includes(e.title) ) {
     window.location.reload();
     window.location.reload();
   }
   }
   // router.push()
   // router.push()
@@ -59,9 +59,9 @@ function handleCommand (command) {
     <el-icon size="26px" v-else @click="menuCloseChange" color="#333333" style="margin-left: 200px;"><i-ep-Fold /></el-icon>
     <el-icon size="26px" v-else @click="menuCloseChange" color="#333333" style="margin-left: 200px;"><i-ep-Fold /></el-icon>
     <!-- 面包屑 -->
     <!-- 面包屑 -->
     <el-breadcrumb separator="/" style="margin-left: 30px">
     <el-breadcrumb separator="/" style="margin-left: 30px">
-      <el-breadcrumb-item v-for="item,index in breadcrumbArr" :key="index" @click="handleClickBreadcrumb(item)">{{
-        item.title
-      }}</el-breadcrumb-item>
+      <el-breadcrumb-item v-for="item,index in breadcrumbArr" :key="index" @click="handleClickBreadcrumb(item)">
+        <span  :style="index > 0 ? 'color: #053CC9;' : ''">{{item.title}}</span>
+      </el-breadcrumb-item>
     </el-breadcrumb>
     </el-breadcrumb>
     <div class="content"></div>
     <div class="content"></div>
     <!-- 通知 -->
     <!-- 通知 -->
@@ -99,11 +99,6 @@ function handleCommand (command) {
     margin-left: 20px;
     margin-left: 20px;
     margin-right: 40px;
     margin-right: 40px;
   }
   }
-  :deep(.el-breadcrumb__item){
-    .el-breadcrumb__inner{
-      color: #053CC9;
-    }
-  }
 
 
   .content {
   .content {
     flex: 1;
     flex: 1;

+ 2 - 2
src/views/customer/CompanyEdit.vue

@@ -189,13 +189,13 @@ function handleChangeList() {
               />
               />
             </el-form-item>
             </el-form-item>
           </div>
           </div>
-          <div class="flex form-tr-box" v-if="route.path !== '/customer/companyDetail'">
+          <div class="flex form-tr-box">
             <el-form-item label="权限" prop="CompanyId">
             <el-form-item label="权限" prop="CompanyId">
               可查看所有报告
               可查看所有报告
             </el-form-item>
             </el-form-item>
           </div>
           </div>
           <div class="flex form-tr-box color" v-if="route.path !== '/customer/companyDetail'">
           <div class="flex form-tr-box color" v-if="route.path !== '/customer/companyDetail'">
-            *温馨提示:请确保投资者名称、社会信用码的正确性
+            *温馨提示:请确保投资者名称、社会信用码的正确性 
           </div>
           </div>
         </el-form>
         </el-form>
       </div>
       </div>

+ 82 - 71
src/views/customer/PotentialUserList.vue

@@ -133,85 +133,90 @@ function handleGoReadTimes(e){
 </script>
 </script>
 
 
 <template>
 <template>
-  <div class="potential-user-list-page">
-    <div class="flex filter-wrap">
-      <el-input
-        placeholder="请输入机构名称/姓名/手机号"
-        v-model="filterState.keyword"
-        :prefix-icon="Search"
-        clearable
-        style="max-width: 359px;"
-        @input="handleFilterList"
-      />
-    </div>
-    <div class="userlist-wrap" style="margin-top: 20px">
-      <el-table
-        :data="userList"
-        border
-        highlight-current-row
-        element-loading-text="数据加载中..."
-        v-loading="tableLoading"
-      >
-        <el-table-column
-          v-for="column in tableColOpt"
-          :key="column.key"
-          :prop="column.key"
-          :label="column.label"
-          align="center"
-          :sortable="column.sort ? 'custom' : false"
+  <el-card>
+    <div class="potential-user-list-page">
+      <div class="flex filter-wrap">
+        <el-input
+          placeholder="请输入机构名称/姓名/手机号"
+          v-model="filterState.keyword"
+          :prefix-icon="Search"
+          clearable
+          style="max-width: 359px;"
+          @input="handleFilterList"
+        />
+      </div>
+      <div class="userlist-wrap" style="margin-top: 20px">
+        <el-table
+          :data="userList"
+          border
+          highlight-current-row
+          element-loading-text="数据加载中..."
+          v-loading="tableLoading"
+          :header-cell-style="{ background: '#EBEEF5' }"
         >
         >
-          <template v-if="column.headerTips" #header>
-            <span>{{ column.label }}</span>
-            <el-tooltip
-              class="box-item"
-              effect="dark"
-              :content="column.headerTips"
-              placement="top"
-            >
-              <el-icon style="position: relative; top: 2px"
-                ><i-ep-QuestionFilled
-              /></el-icon>
-            </el-tooltip>
-          </template>
-          <template #default="{ row }">
-            <div class="name-box" v-if="column.key === 'RealName'">
-              <span class="name-tips" v-if="row.TrialExpired">试用过期</span>
-              <span>{{ row[column.key] || '-' }}</span>
-            </div>
-            <span v-else-if="column.key === 'ReadTimes'" :style="row.ReadTimes > 0 ?'color: #075EEE;' : ''" @click="handleGoReadTimes(row)">{{ row.ReadTimes}}</span>
-            <el-button v-else-if="column.key === 'ReadCnt'&&row.ReadCnt>0" link type="primary" @click="handleShowDetail(row)">{{row.ReadCnt}}</el-button>
-            <span v-else>{{ row[column.key] || '-' }}</span>
-          </template>
-        </el-table-column>
-        <el-table-column label="操作" align="center" width="200">
-          <template #default="{ row }">
-            <el-button type="primary" v-permission="permissionBtn.customerManageBtn.trial_convert" link @click="handleEditUser(row, 'toformalize')"
-              >转正式</el-button
-            >
-            <el-button type="danger" v-permission="permissionBtn.customerManageBtn.trial_delete" link @click="handleEditUser(row, 'delete')"
-              >删除</el-button
-            >
-          </template>
-        </el-table-column>
-      </el-table>
-      <el-pagination
-        background
-        layout="total,prev,pager,next,jumper"
-        :current-page="page"
-        :page-size="pageSize"
-        :total="totals"
-        @current-change="handlePageChange"
-        style="margin-top: 30px; justify-content: flex-end"
-      />
-    </div>
-  </div>
+          <el-table-column
+            v-for="column in tableColOpt"
+            :key="column.key"
+            :prop="column.key"
+            :label="column.label"
+            align="center"
+            :sortable="column.sort ? 'custom' : false"
+          >
+            <template v-if="column.headerTips" #header>
+              <span>{{ column.label }}</span>
+              <el-tooltip
+                class="box-item"
+                effect="dark"
+                :content="column.headerTips"
+                placement="top"
+              >
+                <el-icon style="position: relative; top: 2px"
+                  ><i-ep-QuestionFilled
+                /></el-icon>
+              </el-tooltip>
+            </template>
+            <template #default="{ row }">
+              <div class="name-box" v-if="column.key === 'RealName'">
+                <span class="name-tips" v-if="row.TrialExpired">试用过期</span>
+                <span>{{ row[column.key] || '-' }}</span>
+              </div>
+              <span v-else-if="column.key === 'ReadTimes'" :style="row.ReadTimes > 0 ?'color: #075EEE;' : ''" @click="handleGoReadTimes(row)">{{ row.ReadTimes}}</span>
+              <el-button v-else-if="column.key === 'ReadCnt'&&row.ReadCnt>0" link type="primary" @click="handleShowDetail(row)">{{row.ReadCnt}}</el-button>
+              <span v-else>{{ row[column.key] || '-' }}</span>
+            </template>
+          </el-table-column>
+          <el-table-column label="操作" align="center" width="200">
+            <template #default="{ row }">
+              <el-button type="primary" v-permission="permissionBtn.customerManageBtn.trial_convert" link @click="handleEditUser(row, 'toformalize')"
+                >转正式</el-button
+              >
+              <el-button type="danger" v-permission="permissionBtn.customerManageBtn.trial_delete" link @click="handleEditUser(row, 'delete')"
+                >删除</el-button
+              >
+            </template>
+          </el-table-column>
+        </el-table>
+        <el-pagination
+          background
+          layout="total,prev,pager,next,jumper"
+          :current-page="page"
+          :page-size="pageSize"
+          :total="totals"
+          @current-change="handlePageChange"
+          class="pagination"
+        />
+      </div>
+    </div>  
+  </el-card>
   <UserStatisticDetail v-model:show="showDetail" :userId="activeUserId" :userName="activeUserName"/>
   <UserStatisticDetail v-model:show="showDetail" :userId="activeUserId" :userName="activeUserName"/>
   <ToFormalize v-model:show="showToFormalize" :data="userInfo" @success="handleFilterList"/>
   <ToFormalize v-model:show="showToFormalize" :data="userInfo" @success="handleFilterList"/>
 </template>
 </template>
 
 
 <style lang="scss" scoped>
 <style lang="scss" scoped>
 .potential-user-list-page {
 .potential-user-list-page {
+  position: relative;
   width: 100%;
   width: 100%;
+  min-height: calc(100vh - 180px);
   overflow: hidden;
   overflow: hidden;
   .filter-wrap {
   .filter-wrap {
     flex-wrap: wrap;
     flex-wrap: wrap;
@@ -233,5 +238,11 @@ function handleGoReadTimes(e){
       font-size: 12px;
       font-size: 12px;
     }
     }
   }
   }
+  .pagination {
+    position: absolute;
+    bottom: 30px;
+    right: 0;
+    justify-content: flex-end;
+  }
 }
 }
 </style>
 </style>

+ 4 - 1
src/views/customer/UserEdit.vue

@@ -62,6 +62,7 @@ const formState = reactive({
   isEnabled: false
   isEnabled: false
 
 
 })
 })
+const AuthStatus = ref(1)
 
 
 function getUserInfo() {
 function getUserInfo() {
   if (!userId.value) return
   if (!userId.value) return
@@ -70,6 +71,8 @@ function getUserInfo() {
   }).then(res => {
   }).then(res => {
     if (res.Ret === 200) {
     if (res.Ret === 200) {
       const Detail = res.Data
       const Detail = res.Data
+      console.log(Detail);
+      AuthStatus.value = Detail.AuthStatus
       formState.realName = Detail.RealName
       formState.realName = Detail.RealName
       formState.areaCode = Detail.AreaCode
       formState.areaCode = Detail.AreaCode
       formState.phone = Detail.Mobile
       formState.phone = Detail.Mobile
@@ -194,7 +197,7 @@ async function handleSave(type) {
         </div>
         </div>
         <div class="flex form-tr-box">
         <div class="flex form-tr-box">
             <el-form-item label="权限">
             <el-form-item label="权限">
-              可查看所有报告
+              {{ AuthStatus === 1 ? '可查看所有报告' : '无报告查看权限' }}
             </el-form-item>
             </el-form-item>
           </div>
           </div>
       </el-form>
       </el-form>

+ 161 - 154
src/views/customer/UserList.vue

@@ -56,7 +56,7 @@ const tableColOpt = computed( ()=>{
       },
       },
       {
       {
         label: '手机号',
         label: '手机号',
-        key: 'MobileHidden'
+        key: 'Mobile'
       },
       },
       {
       {
         label: '营业部',
         label: '营业部',
@@ -73,10 +73,6 @@ const tableColOpt = computed( ()=>{
         sort: true,
         sort: true,
         headerTips: '用户首次登录小程序的时间'
         headerTips: '用户首次登录小程序的时间'
       },
       },
-      {
-        label: '是否关注公众号',
-        key: 'IsSubscribed' 
-      },
       {
       {
         label: '创建时间',
         label: '创建时间',
         key: 'CreateTime',
         key: 'CreateTime',
@@ -324,169 +320,168 @@ function handleGoReadTimes(e){
 </script>
 </script>
 
 
 <template>
 <template>
-  <div class="customer-user-list-page">
-
-    <div class="select">
-      <el-radio-group v-model="radio" fill="#0052D9" size="large" @change="getUserList()">
-        <el-radio-button label="机构投资者" :value="1"></el-radio-button>
-        <el-radio-button label="个人投资者" :value="2"></el-radio-button>
-      </el-radio-group>
-    </div>
-
-    <div class="search-box">
-      <div class="flex filter-wrap">
-        <el-input
-          :placeholder="radio === 1 ? '请输入机构名称/联系人姓名/手机号' : '请输入投资者姓名/手机号'"
-          v-model="filterState.keyword"
-          :prefix-icon="Search"
-          clearable
-          size="large"
-          style="max-width: 359px;float: right"
-          @input="handleFilterList"
-        />
-        <div style="width: 235px">
-          <all-user-for-depart
-            style="width: 100%"
-            :props="{
-              emitPath: false,
-              multiple: true,
-            }"
-            :filterable="true"
-            onlySelectUser
-            :size="'large'"
-            v-model="filterState.sellerId"
-            placeholder="请选择营业部"
-            @change="handleFilterList"
-          />
-        </div>
-        <div style="width: 235px">
-          <el-date-picker
-            style="width: 235px"
-            v-model="filterState.createTime"
-            type="daterange"
-            range-separator="至"
-            start-placeholder="创建时间"
-            end-placeholder="创建时间"
-            value-format="YYYY-MM-DD"
+  <el-card>
+    <div class="customer-user-list-page">
+      <div class="select">
+        <el-radio-group v-model="radio" fill="#0052D9" size="large" @change="getUserList()">
+          <el-radio-button label="机构投资者" :value="1"></el-radio-button>
+          <el-radio-button label="个人投资者" :value="2"></el-radio-button>
+        </el-radio-group>
+      </div>
+      <div class="search-box">
+        <div class="flex filter-wrap">
+          <el-input
+            :placeholder="radio === 1 ? '请输入机构名称/联系人姓名/手机号' : '请输入投资者姓名/手机号'"
+            v-model="filterState.keyword"
+            :prefix-icon="Search"
             clearable
             clearable
             size="large"
             size="large"
-            @change="handleFilterList"
+            style="max-width: 359px;float: right"
+            @input="handleFilterList"
           />
           />
+          <div style="width: 235px">
+            <all-user-for-depart
+              style="width: 100%"
+              :props="{
+                emitPath: false,
+                multiple: true,
+              }"
+              :filterable="true"
+              onlySelectUser
+              :size="'large'"
+              v-model="filterState.sellerId"
+              placeholder="请选择营业部"
+              @change="handleFilterList"
+            />
+          </div>
+          <div style="width: 235px">
+            <el-date-picker
+              style="width: 235px"
+              v-model="filterState.createTime"
+              type="daterange"
+              range-separator="至"
+              start-placeholder="创建时间"
+              end-placeholder="创建时间"
+              value-format="YYYY-MM-DD"
+              clearable
+              size="large"
+              @change="handleFilterList"
+            />
+          </div>
+          
+        </div>
+        <div>
+          <el-button
+            type="primary"
+            :icon="Plus"
+            size="large"
+            @click="goAddUserPage"
+            v-permission="permissionBtn.customerManageBtn.customer_add"
+            >新增</el-button
+          >
         </div>
         </div>
-        
       </div>
       </div>
-      <div>
-        <el-button
-          type="primary"
-          :icon="Plus"
-          size="large"
-          @click="goAddUserPage"
-          v-permission="permissionBtn.customerManageBtn.customer_add"
-          >新增</el-button
+      <div class="userlist-wrap" style="margin-top: 30px">
+        <el-table
+          :data="userList"
+          border
+          element-loading-text="数据加载中..."
+          v-loading="tableLoading"
+          @sort-change="handleTableSort"
+          :header-cell-style="{ background: '#EBEEF5' }"
         >
         >
+          <el-table-column
+            v-for="column in tableColOpt"
+            :key="column.key"
+            :prop="column.key"
+            :label="column.label"
+            :sortable="column.sort ? 'custom' : false"
+            :width="column.width"
+            align="center"
+          >
+            <template v-if="column.headerTips" #header>
+              <span>{{ column.label }}</span>
+              <el-tooltip
+                class="box-item"
+                effect="dark"
+                :content="column.headerTips"
+                placement="top"
+              >
+                <el-icon style="position: relative; top: 2px"
+                  ><i-ep-QuestionFilled
+                /></el-icon>
+              </el-tooltip>
+            </template>
+            <template #default="{ row }">
+              <span v-if="column.key === 'RealName' || column.key === 'CompanyName'" class="company-name" @click="handleGoDetail(row)">{{row.RealName || row.CompanyName}}</span>
+              <span v-else-if="column.key === 'ReadTimes'" :style="row.ReadTimes > 0 ?'color: #075EEE;' : ''" @click="handleGoReadTimes(row)">{{ row.ReadTimes}}</span>
+              <span v-else-if="column.key === 'IsRegistered'">{{
+                row.IsRegistered ? "是" : "否" || '-'
+              }}</span>
+              <span v-else-if="column.key === 'RegisterTime'">{{
+                formatTime(row.RegisterTime) || '-'
+              }}</span>
+              <span v-else-if="column.key === 'CreateTime'">{{
+                formatTime(row.CreateTime) || '-'
+              }}</span>
+              <span v-else>{{ row[column.key] || '-' }}</span>
+            </template>
+          </el-table-column>
+          <el-table-column label="操作" width="200" align="center">
+            <template #default="{ row }">
+              <el-button
+                v-permission="permissionBtn.customerManageBtn.customer_edit"
+                type="primary"
+                link
+                @click.stop="handleEditUser(row)"
+                >编辑</el-button
+              >
+              <el-button
+                v-permission="permissionBtn.customerManageBtn.customer_permissionSettings"
+                type="danger"
+                link
+                v-if="row.AuthStatus === 1"
+                @click.stop="handleOpenAndClose(row,'close')"
+                >关闭权限</el-button
+              >
+              <el-button
+                v-permission="permissionBtn.customerManageBtn.customer_permissionSettings"
+                type="primary"
+                link
+                v-else
+                @click.stop="handleOpenAndClose(row,'open')"
+                >开启权限</el-button
+              >
+              <el-button
+                v-permission="permissionBtn.customerManageBtn.customer_delete"
+                type="danger"
+                link
+                @click.stop="handleDelUserAndCompany(row)"
+                >删除</el-button
+              >
+            </template>
+          </el-table-column>
+        </el-table>
+        <el-pagination
+          background
+          layout="total,prev,pager,next,jumper"
+          :current-page="page"
+          :page-size="pageSize"
+          :total="totals"
+          @current-change="handlePageChange"
+          class="pagination"
+        />
       </div>
       </div>
     </div>
     </div>
-      
-    <div class="userlist-wrap" style="margin-top: 30px">
-      <el-table
-        :data="userList"
-        border
-        element-loading-text="数据加载中..."
-        v-loading="tableLoading"
-        @sort-change="handleTableSort"
-      >
-        <el-table-column
-          v-for="column in tableColOpt"
-          :key="column.key"
-          :prop="column.key"
-          :label="column.label"
-          :sortable="column.sort ? 'custom' : false"
-          :width="column.width"
-          align="center"
-        >
-          <template v-if="column.headerTips" #header>
-            <span>{{ column.label }}</span>
-            <el-tooltip
-              class="box-item"
-              effect="dark"
-              :content="column.headerTips"
-              placement="top"
-            >
-              <el-icon style="position: relative; top: 2px"
-                ><i-ep-QuestionFilled
-              /></el-icon>
-            </el-tooltip>
-          </template>
-          <template #default="{ row }">
-            <span v-if="column.key === 'RealName' || column.key === 'CompanyName'" style="color: #075EEE;" @click="handleGoDetail(row)">{{row.RealName || row.CompanyName}}</span>
-            <span v-else-if="column.key === 'ReadTimes'" :style="row.ReadTimes > 0 ?'color: #075EEE;' : ''" @click="handleGoReadTimes(row)">{{ row.ReadTimes}}</span>
-            <span v-else-if="column.key === 'IsRegistered'">{{
-              row.IsRegistered ? "是" : "否" || '-'
-            }}</span>
-            <span v-else-if="column.key === 'IsSubscribed'">{{
-              row.IsSubscribed ? "是" : "否" || '-'
-            }}</span>
-            <span v-else-if="column.key === 'RegisterTime'">{{
-              formatTime(row.RegisterTime) || '-'
-            }}</span>
-            <span v-else-if="column.key === 'CreateTime'">{{
-              formatTime(row.CreateTime) || '-'
-            }}</span>
-            <span v-else>{{ row[column.key] || '-' }}</span>
-          </template>
-        </el-table-column>
-        <el-table-column label="操作" width="200" align="center">
-          <template #default="{ row }">
-            <el-button
-              v-permission="permissionBtn.customerManageBtn.customer_edit"
-              type="primary"
-              link
-              @click.stop="handleEditUser(row)"
-              >编辑</el-button
-            >
-            <el-button
-              v-permission="permissionBtn.customerManageBtn.customer_permissionSettings"
-              type="danger"
-              link
-              v-if="row.AuthStatus === 1"
-              @click.stop="handleOpenAndClose(row,'close')"
-              >关闭权限</el-button
-            >
-            <el-button
-              v-permission="permissionBtn.customerManageBtn.customer_permissionSettings"
-              type="primary"
-              link
-              v-else
-              @click.stop="handleOpenAndClose(row,'open')"
-              >开启权限</el-button
-            >
-            <el-button
-              v-permission="permissionBtn.customerManageBtn.customer_delete"
-              type="danger"
-              link
-              @click.stop="handleDelUserAndCompany(row)"
-              >删除</el-button
-            >
-          </template>
-        </el-table-column>
-      </el-table>
-      <el-pagination
-        background
-        layout="total,prev,pager,next,jumper"
-        :current-page="page"
-        :page-size="pageSize"
-        :total="totals"
-        @current-change="handlePageChange"
-        style="margin-top: 30px; justify-content: flex-end"
-      />
-    </div>
-  </div>
+  </el-card>
   <UserStatisticDetail v-model:show="showDetail" :userId="activeUserId" :userName="activeUserName"/>
   <UserStatisticDetail v-model:show="showDetail" :userId="activeUserId" :userName="activeUserName"/>
 </template>
 </template>
 
 
 <style lang="scss" scoped>
 <style lang="scss" scoped>
 .customer-user-list-page {
 .customer-user-list-page {
+  position: relative;
   width: 100%;
   width: 100%;
+  min-height: calc(100vh - 180px);
   overflow: hidden;
   overflow: hidden;
   .search-box {
   .search-box {
     display: flex;
     display: flex;
@@ -499,5 +494,17 @@ function handleGoReadTimes(e){
     flex-wrap: wrap;
     flex-wrap: wrap;
     gap: 10px;
     gap: 10px;
   }
   }
+  .pagination {
+    position: absolute;
+    bottom: 30px;
+    right: 0;
+    justify-content: flex-end;
+  }
+}
+.company-name {
+  color: #075EEE;
+  white-space: nowrap;           /* 禁止换行 */
+  overflow: hidden;              /* 隐藏溢出内容 */
+  text-overflow: ellipsis;
 }
 }
 </style>
 </style>

+ 70 - 53
src/views/customer/UserSearch.vue

@@ -88,59 +88,76 @@ function handleGoReadTimes(e){
 </script>
 </script>
 
 
 <template>
 <template>
-  <div class="user-search-page">
-    <el-input
-      placeholder="请输入机构名称/姓名/手机号"
-      v-model="searchFilters.keyword"
-      :prefix-icon="Search"
-      clearable
-      v-permission="permissionBtn.customerManageBtn.search_list"
-      style="max-width: 359px"
-      @input="handleFilterList"
-    />
-    <div class="userlist-wrap" style="margin-top: 20px">
-      <el-table
-        :data="userList"
-        border
-        highlight-current-row
-        element-loading-text="数据加载中..."
-        v-loading="tableLoading"
-      >
-        <el-table-column
-          v-for="column in tableColumns"
-          :key="column.key"
-          :prop="column.key"
-          :label="column.label"
-          align="center"
-          :sortable="column.sort ? 'custom' : false"
-        >
-          <template v-if="column.headerTips" #header>
-            <span>{{ column.label }}</span>
-            <el-tooltip
-              class="box-item"
-              effect="dark"
-              :content="column.headerTips"
-              placement="top"
-            >
-              <el-icon style="position: relative; top: 2px"><i-ep-QuestionFilled /></el-icon>
-            </el-tooltip>
-          </template>
-          <template #default="{ row }">
-            <span v-if="column.key === 'ReadTimes'" :style="row.ReadTimes > 0 ?'color: #075EEE;' : ''" @click="handleGoReadTimes(row)">{{ row.ReadTimes}}</span>
-            <span v-else>{{ row[column.key] || '-' }}</span>
-          </template>
-        </el-table-column>
-      </el-table>
-      <el-pagination
-        background
-        layout="total,prev,pager,next,jumper"
-        :current-page="page"
-        :page-size="pageSize"
-        :total="totals"
-        @current-change="handlePageChange"
-        style="margin-top: 30px; justify-content: flex-end"
+  <el-card>
+    <div class="user-search-page">
+      <el-input
+        placeholder="请输入机构名称/姓名/手机号"
+        v-model="searchFilters.keyword"
+        :prefix-icon="Search"
+        clearable
+        v-permission="permissionBtn.customerManageBtn.search_list"
+        style="max-width: 359px"
+        @input="handleFilterList"
       />
       />
+      <div class="userlist-wrap" style="margin-top: 20px">
+        <el-table
+          :data="userList"
+          border
+          highlight-current-row
+          element-loading-text="数据加载中..."
+          v-loading="tableLoading"
+          :header-cell-style="{ background: '#EBEEF5' }"
+        >
+          <el-table-column
+            v-for="column in tableColumns"
+            :key="column.key"
+            :prop="column.key"
+            :label="column.label"
+            align="center"
+            :sortable="column.sort ? 'custom' : false"
+          >
+            <template v-if="column.headerTips" #header>
+              <span>{{ column.label }}</span>
+              <el-tooltip
+                class="box-item"
+                effect="dark"
+                :content="column.headerTips"
+                placement="top"
+              >
+                <el-icon style="position: relative; top: 2px"><i-ep-QuestionFilled /></el-icon>
+              </el-tooltip>
+            </template>
+            <template #default="{ row }">
+              <span v-if="column.key === 'ReadTimes'" :style="row.ReadTimes > 0 ?'color: #075EEE;' : ''" @click="handleGoReadTimes(row)">{{ row.ReadTimes}}</span>
+              <span v-else>{{ row[column.key] || '-' }}</span>
+            </template>
+          </el-table-column>
+        </el-table>
+        <el-pagination
+          background
+          layout="total,prev,pager,next,jumper"
+          :current-page="page"
+          :page-size="pageSize"
+          :total="totals"
+          @current-change="handlePageChange"
+          class="pagination"
+        />
+      </div>
     </div>
     </div>
-  </div>
+  </el-card>
   <UserStatisticDetail v-model:show="showDetail" :userId="activeUserId" :userName="activeUserName"/>
   <UserStatisticDetail v-model:show="showDetail" :userId="activeUserId" :userName="activeUserName"/>
-</template>
+</template>
+
+<style lang="scss" scoped>
+  .user-search-page {
+    position: relative;
+    width: 100%;
+    min-height: calc(100vh - 180px);
+    .pagination {
+      position: absolute;
+      bottom: 30px;
+      right: 0;
+      justify-content: flex-end;
+    }
+  }
+</style>

+ 35 - 7
src/views/customer/components/AddContact.vue

@@ -71,7 +71,7 @@ watch(() => show.value, (newval) => {
 
 
 async function handleSubmitForm() {
 async function handleSubmitForm() {
   await formRef.value.validate();
   await formRef.value.validate();
-  const { RealName, CompanyId, UserId, areaCode, Mobile } = formData.value;
+  const { areaCode, Mobile } = formData.value;
 
 
   if (props.contactTatle === '添加联系人') {
   if (props.contactTatle === '添加联系人') {
       // 新增用户时进行校验
       // 新增用户时进行校验
@@ -80,16 +80,31 @@ async function handleSubmitForm() {
       Mobile,
       Mobile,
     })
     })
     if (checkRes.Ret !== 200) return
     if (checkRes.Ret !== 200) return
-    if (checkRes.Data.CheckResult !== 0) {
-        ElMessageBox.confirm(checkRes.Data.Tips,'操作提示',{
+    if (checkRes.Data.CheckResult === 2 || checkRes.Data.CheckResult === 3) {
+      ElMessageBox.alert(checkRes.Data.Tips,'操作提示',{
+        confirmButtonText: '知道了',
+        callback: action => {
+          if (action === 'confirm') {
+            // 用户点击了确认按钮
+          }
+        },
+      })
+    } else if (checkRes.Data.CheckResult === 1) {
+      ElMessageBox.confirm(checkRes.Data.Tips,'操作提示',{
         autofocus:false,
         autofocus:false,
       }).then(()=>{
       }).then(()=>{
+        handleMoveUsersFetch(checkRes.Data.UserId)
       }).catch(()=>{})
       }).catch(()=>{})
-      return
+    } else {
+      handleSubmitFetch()
     }
     }
+  } else {
+    handleSubmitFetch()
   }
   }
+}
 
 
-
+async function handleSubmitFetch() {
+  const { RealName, CompanyId, UserId, areaCode, Mobile } = formData.value;
   const params = {
   const params = {
     RealName,
     RealName,
     CompanyId,
     CompanyId,
@@ -97,10 +112,23 @@ async function handleSubmitForm() {
     AreaCode: areaCode,
     AreaCode: areaCode,
     Mobile: Mobile,
     Mobile: Mobile,
   };
   };
-  
   const res = props.contactTatle === '添加联系人' ? await apiCustomerUser.userAdd(params) : await apiCustomerUser.userEdit(params);
   const res = props.contactTatle === '添加联系人' ? await apiCustomerUser.userAdd(params) : await apiCustomerUser.userEdit(params);
   if (res.Ret !== 200) return;
   if (res.Ret !== 200) return;
-  ElMessage.success('操作成功');
+  props.contactTatle === '添加联系人' ? ElMessage.success('添加成功') : ElMessage.success('修改成功');
+  show.value = false;
+  emits("success");
+}
+
+async function handleMoveUsersFetch(UserId = null) {
+  const {CompanyId, RealName} = formData.value;
+  const params = {
+    CompanyId,
+    UserId,
+    RealName
+  };
+  const res = await apiCustomerUser.usersMove(params)
+  if (res.Ret !== 200) return;
+  ElMessage.success('添加成功');
   show.value = false;
   show.value = false;
   emits("success");
   emits("success");
 }
 }

+ 1 - 7
src/views/customer/components/ContactTable.vue

@@ -36,10 +36,6 @@ const tableColOpt = computed( ()=>{
       sort: true,
       sort: true,
       headerTips: '用户首次登录小程序的时间'
       headerTips: '用户首次登录小程序的时间'
     },
     },
-    {
-      label: '是否关注公众号',
-      key: 'IsSubscribed' 
-    },
     { 
     { 
       label: '最近一次阅读时间',
       label: '最近一次阅读时间',
       key: 'LastReadTime',
       key: 'LastReadTime',
@@ -180,6 +176,7 @@ function handleGoReadTimes(e){
         element-loading-text="数据加载中..."
         element-loading-text="数据加载中..."
         v-loading="tableLoading"
         v-loading="tableLoading"
         @sort-change="handleTableSort"
         @sort-change="handleTableSort"
+        :header-cell-style="{ background: '#EBEEF5' }"
       >
       >
         <el-table-column
         <el-table-column
           v-for="column in tableColOpt"
           v-for="column in tableColOpt"
@@ -207,9 +204,6 @@ function handleGoReadTimes(e){
             <span v-if="column.key === 'IsRegistered'">{{
             <span v-if="column.key === 'IsRegistered'">{{
               row.IsRegistered ? "是" : "否"
               row.IsRegistered ? "是" : "否"
             }}</span>
             }}</span>
-            <span v-else-if="column.key === 'IsSubscribed'">{{
-              row.IsSubscribed ? "是" : "否"
-            }}</span>
             <span v-else-if="column.key === 'RegisterTime'">{{
             <span v-else-if="column.key === 'RegisterTime'">{{
               formatTime(row.RegisterTime)  || '-'
               formatTime(row.RegisterTime)  || '-'
             }}</span>
             }}</span>

+ 1 - 0
src/views/customer/components/MoveUser.vue

@@ -71,6 +71,7 @@ async function handleSubmitForm() {
             placeholder="请选择投资者机构"
             placeholder="请选择投资者机构"
             size="large"
             size="large"
             style="width: 100%"
             style="width: 100%"
+            filterable
           >
           >
             <el-option
             <el-option
               v-for="item in departArr"
               v-for="item in departArr"

+ 1 - 0
src/views/customer/components/ToFormalize.vue

@@ -110,6 +110,7 @@ async function handleSubmitForm() {
             v-model="formData.CompanyId"
             v-model="formData.CompanyId"
             placeholder="请选择客户类型"
             placeholder="请选择客户类型"
             size="large"
             size="large"
+            filterable
             style="width: 100%"
             style="width: 100%"
           >
           >
             <el-option
             <el-option