Bladeren bron

2023-3-30

codeMan 2 jaren geleden
bovenliggende
commit
3b1f1f9c3a

+ 2 - 1
src/HDrpManagement/orderManage/details/index.vue

@@ -15,7 +15,8 @@
         @pageChange="pageChange"
         @onEditSuccess="queryMainData($route.query.id)">
         <div slot="customOperation" class="inline-16" v-if="Object.keys(mainData).length > 0">
-          <Edit class="inline-16" v-if="tool.checkAuth($route.name,'update') && (mainData.status == '新建')" :data="mainData" @onSuccess="queryMainData();$refs.prod && $refs.prod.listData()" />
+          <!-- <Edit class="inline-16" v-if="tool.checkAuth($route.name,'update') && (mainData.status == '新建')" :data="mainData" @onSuccess="queryMainData();$refs.prod && $refs.prod.listData()" /> -->
+          <Edit class="inline-16" :data="mainData" @onSuccess="queryMainData();$refs.prod && $refs.prod.listData()" />
           <EditRemark :data="mainData" @onSuccess="queryMainData"></EditRemark>
           <changeSaler class="inline-16" ref="saler" @selectRow="salerChange">
             <el-button v-if="tool.checkAuth($route.name,'changeSaler')" type="primary" slot="input" size="mini" @click="$refs.saler.visible=true;$refs.saler.listData()">变更业务员</el-button>

+ 12 - 6
src/HDrpManagement/orderManage/modules/edit.vue

@@ -166,17 +166,17 @@
                     </template>
                   </el-table-column>
                 </el-table>
-                <!-- <div class="container" v-if="addresstotal" style="text-align:right">
+                <div class="container" style="text-align:right">
                   <el-pagination
                     background
                     small
                     :current-page="enterpriseParam.content.pageNumber"
-                    @current-change="addresPageChange"
+                    @current-change="enterprisePageChange"
                     :page-size="enterpriseParam.content.pageSize"
                     layout="total,prev, pager, next"
-                    :total="addresstotal">
+                    :total="enterpriseTotal">
                   </el-pagination>
-                </div> -->
+                </div>
                 <el-button slot="reference" type="text" size="mini">选择企业</el-button>
               </el-popover>
             </div>
@@ -415,14 +415,15 @@ export default {
           "id": 20230320134702,
           "content": {
               "pageNumber": 1,
-              "pageSize": 20,
+              "pageSize": 15,
               "sys_enterpriseid": '',
               "where": {
                   "condition": ""
               }
           },
       },
