chris 3 rokov pred
rodič
commit
d002a592c5

+ 8 - 0
src/api/sale.js

@@ -144,3 +144,11 @@ export function getSupplierList (params) {
     params: params
   })
 }
+
+// 供应商详情
+export function getSupplierDetail (id) {
+  return request({
+    url: request.adornUrl(`/biz-service/supplier/info/${id}`),
+    method: 'get'
+  })
+}

+ 307 - 0
src/views/modules/sale/supplier-add-or-update.vue

@@ -0,0 +1,307 @@
+<!-- 新增供应商 -->
+<template>
+    <div>
+        <div class="my-title">{{ !id?'新增':'修改' }}</div>
+        <!-- 表单 -->
+        <el-form :model="dataForm" :rules="dataRule" ref="dataForm" label-width="auto">
+          <el-row>
+            <h4>基础信息</h4>
+          </el-row>
+          <el-row class="my-row">
+            <el-col :span="8">
+              <el-form-item label="公司名称" prop="supplierName">
+                <el-input v-model="dataForm.supplierName" placeholder="公司名称"/>
+              </el-form-item>
+            </el-col>
+            <el-col :span="8">
+              <el-form-item label="供应商级别" prop="level">
+                <el-select
+                  v-model="dataForm.level"
+                  remote
+                  placeholder="请选择">
+                  <el-option
+                    v-for="item in optionsLevel"
+                    :key="item.code"
+                    :label="item.value"
+                    :value="item.code">
+                  </el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="8">
+              <el-form-item label="详细地址" prop="addrDetail">
+                <el-input v-model="dataForm.addrDetail" placeholder="详细地址"/>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row class="my-row">
+            <el-col :span="8">
+              <el-form-item label="邮编" prop="zipCode">
+                <el-input v-model="dataForm.zipCode" placeholder="邮编"/>
+              </el-form-item>
+            </el-col>
+            <el-col :span="8">
+              <el-form-item label="电话" prop="tel">
+                <el-input v-model="dataForm.tel" placeholder="电话"/>
+              </el-form-item>
+            </el-col>
+            <el-col :span="8">
+              <el-form-item label="传真" prop="fax">
+                <el-input v-model="dataForm.fax" placeholder="传真"/>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row class="my-row">
+            <el-col :span="8">
+              <el-form-item label="网址" prop="url">
+                <el-input v-model="dataForm.url" placeholder="网址"/>
+              </el-form-item>
+            </el-col>
+            <el-col :span="8">
+              <el-form-item label="邮箱" prop="supplierEmail">
+                <el-input v-model="dataForm.supplierEmail" placeholder="邮箱"/>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row class="my-row" style="margin-top: 20px">
+            <el-form-item label="公司产品介绍" prop="prodIntroduce">
+              <el-input type="textarea" v-model="dataForm.prodIntroduce"></el-input>
+            </el-form-item>
+          </el-row>
+          <el-row>
+            <h4>财务信息</h4>
+          </el-row>
+          <el-row class="my-row">
+            <el-col :span="8">
+              <el-form-item label="企业税号" prop="taxNumber">
+                <el-input v-model="dataForm.taxNumber" placeholder="企业税号"/>
+              </el-form-item>
+            </el-col>
+            <el-col :span="8">
+              <el-form-item label="发票抬头" prop="invoiceTitle">
+                <el-input v-model="dataForm.invoiceTitle" placeholder="发票抬头"/>
+              </el-form-item>
+            </el-col>
+            <el-col :span="8">
+              <el-form-item label="开户银行" prop="bank">
+                <el-input v-model="dataForm.bank" placeholder="开户银行"/>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row class="my-row">
+            <el-col :span="8">
+              <el-form-item label="银行账号" prop="account">
+                <el-input v-model="dataForm.account" placeholder="银行账号"/>
+              </el-form-item>
+            </el-col>
+            <el-col :span="8">
+              <el-form-item label="单位地址" prop="addressWork">
+                <el-input v-model="dataForm.addressWork" placeholder="单位地址"/>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <h4>供应商联系</h4>
+          </el-row>
+          <el-row class="my-row">
+            <el-col :span="8">
+              <el-form-item label="联系人" prop="contact">
+                <el-input v-model="dataForm.contact" placeholder="联系人"/>
+              </el-form-item>
+            </el-col>
+            <el-col :span="8">
+              <el-form-item label="手机号码" prop="contactTel">
+                <el-input v-model="dataForm.contactTel" placeholder="手机号码"/>
+              </el-form-item>
+            </el-col>
+            <el-col :span="8">
+              <el-form-item label="职位" prop="contactPosition">
+                <el-input v-model="dataForm.contactPosition" placeholder="职位"/>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row class="my-row">
+            <el-col :span="8">
+              <el-form-item label="联系人邮箱" prop="contactEmail">
+                <el-input v-model="dataForm.contactEmail" placeholder="联系人邮箱"/>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <h4>附件</h4>
+          </el-row>
+          <el-row class="my-row">
+            <upload-component :title="'合格供方基本信息调查表'" :accept="'*'" :file-obj-list="fileList1" @uploadSuccess="uploadSuccess1"/>
+          </el-row>
+          <el-row class="my-row" style="margin-top: 10px">
+            <upload-component :title="'供方风险评价表'" :accept="'*'" :file-obj-list="fileList2" @uploadSuccess="uploadSuccess2"/>
+          </el-row>
+        </el-form>
+        <span slot="footer" class="dialog-footer">
+          <el-button @click="onChose">取消</el-button>
+          <el-button type="primary" @click="dataFormSubmit()">确定</el-button>
+        </span>
+    </div>
+</template>
+
+<script>
+  import UploadComponent from '../common/upload-component'
+  import { getSupplierDetail } from '@/api/sale'
+  import SupplierComponent from '../common/supplier-component'
+  import { getDictList } from '@/api/dict'
+  import { isEmail, isMobile } from '@/utils/validate'
+
+  export default {
+    name: 'supplier-add-or-update',
+    components: {
+      SupplierComponent,
+      UploadComponent
+    },
+    computed: {
+      orgId: {
+        get () { return this.$store.state.user.orgId }
+      }
+    },
+    data () {
+      let validateEmail = (rule, value, callback) => {
+        if (value !== null && value !== '' && !isEmail(value)) {
+          callback(new Error('邮箱格式错误'))
+        } else {
+          callback()
+        }
+      }
+      let validateMobile = (rule, value, callback) => {
+        if (!isMobile(value)) {
+          callback(new Error('手机号格式错误'))
+        } else {
+          callback()
+        }
+      }
+      return {
+        id: 0,
+        dataForm: {},
+        dataRule: {
+          level: [{ required: true, message: '请选择供应商级别', trigger: 'change' }],
+          supplierName: [{ required: true, message: '公司名称不能为空', trigger: 'blur' }],
+          addrDetail: [{ required: true, message: '公司详细地址不能为空', trigger: 'blur' }],
+          taxNumber: [{ required: true, message: '企业税号不能为空', trigger: 'blur' }],
+          invoiceTitle: [{ required: true, message: '发票抬头不能为空', trigger: 'blur' }],
+          bank: [{ required: true, message: '开户银行不能为空', trigger: 'blur' }],
+          account: [{ required: true, message: '银行账号不能为空', trigger: 'blur' }],
+          addressWork: [{ required: true, message: '单位地址不能为空', trigger: 'blur' }],
+          contact: [{ required: true, message: '联系人不能为空', trigger: 'blur' }],
+          contactTel: [
+            { required: true, message: '手机号码不能为空', trigger: 'blur' },
+            { validator: validateMobile, trigger: 'blur' }
+          ],
+          tel: [
+            { validator: validateMobile, trigger: 'blur' }
+          ],
+          supplierEmail: [
+            {validator: validateEmail, trigger: 'blur'}
+          ],
+          contactEmail: [
+            {validator: validateEmail, trigger: 'blur'}
+          ]
+        },
+        optionsLevel: [], // 供应商级别
+        fileList1: [],
+        fileList2: []
+      }
+    },
+    methods: {
+      onChose () {
+        this.$emit('onChose')
+      },
+      getLevelList () {
+        getDictList({type: 'supplier_level'}).then(({data}) => {
+          if (data) {
+            this.optionsLevel = data
+          }
+        })
+      },
+      async init (id) {
+        this.fileList1 = []
+        this.fileList2 = []
+        this.dataForm = {}
+        this.id = id || 0
+        // 获取级别List
+        this.getLevelList()
+        // 详情
+        if (!id) return
+        await getSupplierDetail(this.id).then(({data}) => {
+          if (data && data.code === '200') {
+            this.dataForm = data.data
+            // 附件
+            if (data.data.attachList) {
+              data.data.attachList.forEach((item) => {
+                this.fileList1.push({
+                  name: item.fileName,
+                  url: item.url,
+                  id: item.url
+                })
+              })
+            }
+          }
+        })
+      },
+      uploadSuccess (fileList) {
+        this.fileList = fileList
+      },
+      validateField (type) {
+        this.$refs.dataForm.validateField(type)
+      },
+      // 表单提交
+      dataFormSubmit () {
+        this.$refs['dataForm'].validate((valid) => {
+          if (valid) {
+            // 附件
+            let fList1 = this.fileList1
+            if (fList1.length > 0) {
+              this.dataForm.attachList = []
+              for (let i = 0; i < fList1.length; i++) {
+                this.dataForm.attachList.push({
+                  fileName: fList1[i].name,
+                  url: fList1[i].url
+                })
+              }
+            } else {
+              this.$message.error('请上传文件')
+              return
+            }
+            // save or update
+            this.$http({
+              url: this.$http.adornUrl(`/biz-service/supplier/${!this.id ? 'save' : 'update'}`),
+              method: 'post',
+              data: this.$http.adornData({...this.dataForm, orgId: this.orgId})
+            }).then(({data}) => {
+              if (data && data.code === '200') {
+                this.$message({
+                  message: '操作成功',
+                  type: 'success',
+                  duration: 1500,
+                  onClose: () => {
+                    this.onChose()
+                    this.$emit('refreshDataList')
+                  }
+                })
+              } else {
+                this.$message.error(data.msg)
+              }
+            })
+          }
+        })
+      },
+      uploadSuccess1 (fileList) {
+        this.fileList1 = fileList
+      },
+      uploadSuccess2 (fileList) {
+        this.fileList2 = fileList
+      }
+    }
+  }
+</script>
+
+<style scoped>
+
+</style>

