فهرست منبع

测试bug修复

hbchen 2 سال پیش
والد
کامیت
e1a9cddb15

+ 8 - 1
src/api/systemMana.js

@@ -140,7 +140,14 @@ export function addRoleApi(data) {
       data
       data
   })
   })
 }
 }
-
+// 编辑角色
+export function editRoleApi(data) {
+  return request({
+      url:'/system/role/edit',
+      method:'post',
+      data
+  })
+}
 // 获取角色绑定菜单
 // 获取角色绑定菜单
 export function getRolePermission(data) {
 export function getRolePermission(data) {
   return request({
   return request({

+ 49 - 0
src/components/scrollable-select/index.vue

@@ -0,0 +1,49 @@
+<!-- 远程搜索 下拉框分页 -->
+<script setup>
+  const props=defineProps({
+    // 搜索方法
+    searchMethod:{
+      type:Function,
+      required:true
+    },
+    // 加载更多方法
+    loadMoreMethod:{
+      type:Function,
+      required:true
+    },
+    // 是否需要loading
+    useLoading:{
+      type:Boolean,
+      default:false
+    },
+    // 是否正在loading
+    isLoading:{
+      type:Boolean,
+      default:false
+    }
+  })
+  const emits=defineEmits(['change'])
+
+  // -------method
+  const selectMethod=(value)=>{
+    emits('change',value)
+  }
+  // console.log(props);
+</script>
+<template>
+  <el-select v-optionsLoadMore="loadMoreMethod" filterable remote :remote-method="searchMethod"
+  :placeholder="props.placeholder" :teleported="false" @change="selectMethod">
+    <slot name="default"></slot>
+    <div v-loading="props.isLoading" class="load-item" v-if="props.useLoading"></div>
+  </el-select>
+</template>
+  
+<style lang="scss" scoped>
+  .load-item{
+    height: 40px;
+    width:100%;
+    position: absolute;
+    bottom: 0;
+    pointer-events: none;
+  }
+</style>

+ 2 - 4
src/views/financialManagement/components/serviceVarietyDia.vue

@@ -69,9 +69,6 @@ import html2canvas from "html2canvas";
     // 选中的Id
     // 选中的Id
     chart_permission_ids:''
     chart_permission_ids:''
   })
   })
-
-  const goodsArr=["能化专栏《化里化外》","黑色专栏《知白守黑》","有色专栏《有声有色》","《股债日评》"]
-  const monthReport=["宏观经济","草根调研"]
   const emits=defineEmits(['update:visible','selectFinish'])
   const emits=defineEmits(['update:visible','selectFinish'])
 
 
   watch(()=>props.service,(newValue)=>{
   watch(()=>props.service,(newValue)=>{
@@ -217,11 +214,12 @@ const formatRightClickCon=(rindex, cindex)=>{
     arr[2].show = false;
     arr[2].show = false;
   }
   }
 
 
-  //删除行 不能少于两行 并且商品复盘、周报、双周报、数据点评、月报必须有一个存在
+  //删除行 不能少于两行
   if (params.tableData.length <= 2) {
   if (params.tableData.length <= 2) {
     arr[3].show = false;
     arr[3].show = false;
   }
   }
 
 
+  // 商品复盘、周报、双周报、数据点评、月报必须有一个存在
   let temarr=[]
   let temarr=[]
   params.tableData.forEach(item=>{
   params.tableData.forEach(item=>{
     item.forEach(item2=>{
     item.forEach(item2=>{

+ 31 - 21
src/views/financialManagement/contractProgress.vue

@@ -6,6 +6,7 @@
   import {ElMessage} from 'element-plus'
   import {ElMessage} from 'element-plus'
   import {getSellerList,getContractSearchList} from '@/api/crm'
   import {getSellerList,getContractSearchList} from '@/api/crm'
   import {getServiceList,registerAdd,registerDetail,registerEdit,registerInvoice,registerPayment} from '@/api/financialMana'
   import {getServiceList,registerAdd,registerDetail,registerEdit,registerInvoice,registerPayment} from '@/api/financialMana'
+  import scrollableSelect from '@/components/scrollable-select/index.vue'
 
 
   const router = useRouter()
   const router = useRouter()
   const route = useRoute()
   const route = useRoute()
@@ -21,7 +22,7 @@
   const contractStatusArray=[{id:1,label:"已审批"},{id:2,label:"单章寄回"},{id:3,label:"已签回"}]
   const contractStatusArray=[{id:1,label:"已审批"},{id:2,label:"单章寄回"},{id:3,label:"已签回"}]
   const contractTypeArray=[{id:1,label:"新签"},{id:2,label:"续约"}]
   const contractTypeArray=[{id:1,label:"新签"},{id:2,label:"续约"}]
   const operationType=[{op_type:1,label:"合规登记"},{op_type:2,label:"开票登记"},{op_type:3,label:"到款登记"},
   const operationType=[{op_type:1,label:"合规登记"},{op_type:2,label:"开票登记"},{op_type:3,label:"到款登记"},
-  {op_type:4,label:"修改合同状态"},{op_type:5,label:"删除合同登记"}]
+  {op_type:4,label:"修改合同状态"},{op_type:5,label:"删除合同登记"},{op_type:6,label:"合规编辑"}]
 
 
   // 合同信息
   // 合同信息
   const contractInfo=reactive({
   const contractInfo=reactive({
@@ -36,6 +37,7 @@
       invoice:false, // 开票
       invoice:false, // 开票
       placement:false // 到款
       placement:false // 到款
     },
     },
+    // 合规登记表单
     form:{
     form:{
       product_id:1,
       product_id:1,
       contract_register_id:'',
       contract_register_id:'',
@@ -55,19 +57,6 @@
       services:[],
       services:[],
       remark:""
       remark:""
     },
     },
-    moneyData:{
-      haveInvoiceMoney:'',
-      waitInvoiceMoney:'',
-      allInvoiceMoney:'',
-      // 到款金额
-      havePlacementMoney:'',
-      waitPlacementMoney:'',
-      allPlacementMoney:''
-    },
-    // 有效期
-    contractValidityDate:[],
-    //销售列表
-    sellerList:[],
     rules:{
     rules:{
       contract_source:{required:true,message:'合同来源不能为空',trigger:'change'},
       contract_source:{required:true,message:'合同来源不能为空',trigger:'change'},
       contract_code:{required:true,message:'合同编号不能为空',trigger:'blur'},
       contract_code:{required:true,message:'合同编号不能为空',trigger:'blur'},
@@ -91,6 +80,20 @@
       agreed_pay_time:{required:true,message:'约定付款时间不能为空',trigger:'blur'}
       agreed_pay_time:{required:true,message:'约定付款时间不能为空',trigger:'blur'}
 
 
     },
     },
+    moneyData:{
+      // 开票金额
+      haveInvoiceMoney:'',
+      waitInvoiceMoney:'',
+      allInvoiceMoney:'',
+      // 到款金额
+      havePlacementMoney:'',
+      waitPlacementMoney:'',
+      allPlacementMoney:''
+    },
+    // 有效期
+    contractValidityDate:[],
+    //销售列表
+    sellerList:[],
     // 合同编号----------------------列表
     // 合同编号----------------------列表
     contractNoArray:[],
     contractNoArray:[],
     // 请求列表参数
     // 请求列表参数
@@ -201,7 +204,6 @@
   const getServiceListFun=()=>{
   const getServiceListFun=()=>{
     getServiceList().then(res=>{
     getServiceList().then(res=>{
       contractInfo.serviceArray=res.data || []
       contractInfo.serviceArray=res.data || []
-      // console.log(contractInfo.serviceArray);
     })
     })
   }
   }
 
 
@@ -293,7 +295,11 @@
     contractInfo.form.seller_name=selectItem.seller_name
     contractInfo.form.seller_name=selectItem.seller_name
     contractInfo.form.seller_id=selectItem.seller_id
     contractInfo.form.seller_id=selectItem.seller_id
     contractInfo.form.contract_type=selectItem.contract_type_key
     contractInfo.form.contract_type=selectItem.contract_type_key
-    contractInfoForm.value && contractInfoForm.value.validateField()
+    contractInfoForm.value && 
+    contractInfoForm.value.validateField([
+      'contract_code','company_name','contract_type','seller_id',
+      'start_date','contract_amount','contract_type'
+    ])
   }
   }
   // 销售选中
   // 销售选中
   const selectSeller=(value)=>{
   const selectSeller=(value)=>{
@@ -407,6 +413,7 @@
   }
   }
   // 合规登记-提交
   // 合规登记-提交
   const complianceSubmit=()=>{
   const complianceSubmit=()=>{
+    console.log(contractInfo.checkedService);
     contractInfoForm.value.validate(valid=>{
     contractInfoForm.value.validate(valid=>{
       if(valid){
       if(valid){
         if(contractInfo.checkedService.length==0){
         if(contractInfo.checkedService.length==0){
@@ -630,7 +637,7 @@
               contractInfo.currentSmallService=paramsTemp
               contractInfo.currentSmallService=paramsTemp
               clearInterval(timer)
               clearInterval(timer)
             }
             }
-          },200)
+          },100)
         }else{
         }else{
           contractInfo.currentSmallService=paramsTemp
           contractInfo.currentSmallService=paramsTemp
         }
         }
@@ -661,11 +668,10 @@
                   <el-form-item label="合同编号" prop="contract_code" id="selectContract">
                   <el-form-item label="合同编号" prop="contract_code" id="selectContract">
                     <el-input v-model="contractInfo.form.contract_code" placeholder="请输入合同编号"
                     <el-input v-model="contractInfo.form.contract_code" placeholder="请输入合同编号"
                     v-if="(contractInfo.form.contract_source==0)"/>
                     v-if="(contractInfo.form.contract_source==0)"/>
-                    <el-select :teleported="false" v-optionsLoadMore="loadContractNoMore" v-model="contractInfo.form.contract_code" placeholder="请搜索合同编号" v-else
-                    filterable remote :remote-method="contractNoSearch" :loading="false" @change="selectContractNo">
+                    <scrollableSelect :loadMoreMethod="loadContractNoMore" v-model="contractInfo.form.contract_code" placeholder="请搜索合同编号" v-else
+                    :searchMethod="contractNoSearch" @change="selectContractNo" useLoading :isLoading="contractInfo.contractNoLoading">
                       <el-option :label="item.contract_code" :value="item.contract_code" v-for="item in contractInfo.contractNoArray" :key="item.contract_id"></el-option>
                       <el-option :label="item.contract_code" :value="item.contract_code" v-for="item in contractInfo.contractNoArray" :key="item.contract_id"></el-option>
-                      <div style="height: 40px;width:100%;position: absolute;bottom: 0;pointer-events: none;" v-loading="contractInfo.contractNoLoading"></div>
-                    </el-select>
+                    </scrollableSelect>
                   </el-form-item>
                   </el-form-item>
                   <el-form-item label="客户名称" prop="company_name">
                   <el-form-item label="客户名称" prop="company_name">
                     <el-input v-model="contractInfo.form.company_name"
                     <el-input v-model="contractInfo.form.company_name"
@@ -718,11 +724,13 @@
               <div class="info-row-title">套餐信息</div>
               <div class="info-row-title">套餐信息</div>
               <el-checkbox-group :disabled="contractInfo.operationtype!='compliance'"
               <el-checkbox-group :disabled="contractInfo.operationtype!='compliance'"
               v-model="contractInfo.checkedService" class="info-service-box">
               v-model="contractInfo.checkedService" class="info-service-box">
+                <!-- 大套餐 -->
                 <el-checkbox :label="contractInfo.serviceArray[0]?.service_template_id" @change="(e) => serciveChange(e,1)" 
                 <el-checkbox :label="contractInfo.serviceArray[0]?.service_template_id" @change="(e) => serciveChange(e,1)" 
                   :class="{'viewService':canServiceShow(contractInfo.serviceArray[0]?.service_template_id)}"
                   :class="{'viewService':canServiceShow(contractInfo.serviceArray[0]?.service_template_id)}"
                 :disabled="contractInfo.serviceType==2" style="margin-right: 0;" @click="viewService(contractInfo.serviceArray[0]?.service_template_id)">
                 :disabled="contractInfo.serviceType==2" style="margin-right: 0;" @click="viewService(contractInfo.serviceArray[0]?.service_template_id)">
                   {{contractInfo.serviceArray[0]?.title}}
                   {{contractInfo.serviceArray[0]?.title}}
                 </el-checkbox>
                 </el-checkbox>
+                <!-- 小套餐 -->
                 <div class="service-small">
                 <div class="service-small">
                   <el-checkbox :label="contractInfo.serviceArray[1]?.service_template_id" @change="(e) => serciveChange(e,2)" 
                   <el-checkbox :label="contractInfo.serviceArray[1]?.service_template_id" @change="(e) => serciveChange(e,2)" 
                     :class="{'viewService':canServiceShow(contractInfo.serviceArray[1]?.service_template_id)}"
                     :class="{'viewService':canServiceShow(contractInfo.serviceArray[1]?.service_template_id)}"
@@ -732,11 +740,13 @@
                   <span v-if="(contractInfo.serviceVarietyShow&&contractInfo.operationtype=='compliance')" 
                   <span v-if="(contractInfo.serviceVarietyShow&&contractInfo.operationtype=='compliance')" 
                   @click="contractInfo.varietyDiaShow=true">选择品种</span>
                   @click="contractInfo.varietyDiaShow=true">选择品种</span>
                 </div>
                 </div>
+                <!-- 市场策略 -->
                 <el-checkbox :label="contractInfo.serviceArray[2]?.service_template_id" style="margin-right: 0;" 
                 <el-checkbox :label="contractInfo.serviceArray[2]?.service_template_id" style="margin-right: 0;" 
                 @click="viewService(contractInfo.serviceArray[2]?.service_template_id)"
                 @click="viewService(contractInfo.serviceArray[2]?.service_template_id)"
                  :class="{'viewService':canServiceShow(contractInfo.serviceArray[2]?.service_template_id)}">
                  :class="{'viewService':canServiceShow(contractInfo.serviceArray[2]?.service_template_id)}">
                  {{contractInfo.serviceArray[2]?.title}}
                  {{contractInfo.serviceArray[2]?.title}}
                 </el-checkbox>
                 </el-checkbox>
+                <!-- 财富管理 -->
                 <el-checkbox :label="contractInfo.serviceArray[3]?.service_template_id">
                 <el-checkbox :label="contractInfo.serviceArray[3]?.service_template_id">
                   {{contractInfo.serviceArray[3]?.title}}
                   {{contractInfo.serviceArray[3]?.title}}
                 </el-checkbox>
                 </el-checkbox>

+ 29 - 8
src/views/systemManagement/roleM.vue

@@ -1,7 +1,7 @@
 <script setup>
 <script setup>
 import { Search } from '@element-plus/icons-vue'
 import { Search } from '@element-plus/icons-vue'
 import { ElMessage,ElMessageBox } from 'element-plus';
 import { ElMessage,ElMessageBox } from 'element-plus';
-import {getRoleList,addRoleApi,deleteRoleApi} from '@/api/systemMana'
+import {getRoleList,addRoleApi,deleteRoleApi,editRoleApi} from '@/api/systemMana'
 import {useRouter,useRoute} from 'vue-router'
 import {useRouter,useRoute} from 'vue-router'
 
 
 const router = useRouter()
 const router = useRouter()
@@ -15,9 +15,11 @@ const route = useRoute()
     tableData:[],
     tableData:[],
     total:0,
     total:0,
     showDialog:false,
     showDialog:false,
+    dialogTitle:'',
     // ---------添加弹窗
     // ---------添加弹窗
     addForm:{
     addForm:{
-      role_name:''
+      role_name:'',
+      role_id:''
     }
     }
   })
   })
   const addRoleForm = ref()
   const addRoleForm = ref()
@@ -32,6 +34,15 @@ const route = useRoute()
       }
       }
     })
     })
   }
   }
+
+  //新增/编辑角色 弹窗
+  const openEditRoleDia=(roleName,roleId)=>{
+    if(roleId) role.dialogTitle='编辑角色'
+    else role.dialogTitle='添加角色'
+    role.addForm.role_name=roleName
+    role.addForm.role_id=roleId
+    role.showDialog=true
+  }
   // 切换每页的数量
   // 切换每页的数量
   const changePageSize=(pageSize)=>{
   const changePageSize=(pageSize)=>{
     role.searchParams.page_size = pageSize
     role.searchParams.page_size = pageSize
@@ -60,13 +71,19 @@ const route = useRoute()
   const submitForm=()=>{
   const submitForm=()=>{
     addRoleForm.value.validate((vaild)=>{
     addRoleForm.value.validate((vaild)=>{
       if(vaild){
       if(vaild){
-        addRoleApi(role.addForm).then(res=>{
-          if(res.code==200){
+        if(role.addForm.role_id){
+          editRoleApi(role.addForm).then(res=>{
+            ElMessage.success('编辑角色成功')
+            role.showDialog=false
+            refreshList()
+          })
+        }else{
+          addRoleApi(role.addForm).then(res=>{
             ElMessage.success('添加角色成功')
             ElMessage.success('添加角色成功')
             role.showDialog=false
             role.showDialog=false
             refreshList()
             refreshList()
-          }
-        })
+          })
+        }
       }
       }
     })
     })
   }
   }
@@ -110,7 +127,7 @@ const route = useRoute()
         <div class="role-container">
         <div class="role-container">
           <div class="role-container-header">
           <div class="role-container-header">
             <div class="role-container-header-buttons">
             <div class="role-container-header-buttons">
-              <el-button type="primary" @click="role.showDialog=true" class="header-optios-buttons" v-permission="'system:role:add'">
+              <el-button type="primary" @click="openEditRoleDia('')" class="header-optios-buttons" v-permission="'system:role:add'">
                 添加角色
                 添加角色
               </el-button>
               </el-button>
               <el-button type="primary" @click="premission('set')" class="header-optios-buttons" v-permission="'system:role:setPermission'"
               <el-button type="primary" @click="premission('set')" class="header-optios-buttons" v-permission="'system:role:setPermission'"
@@ -137,6 +154,10 @@ const route = useRoute()
                       v-permission="'system:role:viewPermission'">
                       v-permission="'system:role:viewPermission'">
                       查看权限
                       查看权限
                     </span>
                     </span>
+                    <span class="table-option-buttons" @click="openEditRoleDia(scope.row.role_name,scope.row.role_id)" 
+                      v-permission="'system:role:viewPermission'">
+                      编辑
+                    </span>
                     <span class="table-option-buttons" style="color:#C54322;" 
                     <span class="table-option-buttons" style="color:#C54322;" 
                     @click="deleteRole(scope.row)" v-permission="'system:role:delete'">
                     @click="deleteRole(scope.row)" v-permission="'system:role:delete'">
                       删除
                       删除
@@ -158,7 +179,7 @@ const route = useRoute()
           </div>
           </div>
         </div>
         </div>
         <!-- 添加角色弹窗 -->
         <!-- 添加角色弹窗 -->
-        <el-dialog v-model="role.showDialog" title="添加角色" width="400px" :close-on-click-modal="false"
+        <el-dialog v-model="role.showDialog" :title="role.dialogTitle" width="400px" :close-on-click-modal="false"
         @closed="closeDia">
         @closed="closeDia">
           <el-form ref="addRoleForm" :model="role.addForm">
           <el-form ref="addRoleForm" :model="role.addForm">
             <el-form-item prop="role_name" label="角色名称" :rules="[{required:true,message:'角色名称不能为空',trigger:'blur'}]">
             <el-form-item prop="role_name" label="角色名称" :rules="[{required:true,message:'角色名称不能为空',trigger:'blur'}]">