Browse Source

需求更新,查漏补缺

master
xuhuajiao 3 weeks ago
parent
commit
82d05e821f
  1. 6
      public/static/config.js
  2. 12
      src/api/system/documentArchives.js
  3. 18
      src/assets/iconfonts/light/iconfont.css
  4. 2
      src/assets/iconfonts/light/iconfont.js
  5. 21
      src/assets/iconfonts/light/iconfont.json
  6. BIN
      src/assets/iconfonts/light/iconfont.ttf
  7. BIN
      src/assets/iconfonts/light/iconfont.woff
  8. BIN
      src/assets/iconfonts/light/iconfont.woff2
  9. 443
      src/views/archivesMIOD/miodLibrary/module/detail.vue
  10. 31
      src/views/archivesMIOD/miodRecord/index.vue
  11. 6
      src/views/components/category/PreviewForm.vue
  12. 40
      src/views/system/borrowerManage/index.vue
  13. 12
      src/views/system/database/index.vue
  14. 128
      src/views/system/officialDocumentParams/index.vue

6
public/static/config.js

@ -1,9 +1,7 @@
window.g = {
AXIOS_TIMEOUT: 10000,
// ApiUrl: 'http://27.16.212.58:11100', // 配置服务器地址,
ApiUrl: 'http://192.168.99.71:11110',
// ApiUrl: 'http://192.168.99.107:11100',
ApiUrl: 'http://192.168.99.67:13000',
AIDeepSeekUrl:'http://192.168.99.86:12123',
ProcessModelUrl:'http://192.168.99.72:11200',
sDevId:'D002'
sDevID:'D002'
}

12
src/api/system/documentArchives.js

