浏览代码

Merge branch 'deploy' of http://git.chelingzhu.com/jianguan-web/jg-ocs-html into deploy

lilei 4 年之前
父节点
当前提交
22785aa09e

+ 0 - 24
src/api/allocLinkageOut.js

@@ -1,24 +0,0 @@
-import { axios } from '@/utils/request'
-
-//  连锁调拨调出列表  分页
-export const allocLinkageOutList = (params) => {
-  const url = `/allocLinkageOut/queryPage/${params.pageNo}/${params.pageSize}`
-  delete params.pageNo
-  delete params.pageSize
-  return axios({
-    url: url,
-    data: params,
-    method: 'post'
-  })
-}
-//  连锁调拨调出详情列表  分页
-export const allocLinkageOutDetailList = (params) => {
-  const url = `/allocLinkageOut/queryDetailPage/${params.pageNo}/${params.pageSize}`
-  delete params.pageNo
-  delete params.pageSize
-  return axios({
-    url: url,
-    data: params,
-    method: 'post'
-  })
-}

+ 0 - 24
src/api/allocWarehouse.js

@@ -1,24 +0,0 @@
-import { axios } from '@/utils/request'
-
-//  仓库调拨列表  分页
-export const allocWarehouseList = (params) => {
-  const url = `/allocWarehouse/queryPage/${params.pageNo}/${params.pageSize}`
-  delete params.pageNo
-  delete params.pageSize
-  return axios({
-    url: url,
-    data: params,
-    method: 'post'
-  })
-}
-//  仓库调拨详情列表  分页
-export const allocWarehouseDetailList = (params) => {
-  const url = `/allocWarehouse/queryDetailPage/${params.pageNo}/${params.pageSize}`
-  delete params.pageNo
-  delete params.pageSize
-  return axios({
-    url: url,
-    data: params,
-    method: 'post'
-  })
-}

+ 58 - 1
src/api/dealer.js

@@ -60,4 +60,61 @@ export const updateCooperate = (params) => {
     data: params,
     method: 'post'
   })
-}
+}
+
+//  经销商账号  列表  有分页
+export const dealerUserList = (params) => {
+  const url = `/dealer/user/queryLike/${params.pageNo}/${params.pageSize}`
+  delete params.pageNo
+  delete params.pageSize
+  return axios({
+    url: url,
+    data: params,
+    method: 'post'
+  })
+}
+// 经销商账号  详情
+export const dealerUserDetail = (params) => {
+  return axios({
+    url: `/dealer/user/findById/${params.id}`,
+    method: 'get'
+  })
+}
+// 经销商账号  删除
+export const dealerUserDel = (params) => {
+  return axios({
+    url: `/dealer/user/delete/${params.id}`,
+    method: 'get'
+  })
+}
+// 经销商账号  启禁用
+export const dealerUserEnable = (params) => {
+  return axios({
+    url: `/dealer/user/enable/${params.id}/${params.flag}`,
+    method: 'get'
+  })
+}
+// 经销商账号  修改密码
+export const dealerUserChangeP = (params) => {
+  return axios({
+    url: `/dealer/user/changePWD`,
+    data: params,
+    method: 'post'
+  })
+}
+// 经销商账号  重置密码
+export const dealerUserResetP = (params) => {
+  return axios({
+    url: `/dealer/user/resetPwd`,
+    data: params,
+    method: 'post'
+  })
+}
+// 经销商账号  保存
+export const dealerUserSave = (params) => {
+  return axios({
+    url: `/dealer/user/save`,
+    data: params,
+    method: 'post'
+  })
+}

+ 0 - 68
src/api/power-mduser.js

@@ -1,68 +0,0 @@
-import { axios } from '@/utils/request'
-
-// 重置密码
-export const resetPSD = params => {
-  return axios({
-    url: '/mduser/resetPwd',
-    data: params,
-    method: 'POST'
-  })
-}
-
-// 获取列表数据
-export const getPowerUserList = params => {
-  const url = `/mduser/queryLike/${params.pageNo}/${params.pageSize}`
-  delete params.pageNo
-  delete params.pageSize
-  return axios({
-    url: url,
-    data: params,
-    method: 'POST'
-  })
-}
-
-// 获取所有用户
-export const getUserAllList = params => {
-  const url = `/mduser/findAll`
-  return axios({
-    url: url,
-    data: params,
-    method: 'POST'
-  })
-}
-
-// 改变权限状态接口
-export const updateEnableStatus = params => {
-  return axios({
-    url: `/mduser/enable/${params.id}/${params.flag}`,
-    data: {},
-    method: 'get'
-  })
-}
-
-// 删除用户接口
-export const delectUserPower = params => {
-  return axios({
-    url: `/mduser/delete/${params.id}`,
-    data: {},
-    method: 'get'
-  })
-}
-
-// 新增/编辑保存接口
-export const saveUserPower = params => {
-  return axios({
-    url: '/mduser/save',
-    data: params,
-    method: 'POST'
-  })
-}
-
-// 获取角色列表接口
-export const getRoleList = params => {
-  return axios({
-    url: '/mdrole/findAll',
-    data: params,
-    method: 'POST'
-  })
-}

+ 10 - 2
src/api/power-user.js

