Mr.Zhang
2023-09-21 3fbfdefe98e5d35e32d74138ce73a1b4e2fe5465
平台端
已添加2个文件
已修改17个文件
371 ■■■■ 文件已修改
platform/.env.development 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platform/.env.production 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platform/package.json 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
platform/public/favicon.ico 补丁 | 查看 | 原始文档 | blame | 历史
platform/public/template/goods_import_modle.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
platform/src/api/business/fileRecord.js 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platform/src/assets/logo.png 补丁 | 查看 | 原始文档 | blame | 历史
platform/src/components/business/OperaCompanyUserWindow.vue 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platform/src/components/business/OperaCompanyWindow.vue 44 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platform/src/components/business/OperaGoodsWindow.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platform/src/components/common/GlobalAlertWindow.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platform/src/components/system/user/OperaUserWindow.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platform/src/utils/form.js 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platform/src/utils/request.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platform/src/views/business/category.vue 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platform/src/views/business/company.vue 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platform/src/views/business/fileRecord.vue 119 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platform/src/views/business/goods.vue 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platform/src/views/system/user.vue 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platform/.env.development
@@ -7,9 +7,9 @@
# ä»»åº·
# VUE_APP_API = 'http://192.168.0.15:10017/'
# ç„¦æ¾
VUE_APP_API = 'http://192.168.0.36:10011'
VUE_APP_API = 'http://192.168.0.36:10023'
# æ±Ÿè
VUE_APP_API = 'http://192.168.0.35:10011'
# VUE_APP_API = 'http://192.168.0.35:10023'
#测试服务器
# #测试服务器
# VUE_APP_API = 'https://dmtest.ahapp.net/preselect_admin_interface'
platform/.env.production
@@ -1,12 +1,11 @@
# ç”Ÿäº§çŽ¯å¢ƒé…ç½®
NODE_ENV = 'production'
# VUE_APP_API = 'https://dmtest.ahapp.net/preselect_interface/'
VUE_APP_API = 'http://127.0.0.1/'
VUE_APP_CONTEXT_PATH = '/admin'
VUE_APP_API_PREFIX = '/admin_interface'
# VUE_APP_API = 'https://dm.ahapp.net/preselect_interface/'
# VUE_APP_API = 'http://yx.doumee.com/preselect_interface/'
# VUE_APP_API = 'http://mjyx.doumee.com/preselect_interface/'
# http://yx.ahapp.net/admin_interface/doc.html
# VUE_APP_API = 'https://yx.ahapp.net/admin_interface'
VUE_APP_API = 'http://127.0.0.1:10023/
platform/package.json
@@ -4,7 +4,7 @@
  "private": true,
  "scripts": {
    "serve": "vue-cli-service serve",
    "build": "vue-cli-service build",
    "build:pro": "vue-cli-service build",
    "build:dev": "vue-cli-service build --mode staging",
    "lint": "vue-cli-service lint",
    "fix": "eslint --ext .js,.vue src --fix"
platform/public/favicon.ico

platform/public/template/goods_import_modle.xlsx
Binary files differ
platform/src/api/business/fileRecord.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
import request from '../../utils/request'
// æŸ¥è¯¢
export function fetchList (data) {
  return request.post('/business/fileRecord/page', data, {
    trim: true
  })
}
platform/src/assets/logo.png

platform/src/components/business/OperaCompanyUserWindow.vue
@@ -11,11 +11,11 @@
        <el-input v-model="form.name" placeholder="请输入客户企业全称,不超过30字" v-trim/>
        ä¼ä¸šåç§°éœ€ä¸Žå·¥å•†éƒ¨é—¨ç™»è®°ä¿¡æ¯ä¸€è‡´
      </el-form-item>
      <el-form-item label="企业简称" prop="shortName">
      <el-form-item label="客户简称" prop="shortName">
        <el-input v-model="form.shortName" placeholder="请输入企业简称" v-trim/>
      </el-form-item>
      <el-form-item label="统一社会信用代码" prop="creditCode">
        <el-input v-model="form.creditCode" placeholder="请输入统一社会信用代码" v-trim/>
      <el-form-item label="统一信用代码" prop="creditCode">
        <el-input v-model="form.creditCode" placeholder="请输入统一信用代码" v-trim/>
        ç»Ÿä¸€ä¿¡ç”¨ä»£ç éœ€ä¸Žå·¥å•†éƒ¨é—¨ç™»è®°ä¿¡æ¯ä¸€è‡´
      </el-form-item>
      <el-form-item label="登录账号" prop="managerUserName">
@@ -26,6 +26,7 @@
      </el-form-item>
      <el-form-item label="主播数量限制" prop="userNum">
        <el-input v-model="form.userNum" :disabled="!!this.form.id" placeholder="请输入主播数量限制" v-trim/>
      </el-form-item>
      <el-form-item label="销售人员" prop="salesmanId">
        <!-- <el-input v-model="form.salesmanId" placeholder="请输入销售人员编码" v-trim/> -->
@@ -71,7 +72,7 @@
        linkname: '',
        linkephone: '',
        creditCode: '',
        userNum: '',
        userNum: 5,
        oepnValidDate: '',
        salesmanId: ''
      },
