Explorar o código

会务管理model页面

xieyn %!s(int64=2) %!d(string=hai) anos
pai
achega
b7ffacafcb

+ 296 - 0
src/views/oa/modules/ConferenceApplyModal.vue

@@ -0,0 +1,296 @@
+<template>
+  <a-modal
+    :title="title"
+    :width="width"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleOk"
+    @cancel="handleCancel"
+    cancelText="关闭">
+    <a-spin :spinning="confirmLoading">
+      <a-form :form="form">
+        <a-col span="24">
+          <a-form-item label="会议议题" :labelCol="labelCol1" :wrapperCol="wrapperCol1">
+            <a-input v-decorator="[ 'conferenceTitle', validatorRules.conferenceTitle]" placeholder="请输入会议议题"></a-input>
+          </a-form-item>
+        </a-col>
+        <a-col span="8">
+          <a-form-item label="会议信息发布人" :labelCol="labelCol" :wrapperCol="wrapperCol">
+            <j-popup
+              v-decorator="['postedPerson', validatorRules.postedPerson]"
+              :trigger-change="true"
+              org-fields="realname,depart_name"
+              dest-fields="postedPerson,postedDept"
+              code="user_dept"
+              @callback="popupCallback"/>
+          </a-form-item>
+        </a-col>
+        <a-col span="8">
+          <a-form-item label="发布部门" :labelCol="labelCol" :wrapperCol="wrapperCol">
+            <a-input v-decorator="[ 'postedDept', validatorRules.postedDept]" :disabled="true" placeholder="请输入发布部门"></a-input>
+          </a-form-item>
+        </a-col>
+        <a-col span="8">
+          <a-form-item label="发布日期" :labelCol="labelCol" :wrapperCol="wrapperCol">
+            <j-date placeholder="请选择发布日期" v-decorator="[ 'postedDate', validatorRules.postedDate]" :trigger-change="true" style="width: 100%"/>
+          </a-form-item>
+        </a-col>
+        <a-col span="8">
+          <a-form-item label="会议日期" :labelCol="labelCol" :wrapperCol="wrapperCol">
+            <j-date placeholder="请选择会议日期" v-decorator="[ 'conferenceDate', validatorRules.conferenceDate]" :trigger-change="true" style="width: 100%"/>
+          </a-form-item>
+        </a-col>
+        <a-col span="8">
+          <a-form-item label="开始时间" :labelCol="labelCol" :wrapperCol="wrapperCol">
+            <j-date placeholder="请选择开始时间" v-decorator="[ 'startTime', validatorRules.startTime]" :trigger-change="true" :show-time="true" date-format="YYYY-MM-DD HH:mm:ss" style="width: 100%"/>
+          </a-form-item>
+        </a-col>
+        <a-col span="8">
+          <a-form-item label="结束时间" :labelCol="labelCol" :wrapperCol="wrapperCol">
+            <j-date placeholder="请选择结束时间" v-decorator="[ 'endTime', validatorRules.endTime]" :trigger-change="true" :show-time="true" date-format="YYYY-MM-DD HH:mm:ss" style="width: 100%"/>
+          </a-form-item>
+        </a-col>
+        <a-col span="8">
+          <a-form-item label="会议地点" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <j-popup
+                v-decorator="['conferenceAddress', validatorRules.conferenceAddress]"
+                :trigger-change="true"
+                org-fields="name"
+                dest-fields="conferenceAddress"
+                code="meeting_room"
+                @callback="popupCallback"/>
+          </a-form-item>
+        </a-col>
+        <a-col span="8">
+          <a-form-item label="出席人员" :labelCol="labelCol" :wrapperCol="wrapperCol">
+            <a-input-search
+              v-model="userNames"
+              placeholder="请先选择用户"
+              disabled
+              @search="onSearchDepUser">
+              <a-button slot="enterButton" :disabled="disabled">选择用户</a-button>
+            </a-input-search>
+            <j-select-user-by-dep-modal ref="selectModal" :customReturnField="customReturnField" :modal-width="modalWidth" :multi="multi" @ok="selectOK" :user-ids="value" @initComp="initComp"/>
+          </a-form-item>
+        </a-col>
+        <a-col span="8">
+          <a-form-item label="出席部门" :labelCol="labelCol" :wrapperCol="wrapperCol">
+            <a-input v-model="orgCode" :disabled="true" placeholder="请输入出席部门"></a-input>
+          </a-form-item>
+        </a-col>
+        <a-col span="24">
+          <a-form-item label="其他参会人" :labelCol="labelCol1" :wrapperCol="wrapperCol1">
+            <a-input v-decorator="[ 'otherPerson', validatorRules.otherPerson]" placeholder="请输入其他参会人"></a-input>
+          </a-form-item>
+        </a-col>
+        <a-col span="24">
+          <a-form-item label="会议内容" :labelCol="labelCol1" :wrapperCol="wrapperCol1">
+            <a-textarea v-decorator="['conferenceContent', validatorRules.conferenceContent]" rows="1" placeholder="请输入会议内容"/>
+          </a-form-item>
+        </a-col>
+        <a-col span="24">
+          <a-form-item label="附件" :labelCol="labelCol1" :wrapperCol="wrapperCol1">
+            <j-upload v-decorator="['file', validatorRules.file]" :trigger-change="true"></j-upload>
+          </a-form-item>
+        </a-col>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+
+  import { httpAction } from '@/api/manage'
+  import pick from 'lodash.pick'
+  import { validateDuplicateValue } from '@/utils/util'
+  import JDate from '@/components/jeecg/JDate'
+  import JUpload from '@/components/jeecg/JUpload'
+  import JSelectUserByDepModal from '@/components/jeecgbiz/modal/JSelectUserByDepModal'
+  export default {
+    name: "ConferenceApplyModal",
+    components: {
+      JDate,
+      JUpload,
+      JSelectUserByDepModal,
+    },
+    props: {
+      modalWidth: {
+        type: Number,
+        default: 1250,
+        required: false
+      },
+      value: {
+        type: String,
+        required: false
+      },
+      disabled: {
+        type: Boolean,
+        required: false,
+        default: false
+      },
+      multi: {
+        type: Boolean,
+        default: true,
+        required: false
+      },
+      // 自定义返回字段,默认返回 username
+      customReturnField: {
+        type: String,
+        default: 'username'
+      }
+    },
+    data () {
+      return {
+        userIds: "",
+        userNames: "",
+        orgCode: "",
+        form: this.$form.createForm(this),
+        title:"操作",
+        width:1400,
+        visible: false,
+        model: {},
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 6 },
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 15 },
+        },
+        labelCol1: {
+          xs: { span: 24 },
+          sm: { span: 2 },
+        },
+        wrapperCol1: {
+          xs: { span: 24 },
+          sm: { span: 21 },
+        },
+        confirmLoading: false,
+        validatorRules: {
+          conferenceTitle: {rules: [
+            {required: true, message: '请输入会议议题!'},
+          ]},
+          postedPerson: {rules: [
+            {required: true, message: '请输入会议信息发布人!'},
+          ]},
+          postedDept: {rules: [
+          ]},
+          postedDate: {rules: [
+            {required: true, message: '请输入发布日期!'},
+          ]},
+          conferenceDate: {rules: [
+            {required: true, message: '请输入会议日期!'},
+          ]},
+          startTime: {rules: [
+            {required: true, message: '请输入开始时间!'},
+          ]},
+          endTime: {rules: [
+          ]},
+          conferenceAddress: {rules: [
+          ]},
+          attendPerson: {rules: [
+            {required: true, message: '请输入出席人员!'},
+          ]},
+          attendDept: {rules: [
+          ]},
+          otherPerson: {rules: [
+          ]},
+          conferenceContent: {rules: [
+            {required: true, message: '请输入会议内容!'},
+          ]},
+          file: {rules: [
+          ]},
+        },
+        url: {
+          add: "/conferenceApply/conferenceApply/add",
+          edit: "/conferenceApply/conferenceApply/edit",
+        }
+      }
+    },
+    created () {
+    },
+    mounted() {
+      this.userIds = this.value
+    },
+    methods: {
+      initComp(userNames) {
+        this.userNames = userNames
+      },
+      onSearchDepUser() {
+        this.$refs.selectModal.showModal()
+      },
+      add () {
+        this.edit({});
+      },
+      edit (record) {
+        this.form.resetFields();
+        this.model = Object.assign({}, record);
+        this.visible = true;
+        this.$nextTick(() => {
+          this.form.setFieldsValue(pick(this.model,'conferenceTitle','postedPerson','postedDept','postedDate','conferenceDate','startTime','endTime','conferenceAddress','attendPerson','attendDept','otherPerson','conferenceContent','file'))
+        })
+      },
+      close () {
+        this.$emit('close');
+        this.visible = false;
+      },
+      handleOk () {
+        const that = this;
+        // 触发表单验证
+        this.form.validateFields((err, values) => {
+          if (!err) {
+            that.confirmLoading = true;
+            let httpurl = '';
+            let method = '';
+            if(!this.model.id){
+              httpurl+=this.url.add;
+              method = 'post';
+            }else{
+              httpurl+=this.url.edit;
+               method = 'put';
+            }
+            let formData = Object.assign(this.model, values);
+            formData.attendPerson = this.userNames;
+            formData.attendDept = this.orgCode;
+            console.log("表单提交数据",formData)
+            httpAction(httpurl,formData,method).then((res)=>{
+              if(res.success){
+                that.$message.success(res.message);
+                that.$emit('ok');
+              }else{
+                that.$message.warning(res.message);
+              }
+            }).finally(() => {
+              that.confirmLoading = false;
+              that.close();
+            })
+          }
+        })
+      },
+      handleCancel () {
+        this.close()
+      },
+      popupCallback(row){
+        this.form.setFieldsValue(pick(row,'conferenceTitle','postedPerson','postedDept','postedDate','conferenceDate','startTime','endTime','conferenceAddress','attendPerson','attendDept','otherPerson','conferenceContent','file'))
+      },
+      selectOK(rows, idstr) {
+        if (!rows) {
+          this.userNames = ''
+          this.userIds = ''
+        } else {
+          let temp = ''
+          let temp1 = ''
+          for (let item of rows) {
+            temp += ',' + item.realname
+            if(temp1.indexOf(item.orgCode)==-1){
+              temp1 += ',' + item.orgCode
+            }
+          }
+          this.userNames = temp.substring(1)
+          this.orgCode = temp1.substring(1)
+          this.userIds = idstr
+        }
+      }
+    }
+  }
+</script>