@@ -11,7 +11,7 @@ export const resetPSD = params => {
 
 // 获取列表数据
 export const getPowerUserList = params => {
-  const url = `/yyuser/queryLike/${params.pageNo}/${params.pageSize}`
+  const url = `/ocsuser/queryLikePage/${params.pageNo}/${params.pageSize}`
   delete params.pageNo
   delete params.pageSize
   return axios({
@@ -55,4 +55,12 @@ export const getRoleList = params => {
     data: params,
     method: 'POST'
   })
-}
+}
+// 用户管理   分区设置
+export const userSubareaSave = params => {
+  return axios({
+    url: '/userSubarea/save',
+    data: params,
+    method: 'post'
+  })
+}

+ 11 - 0
src/api/product.js

@@ -11,6 +11,17 @@ export const productList = (params) => {
     method: 'post'
   })
 }
+//  产品 列表 已定过价的 分页
+export const productPricedList = (params) => {
+  const url = `/product/queryPricedPage/${params.pageNo}/${params.pageSize}`
+  delete params.pageNo
+  delete params.pageSize
+  return axios({
+    url: url,
+    data: params,
+    method: 'post'
+  })
+}
 //  产品 保存
 export const productSave = (params) => {
   return axios({

+ 10 - 0
src/api/stock.js

@@ -90,3 +90,13 @@ export const stockWarnSaveBatch = (params) => {
     method: 'post'
   })
 }
+
+//  根据产品sn查询库存
+export const stockByProductSn = (params) => {
+  const url = `/stock/queryStockByProductSn/${params.sn}`
+  return axios({
+    url: url,
+    data: params,
+    method: 'post'
+  })
+}

+ 0 - 101
src/api/storeCallOut.js

@@ -1,101 +0,0 @@
-import { axios } from '@/utils/request'
-
-//  店内调出 列表  分页
-export const storeCallOutList = (params) => {
-  const url = `/storeCallOut/queryPage/${params.pageNo}/${params.pageSize}`
-  delete params.pageNo
-  delete params.pageSize
-  return axios({
-    url: url,
-    data: params,
-    method: 'post'
-  })
-}
-//  店内调出 新增
-export const storeCallOutSave = (params) => {
-  return axios({
-    url: '/storeCallOut/save',
-    data: params,
-    method: 'post'
-  })
-}
-//  店内调出 审核
-export const storeCallOutAudit = (params) => {
-  return axios({
-    url: '/storeCallOut/audit',
-    data: params,
-    method: 'post'
-  })
-}
-//  店内调出 出库
-export const storeCallOutOut = (params) => {
-  return axios({
-    url: '/storeCallOut/out',
-    data: params,
-    method: 'post'
-  })
-}
-//  店内调出 删除
-export const storeCallOutDel = (params) => {
-  return axios({
-    url: `/storeCallOut/delete/${params.id}`,
-    method: 'get'
-  })
-}
-//  店内调出 详情
-export const storeCallOutDetail = (params) => {
-  return axios({
-    url: `/storeCallOut/findById/${params.id}`,
-    method: 'get'
-  })
-}
-//  店内调出 详情  根据sn查
-export const storeCallOutDetailSn = (params) => {
-  return axios({
-    url: `/storeCallOut/findBySn/${params.sn}`,
-    method: 'get'
-  })
-}
-//  店内调出  提交
-export const storeCallOutSubmit = (params) => {
-  return axios({
-    url: '/storeCallOut/submit',
-    data: params,
-    method: 'post'
-  })
-}
-//  店内调出详情 列表  分页
-export const storeCallOutDetailList = (params) => {
-  const url = `/storeCallOut/detail/queryPage/${params.pageNo}/${params.pageSize}`
-  delete params.pageNo
-  delete params.pageSize
-  return axios({
-    url: url,
-    data: params,
-    method: 'post'
-  })
-}
-//  店内调出详情 合计
-export const storeCallOutDetailCount = (params) => {
-  return axios({
-    url: '/storeCallOut/detail/queryCount',
-    data: params,
-    method: 'post'
-  })
-}
-//  店内调出详情 保存
-export const storeCallOutDetailSave = (params) => {
-  return axios({
-    url: '/storeCallOut/detail/save',
-    data: params,
-    method: 'post'
-  })
-}
-//  店内调出详情 删除
-export const storeCallOutDetailDel = (params) => {
-  return axios({
-    url: '/storeCallOut/detail/delete',
-    data: params,
-    method: 'post'
-  })
-}

+ 0 - 39
src/api/storeCallOutType.js

@@ -1,39 +0,0 @@
-import { axios } from '@/utils/request'
-
-//  店内调出类型 列表  分页
-export const storeCallOutTypeList = (params) => {
-  const url = `/storeCallOutType/queryPage/${params.pageNo}/${params.pageSize}`
-  delete params.pageNo
-  delete params.pageSize
-  return axios({
-    url: url,
-    data: params,
-    method: 'post'
-  })
-}
-//  店内调出类型 列表  不分页
-export const storeCallOutTypeAllList = (params) => {
-  return axios({
-    url: `/storeCallOutType/queryList`,
-    data: {},
-    method: 'post'
-  })
-}
-
-// 新增/编辑 店内调出类型
-export const storeCallOutTypeSave = params => {
-  return axios({
-    url: '/storeCallOutType/save',
-    data: params,
-    method: 'post'
-  })
-}
-
-// 删除 店内调出类型
-export const storeCallOutTypeDel = params => {
-  return axios({
-    url: `/storeCallOutType/delete/${params.id}`,
-    data: {},
-    method: 'get'
-  })
-}

+ 1 - 1
src/config/router.config.js

@@ -1027,7 +1027,7 @@ export const asyncRouterMap = [
                 }
               },
               {
-                path: 'warehouseDetail/:id',
+                path: 'warehouseDetail/:sn',
                 name: 'inventoryQueryWarehouseDetail',
                 component: () => import(/* webpackChunkName: "shop" */ '@/views/inventoryManagement/inventoryQuery/warehouseDetail.vue'),
                 meta: {

+ 3 - 2
src/views/common/chooseProductsModal.vue

@@ -73,6 +73,7 @@
           :columns="columns"
           :pagination="paginationProps"
           :loading="loading"
+          :scroll="{ y: 450 }"
           bordered>
         </a-table>
       </div>
@@ -101,7 +102,7 @@ import { STable } from '@/components'
 import { productBrandQuery } from '@/api/productBrand'
 import { productTypeQuery } from '@/api/productType'
 import { dealerScopeValidProduct } from '@/api/dealerScope'
-import { productList } from '@/api/product'
+import { productPricedList } from '@/api/product'
 export default {
   name: 'ChooseProductsModal',
   components: { STable },
@@ -280,7 +281,7 @@ export default {
         pageSize: this.pageSize
       }
       this.loading = true
-      productList(Object.assign(params, this.queryParam)).then(res => {
+      productPricedList(Object.assign(params, this.queryParam)).then(res => {
         this.loading = false
         if (res.status == 200) {
           const data = res.data

+ 4 - 3
src/views/common/custList.vue

@@ -3,12 +3,13 @@
     show-search
     label-in-value
     :value="dealerName"
-    placeholder="请输入客户名称搜索"
+    placeholder="请输入名称搜索"
     style="width: 100%"
     :filter-option="false"
     :not-found-content="fetching ? undefined : null"
     @search="fetchUser"
     @change="handleChange"
+    allowClear
   >
     <a-spin v-if="fetching" slot="notFoundContent" size="small" />
     <a-select-option v-for="item in data" :key="item.dealerSn" :value="item.dealerSn">
@@ -39,7 +40,7 @@ export default {
       const fetchId = this.lastFetchId
       this.data = []
       this.fetching = true
-      dealerQueryList({ 'nameLike': dealerName, pageNo: 1, pageSize: 1000 }).then(res => {
+      dealerQueryList({ 'nameLike': dealerName, pageNo: 1, pageSize: 20 }).then(res => {
         if (fetchId !== this.lastFetchId) {
           return
         }
@@ -53,7 +54,7 @@ export default {
         data: [],
         fetching: false
       })
-      this.$emit('change', value)
+      this.$emit('change', value || { key: undefined })
     },
     resetForm () {
       this.dealerName = []

+ 18 - 15
src/views/dealerManagement/dealerAccountManagement/detailModal.vue

@@ -4,17 +4,17 @@
     class="dealerAccountDetail-modal"
     :footer="null"
     :maskClosable="false"
-    title="账号信息"
+    title="详情"
     v-model="isShow"
     @cancle="isShow=false"
     :width="800">
     <div v-if="detailData">
-      <a-descriptions bordered size="default">
-        <a-descriptions-item label="经销商名称:">{{ detailData.productName || '--' }}</a-descriptions-item>
-        <a-descriptions-item label="管理员姓名:">{{ detailData.productCode || '--' }}</a-descriptions-item>
-        <a-descriptions-item label="管理员手机:">{{ detailData.origCode || '--' }}</a-descriptions-item>
-        <a-descriptions-item label="管理员账号:">{{ detailData.origCode || '--' }}</a-descriptions-item>
-        <a-descriptions-item label="最大可开通用户数(不含管理员账号):">{{ detailData.origCode || '--' }}</a-descriptions-item>
+      <a-descriptions bordered size="small" :column="2">
+        <a-descriptions-item label="经销商名称:">{{ detailData.org.name || '--' }}</a-descriptions-item>
+        <a-descriptions-item label="管理员姓名:">{{ detailData.name || '--' }}</a-descriptions-item>
+        <a-descriptions-item label="管理员手机:">{{ detailData.phone || '--' }}</a-descriptions-item>
+        <a-descriptions-item label="管理员账号:">{{ detailData.loginName || '--' }}</a-descriptions-item>
+        <a-descriptions-item label="最大可开通用户数(含管理员账号):">{{ detailData.org.childUserMaxNum || '--' }}</a-descriptions-item>
       </a-descriptions>
       <div class="btn-cont"><a-button id="dealerAccountDetail-modal-back" @click="isShow = false">关闭</a-button></div>
     </div>
@@ -22,7 +22,7 @@
 </template>
 
 <script>
-// import { dealerProductDetail } from '@/api/dealerProduct'
+import { dealerUserDetail } from '@/api/dealer'
 export default {
   name: 'DealerAccountDetailModal',
   props: {
@@ -44,13 +44,13 @@ export default {
   methods: {
     //  获取详情
     getDetail () {
-      // dealerProductDetail({ id: this.itemId }).then(res => {
-      //   if (res.status == 200) {
-      //     this.detailsData = res.data
-      //   } else {
-      //     this.detailsData = null
-      //   }
-      // })
+      dealerUserDetail({ id: this.itemId }).then(res => {
+        if (res.status == 200) {
+          this.detailData = res.data
+        } else {
+          this.detailData = null
+        }
+      })
     }
   },
   watch: {
@@ -78,6 +78,9 @@ export default {
     .ant-modal-body {
       padding: 40px 40px 24px;
     }
+    .ant-descriptions-item-label.ant-descriptions-item-colon{
+      width: 133px;
+    }
     .btn-cont {
       text-align: center;
       margin: 35px 0 10px;

+ 63 - 44
src/views/dealerManagement/dealerAccountManagement/editModal.vue

@@ -18,43 +18,36 @@
         :label-col="formItemLayout.labelCol"
         :wrapper-col="formItemLayout.wrapperCol"
       >
-        <a-form-model-item label="经销商名称" prop="productBrandName">
-          <a-select
-            id="dealerAccountEdit-supplierSn"
-            placeholder="请选择经销商"
-            allowClear
-            v-model="form.supplierSn"
-            :showSearch="true"
-            option-filter-prop="children"
-            :filter-option="filterOption">
-            <a-select-option v-for="item in productBrandList" :key="item.supplierSn" :value="item.supplierSn">{{ item.supplierName }}</a-select-option>
-          </a-select>
+        <a-form-model-item label="经销商名称" prop="tenantSn">
+          <custList ref="custList" v-if="!itemId" id="dealerAccountEdit-tenantSn" @change="custChange"></custList>
+          <span v-else>{{ detailData.org.name }}</span>
         </a-form-model-item>
-        <a-form-model-item label="管理员姓名" prop="productBrandName">
+        <a-form-model-item label="管理员姓名" prop="name">
           <a-input
-            id="dealerAccountEdit-productBrandName"
+            id="dealerAccountEdit-name"
             :maxLength="30"
-            v-model.trim="form.productBrandName"
+            v-model.trim="form.name"
             placeholder="请输入管理员姓名(最多30个字符)"
             allowClear />
         </a-form-model-item>
-        <a-form-model-item label="管理员手机" prop="contactTel">
+        <a-form-model-item label="管理员手机" prop="phone">
           <a-input
-            id="dealerAccountEdit-contactTel"
+            id="dealerAccountEdit-phone"
             :maxLength="11"
-            v-model.trim="form.contactTel"
+            v-model.trim="form.phone"
             placeholder="请输入管理员手机(最多11个字符)"
             allowClear />
         </a-form-model-item>
-        <a-form-model-item label="管理员账号" prop="account">
+        <a-form-model-item label="管理员账号" prop="loginName">
           <a-input
-            id="dealerAccountEdit-account"
+            id="dealerAccountEdit-loginName"
             :maxLength="50"
-            v-model.trim="form.account"
+            v-model.trim="form.loginName"
+            :disabled="itemId"
             placeholder="请输入管理员账号,字母/数字(最多50个字符)"
             allowClear />
         </a-form-model-item>
-        <a-form-model-item label="管理员密码" prop="password">
+        <a-form-model-item label="管理员密码" prop="password" v-if="!itemId">
           <a-input
             id="dealerAccountEdit-password"
             :maxLength="50"
@@ -63,10 +56,10 @@
             placeholder="请输入管理员密码,字母/数字(最多50个字符)"
             allowClear />
         </a-form-model-item>
-        <a-form-model-item label="最大可开通用户数" prop="password" extra="(含管理员账号)">
+        <a-form-model-item label="最大可开通用户数" prop="org.childUserMaxNum" extra="(含管理员账号)">
           <a-input-number
-            id="dealerAccountEdit-password"
-            v-model="form.password"
+            id="dealerAccountEdit-childUserMaxNum"
+            v-model="form.org.childUserMaxNum"
             :precision="0"
             :min="1"
             :max="999999"
@@ -83,9 +76,11 @@
 </template>
 
 <script>
-// import { dealerProductBrandSave } from '@/api/dealerProductBrand'
+import custList from '@/views/common/custList.vue'
+import { dealerUserSave, dealerUserDetail } from '@/api/dealer'
 export default {
   name: 'DealerAccountEditModal',
+  components: { custList },
   props: {
     openModal: { //  弹框显示状态
       type: Boolean,
@@ -94,10 +89,6 @@ export default {
     itemId: {
       type: [Number, String],
       default: ''
-    },
-    nowData: {
-      type: Object,
-      default: null
     }
   },
   data () {
@@ -108,22 +99,30 @@ export default {
         wrapperCol: { span: 18 }
       },
       form: {
-        productBrandName: '', // 产品品牌名称
-        contactTel: '',
-        desc: ''
+        tenantSn: '',
+        name: '',
+        phone: '',
+        loginName: '',
+        password: '',
+        org: {
+          childUserMaxNum: ''
+        }
       },
       rules: {
-        productBrandName: [
-          { required: true, message: '请输入产品品牌名称', trigger: 'blur' }
-        ],
-        contactTel: [{ required: true, message: '请输入联系电话', trigger: 'blur' }, { pattern: /^\d{11}$/, message: '请输入正确的手机号' }],
-        account: [{ required: true, message: '请输入管理员账号', trigger: 'blur' }, { pattern: /^[0-9a-zA-Z]+$/, message: '管理员账号由字母和数字组成' }],
-        password: [{ required: true, message: '请输入管理员密码', trigger: 'blur' }, { pattern: /^[0-9a-zA-Z]+$/, message: '管理员密码由字母和数字组成' }]
+        tenantSn: [{ required: true, message: '请选择经销商', trigger: 'change' }],
+        name: [{ required: true, message: '请输入管理员姓名', trigger: 'blur' }],
+        phone: [{ required: true, message: '请输入管理员手机', trigger: 'blur' }, { pattern: /^\d{11}$/, message: '请输入正确的手机号' }],
+        loginName: [{ required: true, message: '请输入管理员账号', trigger: 'blur' }, { pattern: /^[0-9a-zA-Z]+$/, message: '管理员账号由字母和数字组成' }],
+        password: [{ required: true, message: '请输入管理员密码', trigger: 'blur' }, { pattern: /^[0-9a-zA-Z]+$/, message: '管理员密码由字母和数字组成' }],
+        'org.childUserMaxNum': [{ required: true, message: '请输入最大可开通用户数', trigger: 'blur' }]
       },
-      productBrandList: []
+      detailData: null //  详情数据
     }
   },
   methods: {
+    custChange (val) {
+      this.form.tenantSn = val.key
+    },
     //  保存
     handleSave () {
       const _this = this
@@ -131,7 +130,10 @@ export default {
         if (valid) {
           const formData = JSON.parse(JSON.stringify(_this.form))
           formData.id = _this.itemId ? _this.itemId : undefined
-          dealerProductBrandSave(formData).then(res => {
+          if (_this.itemId) {
+            delete formData.password
+          }
+          dealerUserSave(formData).then(res => {
             if (res.status == 200) {
               _this.$message.success(res.message)
               _this.$emit('ok')
@@ -143,10 +145,22 @@ export default {
         }
       })
     },
-    filterOption (input, option) {
-      return (
-        option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
-      )
+    //  获取详情
+    getDetail () {
+      dealerUserDetail({ id: this.itemId }).then(res => {
+        if (res.status == 200) {
+          this.detailData = res.data
+          this.form.tenantSn = this.detailData.tenantSn || ''
+          this.form.name = this.detailData.name || ''
+          this.form.phone = this.detailData.phone || ''
+          this.form.loginName = this.detailData.loginName || ''
+          this.form.password = this.detailData.password || ''
+          this.form.org.childUserMaxNum = this.detailData.org.childUserMaxNum || ''
+        } else {
+          this.detailData = null
+          this.$refs.ruleForm.resetFields()
+        }
+      })
     }
   },
   watch: {
@@ -159,6 +173,11 @@ export default {
       if (!newValue) {
         this.$emit('close')
       }
+    },
+    itemId (newValue, oldValue) {
+      if (this.isShow && newValue) {
+        this.getDetail()
+      }
     }
   }
 }

+ 40 - 28
src/views/dealerManagement/dealerAccountManagement/list.vue

@@ -6,17 +6,17 @@
         <a-row :gutter="15">
           <a-col :md="6" :sm="24">
             <a-form-item label="经销商名称">
-              <a-input id="dealerAccountList-productBrandName" v-model.trim="queryParam.productBrandName" allowClear placeholder="请输入经销商名称"/>
+              <a-input id="dealerAccountList-name" v-model.trim="queryParam.org.name" allowClear placeholder="请输入经销商名称"/>
             </a-form-item>
           </a-col>
           <a-col :md="6" :sm="24">
             <a-form-item label="管理员账号">
-              <a-input id="dealerAccountList-productBrandName" v-model.trim="queryParam.productBrandName" allowClear placeholder="请输入管理员账号"/>
+              <a-input id="dealerAccountList-loginName" v-model.trim="queryParam.loginName" allowClear placeholder="请输入管理员账号"/>
             </a-form-item>
           </a-col>
           <a-col :md="6" :sm="24">
             <a-form-item label="账号状态">
-              <v-select code="PRODUCT_STATUS" id="dealerAccountList-state" v-model="queryParam.state" allowClear placeholder="请选择账号状态"></v-select>
+              <v-select code="ENABLE_FLAG" id="dealerAccountList-loginFlag" v-model="queryParam.loginFlag" allowClear placeholder="请选择账号状态"></v-select>
             </a-form-item>
           </a-col>
           <a-col :md="6" :sm="24">
@@ -41,8 +41,14 @@
       :scroll="{ x: 1310, y: tableHeight }"
       bordered>
       <!-- 账号状态 -->
-      <template slot="enableAction" slot-scope="text, record">
-        <a-switch checkedChildren="启用" unCheckedChildren="禁用" v-model="record.enabledFlag" @change="changeFlagHandle(text, record)"/>
+      <template slot="loginFlag" slot-scope="text, record">
+        <a-switch
+          id="dealerAccountList-enable"
+          checkedChildren="启用"
+          unCheckedChildren="禁用"
+          @change="changeStatus(record)"
+          :checked="record.loginFlag == 1 ? true : false" />
+        <!-- <span v-else>{{ record.loginFlag==1?'已启用':'已禁用' }}</span> -->
       </template>
       <!-- 操作 -->
       <template slot="action" slot-scope="text, record">
@@ -67,25 +73,28 @@
 import { STable, VSelect } from '@/components'
 import dealerAccountEditModal from './editModal.vue'
 import dealerAccountDetailModal from './detailModal.vue'
-import { getPowerUserList } from '@/api/power-mduser'
+import { dealerUserList, dealerUserEnable, dealerUserResetP } from '@/api/dealer'
 export default {
   components: { STable, VSelect, dealerAccountEditModal, dealerAccountDetailModal },
   data () {
     return {
       tableHeight: 0,
       queryParam: { //  查询条件
-        productBrandName: '', //  品牌名称
-        enabledFlag: undefined //  状态
+        org: {
+          name: ''
+        },
+        loginName: '',
+        loginFlag: undefined
       },
       disabled: false, //  查询、重置按钮是否可操作
       columns: [
         { title: '序号', dataIndex: 'no', width: 80, align: 'center' },
         { title: '创建时间', dataIndex: 'createDate', width: 160, align: 'center' },
-        { title: '经销商名称', dataIndex: 'productBrandName', align: 'center', customRender: function (text) { return text || '--' }, ellipsis: true },
-        { title: '管理员姓名', dataIndex: 'creatseDate', width: 220, align: 'center', customRender: function (text) { return text || '--' }, ellipsis: true },
-        { title: '管理员账号', dataIndex: 'producstBrandName', width: 140, align: 'center', customRender: function (text) { return text || '--' } },
-        { title: '授权用户数', dataIndex: 'productssBrandName', width: 140, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: '状态', scopedSlots: { customRender: 'enableAction' }, width: 150, align: 'center' },
+        { title: '经销商名称', dataIndex: 'org.name', align: 'center', customRender: function (text) { return text || '--' }, ellipsis: true },
+        { title: '管理员姓名', dataIndex: 'name', width: 220, align: 'center', customRender: function (text) { return text || '--' }, ellipsis: true },
+        { title: '管理员账号', dataIndex: 'loginName', width: 140, align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '授权用户数', dataIndex: 'org.childUserMaxNum', width: 140, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '状态', scopedSlots: { customRender: 'loginFlag' }, width: 150, align: 'center' },
         { title: '操作', scopedSlots: { customRender: 'action' }, width: 200, align: 'center', fixed: 'right' }
       ],
       // 加载数据方法 必须为 Promise 对象
@@ -94,11 +103,12 @@ export default {
         if (this.tableHeight == 0) {
           this.tableHeight = window.innerHeight - 380
         }
-        return getPowerUserList(Object.assign(parameter, this.queryParam)).then(res => {
+        return dealerUserList(Object.assign(parameter, this.queryParam)).then(res => {
           const data = res.data
           const no = (data.pageNo - 1) * data.pageSize
           for (var i = 0; i < data.list.length; i++) {
             data.list[i].no = no + i + 1
+            data.list[i].loginFlag = Number(data.list[i].loginFlag)
           }
           this.disabled = false
           return data
@@ -114,8 +124,9 @@ export default {
   methods: {
     //  重置
     resetSearchForm () {
-      this.queryParam.productBrandName = ''
-      this.queryParam.enabledFlag = undefined
+      this.queryParam.org.name = ''
+      this.queryParam.loginName = ''
+      this.queryParam.loginFlag = undefined
       this.$refs.table.refresh(true)
     },
     //  新增/编辑
@@ -148,26 +159,27 @@ export default {
         content: '重置密码后,新的密码会以短信形式发送到【管理员手机】,确定要重置吗?',
         centered: true,
         onOk () {
-          // salesDel({ id: row.id }).then(res => {
-          //   if (res.status == 200) {
-          //     _this.$message.success(res.message)
-          //     _this.$refs.table.refresh()
-          //   }
-          // })
+          dealerUserResetP({ id: row.id }).then(res => {
+            if (res.status == 200) {
+              _this.$message.success(res.message)
+              _this.$refs.table.refresh()
+            }
+          })
         }
       })
     },
-    // 修改状态
-    changeFlagHandle (text, record) {
-      const _data = {
+    // 启用 禁用
+    changeStatus (record) {
+      const params = {
         id: record.id,
-        flag: record.enabledFlag ? '1' : '0'
+        flag: record.loginFlag == 1 ? '0' : '1'
       }
-      updateEnableStatus(_data).then(res => {
+      dealerUserEnable(params).then(res => {
         if (res.status == 200) {
           this.$message.success(res.message)
+          this.$refs.table.refresh()
         } else {
-          record.enabledFlag = !record.enabledFlag
+          this.$refs.table.refresh()
         }
       })
     }

+ 2 - 1
src/views/dealerManagement/marketingDivisionSet/editModal.vue

@@ -137,7 +137,8 @@ export default {
         // 是否全选
         parent.checked = hasCheckd.length == parent.children.length
         parent.children.map(d => d.noSave = parent.checked)
-        parent.indeterminate = !parent.checked
+        // indeterminate为true,则为全选,false则为部分选择或者空
+        parent.indeterminate = ((hasCheckd.length < parent.children.length) && (hasCheckd.length != 0))
       }
       this.addrProvinceList = JSON.parse(JSON.stringify(this.addrProvinceList))
     },

+ 1 - 1
src/views/dealerManagement/merchantInfoManagement/edit.vue

@@ -471,7 +471,7 @@ export default {
           { pattern: /^[1-9][0-9]{5}$/, message: '请输入正确的邮政编码' }
         ],
         mail: [
-          { pattern: /^\w+@[a-z0-9]\.[a-z]+$/, message: '请输入正确的邮箱' }
+          { type: 'email', message: '请输入正确的邮箱' }
         ],
         tradeBankAccount: [
           { pattern: /^[0-9a-zA-Z]{16,30}$/, message: '请输入正确银行卡号' }

+ 1 - 1
src/views/financialManagement/inventoryReview/list.vue

@@ -11,7 +11,7 @@
           </a-col>
           <a-col :md="6" :sm="24">
             <a-form-item label="盘点审核时间">
-              <a-range-picker v-model="queryParam.creatDate" id="inventoryReviewList-creatDate"/>
+              <a-range-picker v-model="queryParam.creatDate" allowClear id="inventoryReviewList-creatDate"/>
             </a-form-item>
           </a-col>
           <a-col :md="6" :sm="24">

+ 7 - 3
src/views/financialManagement/returnConfirmation/list.vue

@@ -17,7 +17,7 @@
           </a-col>
           <a-col :md="6" :sm="24">
             <a-form-item label="客户名称" :label-col="{ span:7 }" :wrapper-col="{ span:17}">
-              <custList id="returnConfirmationList-buyerName" v-model="queryParam.buyerName"></custList>
+              <custList ref="custList" id="returnConfirmationList-buyerSn" @change="custChange"></custList>
             </a-form-item>
           </a-col>
           <a-col :md="6" :sm="24">
@@ -103,7 +103,7 @@ export default {
     return {
       queryParam: { //  查询条件
         salesReturnBillNo: '', //  单号
-        buyerName: undefined,
+        buyerSn: undefined,
         grabFlag: undefined,
         billStatus: undefined //  状态
       },
@@ -158,13 +158,17 @@ export default {
     disabledDate (date, dateStrings) {
       return date && date.valueOf() > Date.now()
     },
+    custChange (val) {
+      this.queryParam.buyerSn = val.key
+    },
     //  重置
     resetSearchForm () {
       this.queryParam.salesReturnBillNo = ''
-      this.queryParam.buyerName = undefined
+      this.queryParam.buyerSn = undefined
       this.queryParam.grabFlag = undefined
       this.queryParam.billStatus = undefined
       this.createDate = []
+      this.$refs.custList.resetForm()
       this.$refs.table.refresh(true)
     },
     // 详情

+ 7 - 7
src/views/financialManagement/warehousingConfirmation/list.vue

@@ -12,9 +12,9 @@
           <a-col :md="6" :sm="24">
             <a-form-item label="单据状态">
               <v-select
-                v-model="queryParam.state"
-                ref="state"
-                id="warehousingConfirmationList-state"
+                v-model="queryParam.auditState"
+                ref="auditState"
+                id="warehousingConfirmationList-auditState"
                 code="PUT_CONFIRM_STATE"
                 placeholder="请选择单据状态"
                 allowClear></v-select>
@@ -53,7 +53,7 @@
         <a-button
           size="small"
           type="link"
-          v-if="record.state=='WAIT'"
+          v-if="record.auditState=='WAIT'"
           class="button-warning"
           @click="handleAudit(record)"
           id="warehousingConfirmationList-audit-btn">入库确认</a-button>
@@ -75,7 +75,7 @@ export default {
     return {
       queryParam: { //  查询条件
         stockPutNo: '', //  入库单号
-        state: undefined //  状态
+        auditState: undefined //  状态
       },
       tableHeight: 0,
       disabled: false, //  查询、重置按钮是否可操作
@@ -123,7 +123,7 @@ export default {
         },
         getCheckboxProps: record => ({
           props: {
-            disabled: record.state != 'WAIT'
+            disabled: record.auditState != 'WAIT'
           }
         })
       }
@@ -133,7 +133,7 @@ export default {
     //  重置
     resetSearchForm () {
       this.queryParam.stockPutNo = ''
-      this.queryParam.state = undefined
+      this.queryParam.auditState = undefined
       this.$refs.table.refresh(true)
     },
     // 详情

+ 14 - 10
src/views/power/user/updateAreal.vue

@@ -16,7 +16,7 @@
         :label-col="labelCol"
         :wrapper-col="wrapperCol"
       >
-        <a-form-model-item label="用户名">
+        <a-form-model-item label="用户名">
           {{ form.name }}
         </a-form-model-item>
         <a-form-model-item label="所属营销分区" prop="subareaSn">
@@ -33,7 +33,7 @@
 
 <script>
 import { VSelect } from '@/components'
-import { updateDealerLevel } from '@/api/dealer'
+import { userSubareaSave } from '@/api/power-user'
 import subarea from '@/views/common/subarea.js'
 export default {
   name: 'UpdateArea',
@@ -47,28 +47,28 @@ export default {
   data () {
     return {
       isShow: this.openUdModal, //  是否打开弹框
-      title: '级别设置',
+      title: '分区设置',
       labelCol: { span: 5 },
       wrapperCol: { span: 16 },
       other: '',
       form: {
         name: '',
-        subareaSn: ''
+        subareaSn: undefined
       },
       rules: {
         subareaSn: [
-          { required: true, message: '请选择所属营销分区', trigger: ['change', 'blur'] }
+          { required: true, message: '请选择所属营销分区', trigger: 'blur' }
         ]
       },
-      subareaSnBak: undefined
+      nowData: undefined
     }
   },
   methods: {
     setData (row) {
       this.form.id = row.id
       this.form.name = row.name
-      this.form.subareaSn = row.subareaSn || ''
-      this.subareaSnBak = row.subareaSn
+      this.form.subareaSn = row.subareaSn || undefined
+      this.nowData = row
     },
     onSubmit () {
       const _this = this
@@ -82,10 +82,14 @@ export default {
     },
     submitForm () {
       const _this = this
-      const params = JSON.parse(JSON.stringify(_this.form))
-      updateDealerLevel(params).then(res => {
+      const params = {
+        userSn: _this.nowData.sn,
+        subareaSn: _this.form.subareaSn
+      }
+      userSubareaSave(params).then(res => {
         if (res.status == 200) {
           _this.$message.success(res.message)
+          _this.isShow = false
           _this.$emit('ok')
         }
       })

+ 7 - 0
src/views/power/user/userList.vue

@@ -145,6 +145,13 @@ export default {
           width: 120,
           align: 'center'
         },
+        {
+          title: '所属分区',
+          dataIndex: 'subareaName',
+          align: 'center',
+          customRender: function (text) { return text || '--' },
+          ellipsis: true
+        },
         {
           title: '角色',
           width: 200,

+ 1 - 1
src/views/productManagement/productLevel/list.vue

@@ -123,7 +123,7 @@ export default {
         { title: '品牌', dataIndex: 'productBrandName', width: 200, align: 'center', customRender: function (text) { return text || '--' } },
         { title: '产品分类', scopedSlots: { customRender: 'productType' }, width: 200, align: 'center' },
         { title: '包装数', dataIndex: 'packQtyV', width: 150, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: '单位', dataIndex: 'packQtyUnit', width: 100, align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '单位', dataIndex: 'unit', width: 100, align: 'center', customRender: function (text) { return text || '--' } },
         { title: '产品级别', dataIndex: 'level', width: 100, align: 'center', customRender: function (text) { return text || '--' } },
         { title: '操作', scopedSlots: { customRender: 'action' }, width: 100, align: 'center', fixed: 'right' }
       ],

+ 11 - 0
src/views/purchasingManagement/bulkWarehousingOrder/productModal.vue

@@ -78,6 +78,7 @@ import { VSelect } from '@/components'
 import debounce from 'lodash/debounce'
 import { supplierProductList } from '@/api/supplier'
 import { warehouseCascadeList } from '@/api/warehouse'
+import { stockByProductSn } from '@/api/stock'
 import { sparePartsSaveDetail, sparePartsDetailD } from '@/api/spareParts'
 export default {
   name: 'BulkWarehousingOrderBasicInfoModal',
@@ -167,6 +168,16 @@ export default {
       this.form.productName = this.productData[ind].product.name
       this.form.productCode = this.productData[ind].product.code
       this.form.productOrigCode = this.productData[ind].product.origCode
+      this.getCost(this.form.productSn)
+    },
+    // 根据产品编码获取成本价
+    getCost(sn){
+      const _this = this
+      stockByProductSn({sn: sn}).then(res => {
+        if(res.status == 200){
+          _this.form.productCost = res.data.lastStockCost
+        }
+      })
     },
     // 详情
     getDetail () {

+ 12 - 5
src/views/salesManagement/examineVerify/list.vue

@@ -111,17 +111,21 @@
 </template>
 
 <script>
-import { dispatchlList, dispatchQueryCount, dispatchStockUpAduit } from '@/api/dispatch'
-import custList from '@/views/common/custList.vue'
-import { STable, VSelect } from '@/components'
 import moment from 'moment'
+import getDate from '@/libs/getDate.js'
+import { STable, VSelect } from '@/components'
+import custList from '@/views/common/custList.vue'
+import { dispatchlList, dispatchQueryCount, dispatchStockUpAduit } from '@/api/dispatch'
 export default {
   components: { STable, VSelect, custList },
   data () {
     return {
       advanced: false, // 高级搜索 展开/关闭
       tableHeight: 0,
-      time: [],
+      time: [
+        moment(getDate.getThreeMonthDays().starttime, 'YYYY-MM-DD'),
+        moment(getDate.getCurrMonthDays().endtime, 'YYYY-MM-DD')
+      ],
       queryParam: { //  查询条件
         buyerSn: undefined, //  客户名称
         salesBillNo: '', //  销售单号
@@ -201,7 +205,10 @@ export default {
       this.queryParam.stockOutNo = '' // 出库单号
       this.queryParam.billStatus = undefined
       this.queryParam.printStatus = undefined
-      this.time = []
+      this.time = [
+        moment(getDate.getThreeMonthDays().starttime, 'YYYY-MM-DD'),
+        moment(getDate.getCurrMonthDays().endtime, 'YYYY-MM-DD')
+      ]
       this.$refs.table.refresh(true)
     },
     //  审核

+ 16 - 1
src/views/salesManagement/salesReturn/chooseCustomModal.vue

@@ -156,7 +156,22 @@ export default {
     },
     cancel () {
       this.opened = false
-      this.$refs.ruleForm.resetFields()
+      this.form = {
+        salesReturnBillSource: 'SALES',
+        buyerName: '', // 客户名称
+        buyerSn: '', // 客户sn
+        contactTel: '', //  联系电话
+        contactName: '', //  联系人
+        provinceSn: '', //  省
+        provinceName: '',
+        citySn: '', // 市
+        cityName: '',
+        countySn: '', // 区
+        countyName: '',
+        customerAddr: '', //  详细地址
+        grabFlag: '1' // 是否抓单
+      }
+      this.$refs.custList.resetForm()
       this.$emit('cancel')
     }
   },