@@ -106,6 +107,7 @@
<style lang="scss" scoped>
.more {
  margin-top: 40px;
  margin-bottom: 10px;
  .more-title {
    font-weight: 600;
    font-size: 18px;
platform/src/components/business/OperaCompanyWindow.vue
@@ -11,11 +11,11 @@
        <el-input v-model="form.name" placeholder="请输入客户企业全称,不超过30字" v-trim/>
        ä¼ä¸šåç§°éœ€ä¸Žå·¥å•†éƒ¨é—¨ç™»è®°ä¿¡æ¯ä¸€è‡´
      </el-form-item>
      <el-form-item label="企业简称" prop="shortName">
        <el-input v-model="form.shortName" placeholder="请输入企业简称" v-trim/>
      <el-form-item label="客户简称" prop="shortName">
        <el-input v-model="form.shortName" placeholder="请输入客户简称" v-trim/>
      </el-form-item>
      <el-form-item label="统一社会信用代码" prop="creditCode">
        <el-input v-model="form.creditCode" placeholder="请输入统一社会信用代码" v-trim/>
      <el-form-item label="统一信用代码" prop="creditCode">
        <el-input v-model="form.creditCode" placeholder="请输入统一信用代码" v-trim/>
        ç»Ÿä¸€ä¿¡ç”¨ä»£ç éœ€ä¸Žå·¥å•†éƒ¨é—¨ç™»è®°ä¿¡æ¯ä¸€è‡´
      </el-form-item>
      <el-form-item label="登录账号" prop="managerUserName">
@@ -26,6 +26,7 @@
      </el-form-item>
      <el-form-item label="主播数量限制" prop="userNum">
        <el-input v-model="form.userNum" :disabled="!!this.form.id" placeholder="请输入主播数量限制" v-trim/>
        è¾“å…¥0表示不限制
      </el-form-item>
      <el-form-item label="销售人员" prop="salesmanId">
        <!-- <el-input v-model="form.salesmanId" placeholder="请输入销售人员编码" v-trim/> -->
@@ -54,6 +55,7 @@
import BaseOpera from '@/components/base/BaseOpera'
import GlobalAlertWindow from '@/components/common/GlobalAlertWindow'
import { findAllList } from '@/api/system/user'
import { loginNameRule, creditCode } from '@/utils/form'
export default {
  name: 'OperaCompanyWindow',
  extends: BaseOpera,
@@ -71,7 +73,7 @@
        linkname: '',
        linkephone: '',
        creditCode: '',
        userNum: '',
        userNum: '5',
        oepnValidDate: '',
        salesmanId: ''
      },
@@ -82,7 +84,10 @@
          { required: true, message: '请输入客户企业全称', tigger: 'blur'}
        ],
        managerUserName: [
          { required: true, message: '请输入登录账号', tigger: 'blur'}
          { required: true, validator: loginNameRule, message: '请输入登录账号', tigger: 'blur'}
        ],
        creditCode: [
          { validator: creditCode, trigger: 'blur' }
        ],
        openUserNum: [
          { pattern: /^[0-9]+$/, message: '只可以输入数字', trigger: 'change' }
@@ -99,16 +104,43 @@
      .then(res => {
        this.sales = res
      })
  },
  methods: {
    open(title, target) {
      this.title = title
      this.visible = true
      // æ–°å»º
      if (target == null) {
        this.$nextTick(() => {
          this.$refs.form.resetFields()
          let data = new Date(new Date().getTime() + 31536000000)
          this.form.oepnValidDate = `${data.getFullYear()}-${data.getMonth() +1}-${data.getDate()}`
          this.form[this.configData['field.id']] = null
        })
        return
  }
      // ç¼–辑
      this.$nextTick(() => {
        for (const key in this.form) {
          this.form[key] = target[key]
        }
        this.form.multifileList.forEach(item => {
          item.url = item.filefullurl
        })
      })
    },
  },
}
</script>
<style lang="scss" scoped>
.more {
  margin-top: 40px;
  .more-title {
    font-weight: 600;
    font-size: 18px;
    margin-bottom: 10px;
  }
}
::v-deep .el-input {
platform/src/components/business/OperaGoodsWindow.vue
@@ -2,18 +2,18 @@
  <GlobalWindow :title="title" :visible.sync="visible" :confirm-working="isWorking" @confirm="confirm" width="800px"
    v-loading="isUploading">
    <el-form :model="form" ref="form" label-width="120px" :rules="rules">
      <div style="font-size: 18px;font-weight: bold;">基本信息</div>
      <div style="font-size: 18px;font-weight: bold; margin-bottom: 10px;">基本信息</div>
      <el-form-item label="商品名称" prop="name">
        <el-input v-model="form.name" maxlength="50" placeholder="请输入商品名称,不超过50个字" v-trim />
      </el-form-item>
      <el-form-item label="商品品牌" prop="brandId">
        <el-select v-model="form.brandId" placeholder="请选择,单选">
        <el-select v-model="form.brandId" filterable placeholder="请选择,单选">
          <el-option v-for="item in brandList()" :key="item.id" :label="item.name" :value="item.id">
          </el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="商品类别" prop="categoryId">
        <el-select v-model="form.categoryId" placeholder="请选择,单选" @change="categorySelect">
        <el-select v-model="form.categoryId" filterable placeholder="请选择,单选" @change="categorySelect">
          <el-option v-for="item in categoryList()" :key="item.id" :label="item.name" :value="item.id">
          </el-option>
        </el-select>
@@ -37,7 +37,7 @@
        åªèƒ½ä¸Šä¼ å›¾ç‰‡æ ¼å¼ï¼Œpng格式,建议尺寸600*600px
      </el-form-item>
      <template v-if="form.baseGoodsParamList && form.baseGoodsParamList.length > 0">
        <div style="font-size: 18px;font-weight: bold;">参数属性值配置 <span
        <div style="font-size: 18px;font-weight: bold; margin-bottom: 10px;">参数属性值配置 <span
            style="font-size: 13px; font-weight: 500;">按需配置当前商品的产品参数值,单个参数值不超过30个字</span></div>
        <el-form-item :label="item.name" v-for="(item, index) in form.baseGoodsParamList" :key="index">
          <el-input v-model="item.val" maxlength="30" type="text" placeholder="请输入" v-trim />
platform/src/components/common/GlobalAlertWindow.vue
@@ -1,6 +1,7 @@
<template>
  <el-dialog
    top="10vh"
    class="global-window"
    title="title"
    :visible="visible"
platform/src/components/system/user/OperaUserWindow.vue
@@ -19,12 +19,12 @@
          <el-radio label="0">女</el-radio>
        </el-radio-group>
      </el-form-item>
      <el-form-item label="头像" prop="avatar" required>
      <!-- <el-form-item label="头像" prop="avatar" required>
        <el-radio-group v-model="form.avatar" class="form-item-avatar">
          <el-radio label="https://dmtest.ahapp.net/preselectfile/man.png" border><img src="https://dmtest.ahapp.net/preselectfile/man.png" alt=""></el-radio>
          <el-radio label="https://dmtest.ahapp.net/preselectfile/woman.png" border><img src="https://dmtest.ahapp.net/preselectfile/woman.png" alt=""></el-radio>
        </el-radio-group>
      </el-form-item>
      </el-form-item> -->
      <el-form-item v-if="form.id == null" label="初始密码" prop="password" required>
        <el-input v-model="form.password" type="password" placeholder="请输入初始密码" maxlength="30" show-password/>
      </el-form-item>
@@ -71,7 +71,7 @@
        empNo: '', // å·¥å·
        departmentId: null, //  æ‰€å±žéƒ¨é—¨ID
        positionIds: [], //  æ‰€å±žå²—位ID集
        avatar: '/avatar/man.png', // å¤´åƒ
        // avatar: '/avatar/man.png', // å¤´åƒ
        password: '', // å¯†ç 
        mobile: '', // æ‰‹æœºå·ç 
        email: '', // é‚®ç®±
platform/src/utils/form.js
@@ -1,15 +1,88 @@
// éªŒè¯æ‰‹æœºå·ç 
export function checkMobile (rule, value, callback) {
  if (value == null || value.trim() === '') {
    callback(new Error('手机号码不能为空'))
    if (rule.required) {
      callback(new Error('请输入手机号'))
    } else {
      callback()
    }
    return
  }
  if (!/^1\d{10}$/.test(value)) {
    callback(new Error('手机号码格式不正确'))
  let re = /^[0-9]{11}$/;
  var result = re.test(value);
  if(!result) {
    callback(new Error('请输入正确的手机号'))
  } else {
    callback()
  }
}
export function checkPhone(rule, value, callback) {
  //手机号:13,14,15,17,18,19号段
  const phoneReg = /^1[3|4|5|7|8][0-9]{9}$/
  //固话:区号(3-4位)-号码(7-9位)
  const mobReg =  /(^[0-9]{3,4}-[0-9]{7,9}$)/
  //澳门电话号码: 28开头,后面跟6位数字,区号为853
  const macaoMobReg = /^(853)?28\d{6}$/
  //澳门手机号码:6开头,后面跟7位数字,区号为853
  const macaoPhoneReg = /^(853)?6\d{7}$/
  //同时支持手机号码和电话号码
  const macaoReg = /^(853)?(?:28\d{6}|6\d{7})$/
  if (!value) {
      callback(new Error('电话号码不能为空'))
  } else if (phoneReg.test(value)||mobReg.test(value)||macaoReg.test(value)) {
      callback()
  } else {
      callback(new Error('请输入正确电话号码'))
  }
}
export function loginNameRule (rule, value, callback) {
  if (value == null || value.trim() === '') {
    if (rule.required) {
      callback(new Error('请输入账号'))
    } else {
      callback()
    }
    return
  }
  let re =/^[\u4e00-\u9fa5a-zA-Z0-9]+$/
  var result = re.test(value)
  if(!result) {
    callback(new Error('请输入正确的账号'))
  } else {
    callback()
  }
}
export function nameRule (rule, value, callback) {
  if (value == null || value.trim() === '') {
    if (rule.required) {
      callback(new Error('请输入名字'))
    } else {
      callback()
    }
    return
  }
  callback()
}
export function creditCode (rule, value, callback) {
  if (value == null || value.trim() === '') {
    if (rule.required) {
      callback(new Error('请输入社会信用代码'))
    } else {
      callback()
    }
    return
  }
  let re = /^[0-9A-HJ-NPQRTUWXY]{2}\d{6}[0-9A-HJ-NPQRTUWXY]{10}$/
  var result = re.test(value)
  if(!result) {
    callback(new Error('请输入正确的社会信用代码'))
  } else {
    callback()
  }
}
// éªŒè¯é‚®ç®±
export function checkEmail (rule, value, callback) {
platform/src/utils/request.js
@@ -29,9 +29,9 @@
  // è®¾ç½®æ“ä½œå¹³å°
  config.headers['eva-platform'] = `pc-${pkg.version}`
  // è®¾ç½®è®¤è¯å¤´
  const authToken = Cookies.get('eva-auth-token')
  const authToken = Cookies.get('doumee-auth-token')
  if (authToken != null) {
    config.headers['eva-auth-token'] = authToken
    config.headers['doumee-auth-token'] = authToken
  }
  return config
}, function (error) {
platform/src/views/business/category.vue
@@ -29,7 +29,7 @@
        <el-table-column prop="priceRate" label="加价系数" min-width="100px"></el-table-column>
        <el-table-column prop="sortnum" label="排序码(升序)" min-width="100px"></el-table-column>
        <el-table-column prop="createDate" label="创建时间" min-width="100px"></el-table-column>
        <el-table-column prop="status" label="状态" min-width="100px">
        <el-table-column v-if="containPermissions(['business:category:update'])" prop="status" label="状态" min-width="100px">
          <template slot-scope="{row}">
            <el-switch v-model="row.status" @change="changeStatus(row)" :active-value="0" :inactive-value="1">
            </el-switch>
@@ -88,8 +88,11 @@
        status: item.status
      }).then(res => {
        this.$tip.apiSuccess('更新成功')
      }).finally(() => {
        // this.search()
      }).catch (err => {
          this.$message.error(err)
        })
        .finally(() => {
        this.handlePageChange()
      })
    },
    edit(id) {
platform/src/views/business/company.vue
@@ -2,14 +2,14 @@
  <TableLayout :permissions="['business:company:query']">
    <!-- æœç´¢è¡¨å• -->
    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
      <el-form-item label="名称" prop="name">
        <el-input v-model="searchForm.name" placeholder="请输入名称" @keypress.enter.native="search"></el-input>
      <el-form-item label="企业名称" prop="name">
        <el-input v-model="searchForm.name" placeholder="请输入企业名称" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <!-- <el-form-item label="企业简称" prop="shortName">
        <el-input v-model="searchForm.shortName" placeholder="请输入企业简称" @keypress.enter.native="search"></el-input>
      </el-form-item> -->
      <el-form-item label="管理员账号" prop="managerUserName">
        <el-input v-model="searchForm.managerUserName" placeholder="请输入管理员账号" @keypress.enter.native="search"></el-input>
      <el-form-item label="登录账号" prop="managerUserName">
        <el-input v-model="searchForm.managerUserName" placeholder="请输入登录账号" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="有效期" prop="oepnValidDate">
        <el-date-picker type="daterange" v-model="oepnValidDate" value-format="yyyy-MM-dd" start-placeholder="开始日期"
@@ -37,11 +37,15 @@
        <!-- <el-table-column type="selection" width="55" align="center"></el-table-column> -->
        <el-table-column prop="id" label="企业编号" min-width="80px" align="center"></el-table-column>
        <el-table-column prop="name" label="企业名称" min-width="100px" align="center"></el-table-column>
        <el-table-column prop="managerUserName" label="管理员账号" min-width="100px" align="center"></el-table-column>
        <el-table-column prop="managerUserName" label="登录账号" min-width="100px" align="center"></el-table-column>
        <el-table-column prop="linkname" label="联系人" min-width="100px" align="center"></el-table-column>
        <el-table-column prop="linkephone" label="联系人电话" min-width="100px" align="center"></el-table-column>
        <el-table-column prop="oepnValidDate" label="用有效期" min-width="140px" align="center"></el-table-column>
        <el-table-column prop="userNum" label="主播数量限制" min-width="100px" align="center"></el-table-column>
        <el-table-column prop="oepnValidDate" label="有效期" min-width="140px" align="center"></el-table-column>
        <el-table-column prop="userNum" label="主播账号限制" min-width="100px" align="center">
          <template slot-scope="{row}">
            {{ row.userNum || '不限' }}
          </template>
        </el-table-column>
        <el-table-column prop="empUserNum" label="员工数" min-width="100px" align="center"></el-table-column>
        <el-table-column prop="salesmanRealName" label="销售人员" min-width="100px" align="center"></el-table-column>
        <el-table-column prop="status" label="状态" min-width="100px" align="center">
platform/src/views/business/fileRecord.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,119 @@
<template>
  <TableLayout :permissions="['business:filerecord:query']">
    <!-- æœç´¢è¡¨å• -->
    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
      <!-- <el-form-item label="文件名" prop="name">
        <el-input v-model="searchForm.name" placeholder="请输入文件名" @keypress.enter.native="search"></el-input>
      </el-form-item> -->
      <el-form-item label="文件夹名称" prop="folder">
        <el-input v-model="searchForm.folder" placeholder="请输入文件夹名称" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="OSS文件key" prop="keyval">
        <el-input v-model="searchForm.keyval" placeholder="请输入OSS文件key" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="状态" prop="status">
        <el-select v-model="searchForm.status" clearable placeholder="请选择状态">
          <el-option v-for="item in statusList" :key="item.id" :label="item.name" :value="item.id">
          </el-option>
        </el-select>
      </el-form-item>
      <section>
        <el-button type="primary" @click="search">搜索</el-button>
        <el-button @click="reset">重置</el-button>
      </section>
    </el-form>
    <!-- è¡¨æ ¼å’Œåˆ†é¡µ -->
    <template v-slot:table-wrap>
      <el-table
        v-loading="isWorking.search"
        :data="tableData.list"
        border
        stripe
      >
       <el-table-column type="index" :index="newIndex" label="序号" width="80px" align="center"></el-table-column>
       <el-table-column prop="name" label="文件" width="100px" align="center">
        <template slot-scope="{row}">
          <el-image v-if="row.url" style="width: 70px; height: 70px" :src="row.url"
                  :preview-src-list="[row.url]" fit="cover"></el-image>
        </template>
       </el-table-column>
        <el-table-column prop="folder" label="文件夹名称" width="140px" align="center"></el-table-column>
        <el-table-column prop="keyval" label="OSS文件key" min-width="120px" align="center"></el-table-column>
        <el-table-column prop="status" label="状态" width="100px" align="center">
          <template slot-scope="{row}">
            <!--  0未上传 1已上传 2上传失败 -->
            {{ row.status == 0 ? '未上传' : row.status == 1 ? '已上传' : '上传失败' }}
          </template>
        </el-table-column>
        <el-table-column prop="createDate" label="创建时间" width="150px" align="center"></el-table-column>
        <el-table-column prop="editDate" label="更新时间" width="150px" align="center"></el-table-column>
<!--
        <el-table-column prop="editor" label="更新人编码" min-width="100px"></el-table-column>
        <el-table-column prop="isdeleted" label="是否删除0否 1是" min-width="100px"></el-table-column>
        <el-table-column prop="info" label="备注" min-width="100px"></el-table-column>
        <el-table-column prop="objId" label="关联对象编码" min-width="100px"></el-table-column>
        <el-table-column prop="type" label="类型0图片 1视频 2其他" min-width="100px"></el-table-column> -->
      </el-table>
      <pagination
        @size-change="handleSizeChange"
        @current-change="handlePageChange"
        :pagination="tableData.pagination"
      >
      </pagination>
    </template>
  </TableLayout>
</template>
<script>
import BaseTable from '@/components/base/BaseTable'
import TableLayout from '@/layouts/TableLayout'
import Pagination from '@/components/common/Pagination'
export default {
  name: 'FileRecord',
  extends: BaseTable,
  components: { TableLayout, Pagination },
  data () {
    return {
      // æœç´¢
      searchForm: {
        id: '',
        creator: '',
        createDate: '',
        editor: '',
        editDate: '',
        isdeleted: '',
        name: '',
        info: '',
        objId: '',
        type: '',
        folder: '',
        status: '',
        keyval: ''
      },
      statusList: [
        // 0未上传 1已上传 2上传失败
        { name: '未上传', id: 0 },
        { name: '已上传', id: 1 },
        { name: '上传失败', id: 2 }
      ]
    }
  },
  created () {
    this.config({
      module: '附件上传进度表',
      api: '/business/fileRecord',
      'field.id': 'id',
      'field.main': 'id'
    })
    this.search()
  },
  methods: {
    newIndex(index) {
      return (this.tableData.pagination.pageIndex - 1) * 10 + index + 1
    }
  },
}
</script>
platform/src/views/business/goods.vue
@@ -43,14 +43,18 @@
        </li>
        <!-- <el-button type="primary" :loading="isWorking.export"
          @click="$refs.selectProduct.open('选择平台商品')">选择平台商品</el-button> -->
        <li v-permissions="['business:basegoods:exportExcel']">
        <li v-permissions="['business:basegoods:exportExcel', 'business:goods:delete']">
          <ImportButton text="导入" template-name="goods_import_modle.xlsx"
            template-path="/template/goods_import_modle.xlsx" action="/business/baseGoods/importExcel"
            @success="search" />
        </li>
        <li>
        <el-button type="primary" :loading="isWorking.export" @click="bulkOperation(0)">批量上架</el-button>
        </li>
        <li>
        <el-button type="primary" :loading="isWorking.export" @click="bulkOperation(1)">批量下架</el-button>
        <!-- <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:goods:delete']">删除</el-button></li> -->
        </li>
        <li v-permissions="['business:goods:delete']"><el-button @click="deleteByIdInBatch" style="color: red;">批量删除</el-button></li>
      </ul>
      <el-table v-loading="isWorking.search" :data="tableData.list" stripe border :header-cell-style="rowStyle"
        :cell-style="rowStyle" @selection-change="handleSelectionChange">
@@ -72,7 +76,7 @@
        <el-table-column prop="zdPrice" label="指导价(元)" min-width="100px"></el-table-column>
        <el-table-column prop="price" label="采购价(元)" min-width="100px"></el-table-column>
        <el-table-column prop="createDate" label="创建时间" min-width="100px"></el-table-column>
        <el-table-column prop="status" label="状态" min-width="100px">
        <el-table-column prop="status" v-if="containPermissions(['business:basegoods:update'])" label="状态" min-width="100px">
          <template slot-scope="{row}">
            <el-switch v-model="row.status" @change="changeStatus(row)" active-color="#13ce66" inactive-color="#ff4949"
              :active-value="0" :inactive-value="1">
@@ -106,7 +110,7 @@
import OperaGoodsWindow from '@/components/business/OperaGoodsWindow'
import selectProduct from '@/components/business/selectProduct'
import ImportButton from '@/components/common/ImportButton'
import { brand, baseCategory, importExcel } from '@/api/system/common.js'
import { brand, baseCategory } from '@/api/system/common.js'
import { updateStatus, queryById, exportDoc } from '@/api/business/goods.js'
export default {
  name: 'Goods',
@@ -150,24 +154,25 @@
    this.getcategory()
  },
  methods: {
    handleSelectionChange(e) {
      let arr = e.map(item => item.id)
      this.ids = arr.join(',')
      this.idList = arr;
    },
    // handleSelectionChange(e) {
    //   let arr = e.map(item => item.id)
    //   this.ids = arr.join(',')
    //   this.idList = arr;
    // },
    // æ‰¹é‡ä¸Šä¸‹æž¶
    bulkOperation(type) {
      if (!this.ids) {
        this.$message.warning({ message: '至少选择一项内容' })
      if (this.tableData.selectedRows.length === 0) {
        this.$tip.warning('请至少选择一条数据')
        return
      }
      let idList = this.tableData.selectedRows.map(item => item.id)
      updateStatus({
        idList: this.idList,
        idList,
        status: type
      }).then(res => {
        this.$tip.apiSuccess('操作成功');
        // this.$message.success({ message:res.message })
        this.search()
        this.handlePageChange()
      })
    },
    downloadFile() {
@@ -194,8 +199,12 @@
        status: item.status
      }).then(res => {
        this.$tip.apiSuccess('更新成功')
      }).finally(() => {
        // this.search()
      })
        .catch (err => {
          this.$message.error(err)
        } )
      .finally(() => {
        this.handlePageChange()
      })
    },
    getbrand() {
platform/src/views/system/user.vue
@@ -33,15 +33,16 @@
        :data="tableData.list"
        :default-sort = "{prop: 'createTime', order: 'descending'}"
        stripe
        border
        @selection-change="handleSelectionChange"
        @sort-change="handleSortChange"
      >
        <el-table-column type="selection" width="55"></el-table-column>
        <el-table-column prop="avatar" label="头像" width="80px" class-name="table-column-avatar" fixed="left">
        <!-- <el-table-column prop="avatar" label="头像" width="80px" class-name="table-column-avatar" fixed="left">
          <template slot-scope="{row}">
            <img :src="row.avatar == null ? '/static/avatar/man.png' : row.avatar">
          </template>
        </el-table-column>
        </el-table-column> -->
        <el-table-column prop="realname" label="姓名" min-width="100px" fixed="left"></el-table-column>
        <el-table-column prop="username" label="用户名" min-width="120px"></el-table-column>
        <el-table-column prop="empNo" label="工号" sortable="custom" sort-by="EMP_NO" min-width="80px"></el-table-column>