@ -302,6 +302,15 @@ export function FetchArchivesDetailsBorrowLog(params) {
})
}
// 借出
export function FetchLend(data) {
return request({
url: 'api/borrow/lend',
method: 'post',
data
})
}
export default {
FetchInitDocumentParam,
updateDocumentParam,
@ -336,5 +345,6 @@ export default {
FetchBindReadNo,
FetchUnbindReadNo,
FetchDownloadBorrower,
FetchArchivesDetailsBorrowLog
FetchArchivesDetailsBorrowLog,
FetchLend
}

18
src/assets/iconfonts/light/iconfont.css

@ -1,8 +1,8 @@
@font-face {
font-family: "iconfont"; /* Project id 3966148 */
src: url('iconfont.woff2?t=1741673831321') format('woff2'),
url('iconfont.woff?t=1741673831321') format('woff'),
url('iconfont.ttf?t=1741673831321') format('truetype');
src: url('iconfont.woff2?t=1749454508658') format('woff2'),
url('iconfont.woff?t=1749454508658') format('woff'),
url('iconfont.ttf?t=1749454508658') format('truetype');
}
.iconfont {
@ -13,6 +13,18 @@
-moz-osx-font-smoothing: grayscale;
}
.icon-tuoguanhetong:before {
content: "\e694";
}
.icon-weituo:before {
content: "\e695";
}
.icon-yijiantiquwenzi:before {
content: "\e692";
}
.icon-fasong-jiantou:before {
content: "\e9d6";
}

2
src/assets/iconfonts/light/iconfont.js
File diff suppressed because it is too large
View File

21
src/assets/iconfonts/light/iconfont.json

@ -5,6 +5,27 @@
"css_prefix_text": "icon-",
"description": "",
"glyphs": [
{
"icon_id": "13091314",
"name": "托管合同",
"font_class": "tuoguanhetong",
"unicode": "e694",
"unicode_decimal": 59028
},
{
"icon_id": "16327703",
"name": "委托",
"font_class": "weituo",
"unicode": "e695",
"unicode_decimal": 59029
},
{
"icon_id": "42551369",
"name": "一键提取文字",
"font_class": "yijiantiquwenzi",
"unicode": "e692",
"unicode_decimal": 59026
},
{
"icon_id": "41794940",
"name": "发送-箭头",

BIN
src/assets/iconfonts/light/iconfont.ttf

BIN
src/assets/iconfonts/light/iconfont.woff

BIN
src/assets/iconfonts/light/iconfont.woff2

443
src/views/archivesMIOD/miodLibrary/module/detail.vue

@ -1,178 +1,235 @@
<template>
<el-dialog class="detail-dialog" title="详情" :close-on-click-modal="false" :modal-append-to-body="false" append-to-body :visible.sync="archivesInfoVisible" :before-close="handleClose">
<!-- <span class="dialog-right-top" />
<div>
<el-dialog class="detail-dialog" title="详情" :close-on-click-modal="false" :modal-append-to-body="false" append-to-body :visible.sync="archivesInfoVisible" :before-close="handleClose">
<!-- <span class="dialog-right-top" />
<span class="dialog-left-bottom" /> -->
<div class="setting-dialog">
<div class="detail-tab tab-content">
<!-- tab -->
<ul class="tab-nav">
<li :class="{'active-tab-nav': archivesTabIndex == 0}" @click="changeActiveTab(0)">基本信息</li>
<li :class="{'active-tab-nav': archivesTabIndex == 1}" @click="changeActiveTab(1)">传阅记录</li>
<li :class="{'active-tab-nav': archivesTabIndex == 2}" @click="changeActiveTab(2)">操作记录</li>
</ul>
<div style="position: absolute; right: 0; top:0;">
<span
class="row-state"
:class="getStateClass(readStatus)"
>
{{ readStatus || '未传阅' }}
</span>
</div>
<!-- 基本信息 -->
<div v-if="archivesTabIndex===0" class="base-info-new item-content">
<el-row>
<el-col v-for="(item,index) in archivesDetailsData" :key="index" :span="item.isLine ? 24 : 12" class="base-info-item">
<span>{{ item.fieldCnName }}</span>
<p :style="{ width: ( item.editLength ? item.editLength+'px' : '' ), flex: ( !item.editLength ? 1 : '' ), whiteSpace: 'pre-line'}">{{ item.context }}</p>
</el-col>
</el-row>
<div>
<div v-if="borrowerList.length !== 0" class="childDevice-info">
<p><i style="font-style:normal; font-weight: bold;">待传阅者</i><span>{{ borrowerList | formatBorrowerList }}</span></p>
</div>
<div style="display: flex; justify-content: space-between; align-items: center; margin-top: 20px; margin-bottom: 10px; padding: 0 20px 0 10px;">
<h4 style="font-size: 16px; color: #1c1c1c;">文件列表</h4>
<el-button v-if="archivesFiledata.length !== 0 && !isMidoRecord" size="mini" style="padding: 7px 7px 7px 10px; " @click="handleAddDocDetails">
<i class="iconfont icon-tianjiawenjian" />
</el-button>
<div class="setting-dialog">
<div class="detail-tab tab-content">
<!-- tab -->
<ul class="tab-nav">
<li :class="{'active-tab-nav': archivesTabIndex == 0}" @click="changeActiveTab(0)">基本信息</li>
<li :class="{'active-tab-nav': archivesTabIndex == 1}" @click="changeActiveTab(1)">传阅记录</li>
<li :class="{'active-tab-nav': archivesTabIndex == 2}" @click="changeActiveTab(2)">操作记录</li>
</ul>
<div style="position: absolute; right: 0; top:0;">
<span
class="row-state"
:class="getStateClass(readStatus)"
>
{{ readStatus || '未传阅' }}
</span>
</div>
<!-- 基本信息 -->
<div v-if="archivesTabIndex===0" class="base-info-new item-content">
<el-row>
<el-col v-for="(item,index) in archivesDetailsData" :key="index" :span="item.isLine ? 24 : 12" class="base-info-item">
<span>{{ item.fieldCnName }}</span>
<p :style="{ width: ( item.editLength ? item.editLength+'px' : '' ), flex: ( !item.editLength ? 1 : '' ), whiteSpace: 'pre-line'}">{{ item.context }}</p>
</el-col>
</el-row>
<div>
<div v-if="borrowerList.length !== 0" class="childDevice-info">
<p><i style="font-style:normal; font-weight: bold;">待传阅者</i><span>{{ borrowerList | formatBorrowerList }}</span></p>
</div>
<div style="display: flex; justify-content: space-between; align-items: center; margin-top: 20px; margin-bottom: 10px; padding: 0 20px 0 10px;">
<h4 style="font-size: 16px; color: #1c1c1c;">文件列表</h4>
<el-button v-if="archivesFiledata.length !== 0 && !isMidoRecord" size="mini" style="padding: 7px 7px 7px 10px; " @click="handleAddDocDetails">
<i class="iconfont icon-tianjiawenjian" />
</el-button>
</div>
<el-table
v-loading="archivesFiledataLoading"
:data="archivesFiledata"
style="min-width: 100%;"
height="calc(100vh - 716px)"
>
<el-table-column prop="reg_no" label="登记号" show-overflow-tooltip min-width="140" />
<el-table-column prop="details_type" label="类型" min-width="85">
<template slot-scope="scope">
<el-tag v-if="scope.row.details_type === 1">原件</el-tag>
<el-tag v-else>复印件</el-tag>
</template>
</el-table-column>
<el-table-column prop="pass_location" label="传阅所在位置" min-width="180" />
<el-table-column v-if="isMidoRecord" prop="read_type" label="传阅状态" min-width="80" align="center">
<template slot-scope="scope">
<div>
<span v-if="scope.row.read_type==='传阅中'" class="row-state end-state">{{ scope.row.read_type }}</span>
<span v-if="scope.row.read_type==='空闲中' || scope.row.read_type==='未传阅'" class="row-state defalut-state">{{ scope.row.read_type }}</span>
</div>
</template>
</el-table-column>
<el-table-column prop="tid" label="电子标签绑定" min-width="120" align="center">
<template slot-scope="scope">
<span v-if="scope.row.tid && (scope.row.tid!==null || scope.row.tid !=='')" class="row-state end-state">已绑定</span>
<span v-else class="row-state defalut-state">未绑定</span>
</template>
</el-table-column>
<el-table-column v-if="!isMidoRecord" prop="update_time" label="操作" min-width="160">
<template slot-scope="scope">
<!-- 绑定标签 -->
<el-button
:loading="bindLoading[scope.row.id]"
style="padding: 4px 4px 4px 6px !important; color: #0348f3 !important; background-color: #dcedfd !important; border: 1px solid #9bd1ff !important;"
@click="bindingTag(scope.row)"
><i class="iconfont icon-bendiguajie" /></el-button>
<!-- 解绑标签 -->
<el-button
:loading="unbindBtnLoading[scope.row.id]"
style="padding: 4px 4px 4px 6px !important; color: #ff8329 !important; background-color: #fff3e5 !important; border: 1px solid #febd98 !important;"
@click="handleUnbind(scope.row)"
><i class="iconfont icon-jiebang" /></el-button>
<!-- 删除文件 -->
<el-button
v-if="scope.row.details_type !== 1"
:loading="deleteBtnLoading[scope.row.id]"
style="padding: 4px 6px 4px 6px !important; color: #ed4a41!important; background-color: #fcece9 !important; border: 1px solid #fbc0b5 !important;"
@click="toDelete(scope.row)"
><i class="iconfont icon-shanchu" /></el-button>
</template>
</el-table-column>
<el-table-column v-if="!isMidoRecord" prop="update_time" label="传阅操作" min-width="80" align="center">
<template slot-scope="scope">
<!-- 传阅 - 选择用户 -->
<el-button v-if="scope.row.read_type!=='传阅中'" :loading="lendBtnLoading[scope.row.id]" style="padding: 4px 2px 4px 6px !important; color: #0348f3 !important; background-color: #dcedfd !important; border: 1px solid #9bd1ff !important;" @click="handleLendFile(scope.row)"><i class="iconfont icon-liuchengfaqi" /></el-button>
</template>
</el-table-column>
</el-table>
</div>
</div>
<!-- 传阅记录 -->
<div v-if="archivesTabIndex===1" class="item-content">
<el-table
v-loading="archivesFiledataLoading"
:data="archivesFiledata"
:data="borrowTableData"
style="min-width: 100%;"
height="calc(100vh - 716px)"
height="calc(100vh - 280px)"
>
<el-table-column prop="reg_no" label="登记号" show-overflow-tooltip min-width="140" />
<el-table-column prop="reg_no" label="公文登记号" show-overflow-tooltip min-width="140" />
<el-table-column prop="details_type" label="类型" min-width="85">
<template slot-scope="scope">
<el-tag v-if="scope.row.details_type === 1">原件</el-tag>
<el-tag v-else>复印件</el-tag>
</template>
</el-table-column>
<el-table-column prop="pass_location" label="传阅所在位置" min-width="180" />
<el-table-column v-if="isMidoRecord" prop="read_type" label="传阅状态" min-width="80" align="center">
<el-table-column prop="borrow_name" label="传阅者" min-width="85" />
<el-table-column prop="borrow_type" label="类型">
<template slot-scope="scope">
<div>
<span v-if="scope.row.read_type==='传阅中'" class="row-state end-state">{{ scope.row.read_type }}</span>
<span v-if="scope.row.read_type==='空闲中'" class="row-state defalut-state">{{ scope.row.read_type }}</span>
<span v-if="scope.row.borrow_type === 1">部门</span>
<span v-if="scope.row.borrow_type === 2">个人</span>
</div>
</template>
</el-table-column>
<el-table-column prop="tid" label="电子标签绑定" min-width="120" align="center">
<el-table-column prop="start_time" label="开始时间" width="180">
<template slot-scope="scope">
<span v-if="scope.row.tid && (scope.row.tid!==null || scope.row.tid !=='')" class="row-state end-state">已绑定</span>
<span v-else class="row-state defalut-state">未绑定</span>
<div>{{ scope.row.start_time | parseTime }}</div>
</template>
</el-table-column>
<el-table-column v-if="!isMidoRecord" prop="update_time" label="操作" min-width="160">
<el-table-column prop="latest_time" label="结束时间" width="180">
<template slot-scope="scope">
<!-- 绑定标签 -->
<el-button
:loading="bindLoading[scope.row.id]"
style="padding: 4px 4px 4px 6px !important; color: #0348f3 !important; background-color: #dcedfd !important; border: 1px solid #9bd1ff !important;"
@click="bindingTag(scope.row)"
><i class="iconfont icon-bendiguajie" /></el-button>
<!-- 解绑标签 -->
<el-button
:loading="unbindBtnLoading[scope.row.id]"
style="padding: 4px 4px 4px 6px !important; color: #ff8329 !important; background-color: #fff3e5 !important; border: 1px solid #febd98 !important;"
@click="handleUnbind(scope.row)"
><i class="iconfont icon-jiebang" /></el-button>
<!-- 删除文件 -->
<el-button
v-if="scope.row.details_type !== 1"
:loading="deleteBtnLoading[scope.row.id]"
style="padding: 4px 6px 4px 6px !important; color: #ed4a41!important; background-color: #fcece9 !important; border: 1px solid #fbc0b5 !important;"
@click="toDelete(scope.row)"
><i class="iconfont icon-shanchu" /></el-button>
<div>{{ scope.row.latest_time | parseTime }}</div>
</template>
</el-table-column>
</el-table>
<!--分页组件-->
<el-pagination
v-if="borrowTableData.length !== 0"
:current-page="pageBorrow.page+1"
:total="pageBorrow.total"
:page-size="pageBorrow.size"
:pager-count="5"
layout="total, prev, pager, next, sizes"
@size-change="handleBorrowSizeChange"
@current-change="handleBorrowCurrentPage"
/>
</div>
<!-- 操作记录 -->
<div v-if="archivesTabIndex==2" class="item-content">
<el-table class="archives-table" :data="handleTableData" style="min-width: 100%; " height="calc(100vh - 280px)">
<el-table-column prop="operateType" label="操作类型" min-width="60" align="center">
<template slot-scope="scope">
<!-- getOperateTypeText(scope.row.operateType) -->
<span class="row-state row-packing state-active">{{ scope.row.operateType }}</span>
</template>
</el-table-column>
<el-table-column prop="createBy" label="处理人" min-width="60" />
<el-table-column prop="createTime" label="处理时间" width="180">
<template slot-scope="scope">
<div>{{ scope.row.createTime | parseTime }}</div>
</template>
</el-table-column>
<el-table-column prop="remarks" label="备注" min-width="180" show-overflow-tooltip />
</el-table>
<!--分页组件-->
<el-pagination
v-if="handleTableData.length !== 0"
:current-page="page.page+1"
:total="page.total"
:page-size="page.size"
:pager-count="5"
layout="total, prev, pager, next, sizes"
@size-change="handleSizeChange"
@current-change="handleCurrentPage"
/>
</div>
</div>
<!-- 传阅记录 -->
<div v-if="archivesTabIndex===1" class="item-content">
<el-table
:data="borrowTableData"
style="min-width: 100%;"
height="calc(100vh - 280px)"
>
<el-table-column prop="reg_no" label="公文登记号" show-overflow-tooltip min-width="140" />
<el-table-column prop="details_type" label="类型" min-width="85">
<template slot-scope="scope">
<el-tag v-if="scope.row.details_type === 1">原件</el-tag>
<el-tag v-else>复印件</el-tag>
</template>
</el-table-column>
<el-table-column prop="borrow_name" label="传阅者" min-width="85" />
<el-table-column prop="borrow_type" label="类型">
<template slot-scope="scope">
<div>
<span v-if="scope.row.borrow_type === 1">部门</span>
<span v-if="scope.row.borrow_type === 2">个人</span>
</div>
</template>
</el-table-column>
<el-table-column prop="start_time" label="开始时间" width="180">
<template slot-scope="scope">
<div>{{ scope.row.start_time | parseTime }}</div>
</template>
</el-table-column>
<el-table-column prop="latest_time" label="结束时间" width="180">
<template slot-scope="scope">
<div>{{ scope.row.latest_time | parseTime }}</div>
</template>
</el-table-column>
</el-table>
<!--分页组件-->
<el-pagination
v-if="borrowTableData.length !== 0"
:current-page="pageBorrow.page+1"
:total="pageBorrow.total"
:page-size="pageBorrow.size"
:pager-count="5"
layout="total, prev, pager, next, sizes"
@size-change="handleBorrowSizeChange"
@current-change="handleBorrowCurrentPage"
/>
</div>
<!-- 操作记录 -->
<div v-if="archivesTabIndex==2" class="item-content">
<el-table class="archives-table" :data="handleTableData" style="min-width: 100%; " height="calc(100vh - 280px)">
<el-table-column prop="operateType" label="操作类型" min-width="60" align="center">
<template slot-scope="scope">
<!-- getOperateTypeText(scope.row.operateType) -->
<span class="row-state row-packing state-active">{{ scope.row.operateType }}</span>
</template>
</el-table-column>
<el-table-column prop="createBy" label="处理人" min-width="60" />
<el-table-column prop="createTime" label="处理时间" width="180">
<template slot-scope="scope">
<div>{{ scope.row.createTime | parseTime }}</div>
</template>
</el-table-column>
<el-table-column prop="remarks" label="备注" min-width="180" show-overflow-tooltip />
</el-table>
<!--分页组件-->
<el-pagination
v-if="handleTableData.length !== 0"
:current-page="page.page+1"
:total="page.total"
:page-size="page.size"
:pager-count="5"
layout="total, prev, pager, next, sizes"
@size-change="handleSizeChange"
@current-change="handleCurrentPage"
/>
</div>
</div>
</div>
</el-dialog>
</el-dialog>
<!-- @open="onDialogOpen" -->
<el-dialog class="miod-depts-dialog" :append-to-body="true" :visible="deptsVisible" :before-close="handleBorrowClose" :close-on-click-modal="false" title="领导及部门">
<span class="dialog-right-top" />
<span class="dialog-left-bottom" />
<div class="setting-dialog">
<el-table ref="deptsMiodTable" :data="deptsMiodTable" highlight-current-row row-key="id" height="400" style="width: 100%;" @row-click="clickRowHandlerDepts" @selection-change="selectionChangeHandlerDepts">
<el-table-column type="selection" width="55" />
<el-table-column prop="borrowName" label="借阅者名称" />
<el-table-column prop="borrowType" label="借阅者类型">
<template slot-scope="scope">
<div>
<span v-if="scope.row.borrowType === 1">部门</span>
<span v-if="scope.row.borrowType === 2">个人</span>
</div>
</template>
</el-table-column>
<el-table-column prop="borrowNo" label="借阅证绑定">
<template slot-scope="scope">
<div>
<span v-if="scope.row.borrowNo && (scope.row.borrowNo !== null || scope.row.borrowNo !== '')" class="row-state end-state">已绑定</span>
<span v-else class="row-state cancel-state">未绑定</span>
</div>
</template>
</el-table-column>
<el-table-column prop="create_time" label="创建日期" width="200px">
<template slot-scope="scope">
<div>{{ scope.row.create_time | parseTime }}</div>
</template>
</el-table-column>
</el-table>
<!--分页组件-->
<el-pagination
v-if="deptsMiodTable.length !== 0"
:current-page="pageDepts.page"
:total="pageDepts.total"
:page-size="pageDepts.size"
:pager-count="5"
layout="total, prev, pager, next, sizes"
@size-change="handleDeptsSizeChange"
@current-change="handleDeptsCurrentPage"
/>
</div>
<div slot="footer" class="dialog-footer">
<el-button type="text" @click="handleBorrowClose">取消</el-button>
<el-button type="primary" @click.native="handleComfireDepts">确定</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
// import { crud } from '@crud/crud'
import { FetchArchivesDetails, FetchInitDocumentDetailsList, FetchAddDocumentDetails, FetchDeleteDocumentDetails, FetchInitDistributorByDocumentId, FetchInitOperate, FetchReadGW, FetchBingdingLabel, FetchUnbindTag, FetchArchivesDetailsBorrowLog } from '@/api/system/documentArchives'
import { FetchArchivesDetails, FetchInitDocumentDetailsList, FetchAddDocumentDetails, FetchDeleteDocumentDetails, FetchInitDistributorByDocumentId, FetchInitOperate, FetchReadGW, FetchBingdingLabel, FetchUnbindTag, FetchArchivesDetailsBorrowLog, FetchLend } from '@/api/system/documentArchives'
import { FetchInitBorrowerList } from '@/api/system/borrower'
import { mapGetters } from 'vuex'
export default {
@ -254,7 +311,17 @@ export default {
},
bindLoading: {},
unbindBtnLoading: {},
deleteBtnLoading: {}
deleteBtnLoading: {},
lendBtnLoading: {},
deptsVisible: false,
deptsMiodTable: [],
pageDepts: {
page: 0,
size: 10,
total: 0
},
singleSelectedDept: null,
currentLendData: null
}
},
computed: {
@ -641,6 +708,92 @@ export default {
this.$set(this.deleteBtnLoading, datas.id, false)
})
},
handleLendFile(data) {
console.log('data', data)
this.currentLendData = data
this.deptsVisible = true
this.FetchDeptsList()
},
// /
FetchDeptsList() {
this.singleSelectedDept = null
this.deptsMiodTable = []
// this.btnLoading = true
FetchInitBorrowerList(this.filterParams)
.then(res => {
this.deptsMiodTable = res.content || []
this.pageDepts.total = res.totalElements || 0
})
.catch(error => {
this.$message.error('获取数据失败,请稍后重试')
console.error('获取部门/人员列表失败', error)
})
.finally(() => {
// this.btnLoading = false
})
},
handleComfireDepts() {
// if (this.miodDeptsSelections.length === 0) {
// this.$message.warning('/')
// return
// }
// this.miodDeptsTags = [...this.miodDeptsSelections]
if (this.singleSelectedDept !== null) {
const param = {
'borrowDocumentTid': this.currentLendData.reg_no,
'borrowerNo': this.singleSelectedDept.borrowNo
}
console.log('param', param)
FetchLend(param).then((res) => {
console.log('resLend', res)
if (res.code !== -1) {
this.$message({ message: res.msg, type: 'success', offset: 8 })
this.getInitDocumentDetailsList()
} else {
this.$message({ message: res.msg, type: 'error', offset: 8 })
}
this.deptsVisible = false
this.$set(this.lendBtnLoading, this.currentLendData.id, false)
}).catch(error => {
console.error(error)
this.$set(this.lendBtnLoading, this.currentLendData.id, false)
})
} else {
this.$message({ message: '请选择借阅者', type: 'error', offset: 8 })
}
},
clickRowHandlerDepts(row, event, column) {
this.$refs.deptsMiodTable.toggleRowSelection(row, true) //
this.singleSelectedDept = row //
},
selectionChangeHandlerDepts(selection) {
if (selection.length > 1) {
//
const latestRow = selection[selection.length - 1]
this.$refs.deptsMiodTable.clearSelection()
this.$refs.deptsMiodTable.toggleRowSelection(latestRow, true)
this.singleSelectedDept = latestRow
} else if (selection.length === 1) {
//
this.singleSelectedDept = selection[0]
} else {
//
this.singleSelectedDept = null
}
},
handleDeptsSizeChange(size) {
this.pageDepts.size = size
this.pageDepts.page = 0
this.FetchDeptsList()
},
handleDeptsCurrentPage(pageVal) {
this.pageDepts.page = pageVal - 1
this.FetchDeptsList()
},
handleBorrowClose(done) {
this.deptsVisible = false
done()
},
handleClose(done) {
this.archivesInfoVisible = false
done()

31
src/views/archivesMIOD/miodRecord/index.vue

@ -37,19 +37,18 @@
<div class="container-wrap">
<span class="right-top-line" />
<span class="left-bottom-line" />
<!-- @selection-change="crud.selectionChangeHandler" -->
<el-table
ref="table"
v-loading="crud.loading"
class="archives-table"
:data="crud.data"
style="width: 100%;"
height="calc(100vh - 231px);"
height="calc(100vh - 288px)"
@cell-dblclick="tableDoubleClick"
@selection-change="crud.selectionChangeHandler"
>
<el-table-column prop="reg_no" label="公文登记号" width="120" />
<el-table-column prop="maintitle" label="公文题名" />
<el-table-column prop="maintitle" label="公文题名" min-width="140" />
<el-table-column prop="details_type" label="文件类型">
<template slot-scope="scope">
<el-tag v-if="scope.row.details_type === 1">原件</el-tag>
@ -90,6 +89,12 @@
</div>
</template>
</el-table-column>
<el-table-column prop="actual_return_time" label="操作" align="center" width="100">
<!-- -->
<template slot-scope="scope">
<el-button v-if="!(scope.row.actual_return_time && (scope.row.actual_return_time!=='' || scope.row.actual_return_time!== null))" size="mini" style="padding: 5px;" :loading="returnBtnLoading[scope.$index]" @click="handleReturnFile(scope.$index, scope.row)"><i class="iconfont icon-weituo" />归还</el-button>
</template>
</el-table-column>
</el-table>
<pagination v-if="crud.data.length !== 0" />
</div>
@ -139,7 +144,8 @@ export default {
detailArcData: [],
categoryId: null,
parentInfo: null,
pageType: 'miodRecord'
pageType: 'miodRecord',
returnBtnLoading: []
}
},
watch: {
@ -245,6 +251,21 @@ export default {
this.$refs.archivesInfo.getDetial()
})
},
handleReturnFile(index, row) {
this.$set(this.returnBtnLoading, index, true)
console.log('row', row)
this.$confirm('确认是否归还当前所选文件,公文登记号:' + row.reg_no + '<span>你是否还要继续?</span>', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
dangerouslyUseHTMLString: true
}).then(() => {
console.log('row222', row)
this.$set(this.returnBtnLoading, index, false)
}).catch(() => {
this.$set(this.returnBtnLoading, index, false)
})
},
handleCloseDialog(done) {
}
}

