阅行客电子档案
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.

361 lines
11 KiB

  1. <template>
  2. <el-dialog :title="title" :close-on-click-modal="false" :modal-append-to-body="false" append-to-body :visible.sync="lendFormVisible" :before-close="handleCloseDialog" @opened="opened">
  3. <div class="setting-dialog">
  4. <el-form ref="form" :model="form" :rules="rules" inline label-width="100px">
  5. <el-form-item label="利用人" prop="applicant">
  6. <el-input v-model="form.applicant" style="width: 280px;" disabled />
  7. </el-form-item>
  8. <el-form-item label="利用流程" prop="title">
  9. <el-input v-model="form.title" style="width: 280px;" />
  10. </el-form-item>
  11. <el-form-item label="开始时间" prop="giveStartTime">
  12. <el-date-picker
  13. v-model="form.giveStartTime"
  14. :picker-options="pickerStartTime"
  15. type="datetime"
  16. align="right"
  17. format="yyyy-MM-dd HH:mm:ss"
  18. value-format="yyyy-MM-dd HH:mm:ss"
  19. placeholder="选择日期时间"
  20. style="width: 280px;"
  21. disabled
  22. />
  23. </el-form-item>
  24. <el-form-item label="结束时间" prop="giveEndTime">
  25. <el-date-picker
  26. v-model="form.giveEndTime"
  27. :picker-options="pickerEndTime"
  28. type="datetime"
  29. align="right"
  30. format="yyyy-MM-dd HH:mm:ss"
  31. value-format="yyyy-MM-dd HH:mm:ss"
  32. placeholder="选择日期时间"
  33. style="width: 280px;"
  34. />
  35. </el-form-item>
  36. <el-row>
  37. <el-form-item label="利用事由" prop="borrowReason">
  38. <el-input v-model="form.borrowReason" type="textarea" :rows="3" style="width: 703px;" />
  39. </el-form-item>
  40. </el-row>
  41. <!-- <el-row>
  42. <el-form-item label="状态" prop="status">
  43. <span class="row-state soon-state">即将到期</span>
  44. <span class="row-state end-state">利用中</span>
  45. <span class="row-state cancel-state">已过期</span>
  46. </el-form-item>
  47. </el-row> -->
  48. </el-form>
  49. <el-table
  50. ref="table"
  51. :data="detailArcData"
  52. style="width: 100%;"
  53. height="calc(100vh - 560px)"
  54. >
  55. <el-table-column type="index" label="序号" align="center" width="55" />
  56. <el-table-column prop="maintitle" label="档案文件" show-overflow-tooltip>
  57. <template slot-scope="scope">
  58. <div class="title-style"><span>文件</span>{{ scope.row.archiveNo }}{{ scope.row.maintitle }}</div>
  59. </template>
  60. </el-table-column>
  61. <el-table-column prop="checkedId" label="利用方式" width="340">
  62. <template slot-scope="scope">
  63. <!-- <el-checkbox v-for="item in scope.row.childMenu" :key="item.value" v-model="item.checked" :label="item.value" :data-a="responsive" @change="changeChecked(item)">{{ item.label }}</el-checkbox> -->
  64. <el-checkbox-group v-model="scope.row.checkedId" :min="1" class="checkbox-style" @change="changeChecked">
  65. <el-checkbox v-for="item in scope.row.childMenu" :key="item.value" :label="item.value" :data-a="responsive">{{ item.label }}</el-checkbox>
  66. </el-checkbox-group>
  67. </template>
  68. </el-table-column>
  69. <!-- <el-table-column prop="createTime" label="实体借阅状态" align="center" width="110">
  70. <template>
  71. <div>
  72. <span class="row-state soon-state">即将到期</span>
  73. <span class="row-state end-state">利用中</span>
  74. <span class="row-state cancel-state">已过期</span>
  75. </div>
  76. </template>
  77. </el-table-column> -->
  78. </el-table>
  79. </div>
  80. <div slot="footer" class="dialog-footer">
  81. <el-button @click.native="handleCloseDialog">取消</el-button>
  82. <el-button type="primary" @click="submitForm">提交</el-button>
  83. </div>
  84. </el-dialog>
  85. </template>
  86. <script>
  87. import { FetchFondsDetail } from '@/api/system/fonds'
  88. import { FetchIntoFlowBusiness } from '@/api/archivesManage/library'
  89. import { FetchBusinessFlowTitle } from '@/api/collect/collect'
  90. import { mapGetters } from 'vuex'
  91. import { getCurrentTime } from '@/utils/index'
  92. export default {
  93. name: 'LendForm',
  94. components: { },
  95. data() {
  96. return {
  97. title: '利用详情',
  98. lendFormVisible: false,
  99. form: {
  100. applicant: null,
  101. title: null,
  102. giveStartTime: null,
  103. giveEndTime: null,
  104. borrowReason: null,
  105. fondsNo: null
  106. },
  107. checkedEquipments: [],
  108. detailArcData: [],
  109. responsive: true,
  110. uselist: [
  111. {
  112. value: 1,
  113. label: '电子查看'
  114. },
  115. {
  116. value: 2,
  117. label: '下载'
  118. },
  119. {
  120. value: 3,
  121. label: '打印'
  122. },
  123. {
  124. value: 4,
  125. label: '实体借阅'
  126. }
  127. ],
  128. rules: {
  129. title: [
  130. { required: true, message: '标题不可为空', trigger: 'blur' }
  131. ],
  132. giveStartTime: [
  133. { required: true, message: '开始时间不可为空', trigger: 'blur' }
  134. ],
  135. giveEndTime: [
  136. { required: true, message: '结束时间不可为空', trigger: 'blur' }
  137. ],
  138. borrowReason: [
  139. { required: true, message: '利用事由不可为空', trigger: 'blur' }
  140. ]
  141. },
  142. checkedArr: []
  143. }
  144. },
  145. computed: {
  146. ...mapGetters([
  147. 'user',
  148. 'baseApi'
  149. ]),
  150. pickerStartTime() {
  151. const _this = this
  152. return {
  153. disabledDate: time => {
  154. if (_this.form.giveEndTime) {
  155. const giveEndTime = _this.form.giveEndTime.replace(/-/g, '/')
  156. return time.getTime() > new Date(giveEndTime)
  157. }
  158. }
  159. }
  160. },
  161. pickerEndTime() {
  162. const _this = this
  163. return {
  164. disabledDate: time => {
  165. if (_this.form.giveStartTime) {
  166. const giveStartTime = _this.form.giveStartTime.replace(/-/g, '/')
  167. return time.getTime() < new Date(giveStartTime)
  168. }
  169. }
  170. }
  171. }
  172. },
  173. mounted() {
  174. },
  175. methods: {
  176. opened() {
  177. this.form.applicant = this.user.username
  178. this.form.giveStartTime = getCurrentTime()
  179. this.getFondsDetail()
  180. // this.$refs.archivesListModule.getViewTable()
  181. console.log(this.detailArcData)
  182. },
  183. // changeChecked(item) {
  184. // console.log('item', item)
  185. // this.responsive = !this.responsive
  186. // },
  187. changeChecked() {
  188. this.responsive = !this.responsive
  189. this.checkedArr = []
  190. this.detailArcData.forEach((item) => {
  191. for (let i = 0; i < item.checkedId.length; i++) {
  192. for (let j = 0; j < item.childMenu.length; j++) {
  193. if (item.checkedId[i] === item.childMenu[j].value) {
  194. this.checkedArr.push(item.childMenu[j].value)
  195. }
  196. }
  197. }
  198. console.log(this.checkedArr) // 输出当前选中的所有checkbox的value值
  199. })
  200. },
  201. getFondsDetail() {
  202. FetchFondsDetail({ id: this.user.fonds.id }).then((res) => {
  203. this.form.fondsNo = res.fondsNo
  204. if (res.fondsNo) {
  205. this.getBusinessFlowTitle()
  206. }
  207. }).catch(err => {
  208. console.log(err)
  209. })
  210. },
  211. getBusinessFlowTitle() {
  212. const params = {
  213. 'username': this.user.username,
  214. 'fondsNo': this.form.fondsNo,
  215. 'businessType': 5
  216. }
  217. FetchBusinessFlowTitle(params).then((res) => {
  218. if (res.code !== 500) {
  219. console.log(res)
  220. this.form.title = res
  221. } else {
  222. this.$message({ message: '失败', type: 'error', offset: 8 })
  223. }
  224. }).catch(err => {
  225. console.log(err)
  226. })
  227. },
  228. submitForm() {
  229. console.log(this.form.checkedId)
  230. this.$refs['form'].validate((valid) => {
  231. if (valid) {
  232. const archivesIds = this.detailArcData.map(val => val.archivesId)
  233. const utilizeDTO = this.detailArcData.map(item => {
  234. const json = {
  235. 'archivesId': item.archivesId,
  236. 'categoryId': item.categoryPid,
  237. 'categoryLevel': item.categoryLevel,
  238. 'utilizeType': item.checkedId.join(',')
  239. }
  240. return json
  241. })
  242. const params = {
  243. 'title': this.form.title, // 流程名称
  244. 'applicant': this.user.username, // 申请人
  245. 'businessType': 5,
  246. 'borrowReason': this.form.borrowReason,
  247. 'giveStartTime': this.form.giveStartTime, // 赋权开始时间
  248. 'giveEndTime': this.form.giveEndTime, // 赋权结束时间
  249. 'fondsNo': this.form.fondsNo, // 原始全宗
  250. 'archivesIds': archivesIds,
  251. 'utilizeDTO': utilizeDTO
  252. }
  253. FetchIntoFlowBusiness(params).then((res) => {
  254. if (res.code !== 5001 && res.code !== 500) {
  255. this.$message({ message: '操作提交成功', type: 'success', offset: 8 })
  256. this.$emit('close-dialog')
  257. } else {
  258. // const message = JSON.parse(res.message)
  259. // this.$message.error(message.fail.join(',') + '操作提交失败')
  260. this.$message({ message: res.message, type: 'error', offset: 8 })
  261. }
  262. this.handleCloseDialog()
  263. }).catch(err => {
  264. console.log(err)
  265. })
  266. } else {
  267. console.log('error submit!!')
  268. return false
  269. }
  270. })
  271. },
  272. tableDoubleClick(row) {
  273. this.lendDetail = true
  274. },
  275. handleCloseDialog(done) {
  276. this.form.title = ''
  277. this.form.reason = ''
  278. this.form.giveStartTime = null
  279. this.form.giveEndTime = null
  280. this.$refs['form'].resetFields()
  281. this.lendFormVisible = false
  282. // 关闭弹框
  283. // done()
  284. }
  285. }
  286. }
  287. </script>
  288. <style lang="scss" scoped>
  289. .recordList-main{
  290. height: calc(100vh - 236px);
  291. .start-date,
  292. .end-date{
  293. display: flex;
  294. justify-content: flex-start;
  295. padding-left: 8px;
  296. font-size: 14px;
  297. line-height: 30px;
  298. color: #0C0E1E;
  299. span{
  300. display: block;
  301. margin-right: 8px;
  302. }
  303. }
  304. .iconfont{
  305. font-size: 14px;
  306. }
  307. .icon-fou{
  308. color: #A6ADB6;
  309. }
  310. .icon-shi{
  311. color: #12C37A;
  312. }
  313. .icon-dengdai{
  314. color: #FF8329;
  315. }
  316. .icon-cuowu1{
  317. color: #ED4A41;
  318. }
  319. .row-state{
  320. width: 56px;
  321. padding: 0;
  322. text-align: center;
  323. }
  324. }
  325. .title-style{
  326. span{
  327. display: inline-block;
  328. width: 42px;
  329. height: 22px;
  330. line-height: 22px;
  331. text-align: center;
  332. font-size: 12px;
  333. color: #0348F3;
  334. background-color: #CAE1FF;
  335. border-radius: 3px;
  336. }
  337. }
  338. ::v-deep .el-dialog{
  339. width: 860px !important;
  340. .el-form-item .el-form-item__content{
  341. width: 280px;
  342. }
  343. .dialog-footer{
  344. margin-top: 15px !important;
  345. }
  346. }
  347. ::v-deep .el-checkbox-group{
  348. .el-checkbox{
  349. margin-right: 10px !important;
  350. }
  351. }
  352. ::v-deep .el-pagination{
  353. margin: 24px 0 10px 0 !important
  354. }
  355. ::v-deep .input-prepend .el-input__inner{
  356. padding-left: 100px;
  357. }
  358. </style>