-      addresstotal:0
+      addresstotal:0,
+      enterpriseTotal:0
     }
   },
   mounted () {
@@ -432,6 +433,10 @@ export default {
     this.queryBasicInfo()
   },
   methods:{
+    enterprisePageChange (n) {
+      this.enterpriseParam.content.pageNumber = n
+      this.getEnterpriseList()
+    },
     addresPageChange (n) {
       this.addressparam.content.pageNumber = n
       this.receiveAddress()
@@ -489,6 +494,7 @@ export default {
         this.enterpriseParam.content.sys_enterpriseid = this.data.sys_enterpriseid
         const res = await this.$api.requested(this.enterpriseParam)
         this.enterpriseList = res.data
+        this.enterpriseTotal = res.total
         console.log(this.enterpriseList,'企业列表');
     },
     // 收货信息:合作企业联系人

+ 118 - 12
src/HManagement/accountManage/modules/add.vue

@@ -13,18 +13,37 @@
         <el-row>
           <el-form :model="form" :rules="rules" ref="form"  size="mini" label-position="right">
             <el-col :span="24">
-              <el-form-item label="账号" label-width="80px">
-                <el-input v-model="form.accountno" autocomplete="off" placeholder="编辑账号"></el-input>
+              <el-form-item label="手机号码" label-width="80px" prop="phonenumber">
+                <el-popover
+                  placement="bottom"
+                  trigger="manual"
+                  v-model="visible1"
+                  width="500">
+                  <searchInput ref="searchInput" :param="pepoleParam" :radio="true" @onSelect="setLeader" @onCancel="visible1 = false"></searchInput>
+                  <el-input type="text" v-model.number="form.phonenumber" size="small" placeholder="请输入手机号" slot="reference" @input="phoneChange"></el-input>
+                </el-popover>
               </el-form-item>
             </el-col>
             <el-col :span="24">
-              <el-form-item label="手机号码" label-width="80px" prop="phonenumber">
-                <el-input v-model="form.phonenumber" autocomplete="off" placeholder="输入手机号码"></el-input>
+              <el-form-item label="账号" label-width="80px" prop="accountno">
+                <el-input v-model="form.accountno" :disabled="!!isSelectPhone" autocomplete="off" placeholder="编辑账号"></el-input>
               </el-form-item>
             </el-col>
             <el-col :span="24">
               <el-form-item label="用户名称" label-width="80px" prop="name">
-                <el-input  v-model="form.name" autocomplete="off" placeholder="输入用户名称"></el-input>
+                <el-input  v-model="form.name" :disabled="!!isSelectPhone" autocomplete="off" placeholder="输入用户名称"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24" v-if="isSelectPhone">
+              <el-form-item label="用户类型" label-width="80px" prop="usertype">
+                <el-select v-model="form.usertype" style="width:100%" placeholder="请选择">
+                  <el-option
+                    v-for="item in selectType"
+                    :label="item.remarks"
+                    :value="item.value"
+                    :key="item.index"
+                  ></el-option>
+                </el-select>
               </el-form-item>
             </el-col>
             <el-col :span="24">
@@ -54,15 +73,21 @@
 </template>
 
 <script>
-
+import searchInput from '@/template/searchInput/index.vue'
 export default {
+  components:{searchInput},
   data () {
     return {
       drawer:false,
+      visible1:false,
+      timer:null,
+      isDisabled:false,
+      isSelectPhone:'',
+      selectType:[],
       rules:{
         phonenumber: [
-          { required: true, message: '请输入手机号码', trigger: 'blur' },
-          { pattern:/^1[3-9]\d{9}$/, message: '请输入正确手机号码',trigger: 'blur' }
+          { required: true, message: '请输入手机号码', trigger: 'change' },
+          { pattern:/^1[3-9]\d{9}$/, message: '请输入正确手机号码',trigger: 'change' }
         ],
          name: [
           { required: true, message: '请输入用户名称', trigger: 'blur' },
@@ -70,6 +95,9 @@ export default {
         roleids: [
           { required: true, message: '请选择授权角色', trigger: 'change' }
         ],
+        usertype: [
+          { required: true, message: '请选择用户类型', trigger: 'change' }
+        ],
       },
       form:{
         "userid": 0,
@@ -78,17 +106,53 @@ export default {
         "status": 1,
         "remarks":"",
         "roleids":[],
-        "accountno":''
+        "accountno":'',
       },
-      options:[]
+      options:[],
+      pepoleParam: {
+        "classname": "webmanage.users.users",
+        "method": "query_notinmysiteuserList",
+        "content": {
+            "pageNumber": 1,
+            "pageSize": 99999,
+            "where": {
+                "condition": ""
+            }
+        }
+      }
+    }
+  },
+  watch: {
+    drawer (val) {
+      if (!val) {
+        this.$refs.form.resetFields()
+        this.isSelectPhone = ''
+      }
     }
   },
   methods:{
     onShow () {
       this.drawer = true
       this.rolelist()
+      this.accountTypeList()
+    },
+    async accountTypeList() {
+      let param = {
+        classname: "sysmanage.develop.optiontype.optiontype",
+        method: "optiontypeselect",
+        content: {
+          pageNumber: 1,
+          pageSize: 20,
+          typename: "usertype",
+          parameter: {},
+        },
+      };
+      const res = await this.$api.requested(param);
+      res.data.pop()
+      this.selectType = res.data;
+      console.log(this.selectType);
+      
     },
-    
     async rolelist () {
       let param = {
         "classname": "sysmanage.develop.optiontype.optiontype",
@@ -104,11 +168,53 @@ export default {
       const res = await this.$api.requested(param)
       this.options = res.data
     },
+    phoneChange (e) {
+      if (e.length < 7) return this.visible1 = false
 
+      if (this.isSelectPhone && this.isSelectPhone != e) {
+        this.clearData()
+      }
+      
+      this.visible1 = false
+      if (this.timer) clearTimeout(this.timer)
+      this.timer = setTimeout(() => {
+        this.pepoleParam.content.where.condition = e
+        this.$refs.searchInput.listData(() => {
+          this.visible1 = true
+        })
+      },500)
+    },
+    setLeader (data) {
+      console.log(data);
+      this.visible1 = false
+      this.form.userid = data.userid
+      this.form.name = data.name
+      this.form.phonenumber = data.phonenumber
+      this.form.accountno = data.accountno
+      this.isSelectPhone = data.phonenumber
+    },
+    clearData () {
+      this.form.userid = ''
+      this.form.name = ''
+      this.form.accountno = ''
+      this.isSelectPhone = ''
+      this.form.usertype = ''
+      this.form.roleids = []
+    },
     onSubmit () {
       this.$refs['form'].validate((valid) => {
         if (!valid) return false
-        this.$api.requested({
+        if (!this.isSelectPhone) delete this.form.usertype
+        this.$api.requested(this.isSelectPhone ? {
+            "accesstoken": "be50a88845d9eee3fe75a924642cff22",
+            "classname": "webmanage.users.users",
+            "method": "addUserSite",
+            "content": {
+                "userid": this.form.userid,
+                "roleids":this.form.roleids,
+                "usertype":this.form.usertype
+            }
+        } : {
           "classname": "webmanage.users.users",
           "method": "insertormodify_user",
           "content": this.form

+ 11 - 5
src/SDrpManagement/agentOrder/modules/edit.vue

@@ -166,17 +166,17 @@
                     </template>
                   </el-table-column>
                 </el-table>
-                <!-- <div class="container" v-if="addresstotal" style="text-align:right">
+                <div class="container" style="text-align:right">
                   <el-pagination
                     background
                     small
                     :current-page="enterpriseParam.content.pageNumber"
-                    @current-change="addresPageChange"
+                    @current-change="enterprisePageChange"
                     :page-size="enterpriseParam.content.pageSize"
                     layout="total,prev, pager, next"
-                    :total="addresstotal">
+                    :total="enterpriseTotal">
                   </el-pagination>
-                </div> -->
+                </div>
                 <el-button slot="reference" type="text" size="mini">选择企业</el-button>
               </el-popover>
             </div>
@@ -390,19 +390,24 @@ export default {
         "id": 20230320134702,
         "content": {
             "pageNumber": 1,
-            "pageSize": 20,
+            "pageSize": 15,
             "sys_enterpriseid": '',
             "where": {
                 "condition": ""
             }
         },
       },
+      enterpriseTotal:0
     }
   },
   created () {
     this.queryBasicInfo()
   },
   methods:{
+    enterprisePageChange (n) {
+      this.enterpriseParam.content.pageNumber = n
+      this.getEnterpriseList()
+    },
     addresPageChange (n) {
       this.addressparam.content.pageNumber = n
       this.receiveAddress()
@@ -442,6 +447,7 @@ export default {
         this.enterpriseParam.content.sys_enterpriseid = this.data.sys_enterpriseid
         const res = await this.$api.requested(this.enterpriseParam)
         this.enterpriseList = res.data
+        this.enterpriseTotal = res.total
         console.log(this.enterpriseList,'企业列表');
     },
     // 收货信息:合作企业联系人

+ 2 - 1
src/SDrpManagement/agentOrder/modules/productlist.vue

@@ -94,7 +94,8 @@
         <p v-else>{{scope.column.data[scope.column.columnname]}}</p>
       </template>
       <template v-slot:opreation="scope">
-        <el-button v-if="data.status == '新建' && data.type != '特殊订单'" type="text" size="mini" @click="deleteOrderProduct(scope.data)">删 除</el-button>
+        <!-- <el-button v-if="data.status == '新建' && data.type != '特殊订单'" type="text" size="mini" @click="deleteOrderProduct(scope.data)">删 除</el-button> -->
+        <el-button v-if="data.status == '新建'" type="text" size="mini" @click="deleteOrderProduct(scope.data)">删 除</el-button>
       </template>
     </Table>
     <!-- <el-table

+ 8 - 6
src/SDrpManagement/salerOrder/modules/edit.vue

@@ -157,17 +157,17 @@
                     </template>
                   </el-table-column>
                 </el-table>
-                <!-- <div class="container" v-if="addresstotal" style="text-align:right">
+                <div class="container" style="text-align:right">
                   <el-pagination
                     background
                     small
                     :current-page="enterpriseParam.content.pageNumber"
-                    @current-change="addresPageChange"
+                    @current-change="enterprisePageChange"
                     :page-size="enterpriseParam.content.pageSize"
                     layout="total,prev, pager, next"
-                    :total="addresstotal">
+                    :total="enterpriseTotal">
                   </el-pagination>
-                </div> -->
+                </div>
                 <el-button slot="reference" type="text" size="mini">选择企业</el-button>
               </el-popover>
             </div>
@@ -381,14 +381,15 @@ export default {
         "id": 20230320134702,
         "content": {
             "pageNumber": 1,
-            "pageSize": 20,
+            "pageSize": 15,
             "sys_enterpriseid": '',
             "where": {
                 "condition": ""
             }
         },
       },
-      addresstotal:0
+      addresstotal:0,
+      enterpriseTotal:0
     }
   },
   created () {
@@ -450,6 +451,7 @@ export default {
         this.enterpriseParam.content.sys_enterpriseid = this.data.sys_enterpriseid
         const res = await this.$api.requested(this.enterpriseParam)
         this.enterpriseList = res.data
+        this.enterpriseTotal = res.total
         console.log(this.enterpriseList,'企业列表');
     },
     // 收货信息:合作企业联系人

+ 2 - 1
src/SDrpManagement/salerOrder/modules/productlist.vue

@@ -95,7 +95,8 @@
         <p v-else>{{scope.column.data[scope.column.columnname]}}</p>
       </template>
       <template v-slot:opreation="scope">
-        <el-button v-if="data.status == '新建' && data.type != '特殊订单'" type="text" size="mini" @click="deleteOrderProduct(scope.data)">删 除</el-button>
+        <el-button v-if="data.status == '新建'" type="text" size="mini" @click="deleteOrderProduct(scope.data)">删 除</el-button>
+        <!-- <el-button v-if="data.status == '新建' && data.type != '特殊订单'" type="text" size="mini" @click="deleteOrderProduct(scope.data)">删 除</el-button> -->
       </template>
     </Table>
     <!-- <el-table

+ 8 - 3
src/components/normal-basic-layout/details/index.vue

@@ -1,6 +1,6 @@
 <template>
   <div v-if="refreshPage" style="min-width:1200px">
-    <div style="margin:10px 10px 0 10px;border-radius:5px;" class="container normal-panel sticky" @click="closeTags">
+    <div style="margin:10px 10px 0 10px;border-radius:5px;position:relative" class="container normal-panel sticky" @click="closeTags">
       <div class="flex-align-start flex-between normal-margin" style="flex-wrap:nowrap">
         <div>
           <p class="main_title mt-10">{{titleText?titleText:'##'}}</p>
@@ -28,7 +28,7 @@
       <div>
         <slot name="d_head"></slot>
       </div>
-      <div>
+      <div v-show="isTop">
         <el-descriptions :column="5" size="mini">
           <el-descriptions-item label-class-name="my-label-layout" content-class-name="my-content" v-for="item in mainAData" :key="item.index" :label="item.label"><span :style="item.style?item.style():''">{{item.value !== ''?item.value:'--'}}</span></el-descriptions-item>
         </el-descriptions>
@@ -37,9 +37,13 @@
             <span :style="item.style?item.style():''">{{item.value !== ''?item.value:'--'}}</span>
           </el-descriptions-item>
         </el-descriptions>
-        
         <slot name="headerBottom"></slot>
       </div>
+
+      <span @click="isTop=!isTop" style="color:#3874f6;position:absolute;right:10px;bottom:10px;cursor: pointer;">
+        <i :class="isTop ? 'el-icon-arrow-up' : 'el-icon-arrow-down'"></i>
+        {{ isTop ? '收起' : '展开' }}
+      </span>
     </div>
     <div style="box-sizing: border-box;padding:10px">
       <el-row class="flex-align-stretch no-wrap" :gutter="activeApp.isdatateam?10:activeApp.isdatafollowup?10:0">
@@ -86,6 +90,7 @@ export default {
   props:['titleText','mainAreaData','turnPageId','delApiId','idname','ownertable','formPath','oldFormPath','editData','tags','tabs','statusCheck','pageChange','justsaler'],
   data () {
     return {
+      isTop:true,
       routerName:'',
       rowindex:0,
       total:0,

+ 1 - 1
src/main.js

@@ -39,7 +39,7 @@ Vue.prototype.basicData = basicData
 Vue.prototype.fileType = FileType
 
 axios.defaults.timeout = 60 * 1000
-axios.defaults.baseURL = '/apis'
+axios.defaults.baseURL = tool.getBaseUrl()
 Vue.prototype.$axios = axios
 
 

+ 171 - 0
src/template/searchInput/index.vue

@@ -0,0 +1,171 @@
+<template>
+  <div>
+    <div class="flex-align-stretch menber__panel">
+      <div class="flex-align-center menber__item flex-between" :class="showSelelctIcon(item)?'active_menber__item':''" style="flex:1 0 auto" v-for="item in tableData" :key="item.index" @click="clickMenber(item)">
+        <div  class="flex-align-center">
+          <div class="avatar inline-16">
+            <img class="avatar__image" v-if="item.headpic" :src="item.headpic" alt="">
+            <p v-else>{{item.name.substr(0, 1)}}</p>
+          </div>
+          <div @click="onSelect(item)">
+            <p>{{ item.name }}</p>
+            <small style="color:#999999ad;margin-top:10px">账号:{{ item.accountno?item.accountno:"未知账户" }}&emsp;手机号:{{ item.phonenumber?item.phonenumber:"未知" }}</small>
+          </div>
+        </div>
+        <i class="el-icon-check iconCheck" v-if="showSelelctIcon(item)"></i>
+      </div>
+    </div>
+    <el-empty v-if="tableData.length === 0" description="暂无数据" :image-size="40"></el-empty>
+  </div>
+  </template>
+  
+  <script>
+  export default {
+    props:['param','radio','checked','implement'],
+    data () {
+      return {
+        tableData: [],
+        total:0,
+        currentPage:0,
+        selected:[]
+      }
+    },
+    components:{
+    },
+    methods:{
+      async listData (callback) {
+        const res = await this.$api.requested(this.param)
+        if (!this.radio) {
+          res.data = res.data.filter(e=>{
+            if (e.isteamleader !== 1 && e.userid !== this.implement)
+              return e
+          })
+        }
+        this.tableData = res.data
+        console.log(this.implement)
+        if (this.implement !== undefined && this.implement !== ''){
+          this.total = res.total -1
+        }else {
+          this.total = res.total
+        }
+        callback && this.tableData.length && callback()
+        this.currentPage = res.pageNumber
+      },
+      onSelect (data) {
+        console.log(data,'111');
+        this.$emit('onSelect',data)
+      },
+      clickMenber (item) {
+        if (this.radio) {
+          this.selected = []
+        }
+        let _isSame = this.selected.some(m=>item.userid === m.userid)
+        if (!_isSame) {
+          this.selected.push(item)
+        } else {
+          this.selected = this.selected.filter(e=>{
+            return e.userid !== item.userid
+          })
+        }
+      },
+      showSelelctIcon (item) {
+        let _isSame = this.selected.some(m=>item.userid === m.userid)
+        return _isSame
+      },
+      closeTag (item) {
+        this.selected = this.selected.filter(e=>{
+          return e.userid !== item.userid
+        })
+      },
+      onCancel () {
+        this.$emit('onCancel')
+      }
+    },
+    mounted () {
+      this.listData()
+    }
+  }
+  
+  </script>
+  <style>
+  </style>
+  <style scoped>
+  .search_input{
+    display: flex;
+    align-items: center;
+    flex-wrap: wrap;
+    padding: 8px 8px 0 8px;
+    border: 1px solid #f1f2f3;
+    border-radius: 5px;
+  }
+  .input_panel{
+    flex: 1;
+    min-width: 100px;
+    border:none;
+    outline: none;
+    margin-bottom: 8px;
+    color:#666
+  }
+  .menber__item{
+    width: calc(100% - 20px);
+    padding:5px 10px;
+    border-radius: 5px;
+    cursor: pointer;
+    color:#666;
+    margin-bottom: 5px;
+    transition: .2s linear;
+  }
+  .menber__item:hover{
+    background: #b5e4ff6e;
+  }
+  .active_menber__item{
+    background: #b5e4ff6e;
+  }
+  .menber__panel {
+    max-height: 300px;
+    overflow-y:scroll ;
+  }
+  .avatar{
+    position: relative;
+    height:30px;
+    width: 30px;
+    border-radius: 100%;
+    text-align: center;
+    line-height: 30px;
+    color:#fff;
+    font-weight: 500;
+    background: #3874F6;
+    cursor: pointer;
+    overflow: hidden;
+  }
+  .avatar__image{
+    height: 100%;
+    width: 100%;
+  }
+  .avatar-mini{
+    position: relative;
+    height:20px;
+    width: 20px;
+    line-height: 20px;
+    text-align: center;
+    margin-right: 5px;
+    color:#fff;
+    font-size: 12px;
+    font-weight: 500;
+    border-radius: 100%;
+    background: #3874F6;
+  }
+  .iconCheck{
+    font-weight: bold;
+    color:#3874F6
+  }
+  .tag{
+    font-size: 12px;
+    color:#666;
+    padding: 5px;
+    border-radius: 3px;
+    margin:0 5px 8px 0;
+    background: #b5e4ff6e;
+    cursor: pointer;
+  }
+  </style>