From 3011b9800d6c5bee031d87bc4e225b5b1fb52571 Mon Sep 17 00:00:00 2001
From: k94314517 <8417338+k94314517@user.noreply.gitee.com>
Date: 星期六, 23 十一月 2024 09:19:21 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/2.0.1' into 2.0.1

---
 company/src/components/business/OperaContractWindow.vue |  187 ++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 187 insertions(+), 0 deletions(-)

diff --git a/company/src/components/business/OperaContractWindow.vue b/company/src/components/business/OperaContractWindow.vue
new file mode 100644
index 0000000..a9717b9
--- /dev/null
+++ b/company/src/components/business/OperaContractWindow.vue
@@ -0,0 +1,187 @@
+<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>

--
Gitblit v1.9.3