+ 193 - 0
src/views/oa/modules/ConferenceMinutesModal.vue

@@ -0,0 +1,193 @@
+<template>
+  <a-modal
+    :title="title"
+    :width="width"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @ok="handleOk"
+    @cancel="handleCancel"
+    cancelText="关闭">
+    <a-spin :spinning="confirmLoading">
+      <a-form :form="form">
+        <a-col span="8">
+          <a-form-item label="会议纪要编号" :labelCol="labelCol" :wrapperCol="wrapperCol">
+            <a-input v-decorator="[ 'minutesId', validatorRules.minutesId]" :disabled="true" placeholder="请输入会议纪要编号"></a-input>
+          </a-form-item>
+        </a-col>
+        <a-col span="8">
+          <a-form-item label="会议议题" :labelCol="labelCol" :wrapperCol="wrapperCol">
+            <j-popup
+              v-decorator="['conferenceTitle', validatorRules.conferenceTitle]"
+              :trigger-change="true"
+              org-fields="conference_title"
+              dest-fields="conferenceTitle"
+              code="conference_select"
+              @callback="popupCallback"/>
+          </a-form-item>
+        </a-col>
+        <a-col span="8">
+          <a-form-item label="上传人" :labelCol="labelCol" :wrapperCol="wrapperCol">
+            <j-popup
+              v-decorator="['uploadPerson', validatorRules.uploadPerson]"
+              :trigger-change="true"
+              org-fields="realname,depart_name"
+              dest-fields="uploadPerson,uploadDept"
+              code="user_dept"
+              @callback="popupCallback"/>
+          </a-form-item>
+        </a-col>
+        <a-col span="8">
+          <a-form-item label="上传部门" :labelCol="labelCol" :wrapperCol="wrapperCol">
+            <a-input v-decorator="[ 'uploadDept', validatorRules.uploadDept]" :disabled="true" placeholder="请输入上传部门"></a-input>
+          </a-form-item>
+        </a-col>
+        <a-col span="8">
+          <a-form-item label="上传时间" :labelCol="labelCol" :wrapperCol="wrapperCol">
+            <j-date placeholder="请选择上传时间" v-decorator="[ 'uploadDate', validatorRules.uploadDate]" :trigger-change="true" :show-time="true" date-format="YYYY-MM-DD HH:mm:ss" style="width: 100%"/>
+          </a-form-item>
+        </a-col>
+        <a-col span="24">
+          <a-form-item label="备注" :labelCol="labelCol1" :wrapperCol="wrapperCol1">
+            <a-textarea v-decorator="['remark', validatorRules.remark]" rows="1" placeholder="请输入备注"/>
+          </a-form-item>
+        </a-col>
+        <a-col span="24">
+          <a-form-item label="附件" :labelCol="labelCol1" :wrapperCol="wrapperCol1">
+            <j-upload  v-decorator="['file', validatorRules.file]" :trigger-change="true"></j-upload>
+          </a-form-item>
+        </a-col>
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+
+  import { httpAction } from '@/api/manage'
+  import pick from 'lodash.pick'
+  import { validateDuplicateValue } from '@/utils/util'
+  import JDate from '@/components/jeecg/JDate'
+  import JUpload from '@/components/jeecg/JUpload'
+
+  export default {
+    name: "ConferenceMinutesModal",
+    components: {
+      JDate,
+      JUpload,
+    },
+    data () {
+      return {
+        form: this.$form.createForm(this),
+        title:"操作",
+        width:1350,
+        visible: false,
+        model: {},
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 6 },
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 15 },
+        },
+        labelCol1: {
+          xs: { span: 24 },
+          sm: { span: 2 },
+        },
+        wrapperCol1: {
+          xs: { span: 24 },
+          sm: { span: 21 },
+        },
+        confirmLoading: false,
+        validatorRules: {
+          minutesId: {rules: [
+          ]},
+          conferenceTitle: {rules: [
+            {required: true, message: '请输入会议议题!'},
+          ]},
+          uploadPerson: {rules: [
+            {required: true, message: '请输入上传人!'},
+          ]},
+          uploadDept: {rules: [
+            {required: true, message: '请输入上传部门!'},
+          ]},
+          uploadDate: {rules: [
+            {required: true, message: '请输入上传时间!'},
+          ]},
+          remark: {rules: [
+          ]},
+          file: {rules: [
+          ]},
+        },
+        url: {
+          add: "/conferenceMinutes/conferenceMinutes/add",
+          edit: "/conferenceMinutes/conferenceMinutes/edit",
+        }
+      }
+    },
+    created () {
+    },
+    methods: {
+      getProjectNum () {
+        const projectTime = new Date() // 当前中国标准时间
+        const Year = projectTime.getFullYear() // 获取当前年份 支持IE和火狐浏览器.
+        var CurrentDate = 'HYLB'
+        CurrentDate += Year
+        return CurrentDate+ Math.floor(Math.random() * 10000);
+      },
+      add () {
+        this.edit({minutesId:this.getProjectNum()});
+      },
+      edit (record) {
+        this.form.resetFields();
+        this.model = Object.assign({}, record);
+        this.visible = true;
+        this.$nextTick(() => {
+          this.form.setFieldsValue(pick(this.model,'minutesId','conferenceTitle','uploadPerson','uploadDept','uploadDate','remark','file'))
+        })
+      },
+      close () {
+        this.$emit('close');
+        this.visible = false;
+      },
+      handleOk () {
+        const that = this;
+        // 触发表单验证
+        this.form.validateFields((err, values) => {
+          if (!err) {
+            that.confirmLoading = true;
+            let httpurl = '';
+            let method = '';
+            if(!this.model.id){
+              httpurl+=this.url.add;
+              method = 'post';
+            }else{
+              httpurl+=this.url.edit;
+               method = 'put';
+            }
+            let formData = Object.assign(this.model, values);
+            console.log("表单提交数据",formData)
+            httpAction(httpurl,formData,method).then((res)=>{
+              if(res.success){
+                that.$message.success(res.message);
+                that.$emit('ok');
+              }else{
+                that.$message.warning(res.message);
+              }
+            }).finally(() => {
+              that.confirmLoading = false;
+              that.close();
+            })
+          }
+
+        })
+      },
+      handleCancel () {
+        this.close()
+      },
+      popupCallback(row){
+        this.form.setFieldsValue(pick(row,'minutesId','conferenceTitle','uploadPerson','uploadDept','uploadDate','remark','file'))
+      },
+    }
+  }
+</script>