6
src/views/components/category/PreviewForm.vue

@ -189,11 +189,11 @@
</div>
</template>
</el-table-column>
<el-table-column prop="status" label="借阅证绑定">
<el-table-column prop="borrowNo" label="借阅证绑定">
<template slot-scope="scope">
<div>
<span v-if="scope.row.status === 0" class="row-state cancel-state">绑定</span>
<span v-if="scope.row.status === 1" class="row-state end-state">绑定</span>
<span v-if="scope.row.borrowNo && (scope.row.borrowNo !== null || scope.row.borrowNo !== '')" class="row-state end-state">绑定</span>
<span v-else class="row-state cancel-state">绑定</span>
</div>
</template>
</el-table-column>

40
src/views/system/borrowerManage/index.vue

@ -20,6 +20,7 @@
<i class="iconfont icon-daochu" />
导出
</el-button>
<el-button icon="el-icon-refresh-left" size="mini" :disabled="crud.selections.length !== 1" @click="handlePwdReset(crud.selections)">密码重置</el-button>
</template>
</crudOperation>
<div>
@ -102,6 +103,20 @@
</div>
</el-dialog>
<!-- 密码重置dialog -->
<el-dialog class="tip-dialog" :visible.sync="resetVisible" :modal-append-to-body="false" append-to-body :close-on-click-modal="false" title="提示">
<div class="setting-dialog">
<div class="tip-content">
<p class="tipMsg">此操作将重置所选借阅者密码为"123456"</p>
<span>你是否还要继续?</span>
</div>
<div slot="footer" class="dialog-footer">
<el-button type="text" @click="resetVisible = false">取消</el-button>
<el-button v-loading="btnLoading" type="primary" @click="pwdReset(crud.selections)">继续</el-button>
</div>
</div>
</el-dialog>
</div>
</template>
@ -154,7 +169,9 @@ export default {
]
},
bindLoading: false,
unbindBtnLoading: false
unbindBtnLoading: false,
resetVisible: false,
btnLoading: false
}
},
computed: {
@ -286,6 +303,27 @@ export default {
children: node.children,
isDisabled: node.isType !== 2
}
},
//
handlePwdReset() {
this.resetVisible = true
},
//
pwdReset(data) {
const params = data.map(item => { return item.borrowName })
console.log('params', params)
// this.btnLoading = true
// resetpassword(params).then(res => {
// if (res === 'SUCCESS') {
// this.$message({ message: '', type: 'success', offset: 8 })
// this.resetVisible = false
// this.btnLoading = false
// this.crud.refresh()
// } else {
// this.$message({ message: '', type: 'error', offset: 8 })
// this.btnLoading = false
// }
// })
}
}
}

