zerp vor 2 Jahren
Ursprung
Commit
0fd935b5b4

+ 1 - 1
config/dev.env.js

@@ -1,5 +1,5 @@
 module.exports = {
   NODE_ENV: '"development"',
   ENV_CONFIG: '"dev"',
-  BASE_API: '"/"'
+  BASE_API: '""'
 }

+ 3 - 2
config/index.js

@@ -10,8 +10,9 @@ module.exports = {
         assetsPublicPath: '/',
         proxyTable: {
             '/': {
-                // target: 'http://47.108.151.62:80/pre', //后端接口地址     中间人运营平台
-                target: 'http://127.0.0.1:28080', //后端接口地址   
+                target: 'http://47.108.151.62:80/pre', //后端接口地址     中间人运营平台
+                // target: 'http://127.0.0.1:28080', //后端接口地址   
+                // target: 'http://192.168.3.8:7001', //后端接口地址   
                 changeOrigin: true, //是否跨域
                 pathRewrite: {
                     '^/': '/', //重写,

+ 2 - 2
src/App.vue

@@ -12,9 +12,9 @@ export default {
 
 <style >
 ::-webkit-scrollbar {
-  width: 7px; 
+  width: 7px;
   height: 7px;
- 
+
 }
 
 ::-webkit-scrollbar-thumb {

+ 4 - 5
src/api/bid.js

@@ -1,6 +1,5 @@
 import request from '@/utils/request'
 
-
 // 获取列表
 export function getTableList(parms) {
   return request({
@@ -45,8 +44,8 @@ export function getQueryDelete(parms) {
 // 下载
 export function loadCustomer(parms) {
   return request({
-      url: '/bidding/load',
-      method: 'get',
-      params:parms
+    url: '/bidding/load',
+    method: 'get',
+    params: parms
   })
-} 
+}

+ 36 - 30
src/api/record.js

@@ -1,45 +1,51 @@
 import request from '@/utils/request'
 
-//获取所有配置价格
-export function customerList(parms){
-    return request({
-        url:"/customer/page",
-        method:"get",
-        params:parms
-    })
+// 获取所有配置价格
+export function customerList(parms) {
+  return request({
+    url: '/customer/page',
+    method: 'get',
+    params: parms
+  })
 }
 
 // 删除配置价格
-export function deleteCustomer(id) {
-    return request({
-        url: '/customer/' + id,
-        method: 'delete',
-    })
+export function deleteCustomer(customerId,id) {
+  return request({
+    url: '/customer/'+customerId+'/' + id,
+    method: 'delete'
+  })
 }
 
-
 // 新增
 export function addCustomer(data) {
-    return request({
-        url: '/customer/add',
-        method: 'post',
-        data: data
-    })
-} 
+  return request({
+    url: '/customer/add',
+    method: 'post',
+    data: data
+  })
+}
 
 // 编辑
 export function editCustomer(data) {
-    return request({
-        url: '/customer',
-        method: 'put',
-        data: data
-    })
-} 
+  return request({
+    url: '/customer',
+    method: 'put',
+    data: data
+  })
+}
 // 编辑
 export function userList() {
-    return request({
-        url: '/customer/bidding',
-        method: 'get',
-    })
-} 
+  return request({
+    url: '/customer/bidding',
+    method: 'get'
+  })
+}
+// 角色
+export function userRoles() {
+  return request({
+    url: '/role/roles',
+    method: 'get'
+  })
+}
 

+ 4 - 5
src/api/tender.js

@@ -1,6 +1,5 @@
 import request from '@/utils/request'
 
-
 // 获取列表
 export function getTableList(parms) {
   return request({
@@ -37,8 +36,8 @@ export function getQueryAdd(parms) {
 // 下载
 export function loadCustomer(parms) {
   return request({
-      url: '/bidding/load',
-      method: 'get',
-      params:parms
+    url: '/bidding/load',
+    method: 'get',
+    params: parms
   })
-} 
+}

+ 68 - 61
src/api/user.js

@@ -2,110 +2,117 @@ import request from '@/utils/request'
 
 // 新增用户
 export function addUser(data) {
-    return request({
-        url: '/user',
-        method: 'post',
-        data: data
-    })
+  return request({
+    url: '/user',
+    method: 'post',
+    data: data
+  })
+}
+// 判断是否重复用户
+export function vailUserName(data) {
+  return request({
+    url: '/user/vailUserName?userName=' + data,
+    method: 'post',
+  })
 }
 
 // 获取客户信息
 export function getCustomerList() {
-    return request({
-        url: '/customer/info',
-        method: 'get',
-    })
+  return request({
+    url: '/customer/info',
+    method: 'get'
+  })
 }
 // 获取用户列表
 export function getUserList(parms) {
-    return request({
-        url: '/user',
-        method: 'get',
-        params: parms
-    })
+  return request({
+    url: '/user',
+    method: 'get',
+    params: parms
+  })
 }
 
 // 编辑用户
 export function editUser(data) {
-    return request({
-        url: '/user',
-        method: 'put',
-        data: data
-    })
+  return request({
+    url: '/user',
+    method: 'put',
+    data: data
+  })
 }
 
 // 重置密码
 export function restPass(id) {
-    return request({
-        url: '/user/' + id,
-        method: 'put'
-    })
+  return request({
+    url: '/user/' + id,
+    method: 'put'
+  })
 }
 
 // 删除用户
 export function deleteUser(id) {
-    return request({
-        url: '/user/' + id,
-        method: 'delete'
-    })
+  return request({
+    url: '/user/' + id,
+    method: 'delete'
+  })
 }
 
 // 获取用户个人信息
 export function getUserInfo() {
-    return request({
-        url: '/user/info',
-        method: 'get'
-    })
+  return request({
+    url: '/user/info',
+    method: 'get'
+  })
 }
 
 // 修改密码
 export function updatePass(parms) {
-    return request({
-        url: '/user/updatePass',
-        method: 'put',
-        params: parms
-    })
+  return request({
+    url: '/user/updatePass',
+    method: 'put',
+    params: parms
+  })
 }
 
 // 修改邮箱
 export function updateEmail(parms) {
-    return request({
-        url: '/user/updateEmail',
-        method: 'put',
-        params: parms
-    })
+  return request({
+    url: '/user/updateEmail',
+    method: 'put',
+    params: parms
+  })
 }
 
 // 发送邮箱验证码
 export function resetEmail(parms) {
-    return request({
-        url: '/user/sendMailCode',
-        method: 'post',
-        params: parms
-    })
+  return request({
+    url: '/user/sendMailCode',
+    method: 'post',
+    params: parms
+  })
 }
 
 // 发送短信验证码
 export function sendSms(phone) {
-    return request({
-        url: '/auth/sendCode/' + phone,
-        method: 'post'
-    })
+  return request({
+    url: '/auth/sendCode/' + phone,
+    method: 'post'
+  })
 }
 
 // 绑定用户
 export function bindUser(data) {
-    return request({
-        url: '/bind',
-        method: 'post',
-        data: data
-    })
+  return request({
+    url: '/bind',
+    method: 'post',
+    data: data
+  })
 }
 // 绑定用户
 export function registerUser(data) {
-    return request({
-        url: '/register',
-        method: 'post',
-        data: data
-    })
-}
+  return request({
+    url: '/register',
+    method: 'post',
+    data: data
+  })
+}

+ 95 - 95
src/utils/request.js

@@ -6,111 +6,111 @@ import { getToken } from '@/utils/auth'
 import { getTenant } from '@/utils/tenant'
 
 axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8'
-    // 创建axios实例
+// 创建axios实例
 const service = axios.create({
-        // axios中请求配置有baseURL选项,表示请求URL公共部分
-        baseURL: process.env.BASE_API,
-        // 超时
-        timeout: 30000
-    })
-    // request拦截器
+  // axios中请求配置有baseURL选项,表示请求URL公共部分
+  baseURL: process.env.BASE_API,
+  // 超时
+  timeout: 30000
+})
+// request拦截器
 service.interceptors.request.use(
-    config => {
-        if (getToken()) {
-            config.headers['Authorization'] = 'Bearer ' + getToken() // 让每个请求携带自定义token 请根据实际情况自行修改
-        }
-        if (getTenant()) {
-            config.headers['TENANT_ID'] = getTenant() // 租户ID
-        }
-        return config
-    },
-    error => {
-        console.log(error)
-        Promise.reject(error)
+  config => {
+    if (getToken()) {
+      config.headers['Authorization'] = 'Bearer ' + getToken() // 让每个请求携带自定义token 请根据实际情况自行修改
+    }
+    if (getTenant()) {
+      config.headers['TENANT_ID'] = getTenant() // 租户ID
     }
+    return config
+  },
+  error => {
+    console.log(error)
+    Promise.reject(error)
+  }
 )
 
 // response 拦截器
 service.interceptors.response.use(
 
-    response => {
-        const code = response.data.code
-        if (code === 401) {
-            MessageBox.confirm(
-                '登录状态已过期,您可以继续留在该页面,或者重新登录',
-                '系统提示', {
-                    confirmButtonText: '重新登录',
-                    cancelButtonText: '取消',
-                    type: 'warning'
-                }
-            ).then(() => {
-                store.dispatch('LogOut').then(() => {
-                    location.reload() // 为了重新实例化vue-router对象 避免bug
-                })
-            })
-        } else if (code !== 200) {
-            Notification.error({
-                title: response.data.msg,
-                duration: 1000
-            })
-            return Promise.reject('error')
-        } else {
-            return response
-        }
-    },
-    error => {
-        let code = 0
-        try {
-            code = error.response.status
-        } catch (e) {
-            if (error.toString().indexOf('Error: timeout') !== -1) {
-                Notification.error({
-                    title: '网络请求超时',
-                    duration: 2500
-                })
-                return Promise.reject(error)
-            }
-            if (error.toString().indexOf('Error: Network Error') !== -1) {
-                Notification.error({
-                    title: '网络请求错误',
-                    duration: 2500
-                })
-                return Promise.reject(error)
-            }
-        }
-        if (code === 504) {
-            Notification.error({
-                title: '服务器异常',
-                duration: 2500
-            })
-            return Promise.reject(error)
-        }
-        if (code === 401) {
-            MessageBox.confirm(
-                '登录状态已过期,您可以继续留在该页面,或者重新登录',
-                '系统提示', {
-                    confirmButtonText: '重新登录',
-                    cancelButtonText: '取消',
-                    type: 'warning'
-                }
-            ).then(() => {
-                store.dispatch('LogOut').then(() => {
-                    location.reload() // 为了重新实例化vue-router对象 避免bug
-                })
-            })
-        } else if (code === 403) {
-            router.push({ path: '/401' })
-        } else {
-            const errorMsg = error.response.data.message
-            if (errorMsg !== undefined) {
-                Notification.error({
-                    title: errorMsg,
-                    duration: 1000
-                })
-            }
+  response => {
+    const code = response.data.code
+    if (code === 401) {
+      MessageBox.confirm(
+        '登录状态已过期,您可以继续留在该页面,或者重新登录',
+        '系统提示', {
+          confirmButtonText: '重新登录',
+          cancelButtonText: '取消',
+          type: 'warning'
         }
+      ).then(() => {
+        store.dispatch('LogOut').then(() => {
+          location.reload() // 为了重新实例化vue-router对象 避免bug
+        })
+      })
+    } else if (code !== 200) {
+      Notification.error({
+        title: response.data.msg,
+        duration: 1000
+      })
+      return Promise.reject('error')
+    } else {
+      return response
+    }
+  },
+  error => {
+    let code = 0
+    try {
+      code = error.response.status
+    } catch (e) {
+      if (error.toString().indexOf('Error: timeout') !== -1) {
+        Notification.error({
+          title: '网络请求超时',
+          duration: 2500
+        })
+        return Promise.reject(error)
+      }
+      if (error.toString().indexOf('Error: Network Error') !== -1) {
+        Notification.error({
+          title: '网络请求错误',
+          duration: 2500
+        })
         return Promise.reject(error)
+      }
+    }
+    if (code === 504) {
+      Notification.error({
+        title: '服务器异常',
+        duration: 2500
+      })
+      return Promise.reject(error)
+    }
+    if (code === 401) {
+      MessageBox.confirm(
+        '登录状态已过期,您可以继续留在该页面,或者重新登录',
+        '系统提示', {
+          confirmButtonText: '重新登录',
+          cancelButtonText: '取消',
+          type: 'warning'
+        }
+      ).then(() => {
+        store.dispatch('LogOut').then(() => {
+          location.reload() // 为了重新实例化vue-router对象 避免bug
+        })
+      })
+    } else if (code === 403) {
+      router.push({ path: '/401' })
+    } else {
+      const errorMsg = error.response.data.message
+      if (errorMsg !== undefined) {
+        Notification.error({
+          title: errorMsg,
+          duration: 1000
+        })
+      }
     }
+    return Promise.reject(error)
+  }
 )
 
-export default service
+export default service

+ 1 - 2
src/views/admin/menu.vue

@@ -83,7 +83,6 @@
       width="40%"
       :visible.sync="dialogVisible"
       :close-on-click-modal="false"
-     
     >
       <el-form
         ref="dataForm"
@@ -384,7 +383,7 @@ export default {
 
     // 新增修改操作
     submitForm: function() {
-      this.$refs["dataForm"].validate((valid) => {
+      this.$refs['dataForm'].validate((valid) => {
         if (valid) {
           if (!this.isEditForm) {
             saveMenu(this.dataForm).then(response => {

+ 37 - 29
src/views/admin/user.vue

@@ -111,7 +111,7 @@
 
         <!-- 添加或修改对话框 -->
         <el-dialog :title="operation?'新增用户':'编辑用户'" :visible.sync="dialogFormVisible" :close-on-click-modal="false" center>
-          <el-form :model="dataForm" :rules="rules2" ref="ruleForm" label-width="80px" size="small" label-position="right">
+          <el-form ref="ruleForm" :model="dataForm" :rules="rules2" label-width="80px" size="small" label-position="right">
 
             <el-form-item label="用户名" :label-width="formLabelWidth" prop="username" required>
               <el-input v-model="dataForm.username" auto-complete="off" placeholder="请输入用户名" />
@@ -134,19 +134,19 @@
                 :current-change-handle="deptTreeCurrentChangeHandle"
               />
             </el-form-item>
-
-            <el-form-item label="公司" :label-width="formLabelWidth" prop="customerId" >
-                <el-select v-model="dataForm.customerId" clearable value-key="customerId" style="width: 100%" filterable placeholder="请选择公司名称" >
-                    <el-option
-                    v-for="item in customerNameList"
-                    :key="item.customerId"
-                    :label="item.customerName"
-                    :value="item.customerId">
-                  </el-option>
+<!-- 
+            <el-form-item label="公司" :label-width="formLabelWidth" prop="customerId">
+              <el-select v-model="dataForm.customerId" clearable value-key="customerId" style="width: 100%" filterable placeholder="请选择公司名称">
+                <el-option
+                  v-for="item in customerNameList"
+                  :key="item.customerId"
+                  :label="item.customerName"
+                  :value="item.customerId"
+                />
               </el-select>
-            </el-form-item>
+            </el-form-item> -->
 
-            <el-form-item label="角色" prop="roleList" label-width="120px" >
+            <el-form-item label="角色" prop="roleList" label-width="120px">
               <el-select v-model="dataForm.roleList" multiple placeholder="请选择" style="width: 100%;">
                 <el-option
                   v-for="item in roles"
@@ -180,7 +180,7 @@
 </template>
 
 <script>
-import { addUser, getUserList, editUser, deleteUser, restPass, registerUser,getCustomerList } from '@/api/user'
+import { addUser, getUserList, editUser, deleteUser, restPass, registerUser, getCustomerList,vailUserName } from '@/api/user'
 import { getRoleList } from '@/api/roles'
 import { getDept } from '@/api/dept'
 import PopupTreeInput from '@/components/PopupTreeInput'
@@ -202,6 +202,16 @@ export default {
         callback()
       }
     }
+    const userBack = (rule,value,callback) =>{
+      vailUserName(value).then((res)=>{
+        console.log(res,"userName")
+        if(res.data.data){
+        callback()
+        }else{
+        callback(new Error('用户名重复'))
+        }
+      })
+    }
     return {
       // 用户列表
       tableData: [],
@@ -218,6 +228,7 @@ export default {
         userName: ''
       },
       dataForm: {
+        
         username: '',
         avatar: '',
         deptId: '',
@@ -237,18 +248,15 @@ export default {
       loading: false,
       jobName: '',
       rules2: {
-        username: [{ required: true, message: '请输入用户名', trigger: 'blur' }, {
-          // pattern: /^[a-zA-Z0-9_]{4,8}$/,
-          // message: '以字母开头,长度在4-8之间, 只能包含字符、数字和下划线'
-        }],
+        username: [{ required: true, message: '请输入用户名', trigger: 'blur' }, { validator: userBack, trigger: 'blur' }],
         phone: [{ required: true, message: '请输入手机号', trigger: 'blur' }, { validator: checkTel, trigger: 'change' }],
-        roleList: [{ required: true, message: '请选择角色', trigger: 'blur',trigger: 'change'}],
+        roleList: [{ required: true, message: '请选择角色', trigger: 'blur', trigger: 'change' }],
         deptName: [{ required: true, message: '请选择部门', trigger: 'blur', trigger: 'change' }],
         email: [{ required: true, message: '请输入邮箱', trigger: 'blur' }, {
           pattern: /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/, message: '输入邮箱不合法'
         }]
       },
-      customerNameList:[]
+      customerNameList: []
 
     }
   },
@@ -259,11 +267,11 @@ export default {
     // 加载数据字典
     this.getDict('用户状态')
     // 获取客户名称
-    this.findCustomer()
+    // this.findCustomer()
   },
   methods: {
-    findCustomer(){
-      getCustomerList().then((res)=>{
+    findCustomer() {
+      getCustomerList().then((res) => {
         this.customerNameList = res.data.data
       })
     },
@@ -283,10 +291,10 @@ export default {
     },
     // 部门菜单树选中
     deptTreeCurrentChangeHandle(data) {
-      console.log(this.dataForm,"Data")
+      console.log(this.dataForm, 'Data')
       this.dataForm.deptId = data.deptId
       this.dataForm.deptName = data.name
-      console.log(this.dataForm,"Data1")
+      console.log(this.dataForm, 'Data1')
     },
     // 加载用户列表
     adminList: function() {
@@ -307,9 +315,9 @@ export default {
     },
     handleReset: function() {
       this.query = {
-        userName: '',
+        userName: ''
       }
-      this.deptId = ""
+      this.deptId = ''
       this.adminList()
     },
     // 添加
@@ -326,7 +334,7 @@ export default {
         lockFlag: '' + 0,
         roleList: []
       }
-      this.$refs["ruleForm"].resetFields();
+      this.$refs['ruleForm'].resetFields()
     },
     // 编辑
     handleEdit: function(row) {
@@ -424,7 +432,7 @@ export default {
       this.dataForm.roleList = userRoles
 
       console.log(this.dataForm)
-       this.$refs["ruleForm"].validate((valid) => {
+      this.$refs['ruleForm'].validate((valid) => {
         if (valid) {
           if (!this.operation) {
             // 编辑用户
@@ -462,7 +470,7 @@ export default {
             })
           }
         }
-       })
+      })
     },
     // 验证手机号
     checkMobile(str) {

+ 204 - 188
src/views/bid/index.vue

@@ -11,7 +11,7 @@
         size="small"
         class="filter-item"
       />
-      <el-button class="filter-item" size="small" type="primary" icon="el-icon-search" @click="handleFind" plain>搜索</el-button>
+      <el-button class="filter-item" size="small" type="primary" icon="el-icon-search" plain @click="handleFind">搜索</el-button>
       <el-button
         class="filter-item"
         size="small"
@@ -22,36 +22,41 @@
       </el-button>
     </div>
     <!--表格渲染-->
-    <el-table v-loading="loading" :data="data"  style="width: 100%;">
+    <el-table v-loading="loading" :data="data" style="width: 100%;">
+      <el-table-column label="序号" fixed="left" width="60" align="center">
+        <template slot-scope="scope">
+          <span>{{ scope.$index + 1 }}</span>
+        </template>
+      </el-table-column>
 
-      <el-table-column prop="title" label="标题" :show-overflow-tooltip="true"  width="250" align="center" />
+      <el-table-column prop="title" label="标题" :show-overflow-tooltip="true" width="250" align="center" />
 
-      <el-table-column label="状态"  align="center" width="100">
+      <el-table-column label="状态" align="center" width="100">
         <template slot-scope="scope">
           <el-tag v-if="scope.row.status ==1">进行中</el-tag>
-          <el-tag type="info" v-if="scope.row.status ==2">已结束</el-tag>
-          <el-tag type="danger" v-if="scope.row.status ==3">已作废</el-tag>
+          <el-tag v-if="scope.row.status ==2" type="info">已结束</el-tag>
+          <el-tag v-if="scope.row.status ==3" type="danger">已作废</el-tag>
         </template>
       </el-table-column>
 
-      <el-table-column prop="description" :show-overflow-tooltip="true" label="报价方式" width="100" align="center" >
+      <el-table-column prop="description" :show-overflow-tooltip="true" label="报价方式" width="100" align="center">
         <template slot-scope="scope">
-            <el-tag  color="#5783E6" style="border-color:#5783E6" effect="dark" v-if="scope.row.priceQuotes == 1">总价</el-tag>
-            <el-tag effect="dark" color="#82C497" style="border-color:#82C497" v-if="scope.row.priceQuotes == 2">单价</el-tag>
+          <el-tag v-if="scope.row.priceQuotes == 1" color="#5783E6" style="border-color:#5783E6" effect="dark">总价</el-tag>
+          <el-tag v-if="scope.row.priceQuotes == 2" effect="dark" color="#82C497" style="border-color:#82C497">单价</el-tag>
         </template>
       </el-table-column>
       <el-table-column prop="remarks" label="备注" :show-overflow-tooltip="true" align="center" />
-      <el-table-column prop="appendix" label="附件" align="center" width="100" >
+      <el-table-column prop="appendix" label="附件" align="center" width="100">
         <template slot-scope="scope">
-            <el-button type="text" @click="onLoad(scope.row.appendix)">下载</el-button>
+          <el-button type="text" @click="onLoad(scope.row.appendix)">下载</el-button>
         </template>
       </el-table-column>
-      <el-table-column prop="createTime" label="开始时间" align="center" width="160"/>
-      <el-table-column prop="endTime" label="截止时间" align="center" width="160"/>
+      <el-table-column prop="createTime" label="开始时间" align="center" width="160" />
+      <el-table-column prop="endTime" label="截止时间" align="center" width="160" />
 
-      <el-table-column label="操作" width="150"  fixed="right" align="center">
+      <el-table-column label="操作" width="150" fixed="right" align="center">
         <template slot-scope="scope">
-          <el-button slot="reference" type="text" icon="el-icon-edit" v-if="scope.row.status == 1" @click="handleEdit(scope.row)">编辑</el-button>
+          <el-button v-if="scope.row.status == 1" slot="reference" type="text" icon="el-icon-edit" @click="handleEdit(scope.row)">编辑</el-button>
           <el-popover
             :ref="scope.row.id"
             placement="bottom"
@@ -59,13 +64,13 @@
           >
             <p>此操作将作废该标,确定要作废吗?</p>
             <div style="text-align: right; margin: 0">
-              <el-button size="mini"  @click="$refs[scope.row.id].doClose()">取消</el-button>
+              <el-button size="mini" @click="$refs[scope.row.id].doClose()">取消</el-button>
               <el-button :loading="delLoading" type="primary" size="mini" @click="subDelete(scope.row.id)">确定
               </el-button>
             </div>
-            <el-button slot="reference" icon="el-icon-delete" type="text" v-if="scope.row.status == 1">作废</el-button>
+            <el-button v-if="scope.row.status == 1" slot="reference" icon="el-icon-delete" type="text">作废</el-button>
           </el-popover>
-            <el-button slot="reference" icon="el-icon-view" type="text" v-if="scope.row.status != 1" @click="handleView(scope.row)">投标详情</el-button>
+          <el-button v-if="scope.row.status != 1" slot="reference" icon="el-icon-view" type="text" @click="handleView(scope.row)">投标详情</el-button>
         </template>
       </el-table-column>
     </el-table>
@@ -73,13 +78,13 @@
     <!--分页-->
     <div class="pagination">
       <el-pagination
-         @size-change="handleSizeChange"
-         :current-page.sync="currentPage"
-          :page-sizes="[1,10, 20, 30, 50]"
+        :current-page.sync="currentPage"
+        :page-sizes="[1,10, 20, 30, 50]"
         :page-size="pageSize"
         layout="total, sizes, prev, pager, next, jumper"
         :total="total"
         background
+        @size-change="handleSizeChange"
         @current-change="handleCurrentChange"
       />
     </div>
@@ -89,19 +94,19 @@
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
         <el-form-item label="标题" prop="title">
           <div class="padding" style="width: 370px;">
-          <el-input v-model="form.title"  maxlength="200" show-word-limit placeholder="请输入标题" />
+            <el-input v-model="form.title" maxlength="200" show-word-limit placeholder="请输入标题" />
           </div>
         </el-form-item>
-        <el-form-item label="备注" prop="remarks" >
+        <el-form-item label="备注" prop="remarks">
           <el-input
+            v-model="form.remarks"
             type="textarea"
             style="width: 370px;"
             :autosize="{ minRows: 2, maxRows: 10}"
             placeholder="请输入内容"
             maxlength="500"
             show-word-limit
-            v-model="form.remarks">
-          </el-input>
+          />
         </el-form-item>
         <el-form-item label="附件" prop="appendix" class="is-required">
           <el-upload
@@ -113,21 +118,23 @@
             :on-remove="handleRemove"
             :before-remove="beforeRemove"
             :on-exceed="handleExceed"
+            :on-error="hanndleErr"
             :action="BASE_API+'/tender/upload'"
             list-type="text"
             :file-list="fileList"
-            multiple>
-            <i class="el-icon-upload"></i>
+            multiple
+          >
+            <i class="el-icon-upload" />
             <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
             <!-- <div class="el-upload__tip" slot="tip">只能上传jpg/png文件,且不超过500kb</div> -->
           </el-upload>
         </el-form-item>
         <el-form-item label="报价方式" prop="priceQuotes">
-            <el-radio v-model="form.priceQuotes" :label="1">总价</el-radio>
-            <el-radio v-model="form.priceQuotes" :label="2">单价</el-radio>
+          <el-radio v-model="form.priceQuotes" :label="1">总价</el-radio>
+          <el-radio v-model="form.priceQuotes" :label="2">单价</el-radio>
         </el-form-item>
         <el-form-item label="发布时间" prop="startTime">
-            <!-- <el-date-picker
+          <!-- <el-date-picker
             v-model="form.startTime"
             type="datetime"
             @change="oncustom"
@@ -147,112 +154,112 @@
             placeholder="截止日期"
              >
             </el-date-picker> -->
-            <el-date-picker
+          <el-date-picker
             v-model="bidDate"
             type="datetimerange"
             size="mini"
             range-separator="~"
-            @change="oncustom"
-             @clear="onClear"
             value-format="yyyy-MM-dd HH:mm:ss"
             :default-time="['00:00:00', '15:00:00']"
             start-placeholder="开始日期"
-            end-placeholder="结束日期">
-            </el-date-picker>
+            end-placeholder="结束日期"
+            @change="oncustom"
+            @clear="onClear"
+          />
         </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
-        <el-button  @click="dialog = false">取消</el-button>
+        <el-button @click="dialog = false">取消</el-button>
         <el-button :loading="buton" type="primary" @click="doSubmit">确认</el-button>
       </div>
     </el-dialog>
 
-  <!-- 详情 -->
-  <el-dialog :append-to-body="true" :visible.sync="viewDialog" title="投标详情" width="90%" center>
-     <el-table  center :data="Paramdata"  style="width: 100%;">
+    <!-- 详情 -->
+    <el-dialog :append-to-body="true" :visible.sync="viewDialog" title="投标详情" width="90%" center>
+      <el-table center :data="Paramdata" style="width: 100%;">
 
-      <el-table-column prop="customerName" label="客户名称" show-overflow-tooltip="true"  align="center"/>
+        <el-table-column prop="customerName" label="客户名称" show-overflow-tooltip="true" align="center" />
 
-      <el-table-column label="报价方式"  align="center">
-        <template slot-scope="scope">
-           <el-tag  color="#5783E6" style="border-color:#5783E6" effect="dark" v-if="scope.row.priceQuotes == 1">总价</el-tag>
-            <el-tag effect="dark" color="#82C497" style="border-color:#82C497" v-if="scope.row.priceQuotes == 2">单价</el-tag>
-        </template>
-      </el-table-column>
+        <el-table-column label="报价方式" align="center">
+          <template slot-scope="scope">
+            <el-tag v-if="scope.row.priceQuotes == 1" color="#5783E6" style="border-color:#5783E6" effect="dark">总价</el-tag>
+            <el-tag v-if="scope.row.priceQuotes == 2" effect="dark" color="#82C497" style="border-color:#82C497">单价</el-tag>
+          </template>
+        </el-table-column>
 
-      <el-table-column prop="price" :show-overflow-tooltip="true" label="报价金额" align="center" >
-         <template slot-scope="scope">
-           <div>
-             {{scope.row.price | toThousandFilter}}
-           </div>
-         </template>
-      </el-table-column>
-      <el-table-column prop="remarks" label="备注" :show-overflow-tooltip="true" align="center" />
-      <el-table-column prop="appendix" label="附件" align="center" width="100" >
-        <template slot-scope="scope">
+        <el-table-column prop="price" :show-overflow-tooltip="true" label="报价金额" align="center">
+          <template slot-scope="scope">
+            <div>
+              {{ scope.row.price | toThousandFilter }}
+            </div>
+          </template>
+        </el-table-column>
+        <el-table-column prop="remarks" label="备注" :show-overflow-tooltip="true" align="center" />
+        <el-table-column prop="appendix" label="附件" align="center" width="100">
+          <template slot-scope="scope">
             <!-- <el-link type="primary" :href="scope.row.appendix">查看</el-link> -->
             <el-button type="text" @click="onLoad(scope.row.appendix)">下载</el-button>
-        </template>
-      </el-table-column>
-      <el-table-column prop="createTime" label="投标时间" align="center"/>
-      <el-table-column prop="userName" label=" 投标帐号" align="center"/>
-      <el-table-column prop="status" label=" 投标结果" align="center" >
-         <template slot-scope="scope">
-           <el-tag type="warning" v-if="scope.row.status == 0">已提交</el-tag>
-          <el-tag type="success" v-if="scope.row.status == 1">已中标</el-tag>
-          <el-tag type="danger" v-if="scope.row.status == 2">未中标</el-tag>
-        </template>
-      </el-table-column>
+          </template>
+        </el-table-column>
+        <el-table-column prop="createTime" label="投标时间" align="center" />
+        <el-table-column prop="userName" label=" 投标帐号" align="center" />
+        <el-table-column prop="status" label=" 投标结果" align="center">
+          <template slot-scope="scope">
+            <el-tag v-if="scope.row.status == 0" type="warning">已提交</el-tag>
+            <el-tag v-if="scope.row.status == 1" type="success">已中标</el-tag>
+            <el-tag v-if="scope.row.status == 2" type="danger">未中标</el-tag>
+          </template>
+        </el-table-column>
 
-    </el-table>
-     <div class="pagination">
-      <el-pagination
-        :current-page.sync="param.page"
-        :page-size="param.size"
-        layout="total, sizes, prev, pager, next, jumper"
-        :total="total1"
-        :page-sizes="[10, 20, 30, 50]"
-        background
-        @size-change="handleSizeChangeParam"
-        @current-change="handleCurrentChangeParam"
-      />
-    </div>
+      </el-table>
+      <div class="pagination">
+        <el-pagination
+          :current-page.sync="param.page"
+          :page-size="param.size"
+          layout="total, sizes, prev, pager, next, jumper"
+          :total="total1"
+          :page-sizes="[10, 20, 30, 50]"
+          background
+          @size-change="handleSizeChangeParam"
+          @current-change="handleCurrentChangeParam"
+        />
+      </div>
       <div slot="footer" class="dialog-footer">
-        <el-button  @click="viewDialog = false">取消</el-button>
+        <el-button @click="viewDialog = false">取消</el-button>
         <el-button :loading="loading" type="primary" @click="viewDialog = false">确认</el-button>
       </div>
-  </el-dialog>
+    </el-dialog>
   </div>
 
 </template>
 
 <script>
-import { getTableList,getQueryId,getQueryAdd,getQueryEdit,getQueryDelete,loadCustomer } from '@/api/bid'
-
+import { getTableList, getQueryId, getQueryAdd, getQueryEdit, getQueryDelete, loadCustomer } from '@/api/bid'
+import { Notification, MessageBox } from 'element-ui'
 export default {
   data() {
-    const checkTel = (rule, value, callback)=>{
-     console.log(this.form.appendix)
-     console.log(value,"value")
-     if(this.form.appendix == null || this.form.appendix == ""){
-       callback(new Error("请选择附件"))
-       console.log("没过")
-     }else{
-       callback()
-       console.log("过")
-     }
+    const checkTel = (rule, value, callback) => {
+      console.log(this.form.appendix)
+      console.log(value, 'value')
+      if (this.form.appendix == null || this.form.appendix == '') {
+        callback(new Error('请选择附件'))
+        console.log('没过')
+      } else {
+        callback()
+        console.log('过')
+      }
     }
     return {
       form: {
       },
-      data:[],
-      fileList:[],
-      BASE_API:process.env.BASE_API,
-      dialog:false,
-      delLoading:false,
-      viewDialog:false,
-      loading:false,
-      isAdd:false,
+      data: [],
+      fileList: [],
+      BASE_API: process.env.BASE_API,
+      dialog: false,
+      delLoading: false,
+      viewDialog: false,
+      loading: false,
+      isAdd: false,
       currentPage: 1,
       pageSize: 10,
       total: 0, // 总数量
@@ -261,10 +268,10 @@ export default {
           { required: true, message: '标题不为空', trigger: 'blur' }
         ],
         priceQuotes: [
-          { required: true, message: "请选择报价方式", trigger: 'blur' }
+          { required: true, message: '请选择报价方式', trigger: 'blur' }
         ],
-         appendix: [
-           { validator: checkTel, trigger: 'change' }
+        appendix: [
+          { validator: checkTel, trigger: 'change' }
         ]
         // startTime: [
         //   { type:"array",required: true, message: '发布时间不为空', trigger: 'blur' }
@@ -278,14 +285,14 @@ export default {
         type: '',
         value: ''
       },
-      param:{
-        page:1,
-        size:10
+      param: {
+        page: 1,
+        size: 10
       },
-      total1:0,
-      Paramdata:[],
-      bidDate:[],
-      buton:false,
+      total1: 0,
+      Paramdata: [],
+      bidDate: [],
+      buton: false
     }
   },
   created() {
@@ -293,31 +300,30 @@ export default {
   },
   methods: {
     // 发布时间
-    oncustom(){
-
-console.log(this.bidDate)
+    oncustom() {
+      console.log(this.bidDate)
       if (this.bidDate != null) {
-          this.form.startTime = this.bidDate[0]
-            this.form.endTime = this.bidDate[1]
+        this.form.startTime = this.bidDate[0]
+        this.form.endTime = this.bidDate[1]
       }
     },
-    onClear(){
-      this.bidDate =[]
+    onClear() {
+      this.bidDate = []
       console.log(this.form)
     },
     // 下载
-    onLoad(row){
-        // const params = new URLSearchParams()
+    onLoad(row) {
+      // const params = new URLSearchParams()
       // params.append('path', row)
-      let a =document.createElement('a')
+      const a = document.createElement('a')
       // a.href= /bidding/load
-      let url = window.location.origin + process.env.BASE_API + "/bidding/load?path=" + encodeURIComponent(row)
-       a.href = url
-       a.click()
+      const url = window.location.origin + process.env.BASE_API + '/bidding/load?path=' + encodeURIComponent(row)
+      a.href = url
+      a.click()
     },
     // 搜索
-      handleFind: function() {
-        this.currentPage = 1
+    handleFind: function() {
+      this.currentPage = 1
       this.getDictData()
     },
     // 获取详情
@@ -327,9 +333,9 @@ console.log(this.bidDate)
       // params.append('current', this.currentPage)
       // params.append('size', this.pageSize)
       const data = {
-        page:this.currentPage,
-        size:this.pageSize,
-        title:this.query.value
+        page: this.currentPage,
+        size: this.pageSize,
+        title: this.query.value
       }
       getTableList(data).then(res => {
         console.log(res)
@@ -339,33 +345,46 @@ console.log(this.bidDate)
       })
     },
     // 文件移除的时候
-     handleRemove(file, fileList) {
-        this.form.appendix = ""
-        console.log(file, fileList,this.fileList,"移出");
-      },
-      // 文件状态改变时的钩子,添加文件、上传成功和上传失败时都会被调用
-      handleChange(file,fileList){
-        console.log(file,fileList,"上传")
-        if(file.response){
-          console.log(file.response,"file")
-          this.form.appendix=file.response.data
+    handleRemove(file, fileList) {
+      this.form.appendix = ''
+      console.log(file, fileList, this.fileList, '移出')
+    },
+    // 文件状态改变时的钩子,添加文件、上传成功和上传失败时都会被调用
+    handleChange(file, fileList) {
+      console.log(file, fileList, '上传')
+      if (file.response) {
+        console.log(file.response, 'file')
+        if (file.response.code == '200') {
+          this.form.appendix = file.response.data
+        } else {
+          Notification.error({
+            title: file.response.msg,
+            duration: 1000
+          })
+          this.fileList = []
         }
-      },
-      // 点击文件列表中已上传的文件时的钩子
-      handlePreview(file) {
-        console.log(file,"file1");
-        // window.location.href = file.url
-      },
-      handleExceed(files, fileList) {
-        this.$message.warning(`当前限制选择 1 个附件,本次选择了 ${files.length} 个文件`);
-      },
-      beforeRemove(file, fileList) {
-        return this.$confirm(`确定移除 ${ file.name }?`);
-      },
+      }
+    },
+    // 点击文件列表中已上传的文件时的钩子
+    handlePreview(file) {
+      console.log(file, 'file1')
+      // window.location.href = file.url
+    },
+    handleExceed(files, fileList) {
+      this.$message.warning(`当前限制选择 1 个附件,本次选择了 ${files.length} 个文件`)
+    },
+    hanndleErr(err, files, fileList) {
+      console.log(err, 'err')
+      console.log(files, 'err')
+      console.log(fileList, 'err')
+    },
+    beforeRemove(file, fileList) {
+      return this.$confirm(`确定移除 ${file.name}?`)
+    },
 
     // 字典名称提交动作
     doSubmit() {
-        console.log(this.form)
+      console.log(this.form)
       this.$refs['form'].validate((valid) => {
         console.log(valid)
         if (valid) {
@@ -373,18 +392,17 @@ console.log(this.bidDate)
             // 新增字典
             this.buton = true
             getQueryAdd(this.form).then((res) => {
-
               if (res.data.code === 200) {
-                  this.dialog = false
-              this.getDictData()
-              this.buton = false
+                this.dialog = false
+                this.getDictData()
+                this.buton = false
                 this.$message({ message: '操作成功', type: 'success' })
               } else {
                 this.$message({ message: res.data.msg, type: 'error' })
               }
-            
+
               this.$refs['form'].resetFields()
-            }).catch(err=>{
+            }).catch(err => {
               this.buton = false
             })
           } else {
@@ -421,60 +439,59 @@ console.log(this.bidDate)
       this.form = {}
       const end = new Date()
       const start = new Date()
-       end.setTime(start.getTime() + 3600 * 1000 * 24 * 1)
-       console.log(this.formatDate(end))
+      end.setTime(start.getTime() + 3600 * 1000 * 24 * 1)
+      console.log(this.formatDate(end))
       this.form.startTime = this.formatDate(start) + ' 00:00:00'
-       this.form.endTime = this.formatDate(end) + ' 15:00:00'
-      this.bidDate=[this.form.startTime,this.form.endTime]
+      this.form.endTime = this.formatDate(end) + ' 15:00:00'
+      this.bidDate = [this.form.startTime, this.form.endTime]
       this.form.appendix = null
       this.fileList = []
       this.dialog = true
-        if(this.$refs['form']){
-        this.$refs["form"].resetFields();
+      if (this.$refs['form']) {
+        this.$refs['form'].resetFields()
       }
-
     },
     // 编辑字典
     handleEdit: function(row) {
-      if(this.$refs['form']){
-      this.$refs["form"].resetFields();
+      if (this.$refs['form']) {
+        this.$refs['form'].resetFields()
       }
-      let data =JSON.parse(JSON.stringify(row)) 
+      const data = JSON.parse(JSON.stringify(row))
       this.form = data
-      this.bidDate = [data.createTime,data.endTime]
+      this.bidDate = [data.createTime, data.endTime]
       // this.form.
       // let name = data.appendix.lastIndexOf('/') ;
-      if(data.appendix){
-          let name = data.appendix.split("\\") ;
-          name = name.pop()
-          // let name = data.appendix.replace(/(.*\/)*([^.]+).*/ig, "$2");
-          this.fileList = [{name:name,url:data.appendix}]
+      if (data.appendix) {
+        let name = data.appendix.split('tender/')
+        name = name.pop()
+        // let name = data.appendix.replace(/(.*\/)*([^.]+).*/ig, "$2");
+        this.fileList = [{ name: name, url: data.appendix }]
       }
- 
+
       this.dialog = true
       this.isAdd = false
 
       console.log(data)
     },
     // 详情
-    handleView(row){
+    handleView(row) {
       this.param.tenderId = row.id
       this.param.page = 1
       this.getParam()
-      this.viewDialog =true
+      this.viewDialog = true
     },
-    getParam(){
-      let data = this.param
-      getQueryId(data).then((res)=>{
-        console.log(res.data.data.records,"")
+    getParam() {
+      const data = this.param
+      getQueryId(data).then((res) => {
+        console.log(res.data.data.records, '')
         this.Paramdata = res.data.data.records
         this.total1 = res.data.data.total
       })
     },
     // 删除操作
     subDelete(val) {
-      let data ={
-        id:val
+      const data = {
+        id: val
       }
       getQueryDelete(data).then(res => {
         if (res.data.code === 200) {
@@ -485,22 +502,21 @@ console.log(this.bidDate)
         console.log(err.response.data.message)
       })
       this.$refs[val].doClose()
-
     },
     // 换页
     handleCurrentChange: function(val) {
       this.currentPage = val
       this.getDictData()
     },
-    handleSizeChange(val){
+    handleSizeChange(val) {
       this.pageSize = val
       this.getDictData()
     },
-    handleCurrentChangeParam(val){
+    handleCurrentChangeParam(val) {
       this.param.page = val
       this.getParam()
     },
-    handleSizeChangeParam(val){
+    handleSizeChangeParam(val) {
       this.param.size = val
       this.getParam()
     }

+ 304 - 190
src/views/client/record.vue

@@ -2,8 +2,8 @@
   <div class="app-container">
     <!-- 查询和其他操作 -->
     <div>
-       <span style="font-size:14px">公司名称:</span>
-       <el-input
+      <span style="font-size:14px">公司名称:</span>
+      <el-input
         v-model="customerName"
         clearable
         placeholder="请输入公司名称"
@@ -12,19 +12,19 @@
         class="filter-item"
       />
 
-        <span style="font-size:14px">公司类型:</span>
-        <el-select style="margin-bottom:20px"  v-model="typeId"  size="medium" clearable value-key="areaId" filterable placeholder="请选择公司名称" >
-              <el-option
-              v-for="item in customerType"
-              :key="item.id"
-              :label="item.name"
-              :value="item.id">
-            </el-option>
-        </el-select>
-     
+      <span style="font-size:14px">公司类型:</span>
+      <el-select v-model="typeId" style="margin-bottom:20px" size="medium" clearable value-key="areaId" filterable placeholder="请选择公司名称">
+        <el-option
+          v-for="item in customerType"
+          :key="item.id"
+          :label="item.name"
+          :value="item.id"
+        />
+      </el-select>
+
       <el-button style=" width:90px;  " size="small" type="primary" icon="el-icon-search" @click="handleFind">查询
-        </el-button>
-        <el-button
+      </el-button>
+      <el-button
         class="filter-item"
         size="small"
         type="primary"
@@ -33,14 +33,19 @@
       >新增客户
       </el-button>
     </div>
-    <el-table v-loading="loading" :data="tableData" border style="width: 100%">
+    <el-table v-loading="loading" :data="tableData" style="width: 100%">
+      <el-table-column label="序号" fixed="left" width="60" align="center">
+        <template slot-scope="scope">
+          <span>{{ scope.$index + 1 }}</span>
+        </template>
+      </el-table-column>
 
-      <el-table-column label="公司编号"  align="center" :show-overflow-tooltip="true">
+      <!-- <el-table-column label="公司编号"  align="center" fixed="left"  :show-overflow-tooltip="true">
         <template slot-scope="scope">
           <span>{{ scope.row.customerId }}</span>
         </template>
-      </el-table-column>
-      <el-table-column label="客户名称" width="300" align="center" :show-overflow-tooltip="true">
+      </el-table-column> -->
+      <el-table-column label="客户名称" width="300" fixed="left" align="center" :show-overflow-tooltip="true">
         <template slot-scope="scope">
           <span>{{ scope.row.customerName }}</span>
         </template>
@@ -58,10 +63,10 @@
         </template>
       </el-table-column>
 
-      <el-table-column label="公司类型"  align="center" width="250" :show-overflow-tooltip="true">
+      <el-table-column label="公司类型" align="center" width="250" :show-overflow-tooltip="true">
         <template slot-scope="scope">
-          <span>{{scope.row.customerTypeDetails}}</span>
-           <!-- <span v-if="scope.row.customerTypeDetails === 1" size="small">有限责任公司(自然人独资)</span>
+          <span>{{ scope.row.customerTypeDetails }}</span>
+          <!-- <span v-if="scope.row.customerTypeDetails === 1" size="small">有限责任公司(自然人独资)</span>
             <span v-if="scope.row.customerTypeDetails === 2" size="small">有限责任公司(自然人投资或控股)</span>
             <span v-if="scope.row.customerTypeDetails === 3" size="small">股份有限公司</span>
             <span v-if="scope.row.customerTypeDetails === 4" size="small">有限合伙企业</span>
@@ -71,53 +76,52 @@
             <span v-if="scope.row.customerTypeDetails === 8" size="small">其他</span> -->
         </template>
       </el-table-column>
-        <el-table-column label="法定代表人" width="250" align="center" :show-overflow-tooltip="true">
+      <el-table-column label="法定代表人" width="250" align="center" :show-overflow-tooltip="true">
         <template slot-scope="scope">
-          <span>{{ scope.row.legalPerson}}</span>
+          <span>{{ scope.row.legalPerson }}</span>
         </template>
-        </el-table-column>
-        <el-table-column label="经营范围" width="250" align="center" :show-overflow-tooltip="true">
+      </el-table-column>
+      <el-table-column label="经营范围" width="250" align="center" :show-overflow-tooltip="true">
         <template slot-scope="scope">
-          <span>{{ scope.row.businessScope}}</span>
+          <span>{{ scope.row.businessScope }}</span>
         </template>
-        </el-table-column>
-        <el-table-column label="注册资本" width="250" align="center" :show-overflow-tooltip="true">
+      </el-table-column>
+      <el-table-column label="注册资本" width="250" align="center" :show-overflow-tooltip="true">
         <template slot-scope="scope">
-          <span>{{ scope.row.registeredCapital}}</span>
+          <span>{{ scope.row.registeredCapital }}</span>
         </template>
-        </el-table-column>
-        <el-table-column label="成立日期" width="250" align="center" :show-overflow-tooltip="true">
+      </el-table-column>
+      <el-table-column label="成立日期" width="250" align="center" :show-overflow-tooltip="true">
         <template slot-scope="scope">
-          <span>{{ scope.row.dateOfEstablishment}}</span>
+          <span>{{ scope.row.dateOfEstablishment }}</span>
         </template>
-        </el-table-column>
-        <el-table-column label="营业日期" width="250" align="center" :show-overflow-tooltip="true">
+      </el-table-column>
+      <el-table-column label="营业日期" width="250" align="center" :show-overflow-tooltip="true">
         <template slot-scope="scope">
-          <span>{{ scope.row.businessDate}}</span>
+          <span>{{ scope.row.businessDate }}</span>
         </template>
-        </el-table-column>
-        <el-table-column label="住所" width="250" align="center" :show-overflow-tooltip="true">
+      </el-table-column>
+      <el-table-column label="住所" width="250" align="center" :show-overflow-tooltip="true">
         <template slot-scope="scope">
-          <span>{{ scope.row.residence}}</span>
+          <span>{{ scope.row.residence }}</span>
         </template>
-        </el-table-column>
-        <el-table-column label="创建日期" width="250" align="center" :show-overflow-tooltip="true">
+      </el-table-column>
+      <el-table-column label="创建日期" width="250" align="center" :show-overflow-tooltip="true">
         <template slot-scope="scope">
-          <span>{{ scope.row.createDate}}</span>
+          <span>{{ scope.row.createDate }}</span>
         </template>
-        </el-table-column>
-        <el-table-column label="修改日期" width="250" align="center" :show-overflow-tooltip="true">
+      </el-table-column>
+      <el-table-column label="修改日期" width="250" align="center" :show-overflow-tooltip="true">
         <template slot-scope="scope">
-          <span>{{ scope.row.updateTime}}</span>
+          <span>{{ scope.row.updateTime }}</span>
         </template>
-        </el-table-column>
+      </el-table-column>
 
-  <!--     </div>
+      <!--     </div>
     </template>
   </el-table-column> -->
-      
 
-      <el-table-column label="操作" fixed="right" width="235" min-width="150" align="center" >
+      <el-table-column label="操作" fixed="right" width="235" min-width="150" align="center">
         <template slot-scope="scope">
           <!-- <el-button type="text" icon="el-icon-view"  @click="lookRecord(scope.row)">查看</el-button> -->
           <el-button type="text" icon="el-icon-edit" @click="handleEdit(scope.row)">编辑</el-button>
@@ -128,16 +132,16 @@
 
     <!--分页-->
     <div class="pagination">
-          <el-pagination
-          @size-change="handleSizeChange"
-          :popper-class="currentPage"
-          @current-change="handleCurrentChange"
-          :page-sizes="[10, 20, 30, 50]"
-          :page-size="pageSize"
-          layout="total, sizes, prev, pager, next, jumper"
-          background
-          :total="total">
-        </el-pagination>
+      <el-pagination
+        :popper-class="currentPage"
+        :page-sizes="[10, 20, 30, 50]"
+        :page-size="pageSize"
+        layout="total, sizes, prev, pager, next, jumper"
+        background
+        :total="total"
+        @size-change="handleSizeChange"
+        @current-change="handleCurrentChange"
+      />
       <!-- <el-pagination
         :current-page.sync="currentPage"
         :page-sizes="[10, 20, 30, 50]"
@@ -149,10 +153,10 @@
       /> -->
     </div>
 
-     <!-- 新增修改界面 -->
+    <!-- 新增修改界面 -->
     <el-dialog
       :title="isEditForm ? '编辑' : '新增'"
-      width="45%"
+      width="85%"
       :visible.sync="dialogVisible"
       :close-on-click-modal="false"
     >
@@ -165,57 +169,139 @@
         style="text-align:left;"
         @keyup.enter.native="submitForm()"
       >
-        <el-form-item  label="客户名称" prop="customerName"  :label-width="formLabelWidth">
-          <el-input style="width:65%"  v-model="dataForm.customerName" placeholder="请输入客户名称" />
-        </el-form-item>
-        <el-form-item   label="手机" prop="phone"  :label-width="formLabelWidth">
-          <el-input style="width:65%"  v-model="dataForm.phone" placeholder="请输入手机" />
-        </el-form-item>
-        <el-form-item label="邮箱" prop="email" :label-width="formLabelWidth">
-          <el-input style="width:65%" v-model="dataForm.email" placeholder="请输入邮箱" />
-        </el-form-item>
-        <el-form-item label="公司类型" prop="type" :label-width="formLabelWidth">
-         <el-select style="width:65%" v-model="dataForm.type"  size="medium" clearable value-key="areaId" filterable placeholder="请选择公司类型" >
-              <el-option
-              v-for="item in customerType"
-              :key="item.id"
-              :label="item.name"
-              :value="item.id">
-            </el-option>
-        </el-select>
-        </el-form-item>
-        <el-form-item label="法定代表人" prop="legalPerson" :label-width="formLabelWidth">
-          <el-input style="width:65%" v-model="dataForm.legalPerson" placeholder="请输入法人" />
-        </el-form-item>
-        <el-form-item label="经营范围" prop="businessScope" :label-width="formLabelWidth">
-          <el-input style="width:65%" v-model="dataForm.businessScope" placeholder="请输入经营范围" />
-        </el-form-item>
-        <el-form-item label="注册资本" prop="registeredCapital" :label-width="formLabelWidth">
-          <el-input style="width:65%" v-model="dataForm.registeredCapital" placeholder="请输入注册资本" />
-        </el-form-item>
-        <el-form-item label="住所" prop="residence" :label-width="formLabelWidth">
-          <el-input style="width:65%" v-model="dataForm.residence" placeholder="请输入住所" />
-        </el-form-item>
-        <el-form-item label="成立日期" prop="dateOfEstablishment" :label-width="formLabelWidth">
-          <el-date-picker
-            v-model="dataForm.dateOfEstablishment"
-            type="date"
-            style="width:65%" 
-            format="yyyy-MM-dd"
-            value-format="yyyy-MM-dd"
-            placeholder="选择开始日期时间"
-          />
-        </el-form-item>
-        <el-form-item label="营业日期" prop="businessDate" :label-width="formLabelWidth">
-          <el-date-picker
-            v-model="dataForm.businessDate"
-            type="date"
-            style="width:65%" 
-            format="yyyy-MM-dd"
-            value-format="yyyy-MM-dd"
-            placeholder="选择结束日期时间"
-          />
-        </el-form-item>
+        <el-card shadow="never">
+          <!-- <el-card  shadow="hover" > -->
+          <div slot="header" class="clearfix">
+            <span class="topClass">客户基本信息</span>
+          </div>
+          <el-row :gutter="20">
+          <el-col :span="6" :xs="24" :sm="12" :md="12" :lg="8">
+                  <el-form-item label="客户名称" prop="customerName" :label-width="formLabelWidth">
+                    <el-input v-model="dataForm.customerName" style="width:100%" placeholder="请输入客户名称" />
+                  </el-form-item>
+          </el-col>
+          <el-col :span="6" :xs="24" :sm="12" :md="12" :lg="8">
+                  <el-form-item label="手机" prop="phone" :label-width="formLabelWidth">
+                    <el-input v-model="dataForm.phone"  style="width:100%" placeholder="请输入手机" />
+                  </el-form-item>
+          </el-col>
+           <el-col :span="6" :xs="24" :sm="12" :md="12" :lg="8">
+                      <el-form-item label="邮箱" prop="email" :label-width="formLabelWidth">
+                        <el-input v-model="dataForm.email" style="width:100%"  placeholder="请输入邮箱" />
+                      </el-form-item>
+                  </el-col>
+          </el-row>
+          <el-row :gutter="20">
+              <el-col :span="6" :xs="24" :sm="12" :md="12" :lg="8">
+                  <el-form-item label="公司类型" prop="type" :label-width="formLabelWidth">
+                    <el-select v-model="dataForm.type" style="width:100%"  clearable value-key="areaId" filterable placeholder="请选择公司类型">
+                      <el-option
+                        v-for="item in customerType"
+                        :key="item.id"
+                        :label="item.name"
+                        :value="item.id"
+                      />
+                    </el-select>
+                  </el-form-item>
+              </el-col>
+              <el-col :span="6" :xs="24" :sm="12" :md="12" :lg="8">
+                <el-form-item label="法定代表人" prop="legalPerson" :label-width="formLabelWidth">
+                  <el-input v-model="dataForm.legalPerson" style="width:100%" placeholder="请输入法人" />
+                </el-form-item>
+              </el-col>
+              <el-col :span="6" :xs="24" :sm="12" :md="12" :lg="8">
+                 <el-form-item label="经营范围" prop="businessScope" :label-width="formLabelWidth">
+                    <el-input v-model="dataForm.businessScope" style="width:100%" placeholder="请输入经营范围" />
+                  </el-form-item>
+              </el-col>
+          </el-row>
+           <el-row :gutter="20">
+              <el-col :span="6" :xs="24" :sm="12" :md="12" :lg="8">
+                 <el-form-item label="注册资本" prop="registeredCapital" :label-width="formLabelWidth">
+                    <el-input v-model="dataForm.registeredCapital" style="width:100%" placeholder="请输入注册资本" />
+                  </el-form-item>
+              </el-col>
+              <el-col :span="6" :xs="24" :sm="12" :md="12" :lg="8">
+                 <el-form-item label="住所" prop="residence" :label-width="formLabelWidth">
+                    <el-input v-model="dataForm.residence" style="width:100%" placeholder="请输入住所" />
+                  </el-form-item>
+              </el-col>
+              <el-col :span="6" :xs="24" :sm="12" :md="12" :lg="8">
+                  <el-form-item label="成立日期" prop="dateOfEstablishment" :label-width="formLabelWidth">
+                    <el-date-picker
+                      v-model="dataForm.dateOfEstablishment"
+                      type="date"
+                      style="width:100%"
+                      format="yyyy-MM-dd"
+                      value-format="yyyy-MM-dd"
+                      placeholder="选择开始日期时间"
+                    />
+                  </el-form-item>
+              </el-col>
+          </el-row>
+           <el-row :gutter="20">
+              <el-col :span="6" :xs="24" :sm="12" :md="12" :lg="8">
+                  <el-form-item label="营业日期" prop="businessDate" :label-width="formLabelWidth">
+                    <el-date-picker
+                      v-model="dataForm.businessDate"
+                      style="width:100%"
+                      type="date"
+                      format="yyyy-MM-dd"
+                      value-format="yyyy-MM-dd"
+                      placeholder="选择结束日期时间"
+                    />
+                  </el-form-item>
+              </el-col>
+              <el-col :span="6" :xs="24" :sm="12" :md="12" :lg="8">
+              </el-col>
+              <el-col :span="6" :xs="24" :sm="12" :md="12" :lg="8">
+              </el-col>
+          </el-row>
+           <el-row :gutter="20">
+              <el-col :span="6" :xs="24" :sm="12" :md="12" :lg="8">
+              </el-col>
+              <el-col :span="6" :xs="24" :sm="12" :md="12" :lg="8">
+              </el-col>
+              <el-col :span="6" :xs="24" :sm="12" :md="12" :lg="8">
+              </el-col>
+          </el-row>
+
+        <!-- 
+       
+       
+       
+      
+       -->
+        </el-card>
+
+         <el-card shadow="never">
+          <!-- <el-card  shadow="hover" > -->
+          <div slot="header" class="clearfix">
+            <span class="topClass">用户信息</span>
+          </div>
+          <el-row :gutter="20">
+              <el-col :span="6" :xs="24" :sm="12" :md="12" :lg="8">
+                 <el-form-item label="用户名" prop="userName" :label-width="formLabelWidth">
+                    <el-input v-model="dataForm.userName" style="width:100%" placeholder="请输入用户名" />
+                  </el-form-item>
+              </el-col>
+              <el-col :span="6" :xs="24" :sm="12" :md="12" :lg="8">
+                 <el-form-item label="角色" prop="roleList" label-width="120px">
+                    <el-select v-model="dataForm.roleList" :multiple-limit="1" value-key="roleName" multiple placeholder="请选择角色" style="width: 100%;">
+                      <el-option
+                        v-for="item in roles"
+                        :key="item.roleId"
+                        :label="item.roleName"
+                        :value="item"
+                      />
+                    </el-select>
+                  </el-form-item>
+              </el-col>
+              <el-col :span="6" :xs="24" :sm="12" :md="12" :lg="8">
+              </el-col>
+          </el-row>
+          
+         </el-card>
       </el-form>
       <span slot="footer" class="dialog-footer">
         <el-button :size="size" @click="dialogVisible = false">取消</el-button>
@@ -223,19 +309,18 @@
       </span>
     </el-dialog>
 
-
   </div>
 </template>
 
 <script>
-import {Listarea,} from '@/api/dataForm'
-import { customerList,addCustomer,editCustomer,deleteCustomer} from '@/api/record'
+import { Listarea } from '@/api/dataForm'
+import { customerList, addCustomer, editCustomer, deleteCustomer,userRoles } from '@/api/record'
 import { parseTime } from '@/utils/index'
-import { getUserInfo} from '@/api/user'
+import { getUserInfo,vailUserName } from '@/api/user'
 
 export default {
   data() {
-     const checkTel = (rule, value, callback) => {
+    const checkTel = (rule, value, callback) => {
       if (value === '') {
         callback(new Error('请输入手机号码'))
       } else if (!this.checkMobile(value)) {
@@ -243,31 +328,41 @@ export default {
       } else {
         callback()
       }
+    }
+        const userBack = (rule,value,callback) =>{
+      vailUserName(value).then((res)=>{
+        console.log(res,"userName")
+        if(res.data.data){
+        callback()
+        }else{
+        callback(new Error('用户名重复'))
+        }
+      })
     }
     return {
       size: 'small',
       tableData: [],
-      priceData:[],
-      customerName:"",
-      typeId:"",
-      customerType:[
-        {id:1,name:"有限责任公司(自然人独资)"},
-        {id:2,name: "有限责任公司(自然人投资或控股)"},
-        {id:3,name: "股份有限公司"},
-        {id:4,name: "有限合伙企业"},
-        {id:5,name: "外商独资公司"},
-        {id:6,name: "个人独资企业"},
-        {id:7,name: "国有独资公司"},
-        {id:8,name: "其他"}
+      priceData: [],
+      customerName: '',
+      typeId: '',
+      customerType: [
+        { id: 1, name: '有限责任公司(自然人独资)' },
+        { id: 2, name: '有限责任公司(自然人投资或控股)' },
+        { id: 3, name: '股份有限公司' },
+        { id: 4, name: '有限合伙企业' },
+        { id: 5, name: '外商独资公司' },
+        { id: 6, name: '个人独资企业' },
+        { id: 7, name: '国有独资公司' },
+        { id: 8, name: '其他' }
 
       ],
-      areaList:[],
+      areaList: [],
       query: {
         name: ''
       },
-      formLabelWidth: '120px',
+      formLabelWidth: '90px',
       isEditForm: false,
-      currentPage: "1",
+      currentPage: '1',
       pageSize: 10,
       total: 0, // 总数量
       dataForm: {
@@ -275,20 +370,24 @@ export default {
       // 表单校验
       dataRule: {
         customerName: [
-          { required: true, message: "请输入客户名称", trigger: "blur" },
+          { required: true, message: '请输入客户名称', trigger: 'blur' }
         ],
         phone: [
-          { required: true, message: "请输入手机号", trigger: "blur" },
-          { validator: checkTel, trigger: "change" },
+          { required: true, message: '请输入手机号', trigger: 'blur' },
+          { validator: checkTel, trigger: 'change' }
+        ],
+        userName:[
+          { required: true, message: '请输入用户名', trigger: 'blur' }, { validator: userBack, trigger: 'blur' }
         ],
+        roleList: [{ required: true, message: '请选择角色', trigger: 'blur'}],
         email: [
-          { required: true, message: "请输入邮箱", trigger: "blur" },
+          { required: true, message: '请输入邮箱', trigger: 'blur' },
           {
             pattern:
               /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/,
-            message: "输入邮箱不合法",
-          },
-        ],
+            message: '输入邮箱不合法'
+          }
+        ]
         // type: [
         //   { required: true, message: "请选择用户类型", trigger: "change" },
         // ],
@@ -298,13 +397,14 @@ export default {
       },
       loading: false,
       dialogVisible: false,
-
+      roles:[]
 
     }
   },
   created() {
     this.getTenantList()
-    console.log("res")
+    this.onRoles()
+    console.log('res')
   },
   methods: {
     parseTime,
@@ -319,32 +419,38 @@ export default {
         // console.log("code")
         console.log(response)
         this.loading = false
-        this.tableData = response.data.data.records;
-        console.log("1"+ response.data.data.records)
-        this.total = response.data.data.total;
+        this.tableData = response.data.data.records
+        console.log('1' + response.data.data.records)
+        this.total = response.data.data.total
       })
     },
- // 验证手机号
+    onRoles(){
+      userRoles().then((res)=>{
+        console.log(res)
+        this.roles = res.data.data
+      })
+    },
+    // 验证手机号
     checkMobile(str) {
       const reg = /^1[3456789]\d{9}$/
       return reg.test(str)
     },
 
     handleFind: function() {
-      this.currentPage="1"
+      this.currentPage = '1'
       this.getTenantList()
     },
-    handleSizeChange:function(val){
-      this.pageSize=val
+    handleSizeChange: function(val) {
+      this.pageSize = val
       this.getTenantList()
     },
     // 换页
     handleCurrentChange: function(val) {
-      let page=val.toString()
+      const page = val.toString()
       this.currentPage = page
       this.getTenantList()
     },
-    //查看
+    // 查看
     // lookRecord:function(row){
     //     this.lookCord=row
     //     this.dialogVisible = true
@@ -355,57 +461,56 @@ export default {
       this.isEditForm = false
       this.dialogVisible = true
       this.dataForm = {}
-      if(this.$refs['dataForm']){
-      this.$refs["dataForm"].resetFields();
+      if (this.$refs['dataForm']) {
+        this.$refs['dataForm'].resetFields()
       }
     },
     // 编辑界面
     handleEdit: function(row) {
       this.isEditForm = true
       this.dialogVisible = true
-      this.dataForm = JSON.parse(JSON.stringify(row)) 
-      if(this.$refs['dataForm']){
-      this.$refs["dataForm"].resetFields();
+      this.dataForm = JSON.parse(JSON.stringify(row))
+      if (this.$refs['dataForm']) {
+        this.$refs['dataForm'].resetFields()
       }
     },
-    //删除
-    handleDelete(row,index){
-  
-        this.$confirm('此操作将删除该公司, 是否继续?', '提示', {
-            confirmButtonText: '确定',
-            cancelButtonText: '取消',
-            type: 'warning'
-        })
-            .then(() => {
-              deleteCustomer(row.customerId).then(response => {
-                if (response.data.code === 200) {
-                  this.$message({
-                    type: 'success',
-                    message: '操作成功'
-                  })
-              this.getTenantList()
-                } else {
-                  this.$message({
-                    type: 'error',
-                    message: response.data.msg
-                  })
-                }
+    // 删除
+    handleDelete(row, index) {
+      this.$confirm('此操作将删除该公司, 是否继续?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      })
+        .then(() => {
+          deleteCustomer(row.customerId,row.userId).then(response => {
+            if (response.data.code === 200) {
+              this.$message({
+                type: 'success',
+                message: '操作成功'
               })
-            })
-            .catch(() => {
+              this.getTenantList()
+            } else {
               this.$message({
-                type: 'info',
-                message: '已取消删除'
+                type: 'error',
+                message: response.data.msg
               })
-            })
-     
+            }
+          })
+        })
+        .catch(() => {
+          this.$message({
+            type: 'info',
+            message: '已取消删除'
+          })
+        })
     },
-    
-    submitEditForm(){
-       this.$refs['dataForm'].validate((valid) => {
+
+    submitEditForm() {
+      console.log(this.dataForm)
+      this.$refs['dataForm'].validate((valid) => {
         if (valid) {
           if (this.isEditForm) {
-                // 更新字典
+            // 更新字典
             editCustomer(this.dataForm).then((res) => {
               if (res.data.code === 200) {
                 this.$message({ message: '操作成功', type: 'success' })
@@ -416,7 +521,7 @@ export default {
               this.getTenantList()
             })
           } else {
-             // 新增字典
+            // 新增字典
             addCustomer(this.dataForm).then((res) => {
               if (res.data.code === 200) {
                 this.$message({ message: '操作成功', type: 'success' })
@@ -436,8 +541,7 @@ export default {
 }
 </script>
 
-
-<style scoped>
+<style scoped lang="scss">
    .el-dropdown-link {
     cursor: pointer;
     color: #1282f3;
@@ -448,6 +552,16 @@ export default {
   .el-scrollbar__wrap {
    overflow-y: hidden;
 }
-</style>
 
+.el-card {
+  border: 0px solid #fff;
+  .topClass{
+    font-weight: 600;
+    font-size: 17px;
+  }
+}
+/deep/.el-card__body {
+  padding: 20px 10px 0 10px !important;
+}
+</style>
 

+ 20 - 21
src/views/client/user.vue

@@ -2,10 +2,9 @@
   <div class="app-container">
     <!-- 表格 -->
 
-
     <div class="flex">
       <!-- <div v-for="(item,index) in tableData" :key="index" style="width:50%;padding:10px;"> -->
-      <div   style="padding:10px;">
+      <div style="padding:10px;">
         <table class="table" border>
           <tr>
             <td align="right" class="column"><span>客户名称:</span></td>
@@ -25,35 +24,35 @@
             <td align="left" class="item">{{ item.email }}</td>
             <td align="right" class="column"><span>公司类型:</span></td>
             <!-- <td align="left" class="item">{{ item.type }}</td> -->
-            <td align="left" class="item" v-if="item.type === 1" size="small">有限责任公司(自然人独资)</td>
-            <td align="left" class="item" v-if="item.type === 2" size="small">有限责任公司(自然人投资或控股)</td>
-            <td align="left" class="item" v-if="item.type === 3" size="small">股份有限公司</td>
-            <td align="left" class="item" v-if="item.type === 4" size="small">有限合伙企业</td>
-            <td align="left" class="item" v-if="item.type === 5" size="small">外商独资公司</td>
-            <td align="left" class="item" v-if="item.type === 6" size="small">个人独资企业</td>
-            <td align="left" class="item" v-if="item.type === 7" size="small">国有独资公司</td>
-            <td align="left" class="item" v-if="item.type === 8" size="small">其他</td> 
+            <td v-if="item.type === 1" align="left" class="item" size="small">有限责任公司(自然人独资)</td>
+            <td v-if="item.type === 2" align="left" class="item" size="small">有限责任公司(自然人投资或控股)</td>
+            <td v-if="item.type === 3" align="left" class="item" size="small">股份有限公司</td>
+            <td v-if="item.type === 4" align="left" class="item" size="small">有限合伙企业</td>
+            <td v-if="item.type === 5" align="left" class="item" size="small">外商独资公司</td>
+            <td v-if="item.type === 6" align="left" class="item" size="small">个人独资企业</td>
+            <td v-if="item.type === 7" align="left" class="item" size="small">国有独资公司</td>
+            <td v-if="item.type === 8" align="left" class="item" size="small">其他</td>
             <!-- <td v-if="item.status==2" align="left" class="item">暂停</td>
             <td v-if="item.status==1" align="left" class="item">正常</td> -->
           </tr>
           <tr>
             <td align="right" class="column"><span>经营范围:</span></td>
-            <td align="left" class="item">{{ item.businessScope}}</td>
+            <td align="left" class="item">{{ item.businessScope }}</td>
             <td align="right" class="column"><span>注册资本:</span></td>
-            <td align="left" class="item">{{ item.registeredCapital}}</td>
+            <td align="left" class="item">{{ item.registeredCapital }}</td>
           </tr>
-        
+
           <tr>
             <td align="right" class="column"><span>成立日期:</span></td>
             <td align="left" class="item">{{ item.dateOfEstablishment }}</td>
             <td align="right" class="column"><span>营业日期:</span></td>
             <td align="left" class="item">{{ item.businessDate }}</td>
           </tr>
-           <tr>
+          <tr>
             <td align="right" class="column"><span>创建时间:</span></td>
-            <td align="left" class="item">{{item.createDate}}</td>
+            <td align="left" class="item">{{ item.createDate }}</td>
             <td align="right" class="column"><span>修改时间:</span></td>
-            <td align="left" class="item">{{item.updateTime}}</td>
+            <td align="left" class="item">{{ item.updateTime }}</td>
           </tr>
           <tr>
             <td align="right" class="column"><span>住所:</span></td>
@@ -81,13 +80,13 @@ export default {
       body: {
         size: 20,
         current: 1
-      },
+      }
       // total: 25
     }
   },
   created() {
     this.getData()
-    console.log("商户后台")
+    console.log('商户后台')
   },
   methods: {
     // 请求数据
@@ -104,11 +103,11 @@ export default {
       })
     },
     // 分页
-    handleSizeChange: function (val) {
+    handleSizeChange: function(val) {
       this.body.size = val
       console.log(this.body.size, 'size')
     },
-    handleCurrentChange: function (val) {
+    handleCurrentChange: function(val) {
       this.body.current = val
       console.log(this.body.current)
     }
@@ -121,7 +120,7 @@ export default {
   /* display: flex; */
   flex-direction: row;
   width: 100%;
- 
+
   font-size: 14px;
   flex-wrap: wrap;
 }

+ 10 - 10
src/views/index/index.vue

@@ -1,4 +1,4 @@
- <template>
+<template>
   <div class="wel-contailer">
     <div class="banner-text">
       <!-- <div style="text-align: center">
@@ -11,17 +11,17 @@
         <img src="https://img.shields.io/badge/spring--boot-2.1.6.RELEASE-green.svg" alt="spring-boot">
         <img src="https://img.shields.io/badge/security-5.1.5-blue.svg" alt="security">
         <img src="https://img.shields.io/badge/mybatis--plus-3.1.2-blue.svg" alt="mybatis-plus">
-      </span> 
+      </span>
       <br>-->
-  <div class="app-container">
+      <div class="app-container">
 
-    <div class="filter-container" style="margin: 300px 0 300px 0;">
-        <img src="../../assets/avatar/cnrhVkzwxjPwAaCfPbdc.png" height="100" width="100" alt="系统logo">
-        <h2>欢迎进入招标管理平台</h2>
-    </div>
-  </div>
-      <!-- <span> 
-        <el-collapse v-model="activeNames"> 
+        <div class="filter-container" style="margin: 300px 0 300px 0;">
+          <img src="../../assets/avatar/cnrhVkzwxjPwAaCfPbdc.png" height="100" width="100" alt="系统logo">
+          <h2>欢迎进入招标管理平台</h2>
+        </div>
+      </div>
+      <!-- <span>
+        <el-collapse v-model="activeNames">
           <el-collapse-item title="火焰科技平台" name="1">
             <div>基于微信公众号配置充值</div>
             <div>mpzhe800 / mpweb / mpyuemo / mpzhongtong / mpwangwei</div>

+ 4 - 4
src/views/login/index.vue

@@ -26,9 +26,9 @@
                 v-model="loginForm.username"
                 placeholder="账号"
                 name="username"
-                @keyup.enter.native="handleLogin"
                 type="text"
                 autocomplete="off"
+                @keyup.enter.native="handleLogin"
               >
                 <i slot="prefix" class="">
                   <svg-icon icon-class="user1" />
@@ -266,9 +266,9 @@ export default {
   created() {
     // this.refreshCaptcha()
     // this.socialLogin()
-    let array=[{a:1},{a:2},{a:3},{a:4},{a:5}]
-    let ary=array.map(res=>{
-       return res.a
+    const array = [{ a: 1 }, { a: 2 }, { a: 3 }, { a: 4 }, { a: 5 }]
+    const ary = array.map(res => {
+      return res.a
     })
     // console.log(Math.max(ary))
   },

+ 144 - 144
src/views/onOrder/dataForm.vue

@@ -1,32 +1,45 @@
 <template>
-   <!-- 优惠卷管理 -->
+  <!-- 优惠卷管理 -->
   <div class="app-container">
     <!-- 查询和其他操作 -->
     <div class="filter-container display" style="margin: 10px 0 10px 0;font-size:16px;color:#666666">
       <div>
-       <span >公司名称:</span>
-        <el-select style="margin-right:60px" @focus="oncityList" v-model="customerName"  size="medium" clearable value-key="areaId" filterable placeholder="请选择公司名称" >
-              <el-option
-              v-for="item in areaList"
-              :key="item.customerId"
-              :label="item.linkmanName"
-              :value="item.customerId">
-            </el-option>
+        <span>公司名称:</span>
+        <el-select v-model="customerName" style="margin-right:60px" size="medium" clearable value-key="areaId" filterable placeholder="请选择公司名称" @focus="oncityList">
+          <el-option
+            v-for="item in areaList"
+            :key="item.customerId"
+            :label="item.linkmanName"
+            :value="item.customerId"
+          />
         </el-select>
       </div>
 
       <div>
         <span>下单时间:</span>
 
-            <el-date-picker type="datetime"  placeholder="选择开始日期时间"  v-model="beginTime" 
-            :clearable="false" default-time="00:00:00" value-format="yyyy-MM-dd HH:mm:ss"  style="width: 200px;"></el-date-picker>
-
+        <el-date-picker
+          v-model="beginTime"
+          type="datetime"
+          placeholder="选择开始日期时间"
+          :clearable="false"
+          default-time="00:00:00"
+          value-format="yyyy-MM-dd HH:mm:ss"
+          style="width: 200px;"
+        />
 
         <span class="line" style="padding:0px 10px 0px 10px">-</span>
 
-            <el-date-picker type="datetime" placeholder="选择结束日期时间" v-model="endTime" 
-            :clearable="false" value-format="yyyy-MM-dd HH:mm:ss"  default-time="23:59:59" style="width: 200px;" ></el-date-picker>
-     
+        <el-date-picker
+          v-model="endTime"
+          type="datetime"
+          placeholder="选择结束日期时间"
+          :clearable="false"
+          value-format="yyyy-MM-dd HH:mm:ss"
+          default-time="23:59:59"
+          style="width: 200px;"
+        />
+
         <!-- <el-date-picker
           type="datetimerange"
           style="margin-right:60px"
@@ -39,26 +52,23 @@
           :default-time="['00:00:00']">
         </el-date-picker> -->
       </div>
-    <!-- <span style="margin-left:50px;">支付时间:</span>
-    <el-date-picker    
+      <!-- <span style="margin-left:50px;">支付时间:</span>
+    <el-date-picker
       v-model="value2"
       type="datetimerange"
       start-placeholder="开始日期"
       end-placeholder="结束日期"
       :clearable="false"
-      value-format="yyyy-MM-dd HH:mm:ss"      
+      value-format="yyyy-MM-dd HH:mm:ss"
       @change="enddate(value2)"
       :default-time="['00:00:00']">
     </el-date-picker> -->
 
-     
-
-        <el-button style="margin-left:20px; width:90px;  " size="small" type="primary" icon="el-icon-search" @click="handleFind">查询
-        </el-button>
-        <el-button style="width:90px; " size="small" type="primary" icon="el-icon-search" @click="handempty">清空
-        </el-button>
+      <el-button style="margin-left:20px; width:90px;  " size="small" type="primary" icon="el-icon-search" @click="handleFind">查询
+      </el-button>
+      <el-button style="width:90px; " size="small" type="primary" icon="el-icon-search" @click="handempty">清空
+      </el-button>
 
-      
     </div>
 
     <el-table v-loading="loading" :data="tableData" border style="width: 100%">
@@ -68,15 +78,15 @@
         </template>
       </el-table-column>
 
-      <el-table-column label="公司名称"  align="center">
+      <el-table-column label="公司名称" align="center">
         <template slot-scope="scope">
-          <span>{{scope.row.customerName}}</span>
+          <span>{{ scope.row.customerName }}</span>
         </template>
       </el-table-column>
-      
+
       <el-table-column label="面额" align="center">
         <template slot-scope="scope">
-          <span>{{scope.row.flowAmount}}</span>
+          <span>{{ scope.row.flowAmount }}</span>
         </template>
       </el-table-column>
 
@@ -86,49 +96,45 @@
         </template>
       </el-table-column> -->
 
-      <el-table-column label="归属地"  align="center">
+      <el-table-column label="归属地" align="center">
         <template slot-scope="scope">
-          <span>{{scope.row.mobileHome}}</span>
+          <span>{{ scope.row.mobileHome }}</span>
         </template>
       </el-table-column>
 
-      <el-table-column label="手机号"  show-overflow-tooltip align="center">
+      <el-table-column label="手机号" show-overflow-tooltip align="center">
         <template slot-scope="scope">
           <span>{{ scope.row.usedMobile }}</span>
         </template>
       </el-table-column>
 
-      <el-table-column label="状态"  align="center">
+      <el-table-column label="状态" align="center">
         <template slot-scope="scope">
-          <span>{{scope.row.gwStatus}}</span>
+          <span>{{ scope.row.gwStatus }}</span>
         </template>
       </el-table-column>
 
-     
-
-    <el-table-column label="下单时间"  align="center">
+      <el-table-column label="下单时间" align="center">
         <template slot-scope="scope">
-          <span>{{ scope.row.limitedDate}}</span>
+          <span>{{ scope.row.limitedDate }}</span>
         </template>
       </el-table-column>
 
-
-
     </el-table>
 
     <!--分页-->
     <div class="pagination">
-          <el-pagination
-          current-page.sync="currentPage"
-          @size-change="handleSizeChange"
-          :current-page="currentPage"
-          @current-change="handleCurrentChange"
-          :page-sizes="[10, 20, 30, 50]"
-          :page-size="pageSize"
-          layout="total, sizes, prev, pager, next, jumper"
-          background
-          :total="total">
-        </el-pagination>
+      <el-pagination
+        current-page.sync="currentPage"
+        :current-page="currentPage"
+        :page-sizes="[10, 20, 30, 50]"
+        :page-size="pageSize"
+        layout="total, sizes, prev, pager, next, jumper"
+        background
+        :total="total"
+        @size-change="handleSizeChange"
+        @current-change="handleCurrentChange"
+      />
       <!-- <el-pagination
         :current-page.sync="currentPage"
         :page-sizes="[10, 20, 30, 50]"
@@ -140,34 +146,33 @@
       /> -->
     </div>
 
-   
   </div>
 </template>
 
 <script>
 import { partList } from '@/api/work'
-import { getList,Listarea} from '@/api/dataForm'
+import { getList, Listarea } from '@/api/dataForm'
 import { parseTime } from '@/utils/index'
-import { getUserInfo} from '@/api/user'
+import { getUserInfo } from '@/api/user'
 
 export default {
   data() {
     return {
       size: 'small',
       tableData: [],
-      customerName:"",
-      limitedDate:"",
-      value2:"",
-      status:"",
-      appId:"",
-      phone:"",
-      orderBeginTime: "",
-      orderEndTime: "",
-      orderPayBeginTime: "",
-      orderPayEndTime: "",
-      orderId:"",
-      reaDesName:"",
-      areaDesName:"",
+      customerName: '',
+      limitedDate: '',
+      value2: '',
+      status: '',
+      appId: '',
+      phone: '',
+      orderBeginTime: '',
+      orderEndTime: '',
+      orderPayBeginTime: '',
+      orderPayEndTime: '',
+      orderId: '',
+      reaDesName: '',
+      areaDesName: '',
       query: {
         name: ''
       },
@@ -186,32 +191,32 @@ export default {
         label: 'name',
         children: 'children'
       },
-      applyTime:null,
+      applyTime: null,
       dataForm: {},
       loading: false,
       dialogVisible: false,
       editLoading: false,
-      userId:"",
-      type:"",
-      areaList:[],   //搜索区域的下拉信息
-      house:[],     //搜索驿站下拉信息
-      sohouse:"",
-      beginTime:"",
-      endTime:""
+      userId: '',
+      type: '',
+      areaList: [], // 搜索区域的下拉信息
+      house: [], // 搜索驿站下拉信息
+      sohouse: '',
+      beginTime: '',
+      endTime: ''
     }
   },
   created() {
-    let nowDate = new Date()
-  let date = {
-    year: nowDate.getFullYear(),
-    month: nowDate.getMonth() + 1,
-    date: nowDate.getDate()
-  }
-  let systemTime = date.year + '-' + date.month + '-' + date.date
-  this.beginTime = systemTime + " 00:00:00"
-  this.endTime = systemTime + " 23:59:59"
+    const nowDate = new Date()
+    const date = {
+      year: nowDate.getFullYear(),
+      month: nowDate.getMonth() + 1,
+      date: nowDate.getDate()
+    }
+    const systemTime = date.year + '-' + date.month + '-' + date.date
+    this.beginTime = systemTime + ' 00:00:00'
+    this.endTime = systemTime + ' 23:59:59'
     // this.beginTime=new Date(new Date(new Date().toLocaleDateString()).getTime());
-    // this.endTime= new Date(new Date(new Date().toLocaleDateString()).getTime() + 24 * 60 * 60 * 1000 - 1),  
+    // this.endTime= new Date(new Date(new Date().toLocaleDateString()).getTime() + 24 * 60 * 60 * 1000 - 1),
     this.findUserInfo()
     // this.getpartList()
   },
@@ -232,94 +237,94 @@ export default {
       // params.append("phoneNumber",this.phone)
       params.append('current', this.currentPage)
       params.append('size', this.pageSize)
-      params.append("userId",this.userId)
+      params.append('userId', this.userId)
       // params.append("areaId",this.areaDesName)
       // params.append("courierId",this.reaDesName)
-    //   params.append('name', this.query.name)
+      //   params.append('name', this.query.name)
       getList(params).then(response => {
         this.loading = false
-        this.tableData = response.data.data.records;
+        this.tableData = response.data.data.records
         // console.log("1"+ JSON.stringify(response.data.data.records))
-        this.total = response.data.data.total;
+        this.total = response.data.data.total
       })
     },
-     // 加载用户个人信息
+    // 加载用户个人信息
     findUserInfo: function() {
       getUserInfo().then((res) => {
       //  this.dataForm.userId.push(res.data.data.userId)
-      this.userId=res.data.data.userId
-      this.type=res.data.data.type
-      this.getTenantList()
+        this.userId = res.data.data.userId
+        this.type = res.data.data.type
+        this.getTenantList()
       })
     },
-    //获取公司数据
-    oncityList(){
+    // 获取公司数据
+    oncityList() {
       const params = new URLSearchParams()
       params.append('userId', this.userId)
       params.append('type', this.type)
-      Listarea(params).then(res=>{
-        this.areaList=res.data.data
+      Listarea(params).then(res => {
+        this.areaList = res.data.data
       })
     },
 
-     //驿站
-    onhouse(userid,type,areaId){ 
+    // 驿站
+    onhouse(userid, type, areaId) {
     //   let id=areaId
     //   console.log(id)
       const params = new URLSearchParams()
-      params.append('areaId',areaId)
-      datahouse(userid,type,params).then(res=>{
-        this.house=res.data.data
+      params.append('areaId', areaId)
+      datahouse(userid, type, params).then(res => {
+        this.house = res.data.data
       })
     },
-  
-    //订单时间
-    begindate(val){
-        this.orderBeginTime=val[0]
-        this.orderEndTime=val[1]
+
+    // 订单时间
+    begindate(val) {
+      this.orderBeginTime = val[0]
+      this.orderEndTime = val[1]
     },
-    enddate(val){
-        console.log(val)
+    enddate(val) {
+      console.log(val)
     },
-    handempty(){
-      this.customerName=""
-      this.beginTime=""
-      this.endTime=""
+    handempty() {
+      this.customerName = ''
+      this.beginTime = ''
+      this.endTime = ''
       this.getTenantList()
     },
     // 查找
     handleFind: function() {
       this.handleCurrentChange(1)
-      // this.currentPage=1  
+      // this.currentPage=1
       // this.getTenantList()
     },
-    dateform:function(val){
-        let str = val.toString();
-        let a = str.substring(0, 4);
-        let b = str.substr(4, 2)
-        let c = str.substr(6, 2)
-        let d = str.substr(8, 2)
-        let e = str.substr(10, 2)
-        let f = str.substr(12, 2)
-        return a + "-" + b + "-" + c + " " + d + ":" + e + ":" + f
+    dateform: function(val) {
+      const str = val.toString()
+      const a = str.substring(0, 4)
+      const b = str.substr(4, 2)
+      const c = str.substr(6, 2)
+      const d = str.substr(8, 2)
+      const e = str.substr(10, 2)
+      const f = str.substr(12, 2)
+      return a + '-' + b + '-' + c + ' ' + d + ':' + e + ':' + f
     },
-    //查看
-    lookdataForm:function(row){
-        // console.log("我在点击查看")
-        lookOrder({
-        orderId:row.orderId
+    // 查看
+    lookdataForm: function(row) {
+      // console.log("我在点击查看")
+      lookOrder({
+        orderId: row.orderId
       }).then(response => {
-        this.dataForm = response.data.data 
-        this.dataForm.orderTime=this.dateform(this.dataForm.orderTime)
-        this.dataForm.completeTime=this.dateform(this.dataForm.completeTime)
-        this.dataForm.wxTime=this.dateform(this.dataForm.wxTime)
+        this.dataForm = response.data.data
+        this.dataForm.orderTime = this.dateform(this.dataForm.orderTime)
+        this.dataForm.completeTime = this.dateform(this.dataForm.completeTime)
+        this.dataForm.wxTime = this.dateform(this.dataForm.wxTime)
       })
-      
-        // this.dataForm=info
-        this.dialogVisible = true
+
+      // this.dataForm=info
+      this.dialogVisible = true
     },
-     handleSizeChange:function(val){
-      this.pageSize=val
+    handleSizeChange: function(val) {
+      this.pageSize = val
       this.getTenantList()
     },
     // 换页
@@ -329,16 +334,14 @@ export default {
     },
 
     // 退单
-  
-  
+
     submitEditForm: function() {
-     
+
     }
   }
 }
 </script>
 
-
 <style scoped>
     .display{
       /* border:1px solid red; */
@@ -352,7 +355,4 @@ export default {
       /* padding-top: 20px; */
     }
 </style>>
-  
-
-
 

+ 6 - 2
src/views/sys/dict.vue

@@ -25,8 +25,12 @@
       </el-button>
     </div>
     <!--表格渲染-->
-    <el-table v-loading="loading" :data="data" border style="width: 100%;">
-
+    <el-table v-loading="loading" :data="data" style="width: 100%;">
+      <el-table-column label="序号" width="60" align="center">
+        <template slot-scope="scope">
+          <span>{{ scope.$index + 1 }}</span>
+        </template>
+      </el-table-column>
       <el-table-column prop="dictName" label="字典名称" />
       <el-table-column prop="dictCode" label="字典编码" />
       <el-table-column prop="description" :show-overflow-tooltip="true" label="描述" />

+ 1 - 1
src/views/sys/log.vue

@@ -14,7 +14,7 @@
       <el-button class="filter-item" type="primary" icon="el-icon-search" size="small" @click="handleFind">查找</el-button>
     </div>
 
-    <el-table v-loading="loading" :data="tableData" border style="width: 100%">
+    <el-table v-loading="loading" :data="tableData" style="width: 100%">
       <el-table-column type="selection" />
 
       <el-table-column label="序号" width="60" align="center">

+ 170 - 157
src/views/tender/index.vue

@@ -11,52 +11,56 @@
         size="small"
         class="filter-item"
       />
-      <el-button class="filter-item" size="small" type="primary" icon="el-icon-search"  @click="handleFind" plain>搜索</el-button>
-    </div> 
+      <el-button class="filter-item" size="small" type="primary" icon="el-icon-search" plain @click="handleFind">搜索</el-button>
+    </div>
     <!--表格渲染-->
-    <el-table v-loading="loading" :data="data"  style="width: 100%;">
+    <el-table v-loading="loading" :data="data" style="width: 100%;">
+      <el-table-column label="序号" fixed="left" width="60" align="center">
+        <template slot-scope="scope">
+          <span>{{ scope.$index + 1 }}</span>
+        </template>
+      </el-table-column>
 
-       <el-table-column prop="title" label="标题" align="center" :show-overflow-tooltip="true"/>
+      <el-table-column prop="title" label="标题" align="center" :show-overflow-tooltip="true" />
 
       <el-table-column label="状态" width="100" align="center">
         <template slot-scope="scope">
           <el-tag v-if="scope.row.tenderStatus ==1">进行中</el-tag>
-          <el-tag type="info" v-if="scope.row.tenderStatus ==2">已结束</el-tag>
-          <el-tag type="danger" v-if="scope.row.tenderStatus ==3">已作废</el-tag>
+          <el-tag v-if="scope.row.tenderStatus ==2" type="info">已结束</el-tag>
+          <el-tag v-if="scope.row.tenderStatus ==3" type="danger">已作废</el-tag>
         </template>
       </el-table-column>
 
-       <el-table-column label="结果" width="100" align="center">
+      <el-table-column label="结果" width="100" align="center">
         <template slot-scope="scope">
           <!-- {{scope.row.bidding.status}} -->
-          <el-tag type="info" v-if="scope.row.status == null">未参与</el-tag>
-          <el-tag type="warning" v-if="scope.row.status == 0">已提交</el-tag>
-          <el-tag type="success" v-if="scope.row.status == 1">已中标</el-tag>
-          <el-tag type="danger" v-if="scope.row.status == 2">未中标</el-tag>
+          <el-tag v-if="scope.row.status == null" type="info">未参与</el-tag>
+          <el-tag v-if="scope.row.status == 0" type="warning">已提交</el-tag>
+          <el-tag v-if="scope.row.status == 1" type="success">已中标</el-tag>
+          <el-tag v-if="scope.row.status == 2" type="danger">未中标</el-tag>
         </template>
       </el-table-column>
 
-      <el-table-column prop="description" width="100" :show-overflow-tooltip="true" label="报价方式" align="center" >
+      <el-table-column prop="description" width="100" :show-overflow-tooltip="true" label="报价方式" align="center">
         <template slot-scope="scope">
-            <el-tag  color="#5783E6" style="border-color:#5783E6" effect="dark" v-if="scope.row.priceQuotes == 1">总价</el-tag>
-            <el-tag effect="dark" color="#82C497" style="border-color:#82C497" v-if="scope.row.priceQuotes == 2">单价</el-tag>
+          <el-tag v-if="scope.row.priceQuotes == 1" color="#5783E6" style="border-color:#5783E6" effect="dark">总价</el-tag>
+          <el-tag v-if="scope.row.priceQuotes == 2" effect="dark" color="#82C497" style="border-color:#82C497">单价</el-tag>
         </template>
       </el-table-column>
-      <el-table-column prop="remarks" label="备注" align="center" :show-overflow-tooltip="true"/>
-      <el-table-column prop="appendix" width="100" label="附件" align="center" >
+      <el-table-column prop="remarks" label="备注" align="center" :show-overflow-tooltip="true" />
+      <el-table-column prop="appendix" width="100" label="附件" align="center">
         <template slot-scope="scope">
-            <!-- <el-link type="primary" :href="scope.row.appendix">查看</el-link> -->
-            <el-button type="text" @click="onLoad(scope.row.appendix)">下载</el-button>
+          <!-- <el-link type="primary" :href="scope.row.appendix">查看</el-link> -->
+          <el-button type="text" @click="onLoad(scope.row.appendix)">下载</el-button>
         </template>
       </el-table-column>
       <el-table-column prop="endTime" width="160" label="截止时间" align="center" />
 
-
       <el-table-column label="操作" width="250" align="center">
         <template slot-scope="scope">
-          <el-button slot="reference" type="text" v-if="scope.row.tenderStatus == 1 && scope.row.status == null" icon="el-icon-edit" @click="handleAdd(scope.row)">投标</el-button>
-          <el-button slot="reference" type="text" v-if="scope.row.tenderStatus == 1 && scope.row.status == 0"  icon="el-icon-edit" @click="handleEdit(scope.row)">改标</el-button>
-            <el-button slot="reference" icon="el-icon-view" type="text" v-if="scope.row.tenderStatus == 2 || scope.row.tenderStatus == 3" @click="handleView(scope.row)">投标详情</el-button>
+          <el-button v-if="scope.row.tenderStatus == 1 && scope.row.status == null" slot="reference" type="text" icon="el-icon-edit" @click="handleAdd(scope.row)">投标</el-button>
+          <el-button v-if="scope.row.tenderStatus == 1 && scope.row.status == 0" slot="reference" type="text" icon="el-icon-edit" @click="handleEdit(scope.row)">改标</el-button>
+          <el-button v-if="scope.row.tenderStatus == 2 || scope.row.tenderStatus == 3" slot="reference" icon="el-icon-view" type="text" @click="handleView(scope.row)">投标详情</el-button>
         </template>
       </el-table-column>
     </el-table>
@@ -77,25 +81,25 @@
     <!--新增-->
     <el-dialog :append-to-body="true" :visible.sync="dialog" :title="isAdd ? '投标' : '修标'" width="50%">
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-      <el-form-item label="报价方式">
-            <!-- <el-radio v-model="form.priceQuotes" disabled :label="1">总价</el-radio>
+        <el-form-item label="报价方式">
+          <!-- <el-radio v-model="form.priceQuotes" disabled :label="1">总价</el-radio>
             <el-radio v-model="form.priceQuotes" disabled :label="2">单价</el-radio> -->
-            <el-tag v-if="form.priceQuotes == 1">总价</el-tag>
-            <el-tag v-if="form.priceQuotes == 2">单价</el-tag>
+          <el-tag v-if="form.priceQuotes == 1">总价</el-tag>
+          <el-tag v-if="form.priceQuotes == 2">单价</el-tag>
         </el-form-item>
         <el-form-item label="报价" prop="price">
-          <el-input v-model.number="form.price" style="width: 250px;" placeholder="请输入金额" ><template slot="append">元</template></el-input>
+          <el-input v-model.number="form.price" style="width: 250px;" placeholder="请输入金额"><template slot="append">元</template></el-input>
         </el-form-item>
-         <el-form-item label="备注" prop="remarks" >
+        <el-form-item label="备注" prop="remarks">
           <el-input
+            v-model="form.remarks"
             type="textarea"
             style="width: 370px;"
             :autosize="{ minRows: 2, maxRows: 10}"
-             maxlength="500"
-             show-word-limit
+            maxlength="500"
+            show-word-limit
             placeholder="请输入内容"
-            v-model="form.remarks">
-          </el-input>
+          />
         </el-form-item>
         <el-form-item label="附件" :required="true" prop="appendix">
           <el-upload
@@ -110,129 +114,130 @@
             :action="BASE_API+'/bidding/upload'"
             list-type="text"
             :file-list="fileList"
-            multiple>
-            <i class="el-icon-upload"></i>
+            multiple
+          >
+            <i class="el-icon-upload" />
             <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
             <!-- <div class="el-upload__tip" slot="tip">只能上传jpg/png文件,且不超过500kb</div> -->
           </el-upload>
         </el-form-item>
-        
+
       </el-form>
       <div slot="footer" class="dialog-footer">
-        <el-button  @click="dialog = false">取消</el-button>
+        <el-button @click="dialog = false">取消</el-button>
         <el-button :loading="loading" type="primary" @click="doSubmit">确认</el-button>
       </div>
     </el-dialog>
 
+    <!-- 详情 -->
+    <el-dialog :append-to-body="true" :visible.sync="viewDialog" title="投标详情" width="90%" center>
+      <el-table center :data="Paramdata" style="width: 100%;">
 
- <!-- 详情 -->
-  <el-dialog :append-to-body="true" :visible.sync="viewDialog" title="投标详情" width="90%" center>
-     <el-table  center :data="Paramdata"  style="width: 100%;">
+        <el-table-column prop="customerName" label="客户名称" align="center" />
 
-      <el-table-column prop="customerName" label="客户名称" align="center"/>
+        <el-table-column label="报价方式" align="center">
+          <template slot-scope="scope">
+            <el-tag v-if="scope.row.priceQuotes == 1" color="#5783E6" style="border-color:#5783E6" effect="dark">总价</el-tag>
+            <el-tag v-if="scope.row.priceQuotes == 2" effect="dark" color="#82C497" style="border-color:#82C497">单价</el-tag>
+          </template>
+        </el-table-column>
 
-      <el-table-column label="报价方式"  align="center">
-        <template slot-scope="scope">
-           <el-tag  color="#5783E6" style="border-color:#5783E6" effect="dark" v-if="scope.row.priceQuotes == 1">总价</el-tag>
-            <el-tag effect="dark" color="#82C497" style="border-color:#82C497" v-if="scope.row.priceQuotes == 2">单价</el-tag>
-        </template>
-      </el-table-column>
-
-      <el-table-column prop="price" :show-overflow-tooltip="true" label="报价金额" align="center" />
-      <el-table-column prop="remarks" label="备注" :show-overflow-tooltip="true" align="center" />
-      <el-table-column prop="appendix" label="附件" align="center" width="100" >
-        <template slot-scope="scope">
+        <el-table-column prop="price" :show-overflow-tooltip="true" label="报价金额" align="center" />
+        <el-table-column prop="remarks" label="备注" :show-overflow-tooltip="true" align="center" />
+        <el-table-column prop="appendix" label="附件" align="center" width="100">
+          <template slot-scope="scope">
             <!-- <el-link type="primary" :href="scope.row.appendix">查看</el-link> -->
             <el-button type="text" @click="onLoad(scope.row.appendix)">下载</el-button>
-        </template>
-      </el-table-column>
-      <el-table-column prop="createTime" label="投极时间" align="center"/>
-      <el-table-column prop="userName" label=" 投标帐号" align="center"/>
-      <el-table-column prop="status" label=" 投标结果" align="center" >
-         <template slot-scope="scope">
-           <el-tag type="info" v-if="scope.row.status == null">未参与</el-tag>
-          <el-tag type="warning" v-if="scope.row.status == 0">已提交</el-tag>
-          <el-tag type="success" v-if="scope.row.status == 1">已中标</el-tag>
-          <el-tag type="danger" v-if="scope.row.status == 2">未中标</el-tag>
+          </template>
+        </el-table-column>
+        <el-table-column prop="createTime" label="投极时间" align="center" />
+        <el-table-column prop="userName" label=" 投标帐号" align="center" />
+        <el-table-column prop="status" label=" 投标结果" align="center">
+          <template slot-scope="scope">
+            <el-tag v-if="scope.row.status == null" type="info">未参与</el-tag>
+            <el-tag v-if="scope.row.status == 0" type="warning">已提交</el-tag>
+            <el-tag v-if="scope.row.status == 1" type="success">已中标</el-tag>
+            <el-tag v-if="scope.row.status == 2" type="danger">未中标</el-tag>
           <!-- <span v-if="scope.row.status == 0">已提交</span>
           <span v-if="scope.row.status == 1">中标</span>
           <span v-if="scope.row.status == 2">未中标</span> -->
-        </template>
-      </el-table-column>
+          </template>
+        </el-table-column>
 
-    </el-table>
-     <div class="pagination">
-      <el-pagination
-        :current-page.sync="param.page"
-        :page-size="param.size"
-        layout="total, sizes, prev, pager, next, jumper"
-        :total="total1"
-        :page-sizes="[10, 20, 30, 50]"
-        background
-        @size-change="handleSizeChangeParam"
-        @current-change="handleCurrentChangeParam"
-      />
-    </div>
+      </el-table>
+      <div class="pagination">
+        <el-pagination
+          :current-page.sync="param.page"
+          :page-size="param.size"
+          layout="total, sizes, prev, pager, next, jumper"
+          :total="total1"
+          :page-sizes="[10, 20, 30, 50]"
+          background
+          @size-change="handleSizeChangeParam"
+          @current-change="handleCurrentChangeParam"
+        />
+      </div>
       <div slot="footer" class="dialog-footer">
-        <el-button  @click="viewDialog = false">取消</el-button>
+        <el-button @click="viewDialog = false">取消</el-button>
         <el-button :loading="loading" type="primary" @click="viewDialog = false">确认</el-button>
       </div>
-  </el-dialog>
+    </el-dialog>
 
   </div>
 
 </template>
 
 <script>
-import { getTableList,getQueryAdd,getQueryEdit,getQueryId } from '@/api/tender'
+import { getTableList, getQueryAdd, getQueryEdit, getQueryId } from '@/api/tender'
+import { Notification, MessageBox } from 'element-ui'
 
 export default {
   data() {
-   const checkTel = (rule, value, callback)=>{
-     console.log(rule)
-     console.log(value)
-     console.log(callback)
-     if(value == null){
-       callback(new Error("请选择附件"))
-     }else {
+    const checkTel = (rule, value, callback) => {
+      console.log(rule)
+      console.log(value)
+      console.log(callback)
+      if (value == null) {
+        callback(new Error('请选择附件'))
+      } else {
         callback()
       }
     }
     return {
       form: {
       },
-      data:[],
-      BASE_API:process.env.BASE_API,
-      dialog:false,
-      loading:false,
-      delLoading:false,
-      viewDialog:false,
-      isAdd:false,
+      data: [],
+      BASE_API: process.env.BASE_API,
+      dialog: false,
+      loading: false,
+      delLoading: false,
+      viewDialog: false,
+      isAdd: false,
       currentPage: 1,
       pageSize: 10,
       total: 0, // 总数量
       rules: {
-     
+
         price: [
           { required: true, message: '报价金额不为空', trigger: 'blur' },
-          { type: 'number', message: '报价金额必须为数字值'}
+          { type: 'number', message: '报价金额必须为数字值' }
         ],
         appendix: [
           // { type:"array",required: true, message: '附件不为空', trigger: 'blur' },
-           { validator: checkTel, trigger: 'blur' }
+          { validator: checkTel, trigger: 'blur' }
         ]
       },
       query: {
         type: '',
         value: ''
       },
-      fileList:[],
-       param:{
-        page:1,
-        size:10
+      fileList: [],
+      param: {
+        page: 1,
+        size: 10
       },
-      total1:0,
-      Paramdata:[]
+      total1: 0,
+      Paramdata: []
     }
   },
   created() {
@@ -240,16 +245,16 @@ export default {
   },
   methods: {
     // 发布时间
-    oncustom(){
+    oncustom() {
 
     },
     // 获取详情
     getDictData: function() {
       this.loading = true
       const params = {
-         page:this.currentPage,
-         size:this.pageSize,
-         title:this.query.title
+        page: this.currentPage,
+        size: this.pageSize,
+        title: this.query.title
       }
       getTableList(params).then(res => {
         console.log(res)
@@ -259,45 +264,53 @@ export default {
       })
     },
 
-      // 搜索
-      handleFind: function() {
-        this.currentPage = 1
+    // 搜索
+    handleFind: function() {
+      this.currentPage = 1
       this.getDictData()
     },
 
-     // 文件移除的时候
-     handleRemove(file, fileList) {
-        this.form.appendix = ""
-        console.log(file, fileList,this.fileList,"移出");
-      },
-      // 文件状态改变时的钩子,添加文件、上传成功和上传失败时都会被调用
-      handleChange(file,fileList){
-        console.log(file,fileList,"上传")
-        if(file.response){
-          console.log(file.response,"file")
-          this.form.appendix=file.response.data
+    // 文件移除的时候
+    handleRemove(file, fileList) {
+      this.form.appendix = ''
+      console.log(file, fileList, this.fileList, '移出')
+    },
+    // 文件状态改变时的钩子,添加文件、上传成功和上传失败时都会被调用
+    handleChange(file, fileList) {
+      console.log(file, fileList, '上传')
+      if (file.response) {
+        console.log(file.response, 'file')
+        if (file.response.code == '200') {
+          this.form.appendix = file.response.data
+        } else {
+          Notification.error({
+            title: file.response.msg,
+            duration: 1000
+          })
+          this.fileList = []
         }
-      },
-      // 点击文件列表中已上传的文件时的钩子
-      handlePreview(file) {
-        console.log(file,"file1");
-        // window.location.href = file.url
-      },
-      handleExceed(files, fileList) {
-        this.$message.warning(`当前限制选择 1 个附件,本次选择了 ${files.length} 个文件`);
-      },
-      beforeRemove(file, fileList) {
-        return this.$confirm(`确定移除 ${ file.name }?`);
-      },
-        // 下载
-    onLoad(row){
-        // const params = new URLSearchParams()
+      }
+    },
+    // 点击文件列表中已上传的文件时的钩子
+    handlePreview(file) {
+      console.log(file, 'file1')
+      // window.location.href = file.url
+    },
+    handleExceed(files, fileList) {
+      this.$message.warning(`当前限制选择 1 个附件,本次选择了 ${files.length} 个文件`)
+    },
+    beforeRemove(file, fileList) {
+      return this.$confirm(`确定移除 ${file.name}?`)
+    },
+    // 下载
+    onLoad(row) {
+      // const params = new URLSearchParams()
       // params.append('path', row)
-      let a =document.createElement('a')
+      const a = document.createElement('a')
       // a.href= /bidding/load
-      let url = window.location.origin + process.env.BASE_API + "/bidding/load?path=" + encodeURIComponent(row)
-       a.href = url
-       a.click()
+      const url = window.location.origin + process.env.BASE_API + '/bidding/load?path=' + encodeURIComponent(row)
+      a.href = url
+      a.click()
     },
 
     // 字典名称提交动作
@@ -317,7 +330,7 @@ export default {
               this.loading = false
               this.getDictData()
               this.$refs['form'].resetFields()
-            }).catch(err=>{
+            }).catch(err => {
               this.loading = false
             })
           } else {
@@ -343,36 +356,36 @@ export default {
       this.fileList = []
       this.form.tenderId = row.id
       this.form.priceQuotes = row.priceQuotes
-      if(this.$refs['form']){
-        this.$refs["form"].resetFields();
+      if (this.$refs['form']) {
+        this.$refs['form'].resetFields()
       }
     },
     // 编辑字典
     handleEdit: function(row) {
-      if(this.$refs['form']){
-        this.$refs["form"].resetFields();
+      if (this.$refs['form']) {
+        this.$refs['form'].resetFields()
       }
       this.dialog = true
       this.isAdd = false
       this.form = row.bidding
-      this.form.priceQuotes =row.priceQuotes
-      if(this.form.appendix){
-        let name = this.form.appendix.split("\\") ;
+      this.form.priceQuotes = row.priceQuotes
+      if (this.form.appendix) {
+        let name = this.form.appendix.split('bidding/')
         name = name.pop()
         // let name = data.appendix.replace(/(.*\/)*([^.]+).*/ig, "$2");
-        this.fileList = [{name:name,url: this.form.appendix}]
+        this.fileList = [{ name: name, url: this.form.appendix }]
       }
     },
-     handleView(row){
+    handleView(row) {
       this.param.tenderId = row.id
       this.param.page = 1
       this.getParam()
-      this.viewDialog =true
+      this.viewDialog = true
     },
-    getParam(){
-      let data = this.param
-      getQueryId(data).then((res)=>{
-        console.log(res.data.data.records,"")
+    getParam() {
+      const data = this.param
+      getQueryId(data).then((res) => {
+        console.log(res.data.data.records, '')
         this.Paramdata = res.data.data.records
         this.total1 = res.data.data.total
       })
@@ -383,15 +396,15 @@ export default {
       this.currentPage = val
       this.getDictData()
     },
-    handleSizeChange(val){
+    handleSizeChange(val) {
       this.pageSize = val
       this.getDictData()
     },
-       handleCurrentChangeParam(val){
+    handleCurrentChangeParam(val) {
       this.param.page = val
       this.getParam()
     },
-    handleSizeChangeParam(val){
+    handleSizeChangeParam(val) {
       this.param.size = val
       this.getParam()
     }

+ 3 - 3
src/views/user/index.vue

@@ -20,7 +20,7 @@
             </div>
           </div>
           <div class="user-bio">
-            <div class="user-education user-bio-section">
+            <!-- <div class="user-education user-bio-section">
               <div class="user-bio-section-header"><el-icon class="el-icon-connection" /><span>第三方账号</span></div>
               <div class="user-bio-section-body">
                 <div class="text-muted">
@@ -32,7 +32,7 @@
                   </template>
                 </div>
               </div>
-            </div>
+            </div> -->
           </div>
         </el-card>
       </el-col>
@@ -216,7 +216,7 @@ export default {
     }
   },
   computed: {
-    avatar() { 
+    avatar() {
       return require(`@/assets/avatar/c7c4ee7be3eb4e73a19887dc713505145.jpg`)
     }
   },

+ 2 - 2
src/views/userId/user.vue

@@ -2,7 +2,7 @@
   <div class="app-container">
     <el-row :gutter="20">
 
-      <el-col >
+      <el-col>
         <!-- 查询和其他操作 -->
         <div class="filter-container">
           <el-input
@@ -47,7 +47,7 @@
 
           <el-table-column label="链接" align="center">
             <template slot-scope="scope">
-              <a href="www.baidu"></a>
+              <a href="www.baidu" />
             </template>
           </el-table-column>