25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

435 lines
16 KiB

  1. <template>
  2. <view class="page">
  3. <view v-if="ready">
  4. <l-select
  5. @input="setValue('Acc_DailyAssess.Dormitory', $event)"
  6. :value="getValue('Acc_DailyAssess.Dormitory')"
  7. :disabled="!edit"
  8. :range="dataSource.Acc_DailyAssess.Dormitory"
  9. @change="DormitoryChange"
  10. title="宿舍楼"
  11. required
  12. />
  13. <l-select
  14. @input="setValue('Acc_DailyAssess.Unit', $event)"
  15. :value="getValue('Acc_DailyAssess.Unit')"
  16. :disabled="!edit"
  17. :range="dataSource.Acc_DailyAssess.Unit"
  18. @change="UnitChange"
  19. title="单元"
  20. required
  21. />
  22. <l-select
  23. @input="setValue('Acc_DailyAssess.Floor', $event)"
  24. :value="getValue('Acc_DailyAssess.Floor')"
  25. :disabled="!edit"
  26. :range="dataSource.Acc_DailyAssess.Floor"
  27. @change="FloorChange"
  28. title="楼层"
  29. required
  30. />
  31. <l-select
  32. @input="setValue('Acc_DailyAssess.RId', $event)"
  33. :value="getValue('Acc_DailyAssess.RId')"
  34. :disabled="!edit"
  35. :range="dataSource.Acc_DailyAssess.RId"
  36. title="宿舍"
  37. required
  38. />
  39. <l-select
  40. @input="setValue('Acc_DailyAssess.DeptNo', $event)"
  41. :value="getValue('Acc_DailyAssess.DeptNo')"
  42. :disabled="!edit"
  43. :range="dataSource.Acc_DailyAssess.DeptNo"
  44. @change="DeptNoChange"
  45. title="专业部"
  46. required
  47. />
  48. <l-select
  49. @input="setValue('Acc_DailyAssess.MajorNo', $event)"
  50. :value="getValue('Acc_DailyAssess.MajorNo')"
  51. :disabled="!edit"
  52. :range="dataSource.Acc_DailyAssess.MajorNo"
  53. @change="MajorNoChange"
  54. title="专业"
  55. required
  56. />
  57. <l-select
  58. @input="setValue('Acc_DailyAssess.ClassNo', $event)"
  59. :value="getValue('Acc_DailyAssess.ClassNo')"
  60. :disabled="!edit"
  61. :range="dataSource.Acc_DailyAssess.ClassNo"
  62. title="班级"
  63. required
  64. />
  65. <l-select
  66. @input="setValue('Acc_DailyAssess.StuNo', $event)"
  67. :value="getValue('Acc_DailyAssess.StuNo')"
  68. :disabled="!edit"
  69. :range="dataSource.Acc_DailyAssess.StuNo"
  70. title="学生"
  71. required
  72. />
  73. <l-date-picker
  74. @input="setValue('Acc_DailyAssess.Date', $event)"
  75. :value="getValue('Acc_DailyAssess.Date')"
  76. :disabled="!edit"
  77. title="日期"
  78. required
  79. />
  80. <l-input
  81. @input="setValue('Acc_DailyAssess.AddScoreHealth', $event)"
  82. :value="getValue('Acc_DailyAssess.AddScoreHealth')"
  83. :disabled="!edit"
  84. title="卫生奖分"
  85. />
  86. <l-input
  87. @input="setValue('Acc_DailyAssess.MinusScoreHealth', $event)"
  88. :value="getValue('Acc_DailyAssess.MinusScoreHealth')"
  89. :disabled="!edit"
  90. title="卫生扣分"
  91. />
  92. <l-input
  93. @input="setValue('Acc_DailyAssess.AddScore', $event)"
  94. :value="getValue('Acc_DailyAssess.AddScore')"
  95. :disabled="!edit"
  96. title="纪律奖分"
  97. />
  98. <l-input
  99. @input="setValue('Acc_DailyAssess.MinusScore', $event)"
  100. :value="getValue('Acc_DailyAssess.MinusScore')"
  101. :disabled="!edit"
  102. title="纪律扣分"
  103. />
  104. <l-textarea
  105. @input="setValue('Acc_DailyAssess.Reason', $event)"
  106. :value="getValue('Acc_DailyAssess.Reason')"
  107. :readonly="!edit"
  108. title="奖扣分原因"
  109. required
  110. />
  111. <!-- 附件上传 -->
  112. <l-input
  113. @input="setValue('Acc_DailyAssess.Files', $event)"
  114. :value="getValue('Acc_DailyAssess.Files')"
  115. disabled="disabled"
  116. v-show="false"
  117. title="附件值"
  118. />
  119. <uploadFile :number="5" :folderId="folderId" :value="fileList" :readonly="!edit" :title="fileTitle" :required="false"></uploadFile>
  120. </view>
  121. <view v-if="ready" class="bg-white margin-tb padding" style="padding-top: 0; overflow: hidden;">
  122. <l-button v-if="edit" @click="action('save')" size="lg" color="green" class="block margin-top" block>
  123. 提交保存
  124. </l-button>
  125. <l-button v-if="edit && mode !== 'create'" @click="action('reset')" size="lg" line="red" class="block margin-top" block>
  126. 取消编辑
  127. </l-button>
  128. </view>
  129. </view>
  130. </template>
  131. <script>
  132. /*
  133. * 版 本 Learun-ADMS V7.0.3 力软敏捷开发框架(http://www.learun.cn)
  134. * Copyright (c) 2013-2020 上海力软信息技术有限公司
  135. * 创建人:超级管理员
  136. * 日 期:2022-09-13 09:37
  137. * 描 述:寝室日常考核管理
  138. */
  139. /**
  140. * 本段代码由移动端代码生成器输出,移动端须 2.2.0 版本及以上可以使用
  141. * 请在移动端 /pages.json 中的 pages 字段中添加一条记录:
  142. * { "path": "pages/LogisticsManagement/Acc_DailyAssess/single", "style": { "navigationBarTitleText": "表单详情页" } }
  143. *
  144. * (navigationBarTitleText 字段为本页面的标题文本,可以修改)
  145. * (必须自行操作该步骤,力软代码生成器不会自动帮您修改 /pages.json 文件)
  146. */
  147. import get from 'lodash/get'
  148. import set from 'lodash/set'
  149. import moment from 'moment'
  150. import customPageMixins from '@/common/custompage.js'
  151. import uploadFile from '@/components/upload-file2.vue'
  152. export default {
  153. mixins: [customPageMixins],
  154. components:{
  155. uploadFile,
  156. },
  157. data() {
  158. return {
  159. // 页面相关参数
  160. id: null,
  161. mode: null,
  162. edit: null,
  163. ready: false,
  164. fileList:[],//附件列表
  165. folderId:null,//附件随机文件夹id
  166. fileTitle:'附件上传',//附件label值
  167. // 表单数据
  168. current: {},
  169. origin: {},
  170. // 表单项数据结构
  171. scheme: {
  172. Acc_DailyAssess: {
  173. DeptNo: { type: 'select', title: '专业部', dataSource: '1', dataSourceId: 'CdDeptInfo,deptname,deptno', verify: 'NotNull' },
  174. MajorNo: { type: 'select', title: '专业', dataSource: '1', dataSourceId: 'CdMajorInfo,majorname,majorno', verify: 'NotNull' },
  175. ClassNo: { type: 'select', title: '班级', dataSource: '1', dataSourceId: 'bjsj,classname,classno', verify: 'NotNull' },
  176. Dormitory: { type: 'select', title: '宿舍楼', dataSource: '1', dataSourceId: 'Acc_DormitoryData,name,id', verify: 'NotNull' },
  177. Unit: { type: 'select', title: '单元', dataSource: '1', dataSourceId: 'Acc_UnitData,name,id', verify: 'NotNull' },
  178. Floor: { type: 'select', title: '楼层', dataSource: '1', dataSourceId: 'Acc_FloorData,name,id' , verify: 'NotNull' },
  179. RId: { type: 'select', title: '宿舍', dataSource: '1', dataSourceId: 'Acc_RoomData,name,id' , verify: 'NotNull'},
  180. StuNo: { type: 'select', title: '学生', dataSource: '1', dataSourceId: 'StuInfoBasic,stuname,stuno', verify: 'NotNull' },
  181. Date: { type: 'datetime', title: '日期', dateformat: '0' , verify: 'NotNull'},
  182. AddScoreHealth: { type: 'text', title: '卫生奖分' },
  183. MinusScoreHealth: { type: 'text', title: '卫生扣分' },
  184. AddScore: { type: 'text', title: '纪律奖分' },
  185. MinusScore: { type: 'text', title: '纪律扣分' },
  186. Reason: { type: 'textarea', title: '奖扣分原因' , verify: 'NotNull'},
  187. Files: { type: "text", title: "附件上传" },
  188. },
  189. },
  190. // 数据源
  191. dataSource: {
  192. Acc_DailyAssess: {
  193. DeptNo: [],
  194. MajorNo: [],
  195. ClassNo: [],
  196. Dormitory: [],
  197. Unit: [],
  198. Floor: [],
  199. RId: [],
  200. StuNo:[],
  201. },
  202. }
  203. }
  204. },
  205. async onLoad({ type, id }) {
  206. await this.init(type, id)
  207. },
  208. methods: {
  209. // 页面初始化
  210. async init(type, id) {
  211. this.folderId=this.GUID();
  212. // console.log('附件随机文件夹id:'+this.folderId);
  213. this.LOADING('加载数据中...')
  214. this.id = id
  215. this.mode = type
  216. this.edit = ['create', 'edit'].includes(this.mode)
  217. // 拉取表单数据,同时拉取所有来自数据源的选单数据
  218. await Promise.all([
  219. this.FETCH_DATASOURCE('CdDeptInfo').then(result => {
  220. this.dataSource.Acc_DailyAssess.DeptNo = result.data.map(t => ({ text: t.deptname, value: t.deptno }))
  221. }),
  222. this.FETCH_DATASOURCE('CdMajorInfo').then(result => {
  223. this.dataSource.Acc_DailyAssess.MajorNo = result.data.map(t => ({ text: t.majorname, value: t.majorno }))
  224. }),
  225. this.FETCH_DATASOURCE('bjsj').then(result => {
  226. this.dataSource.Acc_DailyAssess.ClassNo = result.data.map(t => ({ text: t.classname, value: t.classno }))
  227. }),
  228. this.FETCH_DATASOURCE('Acc_DormitoryData').then(result => {
  229. this.dataSource.Acc_DailyAssess.Dormitory = result.data.map(t => ({ text: t.name, value: t.id }))
  230. }),
  231. this.FETCH_DATASOURCE('Acc_UnitData').then(result => {
  232. this.dataSource.Acc_DailyAssess.Unit = result.data.map(t => ({ text: t.name, value: t.id }))
  233. }),
  234. this.FETCH_DATASOURCE('Acc_FloorData').then(result => {
  235. this.dataSource.Acc_DailyAssess.Floor = result.data.map(t => ({ text: t.name, value: t.id }))
  236. }),
  237. this.FETCH_DATASOURCE('Acc_RoomData').then(result => {
  238. this.dataSource.Acc_DailyAssess.RId = result.data.map(t => ({ text: t.name, value: t.id }))
  239. }),
  240. this.FETCH_DATASOURCE('StuInfoBasic').then(result => {
  241. this.dataSource.Acc_DailyAssess.StuNo = result.data.map(t => ({ text: t.stuname, value: t.stuno }))
  242. }),
  243. () => {}
  244. ])
  245. await this.fetchForm()
  246. this.ready = true
  247. this.HIDE_LOADING()
  248. },
  249. // 加载表单数据
  250. async fetchForm() {
  251. if (this.mode === 'create') {
  252. this.origin = await this.getDefaultForm()
  253. } else {
  254. const result = await this.HTTP_GET('learun/adms/LogisticsManagement/Acc_DailyAssess/form', this.id)
  255. this.origin = await this.formatFormData(result)
  256. }
  257. this.current = this.COPY(this.origin)
  258. //加载附件值数据
  259. // console.log('附件值赋值前:'+this.getValue('Acc_DailyAssess.Files'));
  260. if (this.getValue('Acc_DailyAssess.Files') == ""||this.getValue('Acc_DailyAssess.Files') == undefined ||this.getValue('Acc_DailyAssess.Files') == null) {
  261. this.setValue('Acc_DailyAssess.Files',this.folderId);
  262. // console.log('附件值赋值后:'+this.getValue('Acc_DailyAssess.Files'));
  263. }else{
  264. this.folderId=this.getValue('Acc_DailyAssess.Files');
  265. // console.log('文件夹id赋值后:'+this.folderId);
  266. //请求‘获取附件列表’接口
  267. this.fileList = await this.FETCH_FILEList(this.getValue('Acc_DailyAssess.Files'));
  268. }
  269. // console.log('origin:'+JSON.stringify(this.origin) )
  270. // console.log('current:'+JSON.stringify(this.current))
  271. },
  272. // 点击 「编辑」、「重置」、「保存」、「删除」 按钮
  273. async action(type) {
  274. switch (type) {
  275. case 'edit':
  276. this.edit = true
  277. break
  278. case 'reset':
  279. this.current = this.COPY(this.origin)
  280. this.edit = false
  281. break
  282. case 'save':
  283. const verifyResult = this.verifyForm()
  284. if (verifyResult.length > 0) {
  285. this.CONFIRM('表单验证失败', verifyResult.join('\n'))
  286. return
  287. }
  288. if (!(await this.CONFIRM('提交确认', '确定要提交本页表单内容吗?', true))) {
  289. return
  290. }
  291. this.LOADING('正在提交...')
  292. const postData = await this.getPostData(this.id)
  293. console.log('页面提交数据:'+JSON.stringify(postData));
  294. this.HTTP_POST('learun/adms/LogisticsManagement/Acc_DailyAssess/save', postData, '表单提交保存失败').then(success => {
  295. this.HIDE_LOADING()
  296. if (!success) {
  297. return
  298. }
  299. this.EMIT('LogisticsManagementAcc_DailyAssess-list-change')
  300. this.NAV_BACK()
  301. this.TOAST('提交保存成功')
  302. })
  303. break
  304. case 'delete':
  305. if (!(await this.CONFIRM('删除项目', '确定要删除本项吗?', true))) {
  306. return
  307. }
  308. this.LOADING('提交删除中...')
  309. this.HTTP_POST('learun/adms/LogisticsManagement/Acc_DailyAssess/delete', this.id, '删除失败').then(success => {
  310. this.HIDE_LOADING()
  311. if (!success) {
  312. return
  313. }
  314. this.EMIT('LogisticsManagementAcc_DailyAssess-list-change')
  315. this.NAV_BACK()
  316. this.this.TOAST('删除成功', 'success')
  317. })
  318. break
  319. default: break
  320. }
  321. },
  322. // 获取表单值
  323. getValue(path) {
  324. return get(this.current, path)
  325. },
  326. // 设置表单值
  327. setValue(path, val) {
  328. set(this.current, path, val)
  329. },
  330. //多条件查询:宿舍楼改变事件
  331. async DormitoryChange(){
  332. if (this.getValue('Acc_DailyAssess.Dormitory') != null && this.getValue('Acc_DailyAssess.Dormitory') !=undefined && this.getValue('Acc_DailyAssess.Dormitory') != "") {
  333. this.FETCH_DATASOURCE('Acc_UnitData').then(result => {
  334. this.dataSource.Acc_DailyAssess.Unit = result.data.filter(t=>t.parentid===this.getValue('Acc_DailyAssess.Dormitory') ).map(t => ({ text: t.name, value: t.id }))
  335. })
  336. }else{
  337. this.FETCH_DATASOURCE('Acc_UnitData').then(result => {
  338. this.dataSource.Acc_DailyAssess.Unit = result.data.map(t => ({ text: t.name, value: t.id }))
  339. })
  340. }
  341. },//多条件查询:单元改变事件
  342. async UnitChange(){
  343. if (this.getValue('Acc_DailyAssess.Unit') != null && this.getValue('Acc_DailyAssess.Unit')!=undefined && this.getValue('Acc_DailyAssess.Unit')!= "") {
  344. this.FETCH_DATASOURCE('Acc_FloorData').then(result => {
  345. this.dataSource.Acc_DailyAssess.Floor = result.data.filter(t=>t.parentid===this.getValue('Acc_DailyAssess.Unit')).map(t => ({ text: t.name, value: t.id }))
  346. })
  347. }else{
  348. this.FETCH_DATASOURCE('Acc_FloorData').then(result => {
  349. this.dataSource.Acc_DailyAssess.Floor = result.data.map(t => ({ text: t.name, value: t.id }))
  350. })
  351. }
  352. },
  353. //多条件查询:楼层改变事件
  354. async FloorChange(){
  355. if (this.getValue('Acc_DailyAssess.Floor') != null && this.getValue('Acc_DailyAssess.Floor')!=undefined && this.getValue('Acc_DailyAssess.Floor') != "") {
  356. this.FETCH_DATASOURCE('Acc_RoomData').then(result => {
  357. this.dataSource.Acc_DailyAssess.RId = result.data.filter(t=>t.parentid===this.getValue('Acc_DailyAssess.Floor')).map(t => ({ text: t.name, value: t.id }))
  358. })
  359. }else{
  360. this.FETCH_DATASOURCE('Acc_RoomData').then(result => {
  361. this.dataSource.Acc_DailyAssess.RId = result.data.map(t => ({ text: t.name, value: t.id }))
  362. })
  363. }
  364. },
  365. //多条件查询:专业部改变事件
  366. async DeptNoChange(){
  367. if (this.getValue('Acc_DailyAssess.DeptNo') != null && this.getValue('Acc_DailyAssess.DeptNo')!=undefined && this.getValue('Acc_DailyAssess.DeptNo') != "") {
  368. this.FETCH_DATASOURCE('CdMajorInfo').then(result => {
  369. this.dataSource.Acc_DailyAssess.MajorNo = result.data.filter(t=>t.deptno===this.getValue('Acc_DailyAssess.DeptNo')).map(t => ({ text: t.majorname, value: t.majorno }))
  370. })
  371. }else{
  372. this.FETCH_DATASOURCE('CdMajorInfo').then(result => {
  373. this.dataSource.Acc_DailyAssess.MajorNo = result.data.map(t => ({ text: t.majorname, value: t.majorno }))
  374. })
  375. }
  376. },
  377. //多条件查询:专业改变事件
  378. async MajorNoChange(){
  379. if (this.getValue('Acc_DailyAssess.MajorNo') != null && this.getValue('Acc_DailyAssess.MajorNo')!=undefined && this.getValue('Acc_DailyAssess.MajorNo') != "") {
  380. this.FETCH_DATASOURCE('bjsj').then(result => {
  381. this.dataSource.Acc_DailyAssess.ClassNo = result.data.filter(t=>t.majorno===this.getValue('Acc_DailyAssess.MajorNo')).map(t => ({ text: t.classname, value: t.classno }))
  382. })
  383. }else{
  384. this.FETCH_DATASOURCE('bjsj').then(result => {
  385. this.dataSource.Acc_DailyAssess.ClassNo = result.data.map(t => ({ text: t.classname, value: t.classno }))
  386. })
  387. }
  388. },
  389. }
  390. }
  391. </script>