+ 7 - 5
src/views/modules/sale/supplier.vue

@@ -21,7 +21,7 @@
         </el-form-item>
         <el-form-item>
           <el-button @click="search()">查询</el-button>
-          <el-button v-if="isAuth('sale:supplier:save')" type="primary" @click="addOrUpdateHandle(0)">录入</el-button>
+          <el-button v-if="isAuth('purchase:supplie:save')" type="primary" @click="addOrUpdateHandle(0)">录入</el-button>
         </el-form-item>
       </el-form>
       <el-table
@@ -100,11 +100,13 @@
           fixed="right"
           header-align="center"
           align="center"
-          width="150"
+          width="240"
           label="操作">
           <template slot-scope="scope">
-            <el-button v-if="isAuth('sale:supplier:info')" type="text" size="small" @click="detailHandle(scope.row.supplierId)">查看</el-button>
-            <el-button v-if="isAuth('sale:supplier:update')" type="text" size="small" @click="addOrUpdateHandle(scope.row.supplierId)">编辑</el-button>
+            <el-button v-if="isAuth('purchase:supplie:info')" type="text" size="small" @click="detailHandle(scope.row.supplierId)">查看</el-button>
+            <el-button v-if="isAuth('purchase:supplie:update')" type="text" size="small" @click="addOrUpdateHandle(scope.row.supplierId)">编辑</el-button>
+            <el-button v-if="isAuth('purchase:supplie:disqualification')" type="text" size="small" @click="addOrUpdateHandle(scope.row.supplierId)">重新评审</el-button>
+            <el-button v-if="isAuth('purchase:supplie:disqualification')" type="text" size="small" @click="addOrUpdateHandle(scope.row.supplierId)">取消供应商</el-button>
           </template>
         </el-table-column>
       </el-table>
@@ -126,7 +128,7 @@
 </template>
 
 <script>
-  import AddOrUpdate from './purchase-add-or-update'
+  import AddOrUpdate from './supplier-add-or-update'
   import Detail from './purchase-detail'
   import { getSupplierList } from '@/api/sale'
   import AttachDetail from '../common/attach-detail'