| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <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" v-if="type !== 2"> |
| | | <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="type !== 2 ? 'ä¼ä¸/åæ·åç§°' : 'ä¼ä¸åç§°'" 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 v-if="visible"> |
| | | <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: [], |
| | | type: null |
| | | } |
| | | }, |
| | | created () { |
| | | this.config({ |
| | | api: '/business/contract', |
| | | 'field.id': 'id' |
| | | }) |
| | | }, |
| | | methods: { |
| | | open (title, target, type) { |
| | | this.title = title |
| | | this.type = type |
| | | 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> |