From 14d29f928b24d203e76f1dcefc1a51182657cd45 Mon Sep 17 00:00:00 2001
From: spring <2396852758@qq.com>
Date: 星期一, 10 三月 2025 16:29:09 +0800
Subject: [PATCH] Merge branch 'dev' of http://114.132.189.42:9002/r/center-lims-before-ruoyi into dev

---
 src/views/CNAS/personnel/personnelInfo/Department/components/Mandate/Add.vue |  198 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 198 insertions(+), 0 deletions(-)

diff --git a/src/views/CNAS/personnel/personnelInfo/Department/components/Mandate/Add.vue b/src/views/CNAS/personnel/personnelInfo/Department/components/Mandate/Add.vue
new file mode 100644
index 0000000..8741543
--- /dev/null
+++ b/src/views/CNAS/personnel/personnelInfo/Department/components/Mandate/Add.vue
@@ -0,0 +1,198 @@
+<template>
+    <div class="add">
+        <el-dialog :title="isEdit ? '缂栬緫闄勪欢璧勬枡' : '鏂板闄勪欢璧勬枡'" :visible.sync="dialogVisible" width="50%">
+            <el-form ref="ruleForm" :rules="rules" :model="form" label-width="100px" size="medium">
+                <el-form-item label="璇佷功缂栧彿" prop="certificateNumber">
+                    <el-input v-model="form.certificateNumber" placeholder="璇疯緭鍏�" style="width: 100%">
+                    </el-input>
+                </el-form-item>
+                <el-form-item label="琚换鑱屼汉鍛�" prop="userId">
+                    <el-select v-model="form.userId" placeholder="璇烽�夋嫨">
+                        <el-option v-for="(item, index) in userList" :key="index" :label="item.name"
+                            :value="item.id"></el-option>
+                    </el-select>
+                </el-form-item>
+                <el-form-item label="浠昏亴宀椾綅" prop="post">
+                    <el-input v-model="form.post" placeholder="璇疯緭鍏�"></el-input>
+                </el-form-item>
+                <el-form-item label="鐞嗚鑰冭瘯鎴愮哗" prop="num1">
+                    <el-input v-model="form.num1" placeholder="璇疯緭鍏�"></el-input>
+                </el-form-item>
+                <el-form-item label="鎿嶄綔鎶�鑳借�冭瘯鎴愮哗" prop="num2">
+                    <el-input v-model="form.num2" placeholder="璇疯緭鍏�"></el-input>
+                </el-form-item>
+                <el-form-item label="鎿嶄綔绫诲瀷" prop="operationType">
+                    <el-input v-model="form.operationType" placeholder="璇烽�夋嫨"></el-input>
+                </el-form-item>
+                <el-row>
+                    <el-col :span="20">
+                        <el-form-item label="涓婂矖璇佷功">
+                            <el-input v-model="form.systemFileName" size="small" disabled>
+                                <el-button slot="append" icon="el-icon-delete-solid"
+                                    @click="deleteFile(form.systemFileName)"></el-button>
+                            </el-input>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="4">
+                        <el-upload ref="upload" style="float: left; margin: 0 12px 0 20px;" :action="action"
+                            :show-file-list="false" :on-success="onSuccess" :headers="uploadHeader">
+                            <el-button class="uploadFile" slot="trigger" size="small" type="primary">娴忚</el-button>
+                        </el-upload>
+                    </el-col>
+                </el-row>
+                <el-form-item label="澶囨敞">
+                    <el-input v-model="form.remarks" placeholder="璇烽�夋嫨"></el-input>
+                </el-form-item>
+            </el-form>
+            <div slot="footer" class="foot">
+                <el-button @click="dialogVisible = false">鍙� 娑�</el-button>
+                <el-button type="primary" :loading="loading" @click="submitForm">纭� 瀹�</el-button>
+            </div>
+        </el-dialog>
+    </div>
+</template>
+<script>
+import {
+    addOrUpdatePersonPostAuthorizationRecord,
+    selectUserList,
+    deleteCNASFile
+} from '@/api/cnas/personnel/personnelInfo.js'
+export default {
+    data() {
+        return {
+            isEdit: false,
+            dialogVisible: false,
+            form: {
+                id: undefined,
+                certificateNumber: undefined,
+                userId: undefined,
+                post: undefined,
+                operationType: undefined,
+                fileList: [],
+                fileName: undefined,
+                systemFileName: undefined,
+                remarks: undefined,
+                num2: undefined,
+                num1: undefined
+            },
+            rules: {
+                certificateNumber: [{ required: true, message: '璇疯緭鍏ヨ瘉涔︾紪鍙�', trigger: 'blur' }],
+                userId: [{ required: true, message: '璇烽�夋嫨琚换鑱屼汉鍛�', trigger: 'change' }],
+                post: [{ required: true, message: '浠昏亴宀椾綅', trigger: 'blur' }],
+                operationType: [{ required: true, message: '鎿嶄綔绫诲瀷', trigger: 'blur' }],
+
+            },
+            loading: false,
+            userList: []
+        }
+    },
+    mounted() {
+
+    },
+    computed: {
+        action() {
+            return this.javaApi + '/personBasicInfo/saveCNASFile'
+        }
+    },
+    methods: {
+        async onSuccess(response, file, fileList) {
+            this.$set(this.form, "systemFileName", response.data)
+        },
+        deleteFile(fileName) {
+            deleteCNASFile({ fileName }).then(res => {
+                this.$message.success('鍒犻櫎鎴愬姛锛�')
+                this.$set(this.form, "systemFileName", null)
+            })
+        },
+        async openDialog(row, type) {
+            await this.getUserList()
+            this.dialogVisible = true
+            if (type) {
+                this.isEdit = true
+                this.form.id = row.id
+                this.form.certificateNumber = row.certificateNumber
+                this.form.userId = Number(row.userId)
+                this.form.post = row.post
+                this.form.operationType = row.operationType
+                this.form.systemFileName = row.systemFileName
+                this.form.remarks = row.remarks
+                this.form.num1 = row.num1
+                this.form.num2 = row.num2
+            } else {
+                this.isEdit = false
+                this.form.id = undefined
+                this.form.certificateNumber = undefined
+                this.form.userId = undefined
+                this.form.post = undefined
+                this.form.operationType = undefined
+                this.form.fileList = []
+                this.form.fileName = undefined
+                this.form.systemFileName = undefined
+                this.form.remarks = undefined
+                this.form.num1 = undefined
+                this.form.num2 = undefined
+            }
+        },
+        closeDialog() {
+            this.dialogVisible = false
+        },
+        /**
+         * @desc 鑾峰彇鐢ㄦ埛淇℃伅
+         */
+        async getUserList() {
+            const { code, data } = await selectUserList()
+            if (code == 200) {
+                this.userList = data
+            }
+        },
+        /**
+         * @desc 鎻愪氦琛ㄥ崟
+         */
+        submitForm() {
+            this.$refs.ruleForm.validate(async (valid) => {
+                if (valid) {
+                    await this.submitFormData()
+                }
+            })
+        },
+        /**
+         * @desc 涓婁紶鏂囦欢
+         */
+        beforeUpload(file) {
+            this.form.fileList = [file]
+            this.form.fileName = file.name
+        },
+        /**
+         * @desc 鎻愪氦form琛ㄥ崟
+         */
+        async submitFormData() {
+            this.loading = true
+            const { code, data } = await addOrUpdatePersonPostAuthorizationRecord({
+                id: this.form.id,
+                certificateNumber: this.form.certificateNumber,
+                userId: this.form.userId,
+                post: this.form.post,
+                operationType: this.form.operationType,
+                systemFileName: this.form.systemFileName,
+                remarks: this.form.remarks,
+                num1: this.form.num1,
+                num2: this.form.num2
+            })
+            if (code == 200) {
+                this.closeDialog()
+                this.$emit('refresh')
+            }
+            this.loading = false
+        }
+    }
+}
+</script>
+<style scoped>
+.foot {
+    width: 100%;
+}
+
+.add>>>.el-dialog__footer {
+    padding-right: 20px;
+}
+</style>

--
Gitblit v1.9.3