123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329 |
- <template>
- <a-modal
- :title="title"
- :width="900"
- :visible="visible"
- :confirmLoading="confirmLoading"
- @ok="handleOk"
- @cancel="handleCancel"
- :okButtonProps="{ props: {disabled: disabled} }"
- cancelText="关闭">
- <a-spin :spinning="confirmLoading">
- <a-form :form="form">
- <a-row style="width: 100%;">
- <a-col :span="24/2">
- <a-form-item
- :labelCol="labelCol"
- :wrapperCol="wrapperCol"
- label="标题">
- <a-input placeholder="请输入标题" v-decorator="['titile', validatorRules.title]" :readOnly="disableSubmit"/>
- </a-form-item>
- </a-col>
- <a-col :span="24/2">
- <a-form-item
- :labelCol="labelCol"
- :wrapperCol="wrapperCol"
- label="消息类型">
- <a-select
- v-decorator="[ 'msgCategory', validatorRules.msgCategory]"
- placeholder="请选择消息类型"
- :disabled="disableSubmit"
- :getPopupContainer="(target) => target.parentNode">
- <a-select-option value="1">通知公告</a-select-option>
- <a-select-option value="2">系统消息</a-select-option>
- </a-select>
- </a-form-item>
- </a-col>
- </a-row>
- <a-row style="width: 100%;">
- <a-col :span="24/2">
- <a-form-item
- :labelCol="labelCol"
- :wrapperCol="wrapperCol"
- label="开始时间:">
- <j-date
- style="width: 100%"
- :getCalendarContainer="node => node.parentNode"
- v-decorator="[ 'startTime', validatorRules.startTime]"
- placeholder="请选择开始时间"
- ></j-date>
- </a-form-item>
- </a-col>
- <a-col :span="24/2">
- <a-form-item
- :labelCol="labelCol"
- :wrapperCol="wrapperCol"
- label="结束时间"
- class="endTime">
- <j-date
- style="width: 100%"
- :getCalendarContainer="node => node.parentNode"
- v-decorator="[ 'endTime', validatorRules.endTime]"
- placeholder="请选择结束时间"
- ></j-date>
- </a-form-item>
- </a-col>
- </a-row>
- <a-row style="width: 100%;">
- <a-col :span="24/2">
- <a-form-item
- :labelCol="labelCol"
- :wrapperCol="wrapperCol"
- label="优先级">
- <a-select
- v-decorator="[ 'priority', {}]"
- placeholder="请选择优先级"
- :disabled="disableSubmit"
- :getPopupContainer="(target) => target.parentNode">
- <a-select-option value="L">低</a-select-option>
- <a-select-option value="M">中</a-select-option>
- <a-select-option value="H">高</a-select-option>
- </a-select>
- </a-form-item>
- </a-col>
- <a-col :span="24/2">
- <a-form-item
- :labelCol="labelCol"
- :wrapperCol="wrapperCol"
- label="通告类型">
- <a-select
- v-decorator="[ 'msgType', validatorRules.msgType]"
- placeholder="请选择通告类型"
- :disabled="disableSubmit"
- @change="chooseMsgType"
- :getPopupContainer="(target) => target.parentNode">
- <a-select-option value="USER">指定用户</a-select-option>
- <a-select-option value="ALL">全体用户</a-select-option>
- </a-select>
- </a-form-item>
- </a-col>
- </a-row>
- <a-row style="width: 100%;">
- <a-col :span="24/2">
- <a-form-item
- :labelCol="labelCol"
- :wrapperCol="wrapperCol"
- label="指定用户"
- v-if="userType">
- <a-select
- mode="multiple"
- placeholder="请选择用户"
- v-model="selectedUser"
- @dropdownVisibleChange="selectUserIds"
- >
- </a-select>
- </a-form-item>
- </a-col>
- </a-row>
- <a-row style="width: 100%;">
- <a-col :span="24">
- <a-form-item
- :labelCol="labelColX1"
- :wrapperCol="wrapperColX1"
- label="内容"
- class="j-field-content">
- <j-editor v-decorator="[ 'msgContent', {} ]" triggerChange></j-editor>
- </a-form-item>
- </a-col>
- </a-row>
- </a-form>
- </a-spin>
- <select-user-list-modal ref="UserListModal" @choseUser="choseUser"></select-user-list-modal>
- </a-modal>
- </template>
- <script>
- import { httpAction, getAction } from '@/api/manage'
- import pick from 'lodash.pick'
- import JDate from '@/components/jeecg/JDate'
- import JEditor from '@/components/jeecg/JEditor'
- import SelectUserListModal from './SelectUserListModal'
- import moment from 'moment'
- export default {
- components: { JEditor, JDate, SelectUserListModal },
- name: 'SysAnnouncementModal',
- data () {
- return {
- title: '操作',
- visible: false,
- disableSubmit: false,
- model: {},
- labelCol: {
- xs: { span: 24 },
- sm: { span: 6 }
- },
- wrapperCol: {
- xs: { span: 24 },
- sm: { span: 18 }
- },
- labelColX1: {
- xs: { span: 24 },
- sm: { span: 3 }
- },
- wrapperColX1: {
- xs: { span: 24 },
- sm: { span: 21 }
- },
- confirmLoading: false,
- form: this.$form.createForm(this),
- validatorRules: {
- title: { rules: [{ required: true, message: '请输入标题!' }] },
- msgCategory: { rules: [{ required: true, message: '请选择消息类型!' }] },
- msgType: { rules: [{ required: true, message: '请选择通告对象类型!' }] },
- endTime: { rules: [{ validator: this.endTimeValidate }] },
- startTime: { rules: [{ validator: this.startTimeValidate }] }
- },
- url: {
- queryByIds: '/sys/user/queryByIds',
- add: '/sys/annountCement/add',
- edit: '/sys/annountCement/edit'
- },
- userType: false,
- userIds: [],
- selectedUser: [],
- disabled: false,
- msgContent: ''
- }
- },
- created () {
- },
- methods: {
- add () {
- this.edit({})
- },
- edit (record) {
- this.form.resetFields()
- this.model = {}
- this.disable = false
- this.visible = true
- this.getUser(record)
- },
- getUser (record) {
- this.model = Object.assign({}, record)
- // 指定用户
- if (record && record.msgType === 'USER') {
- this.userType = true
- this.userIds = record.userIds
- getAction(this.url.queryByIds, { userIds: this.userIds }).then((res) => {
- if (res.success) {
- for (var i = 0; i < res.result.length; i++) {
- this.selectedUser.push(res.result[i].realname)
- }
- this.$refs.UserListModal.edit(res.result, this.userIds)
- }
- })
- }
- this.$nextTick(() => {
- this.form.setFieldsValue(pick(this.model, 'endTime', 'startTime', 'titile', 'msgContent', 'sender', 'priority', 'msgCategory', 'msgType', 'sendStatus', 'delFlag'))
- })
- },
- close () {
- this.$emit('close')
- this.selectedUser = []
- 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)
- if (this.userType) {
- formData.userIds = this.userIds
- }
- if(formData.endTime!==''&& formData.endTime){
- formData.endTime = formData.endTime+' '+'00:00:00'
- }
- if(formData.startTime!==''&&formData.startTime){
- formData.startTime = formData.startTime+' '+'00:00:00'
- }
- 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.visible = false
- this.$emit('close')
- this.resetUser()
- },
- resetUser () {
- this.userType = false
- this.userIds = []
- this.selectedUser = []
- this.disabled = false
- this.$refs.UserListModal.edit(null, null)
- },
- selectUserIds () {
- this.$refs.UserListModal.add(this.selectedUser, this.userIds)
- },
- chooseMsgType (value) {
- if (value == 'USER') {
- this.userType = true
- } else {
- this.userType = false
- this.selectedUser = []
- this.userIds = []
- }
- },
- // 子modal回调
- choseUser: function (userList) {
- this.selectedUser = []
- this.userIds = []
- for (var i = 0; i < userList.length; i++) {
- this.selectedUser.push(userList[i].realname)
- this.userIds += userList[i].id + ','
- }
- },
- startTimeValidate (rule, value, callback) {
- let endTime = this.form.getFieldValue('endTime')
- if (!value || !endTime) {
- callback()
- } else if (moment(value).isBefore(endTime)) {
- callback()
- } else {
- callback('开始时间需小于结束时间')
- }
- },
- endTimeValidate (rule, value, callback) {
- let startTime = this.form.getFieldValue('startTime')
- if (!value || !startTime) {
- callback()
- } else if (moment(startTime).isBefore(value)) {
- callback()
- } else {
- callback('结束时间需大于开始时间')
- }
- }
- }
- }
- </script>
- <style scoped>
- </style>
|