浏览代码

新增编辑用户

yujinwen 3 月之前
父节点
当前提交
011bc6b8d6

+ 69 - 0
src/components/SelectBusiness.vue

@@ -0,0 +1,69 @@
+<script setup>
+import {businessCustomInterence} from '@/api/modules/businessCustom'
+
+const value=defineModel('value')
+
+const props=defineProps({
+  placeholder:{
+    type:String,
+    default:'请输入搜索'
+  },
+  multiple:{
+    type:Boolean,
+    default:false,
+  },
+  filterable:{
+    type:Boolean,
+    default:false,
+  },
+  clearable:{
+    type:Boolean,
+    default:false,
+  },
+  disabled:{
+    type:Boolean,
+    default:false,
+  }
+})
+
+const options=ref([])
+const loading=ref(false)
+
+async function remoteMethod(search){
+  loading.value=true
+  const res=await businessCustomInterence.bussinessListAll({
+    Keyword:search
+  })
+  loading.value=false
+  if(res.Ret!=200) return
+  options.value=res.Data.List||[]
+}
+
+// 默认获取一次
+remoteMethod('')
+
+</script>
+
+<template>
+  <t-select
+    v-model="value"
+    :multiple="props.multiple"
+    :filterable="props.filterable"
+    :placeholder="props.placeholder"
+    :clearable="props.clearable"
+    :loading="loading"
+    :disabled="props.disabled"
+    @search="remoteMethod"
+  >
+    <t-option 
+      v-for="item in options" 
+      :key="item.BusinessCode" 
+      :value="item.BusinessCode" 
+      :label="item.BusinessName"
+    />
+  </t-select>
+</template>
+
+<style lang="scss" scoped>
+
+</style>

+ 1 - 1
src/plugin/dialog.jsx

@@ -5,7 +5,7 @@ import warningIcon from '@/assets/icons/warning.png'
 export function $confirmDialog(props){
   const headerHtml=()=><div style="display:flex;align-items:center">
     <img src={warningIcon} style="width:20px" />
-    <span>{props.header}</span>
+    <span>{props.header||'提示'}</span>
   </div>
   return new Promise((resolve,reject)=>{
     const confirmDia = DialogPlugin.confirm({

+ 17 - 3
src/views/customer/user/Index.vue

@@ -87,6 +87,20 @@ function handleMoveUser(data){
   showMoveUser.value=true
 }
 
+// 删除用户
+async function handleDelUser(item){
+  await $confirmDialog({
+    body:'删除后该用户将不能访问ETA社区,是否确认删除?',
+    confirmBtn:{default:'确认',theme:'danger'},
+  })
+  const res=await apiCustomerUser.deleteUser({
+    UserId:item.UserId
+  })
+  if(res.Ret!=200) return
+  MessagePlugin.success('删除成功')
+  handleRefreshList()
+}
+
 
 </script>
 
@@ -182,15 +196,15 @@ function handleMoveUser(data){
           <t-button size="small" variant="text" theme="danger" v-if="row.Enabled">禁用</t-button>
           <t-button size="small" variant="text" theme="primary" v-else>启用</t-button>
           <t-button size="small" variant="text" theme="primary" @click="handleMoveUser(row)">移动</t-button>
-          <t-button size="small" variant="text" theme="danger">删除</t-button>
+          <t-button size="small" variant="text" theme="danger" @click="handleDelUser(row)">删除</t-button>
         </template>
       </t-table>
     </div>
   </div>
   <!-- 新增\编辑用户 -->
-  <EditUser v-model:show="showEditUser" :data="editUserData"/>
+  <EditUser v-model:show="showEditUser" :data="editUserData" @change="handleRefreshList"/>
   <!-- 移动用户 -->
-  <MoveUser v-model:show="showMoveUser" :data="editUserData"/>
+  <MoveUser v-model:show="showMoveUser" :data="editUserData" @change="handleRefreshList"/>
 </template>
 
 <style lang="scss" scoped>

+ 25 - 2
src/views/customer/user/components/EditUser.vue

@@ -1,9 +1,11 @@
 <script setup>
 import { useTemplateRef, watch } from "vue";
 import {apiSystemCommon} from '@/api/system'
+import {apiCustomerUser} from '@/api/customer'
 
 
 const show = defineModel('show', { type: Boolean, default: false })
+const emits=defineEmits(['change'])
 const props=defineProps({
   data:{
     type:[null,Object],
@@ -50,7 +52,23 @@ const formData=reactive({
 async function handleSave(){
   const validRes=await formIns.value.validate()
   if(validRes!==true) return
-
+  const params={
+    RealName:formData.name,
+    CountryCode:formData.telCode,
+    Mobile:formData.tel,
+    Position:formData.post,
+    BusinessCode:formData.customer,
+    DepartmentName:formData.depart,
+    PositionStatus:formData.jobStatus
+  }
+  const res=props.data?await apiCustomerUser.editUser({
+    ...params,
+    UserId:props.data.UserId
+  }):await apiCustomerUser.addUser(params)
+  if(res.Ret!=200) return
+  show.value=false
+  MessagePlugin.success(props.data?'保存成功':'新增成功')
+  emits('change')
 }
 
 
@@ -112,7 +130,12 @@ watch(
         <t-input v-model="formData.tel" placeholder="请输入手机号"></t-input>
       </t-form-item>
       <t-form-item label="所属客户" name="customer">
-        
+        <select-business 
+          placeholder="输入社会信用码或客户名称"
+          filterable
+          :disabled="props.data?true:false"
+          v-model="formData.customer"
+        />
       </t-form-item>
       <t-form-item label="岗位" name="post">
         <t-input v-model="formData.post" placeholder="请输入岗位"></t-input>

+ 2 - 2
vite.config.js

@@ -92,9 +92,9 @@ export default defineConfig(({ mode }) => {
       port:8900,
       proxy:{
         '/v1': {
-          // target: 'http://192.168.20.10:8912/v1',
+          target: 'http://192.168.20.10:8912/v1',
           // target: 'http://8.136.199.33:8900/v1',
-          target: 'http://8.136.199.33:7777/adminapi/',
+          // target: 'http://8.136.199.33:7777/adminapi/',
           changeOrigin: true,
           rewrite: (path) => path.replace(/^\/v1/, ''),
         }