liqianyi 3 tahun lalu
induk
melakukan
7e6e4344ec

+ 1 - 0
package.json

@@ -35,6 +35,7 @@
     "node-sass": "4.12.0",
     "npm": "^6.9.0",
     "panzoom": "^9.4.1",
+    "qs": "^6.10.5",
     "svg-pathdata": "5.0.5",
     "svg-sprite-loader": "3.7.3",
     "view-design": "^4.5.0-beta.3",

+ 13 - 0
src/api/user.js

@@ -1,4 +1,5 @@
 import request from '@/utils/httpRequest'
+import qs from 'qs'
 
 // 查询用户
 export function getUserList (params) {
@@ -16,3 +17,15 @@ export function getUserInfo (id) {
     method: 'get'
   })
 }
+
+// 选择用户
+export function selectUsers (params) {
+  return request({
+    url: request.adornUrl('/user-service/user/queryWithSelectedItems'),
+    method: 'get',
+    params: params,
+    paramsSerializer: params => {
+      return qs.stringify(params, { indices: false })
+    }
+  })
+}

+ 1 - 1
src/views/modules/common/user-component-all.vue

@@ -81,7 +81,7 @@
             if (this.current > data.data.pages) {
               return
             }
-            // this.noMore = data.data.records.length >= 10
+            this.noMore = data.data.records.length >= 10
             data.data.records.forEach(item => {
               this.options.push({
                 label: item.name + ' (' + item.orgName + ')',

+ 2 - 0
src/views/modules/common/user-component.vue

@@ -82,6 +82,7 @@
             if (this.current > data.data.pages) {
               return
             }
+            this.noMore = data.data.records.length >= 10
             data.data.records.forEach(item => {
               let i = this.options.findIndex(a => a.value === item.userId)
               if (i < 0) {
@@ -103,6 +104,7 @@
       },
       loadMore () {
         this.current ++
+        this.value = null
         this.getList()
       },
       onChange (item) {

+ 87 - 107
src/views/modules/common/user-components.vue

@@ -6,7 +6,6 @@
         ref="select"
         placeholder="请选择"
         clearable
-        filterable
         remote
         multiple
         :disabled="disabled"
@@ -27,121 +26,102 @@
 </template>
 
 <script>
-  export default {
-    name: 'user-components',
-    props: {
-      userIds: {
-        type: Array,
-        default: () => []
-      },
-      disabled: {
-        type: Boolean,
-        default: false
-      }
+import {selectUsers} from '@/api/user'
+export default {
+  name: 'user-components',
+  props: {
+    userIds: {
+      type: Array,
+      default: () => []
     },
-    data () {
-      return {
-        value: [],
-        current: 1,
-        size: 10,
-        name: '',
-        options: [],
-        loading: false,
-        noMore: false
-      }
-    },
-    watch: {
-      userIds (value) {
-        this.value = value
-        // 检查缺失item
-        this.checkItems(value)
-      }
+    disabled: {
+      type: Boolean,
+      default: false
+    }
+  },
+  data () {
+    return {
+      value: [],
+      current: 1,
+      size: 10,
+      name: '',
+      options: [],
+      loading: false,
+      noMore: false
+    }
+  },
+  watch: {
+    userIds (value) {
+      this.value = value
+    }
+  },
+  mounted () {
+    this.init()
+  },
+  methods: {
+    async init () {
+      this.getList()
     },
-    mounted () {
-      this.init()
+    remoteMethod (query) {
+      this.options = []
+      this.current = 1
+      this.name = query
+      this.getList()
     },
-    methods: {
-      async init () {
-        this.getList()
-      },
-      remoteMethod (query) {
-        this.options = []
-        this.current = 1
-        this.name = query
-        this.getList()
-      },
-      getList () {
-        this.$http({
-          url: this.$http.adornUrl(`/user-service/user/list`),
-          method: 'get',
-          params: this.$http.adornParams({
-            'current': this.current,
-            'size': this.size,
-            'name': this.name
-          })
-        }).then(({data}) => {
-          if (data && data.code === '200') {
-            if (this.current > data.data.pages) {
-              return
-            }
-            // this.noMore = data.data.records.length >= 10
-            data.data.records.forEach(item => {
-              this.options.push({
-                label: item.name + ' (' + item.orgName + ')',
-                value: item.userId
-              })
+    getList () {
+      selectUsers({current: this.current, size: this.size, userIds: this.userIds}).then(({data}) => {
+        if (data && data.code === '200') {
+            // 获取已选用户
+          if (data.data.selectedItems) {
+            data.data.selectedItems.forEach(item => {
+              let i = this.options.findIndex(i => i.value === item.userId)
+              if (i === -1) {
+                this.options.push({
+                  label: item.name + ' (' + item.orgName + ')',
+                  value: item.userId
+                })
+              }
             })
-          } else {
-            this.options = []
           }
-        })
-      },
-      handleClick () {
-        this.loadMore()
-      },
-      loadMore () {
-        this.current ++
-        this.getList()
-      },
-      checkItem (code) {
-        if (!code || !this.options) return
-        let i = this.options.findIndex(item => item.value === code)
-        if (i > -1) return
-        // info
-        this.$http({
-          url: this.$http.adornUrl(`/user-service/user/info/${code}`),
-          method: 'get'
-        }).then(({data}) => {
-          if (data && data.code === '200' && data.data) {
+            // 获取分页数据
+          if (!data.data.pageUsers || data.data.pageUsers.pages < this.current) {
+            return
+          }
+          this.noMore = data.data.pageUsers.records.length >= 10
+          data.data.pageUsers.records.forEach(item => {
             this.options.push({
-              label: data.data.name + ' (' + data.data.orgName + ')',
-              value: data.data.userId
+              label: item.name + ' (' + item.orgName + ')',
+              value: item.userId
             })
-          }
-        })
-      },
-      checkItems (ids) {
-        if (!ids) return
-        ids.forEach(id => {
-          this.checkItem(id)
-        })
-      },
-      onChange (item) {
-        this.$emit('change', item)
-      },
-      cancelReadOnly (onOff) {
-        this.$nextTick(() => {
-          if (!onOff) {
-            const input = this.$refs.select.$el.querySelector('.el-input__inner')
-            const timer = setTimeout(() => {
-              input.removeAttribute('readonly')
-              clearTimeout(timer)
-            }, 200)
-          }
-        })
-      }
+          })
+        } else {
+          this.options = []
+        }
+      })
+    },
+    handleClick () {
+      this.loadMore()
+    },
+    loadMore () {
+      this.current ++
+      this.getList()
+    },
+    onChange (item) {
+      this.$emit('change', item)
+    },
+    cancelReadOnly (onOff) {
+      this.$nextTick(() => {
+        if (!onOff) {
+          const input = this.$refs.select.$el.querySelector('.el-input__inner')
+          const timer = setTimeout(() => {
+            input.removeAttribute('readonly')
+            clearTimeout(timer)
+          }, 200)
+        }
+      })
     }
   }
+}
 </script>
 
 <style scoped>

+ 1 - 4
src/views/modules/sale/contract-notice-change-setting.vue

@@ -5,7 +5,7 @@
         <el-form :model="dataForm" :rules="dataRule" ref="dataForm" label-width="auto">
           <el-row class="my-row">
             <el-form-item label="通知接收人" prop="userIds">
-              <user-components v-model="dataForm.userIds" :userIds="dataForm.userIds" @change="userSelectedChanged"/>
+              <user-components v-model="dataForm.userIds" :userIds.sync="dataForm.userIds"/>
             </el-form-item>
           </el-row>
         </el-form>
@@ -80,9 +80,6 @@ export default {
             })
           }
         })
-      },
-      userSelectedChanged (val) {
-        this.dataForm.userIds = val
       }
     }
   }

+ 21 - 0
yarn.lock

@@ -8238,6 +8238,11 @@ object-inspect@^1.10.3:
   resolved "https://registry.nlark.com/object-inspect/download/object-inspect-1.10.3.tgz#c2aa7d2d09f50c99375704f7a0adf24c5782d369"
   integrity sha1-wqp9LQn1DJk3VwT3oK3yTFeC02k=
 
+object-inspect@^1.9.0:
+  version "1.12.2"
+  resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea"
+  integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==
+
 object-is@^1.0.1:
   version "1.1.5"
   resolved "https://registry.npm.taobao.org/object-is/download/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac"
@@ -9449,6 +9454,13 @@ qs@6.7.0:
   resolved "https://registry.npm.taobao.org/qs/download/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc"
   integrity sha1-QdwaAV49WB8WIXdr4xr7KHapsbw=
 
+qs@^6.10.5:
+  version "6.10.5"
+  resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.5.tgz#974715920a80ff6a262264acd2c7e6c2a53282b4"
+  integrity sha512-O5RlPh0VFtR78y79rgcgKK4wbAI0C5zGVLztOIdpWX6ep368q5Hv6XRxDvXuZ9q3C6v+e3n8UfZZJw7IIG27eQ==
+  dependencies:
+    side-channel "^1.0.4"
+
 qs@~6.5.2:
   version "6.5.2"
   resolved "https://registry.npm.taobao.org/qs/download/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
@@ -10362,6 +10374,15 @@ shellwords@^0.1.0, shellwords@^0.1.1:
   resolved "https://registry.npm.taobao.org/shellwords/download/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b"
   integrity sha1-1rkYHBpI05cyTISHHvvPxz/AZUs=
 
+side-channel@^1.0.4:
+  version "1.0.4"
+  resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf"
+  integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==
+  dependencies:
+    call-bind "^1.0.0"
+    get-intrinsic "^1.0.2"
+    object-inspect "^1.9.0"
+
 sigmund@^1.0.1, sigmund@~1.0.0:
   version "1.0.1"
   resolved "https://registry.npm.taobao.org/sigmund/download/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590"