12
src/views/system/database/index.vue

@ -81,7 +81,7 @@
</el-dialog>
<!-- form -->
<el-dialog append-to-body :close-on-click-modal="false" :modal-append-to-body="false" :before-close="crud.cancelCU" :visible="formVisible" :title="crud.status.title">
<el-dialog append-to-body :close-on-click-modal="false" :modal-append-to-body="false" :before-close="handleClose" :visible="formVisible" :title="crud.status.title">
<span class="dialog-right-top" />
<span class="dialog-left-bottom" />
<div class="setting-dialog">
@ -243,10 +243,14 @@ export default {
toAdd() {
crudSql.add(this.crud.form).then((res) => {
console.log(res)
if (res.code !== 500) {
this.$message({ message: '新增成功', type: 'success', offset: 8 })
if (res !== null) {
if (res.code !== 500) {
this.$message({ message: '新增成功', type: 'success', offset: 8 })
} else {
this.$message({ message: res.message, type: 'error', offset: 8 })
}
} else {
this.$message({ message: res.message, type: 'error', offset: 8 })
this.$message({ message: '操作失败', type: 'error', offset: 8 })
}
this.handleClose()
this.crud.refresh()

128
src/views/system/officialDocumentParams/index.vue

@ -19,6 +19,17 @@
</el-form-item>
<p style="line-height: 32px; margin-left: 10px; font-size: 14px;">/ 小时以内开始预警</p>
</div>
<div class="row-line-style">
<el-form-item label="用户最大借阅量" prop="borrow_max">
<el-input v-model="form.borrow_max" placeholder="请输入" type="number" style="width: 120px;" />
</el-form-item>
<p style="line-height: 32px; margin-left: 10px; font-size: 14px;">/ </p>
</div>
<div class="row-line-style">
<el-form-item label="启用借阅密码" prop="borrow_pwd_use">
<el-checkbox v-model="form.borrow_pwd_use" />
</el-form-item>
</div>
</div>
</div>
<div class="row-line-style">
@ -30,6 +41,17 @@
<p style="line-height: 32px; margin-left: 10px; font-size: 14px;">/ 位顺序号例如所属中共中央ZB的原件登记号为{{ generatedNumber }}其复印件登记号为{{ generatedNumber }}-01{{ generatedNumber }}-02</p>
</div>
</div>
<div class="row-line-style">
<p class="row-line-title">自助借还规则</p>
<div class="row-line-style">
<el-form-item label="服务地址" prop="rfid_api_url">
http://
<el-input v-model="form.ip" placeholder="IP" style="width: 140px;" @input="updateRfidUrl" @blur="updateRfidUrl" />
:
<el-input v-model="form.port" type="number" placeholder="端口号" style="width: 100px;" @input="updateRfidUrl" @blur="updateRfidUrl" />
</el-form-item>
</div>
</div>
</el-form>
<div>
<el-button style="margin-top: 20px;margin-left: 30px;" :loading="crud.status.cu === 2" type="primary" @click="toVerify('add')">保存</el-button>
@ -64,7 +86,7 @@ import { verifyMaintenance } from '@/api/system/fileLibraryField'
import CRUD, { presenter, header, form, crud } from '@crud/crud'
import { mapGetters } from 'vuex'
const defaultForm = { become_warning: null, circulate_term: null, registra_num_rule: null }
const defaultForm = { become_warning: null, circulate_term: null, registra_num_rule: null, borrow_max: null, rfid_api_url: null, ip: null, port: null, borrow_pwd_use: 0 }
export default {
name: 'ParamSetting',
@ -104,18 +126,7 @@ export default {
},
verifyStatus: '',
verifyLoading: false,
showVerifyDialog: true,
rules: {
circulate_term: [
{ required: true, message: '传阅期限不可为空', trigger: 'blur' }
],
become_warning: [
{ required: true, message: '预警时间不可为空', trigger: 'blur' }
],
registra_num_rule: [
{ required: true, message: '顺序号位数不可为空', trigger: 'blur' }
]
}
showVerifyDialog: true
}
},
computed: {
@ -131,6 +142,75 @@ export default {
const orderNum = Math.max(1, this.form.registra_num_rule || 3) // 1
const sequence = 1 // 1
return `ZB${this.currentYear}${sequence.toString().padStart(orderNum, '0')}`
},
rules() {
// RFID URL - IP
const checkRfidApiUrl = (rule, value, callback) => {
// IP
if (!this.form.ip) {
callback(new Error('请输入完整的自助借还服务地址'))
return
}
//
if (!this.form.port) {
callback(new Error('请输入完整的自助借还服务地址'))
return
}
// IP
const ipReg = /^((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)$/
if (!ipReg.test(this.form.ip)) {
callback(new Error('请输入正确的地址,IP格式不正确'))
return
}
//
const portReg = /^([0-9]|[1-9]\d{1,3}|[1-5]\d{4}|6[0-4]\d{4}|65[0-4]\d{2}|655[0-2]\d|6553[0-5])$/
if (!portReg.test(this.form.port)) {
callback(new Error('请输入正确的地址,端口号格式不正确'))
return
}
// URL
if (!value) {
callback(new Error('请输入完整的自助借还服务地址'))
return
}
// URL IP
const expectedUrl = `http://${this.form.ip}:${this.form.port}`
if (value !== expectedUrl) {
callback(new Error(`地址格式应为 ${expectedUrl}`))
return
}
//
callback()
}
const validateRule = {
rfid_api_url: [
{ required: true, message: '请输入完整的自助借还服务地址', trigger: 'blur' },
{ validator: checkRfidApiUrl, trigger: 'blur' }
],
circulate_term: [
{ required: true, message: '传阅期限不可为空', trigger: 'blur' }
],
become_warning: [
{ required: true, message: '预警时间不可为空', trigger: 'blur' }
],
borrow_max: [
{ required: true, message: '最大借阅量不可为空', trigger: 'blur' }
],
borrow_pwd_use: [
],
registra_num_rule: [
{ required: true, message: '顺序号位数不可为空', trigger: 'blur' }
]
}
return validateRule
}
},
created() {
@ -142,6 +222,15 @@ export default {
}
},
methods: {
// IP URL
updateRfidUrl() {
if (this.form.ip && this.form.port) {
this.form.rfid_api_url = `http://${this.form.ip}:${this.form.port}`
} else {
this.form.rfid_api_url = ''
}
console.log('this.form.rfid_api_url', this.form.rfid_api_url)
},
handleOrderNumBlur() {
// 11
if (this.form.orderNum < 1 || this.form.orderNum === '') {
@ -165,19 +254,6 @@ export default {
},
toVerify(btn) {
this.verifyStatus = btn
// if (this.form.ip) {
// if (this.showVerifyDialog) {
// this.verifyDialogVisible = true
// return false
// }
// } else {
// this.$refs.form.validateField(['ip'], err => {
// console.log('err', err)
// if (err) {
// return
// }
// })
// }
this.$refs.form.validate(valid => {
if (valid) {
this.verifyDialogVisible = true

Loading…
Cancel
Save