|  | @@ -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>
 |