<template>
|
<GlobalWindow
|
:title="title"
|
:visible.sync="visible"
|
:confirm-working="isWorking"
|
@confirm="confirm"
|
>
|
<el-form :model="form" ref="form" :rules="rules">
|
<el-form-item label="合同名称" prop="name">
|
<el-input v-model="form.name" maxlength="50" show-word-limit placeholder="请输入合同名称" v-trim/>
|
</el-form-item>
|
<el-form-item label="合同对象" prop="companyType">
|
<el-radio-group v-model="form.companyType" @change="getList">
|
<el-radio :label="0">企业</el-radio>
|
<el-radio :label="1">商户</el-radio>
|
</el-radio-group>
|
</el-form-item>
|
<el-form-item label="企业/商户名称" prop="companyId">
|
<el-select v-model="form.companyId" filterable placeholder="请选择,支持搜索">
|
<el-option
|
v-for="item in nameList"
|
:key="item.id"
|
:label="item.name"
|
:value="item.id">
|
</el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item label="合同时间" prop="date">
|
<el-date-picker
|
v-model="form.date"
|
type="daterange"
|
@change="changeDate"
|
value-format="yyyy-MM-dd"
|
range-separator="至"
|
start-placeholder="开始日期"
|
end-placeholder="结束日期">
|
</el-date-picker>
|
</el-form-item>
|
<el-form-item label="签章方式" prop="type">
|
<el-radio-group v-model="form.type">
|
<el-radio :label="0">双方签章</el-radio>
|
<el-radio :label="1">仅我方签章</el-radio>
|
</el-radio-group>
|
</el-form-item>
|
<el-form-item label="合同附件" prop="multifile" :rules="[{required:true,message:'请上传方案确认书'}]">
|
<div>
|
<UploadFile @remove="deleFile" :uploadData="{ folder: 'contract', fileType:'.pdf' }" :fileList="fileList" @uploadSuccess="editFanganFile" />
|
</div>
|
</el-form-item>
|
<el-form-item label="备注" prop="remark">
|
<el-input
|
type="textarea"
|
placeholder="请输入备注"
|
v-model="form.remark"
|
maxlength="300"
|
show-word-limit
|
v-trim
|
/>
|
</el-form-item>
|
</el-form>
|
</GlobalWindow>
|
</template>
|
|
<script>
|
import BaseOpera from '@/components/base/BaseOpera'
|
import GlobalWindow from '@/components/common/GlobalWindow'
|
import UploadFile from '@/components/common/UploadFile'
|
import { pageAll } from '@/api/business/company'
|
import { mapState } from 'vuex'
|
export default {
|
name: 'OperaContractWindow',
|
extends: BaseOpera,
|
computed: {
|
...mapState(['userInfo'])
|
},
|
components: { GlobalWindow, UploadFile },
|
data () {
|
const validatorTime = (rule, value, callback) => {
|
if (!this.form.startTime || !this.form.endTime) {
|
return callback(new Error('请选择合同时间'))
|
}
|
callback()
|
}
|
const validatorMultifile = (rule, value, callback) => {
|
if (!this.form.multifile) {
|
return callback(new Error('请上传合同附件'))
|
}
|
callback()
|
}
|
return {
|
// 表单数据
|
form: {
|
id: null,
|
remark: '',
|
name: '',
|
companyType: 0,
|
type: 0,
|
startTime: '',
|
endTime: '',
|
date: [],
|
multifile: null,
|
companyId: ''
|
},
|
fileList: [],
|
// 验证规则
|
rules: {
|
name: [
|
{ required: true, message: '请输入合同名称' }
|
],
|
companyType: [
|
{ required: true, message: '请选择合同对象' }
|
],
|
companyId: [
|
{ required: true, message: '请选择企业/商户名称' }
|
],
|
date: [
|
{ required: true, validator: validatorTime }
|
],
|
multifile: [
|
{ required: true, validator: validatorMultifile }
|
],
|
},
|
nameList: [],
|
list: []
|
}
|
},
|
created () {
|
this.config({
|
api: '/business/contract',
|
'field.id': 'id'
|
})
|
},
|
methods: {
|
open (title, target) {
|
this.title = title
|
this.visible = true
|
if (this.userInfo.type === 0) {
|
this.list = [{ label: '企业', id: 0 },{ label: '商户', id: 1 }]
|
} else if (this.userInfo.type === 2) {
|
this.list = [{ label: '企业', id: 0 }]
|
}
|
// 新建
|
if (target == null) {
|
this.$nextTick(() => {
|
this.$refs.form.resetFields()
|
this.form[this.configData['field.id']] = null
|
})
|
this.getList()
|
return
|
}
|
// 编辑
|
this.$nextTick(() => {
|
for (const key in this.form) {
|
this.form[key] = target[key]
|
}
|
})
|
this.getList()
|
},
|
getList() {
|
this.form.companyId = ''
|
pageAll({ type: this.form.companyType })
|
.then(res => {
|
console.log(res)
|
this.nameList = res
|
})
|
},
|
deleFile () {
|
this.form.multifile = null
|
},
|
editFanganFile (data) {
|
console.log(data)
|
this.form.multifile = data
|
},
|
changeDate(e) {
|
if (e) {
|
this.form.startTime = e[0]
|
this.form.endTime = e[1]
|
} else {
|
this.form.startTime = ''
|
this.form.endTime = ''
|
}
|
}
|
}
|
}
|
</script>
|