You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

216 lines
7.3 KiB

  1. <template>
  2.   <view class="page">
  3.     <view v-if="ready">
  4.       <l-input
  5.         @input="setValue('SYS_ReceiveMessage.SENDER', $event)"
  6.         :value="getValue('SYS_ReceiveMessage.SENDER')"
  7.         :disabled="!edit"
  8.         title="发件人"
  9.       />
  10.       <l-input
  11.         @input="setValue('SYS_ReceiveMessage.TITLE', $event)"
  12.         :value="getValue('SYS_ReceiveMessage.TITLE')"
  13.         :disabled="!edit"
  14.         title="主题"
  15.       />
  16.       <l-select
  17.         @input="setValue('SYS_ReceiveMessage.READFLAG', $event)"
  18.         :value="getValue('SYS_ReceiveMessage.READFLAG')"
  19.         :disabled="!edit"
  20.         :range="dataSource.SYS_ReceiveMessage.READFLAG"
  21.         title="状态"
  22.       />
  23.       <l-date-picker
  24.         @input="setValue('SYS_ReceiveMessage.SENDTIME', $event)"
  25.         :value="getValue('SYS_ReceiveMessage.SENDTIME')"
  26.         :disabled="!edit"
  27.         title="收件时间"
  28.       />
  29.       <l-upload-file
  30.         @input="setValue('SYS_ReceiveMessage.URL', $event)"
  31.         :value="getValue('SYS_ReceiveMessage.URL')"
  32.         :readonly="!edit"
  33.         :number="9"
  34.         title="附件上传"
  35.       />
  36.       <l-textarea
  37.         @input="setValue('SYS_ReceiveMessage.CONTENTS', $event)"
  38.         :value="getValue('SYS_ReceiveMessage.CONTENTS')"
  39.         :readonly="!edit"
  40.         title="邮件内容"
  41.       />
  42.     </view>
  43.   
  44.   </view>
  45. </template>
  46.   
  47.   
  48. <script>
  49. /*
  50.  * 版 本 Learun-ADMS V7.0.3 力软敏捷开发框架(http://www.learun.cn)
  51.  * Copyright (c) 2013-2020 上海力软信息技术有限公司
  52.  * 创建人:超级管理员
  53.  * 日  期:2020-10-19 17:58
  54.  * 描  述:收件箱
  55.  */
  56.   
  57. /**
  58.  * 本段代码由移动端代码生成器输出,移动端须 2.2.0 版本及以上可以使用
  59.  * 请在移动端 /pages.json 中的 pages 字段中添加一条记录:
  60.  * { "path": "pages/EducationalAdministration/SYS_ReceiveMessage/single", "style": { "navigationBarTitleText": "表单详情页" } }
  61.  * 
  62.  * (navigationBarTitleText 字段为本页面的标题文本,可以修改)
  63.  * (必须自行操作该步骤,力软代码生成器不会自动帮您修改 /pages.json 文件)
  64.  */
  65.   
  66. import get from 'lodash/get'
  67. import set from 'lodash/set'
  68. import moment from 'moment'
  69. import customPageMixins from '@/common/custompage.js'
  70.   
  71. export default {
  72.   mixins: [customPageMixins],
  73.   
  74.   data() {
  75.     return {
  76.       // 页面相关参数
  77.       id: null,
  78.       mode: null,
  79.       edit: null,
  80.       ready: false,
  81.   
  82.       // 表单数据
  83.       current: {},
  84.       origin: {},
  85.   
  86.       // 表单项数据结构
  87.       scheme: {
  88.         SYS_ReceiveMessage: {
  89.           SENDER: { type: 'text', title: '发件人' },
  90.           TITLE: { type: 'text', title: '主题' },
  91.           READFLAG: { type: 'select', title: '状态', dataSource: '0' },
  92.           SENDTIME: { type: 'datetime', title: '收件时间', dateformat: '0' },
  93.           URL: { type: 'upload', title: '附件上传' },
  94.           CONTENTS: { type: 'textarea', title: '邮件内容' },
  95.         },
  96.   
  97.       },
  98.   
  99.       // 数据源
  100.       dataSource: {
  101.         SYS_ReceiveMessage: {
  102.           READFLAG: [],
  103.         },
  104.   
  105.       }
  106.     }
  107.   },
  108.   
  109.   async onLoad({ type, id }) {
  110.     await this.init(type, id)
  111.   },
  112.   
  113.   methods: {
  114.     // 页面初始化
  115.     async init(type, id) {
  116.       this.LOADING('加载数据中...')
  117.   
  118.       this.id = id
  119.       this.mode = type
  120.       this.edit = ['create', 'edit'].includes(this.mode)
  121.   
  122.       // 拉取表单数据,同时拉取所有来自数据源的选单数据
  123.       await Promise.all([
  124.   
  125.   
  126.         () => {}
  127.       ])
  128.       await this.fetchForm()
  129.   
  130.       this.ready = true
  131.       this.HIDE_LOADING()
  132.     },
  133.   
  134.     // 加载表单数据
  135.     async fetchForm() {
  136.       if (this.mode === 'create') {
  137.         this.origin = await this.getDefaultForm()
  138.       } else {
  139.         const result = await this.HTTP_GET('/EducationalAdministration/SYS_ReceiveMessage/form', this.id)
  140.         this.origin = await this.formatFormData(result)
  141.       }
  142.       this.current = this.COPY(this.origin)
  143.     },
  144.   
  145.     // 点击 「编辑」、「重置」、「保存」、「删除」 按钮
  146.     async action(type) {
  147.       switch (type) {
  148.         case 'edit':
  149.           this.edit = true
  150.           break
  151.   
  152.         case 'reset':
  153.           this.current = this.COPY(this.origin)
  154.           this.edit = false
  155.           break
  156.   
  157.         case 'save':
  158.           const verifyResult = this.verifyForm()
  159.           if (verifyResult.length > 0) {
  160.             this.CONFIRM('表单验证失败', verifyResult.join('\n'))
  161.             return
  162.           }
  163.   
  164.           if (!(await this.CONFIRM('提交确认', '确定要提交本页表单内容吗?', true))) {
  165.             return
  166.           }
  167.   
  168.           this.LOADING('正在提交...')
  169.           const postData = await this.getPostData(this.id)
  170.   
  171.           this.HTTP_POST('/EducationalAdministration/SYS_ReceiveMessage/save', postData, '表单提交保存失败').then(success => {
  172.             this.HIDE_LOADING()
  173.             if (!success) {
  174.               return
  175.             }
  176.   
  177.             this.EMIT('EducationalAdministrationSYS_ReceiveMessage-list-change')
  178.             this.NAV_BACK()
  179.             this.TOAST('提交保存成功')
  180.           })
  181.           break
  182.   
  183.         case 'delete':
  184.           if (!(await this.CONFIRM('删除项目', '确定要删除本项吗?', true))) {
  185.             return
  186.           }
  187.   
  188.           this.LOADING('提交删除中...')
  189.           this.HTTP_POST('/EducationalAdministration/SYS_ReceiveMessage/delete', this.id, '删除失败').then(success => {
  190.             this.HIDE_LOADING()
  191.             if (!success) {
  192.               return
  193.             }
  194.   
  195.             this.EMIT('EducationalAdministrationSYS_ReceiveMessage-list-change')
  196.             this.NAV_BACK()
  197.             this.this.TOAST('删除成功', 'success')
  198.           })
  199.           break
  200.   
  201.         default: break
  202.       }
  203.     },
  204.   
  205.     // 获取表单值
  206.     getValue(path) {
  207.       return get(this.current, path)
  208.     },
  209.   
  210.     // 设置表单值
  211.     setValue(path, val) {
  212.       set(this.current, path, val)
  213.     }
  214.   }
  215. }
  216. </script>