zhangyuan 3 years ago
parent
commit
da2e7a8ca2
  1. 4
      src/views/modules/plugins/visit/visitvisitor.vue
  2. 303
      src/views/modules/worklog/icworklog-add-or-update.vue
  3. 302
      src/views/modules/worklog/icworklog.vue
  4. 159
      src/views/modules/worklog/icworklogfile-add-or-update.vue
  5. 77
      src/views/modules/worklog/icworklogfile.vue
  6. 130
      src/views/modules/worklog/upload-image.vue

4
src/views/modules/plugins/visit/visitvisitor.vue

@ -106,12 +106,12 @@
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="getDataList()">{{ $t('query') }}</el-button>
<el-button type="primary" size="small" @click="getDataList()">{{ $t('query') }}</el-button>
</el-form-item>
</el-form>
</el-card>
<el-card class="resi-card-table">
<el-table v-loading="dataListLoading" :data="dataList" border @selection-change="dataListSelectionChangeHandle" style="width: 100%">
<el-table class="resi-table" v-loading="dataListLoading" :data="dataList" border @selection-change="dataListSelectionChangeHandle" style="width: 100%">
<el-table-column type="selection" header-align="center" align="center" width="50"></el-table-column>
<el-table-column prop="name" label="姓名" header-align="center" align="center"></el-table-column>
<el-table-column prop="idCard" label="身份证" header-align="center" align="center"></el-table-column>

303
src/views/modules/worklog/icworklog-add-or-update.vue

@ -1,54 +1,80 @@
<template>
<el-dialog :visible.sync="visible" :title="!dataForm.id ? $t('add') : $t('update')" :close-on-click-modal="false" :close-on-press-escape="false">
<el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="dataFormSubmitHandle()" :label-width="$i18n.locale === 'en-US' ? '120px' : '80px'">
<el-form-item label="客户Id" prop="customerId">
<el-input v-model="dataForm.customerId" placeholder="客户Id"></el-input>
</el-form-item>
<el-form-item label="组织Id" prop="agencyId">
<el-input v-model="dataForm.agencyId" placeholder="组织Id"></el-input>
</el-form-item>
<el-form-item label="agency_id的所有上级" prop="pids">
<el-input v-model="dataForm.pids" placeholder="agency_id的所有上级"></el-input>
</el-form-item>
<el-form-item label="网格Id【场所区域】" prop="gridId">
<el-input v-model="dataForm.gridId" placeholder="网格Id【场所区域】"></el-input>
</el-form-item>
<el-form-item label="所属网格"
prop="gridId">
<el-select
v-model.trim="dataForm.gridId"
placeholder="请选择"
clearable
>
<el-option
v-for="item in optionsG"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="标题" prop="title">
<el-input v-model="dataForm.title" placeholder="标题"></el-input>
</el-form-item>
<el-form-item label="日志类型【admin库sys_dict_data表value值】" prop="logType">
<el-input v-model="dataForm.logType" placeholder="日志类型【admin库sys_dict_data表value值】"></el-input>
<el-form-item label="日志类型" prop="logType">
<el-select v-model="dataForm.logType"
placeholder="请选择"
size="small"
clearable>
<el-option v-for="item in logTypeArr"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="日志日期" prop="logDate">
<el-input v-model="dataForm.logDate" placeholder="日志日期"></el-input>
<el-date-picker
v-model="dataForm.logDate"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
type="date"
placeholder="选择日期">
</el-date-picker>
</el-form-item>
<el-form-item label="内容" prop="content">
<el-input v-model="dataForm.content" placeholder="内容"></el-input>
<el-input type="textarea" v-model="dataForm.content" placeholder="内容"></el-input>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="dataForm.remark" placeholder="备注"></el-input>
</el-form-item>
<el-form-item label="手机" prop="mobile">
<el-input v-model="dataForm.mobile" placeholder="手机"></el-input>
</el-form-item>
<el-form-item label="删除标识:0.未删除 1.已删除" prop="delFlag">
<el-input v-model="dataForm.delFlag" placeholder="删除标识:0.未删除 1.已删除"></el-input>
</el-form-item>
<el-form-item label="乐观锁" prop="revision">
<el-input v-model="dataForm.revision" placeholder="乐观锁"></el-input>
</el-form-item>
<el-form-item label="创建人" prop="createdBy">
<el-input v-model="dataForm.createdBy" placeholder="创建人"></el-input>
</el-form-item>
<el-form-item label="创建时间" prop="createdTime">
<el-input v-model="dataForm.createdTime" placeholder="创建时间"></el-input>
</el-form-item>
<el-form-item label="更新人" prop="updatedBy">
<el-input v-model="dataForm.updatedBy" placeholder="更新人"></el-input>
</el-form-item>
<el-form-item label="更新时间" prop="updatedTime">
<el-input v-model="dataForm.updatedTime" placeholder="更新时间"></el-input>
<el-input type="textarea" v-model="dataForm.remark" placeholder="备注"></el-input>
</el-form-item>
<el-form-item label="合同附件" prop="fileList" label-width="140px">
<template>
<upload-image :defaultFileList="dataForm.fileList" :limit="6" @change="onChangeFileList"></upload-image>
</template>
</el-form-item>
<!-- <el-form-item-->
<!-- label="图片/附件"-->
<!-- label-width="150px"-->
<!-- style="display: block"-->
<!-- prop="fileList"-->
<!-- >-->
<!-- <el-upload-->
<!-- class="avatar-uploader"-->
<!-- :action="uploadUrl"-->
<!-- :data="{ customerId: customerId }"-->
<!-- :show-file-list="true"-->
<!-- :file-list="dataForm.fileList"-->
<!-- :on-preview="handleImgPreview"-->
<!-- :on-success="handleImgSuccess"-->
<!-- :on-remove="handleImgRemove"-->
<!-- :on-exceed="handleImgExceed"-->
<!-- :before-upload="beforeImgUpload"-->
<!-- :limit="3"-->
<!-- >-->
<!-- <i class="el-icon-plus avatar-uploader-icon"></i>-->
<!-- <span style="color: #999"> 点击上传支持图片wordpdf格式</span>-->
<!-- </el-upload>-->
<!-- </el-form-item>-->
</el-form>
<template slot="footer">
<el-button @click="visible = false">{{ $t('cancel') }}</el-button>
@ -59,10 +85,16 @@
<script>
import debounce from 'lodash/debounce'
import { requestPost } from "@/js/dai/request"
import UploadImage from './upload-image.vue'
export default {
data () {
return {
visible: false,
uploadUrl: window.SITE_CONFIG["apiURL"] + "/oss/file/uploadqrcodeV2",
customerId: localStorage.getItem("customerId"),
logTypeArr: [],
optionsG: [],
dataForm: {
id: '',
customerId: '',
@ -80,10 +112,18 @@ export default {
createdBy: '',
createdTime: '',
updatedBy: '',
updatedTime: ''
updatedTime: '',
fileList: []
}
}
},
components: {
UploadImage
},
created () {
this.getGridList()
this.getCategrayList()
},
computed: {
dataRule () {
return {
@ -110,30 +150,6 @@ export default {
],
content: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
remark: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
mobile: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
delFlag: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
revision: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
createdBy: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
createdTime: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
updatedBy: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
updatedTime: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
]
}
}
@ -150,7 +166,7 @@ export default {
},
//
getInfo () {
this.$http.get(`/gov/icWorkLog/${this.dataForm.id}`).then(({ data: res }) => {
this.$http.get(`/gov/org/icWorkLog/${this.dataForm.id}`).then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
@ -160,13 +176,132 @@ export default {
}
}).catch(() => {})
},
//
async getCategrayList () {
console.log(localStorage.getItem('token'))
const url = "/sys/dict/data/dictlist"
let params = {
dictType: 'log_type'
}
const { data, code, msg } = await requestPost(url, params)
if (code === 0) {
this.logTypeArr = data
} else {
this.$message.error(msg)
}
},
getGridList() {
const { user } = this.$store.state
this.$http
.post('/gov/org/customergrid/gridoption', { agencyId: user.agencyId, purpose: 'query' })
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
} else {
console.log('获取查询详情成功', res.data)
this.optionsG = res.data
}
})
.catch(() => {
return this.$message.error('网络错误')
})
},
onChangeFileList (e, rowIndex=0) {
console.log('onChangeFileList', e)
if (e.length > 0) {
this.dataForm.fileList = []
e.forEach(item => {
let ob = {
fileType: '0',
fileUrl: item.response.data.url
}
this.dataForm.fileList.push(ob)
})
}
},
beforeImgUpload(file) {
console.log(file);
const isLt1M = file.size / 1024 / 1024 < 10;
const srcType = file.type;
const format = file.name.split(".").pop();
if (!isLt1M) {
this.$message.error("上传文件大小不能超过 10MB!");
return false;
}
if (
srcType.indexOf("image") == -1 &&
srcType.indexOf("video") == -1 &&
["doc", "docx", "xls", "xlsx", "ppt", "pptx", "pdf"].indexOf(format) ==
-1
) {
this.$message.error("仅限图片、word和pdf文件!");
return false;
}
return true;
},
handleImgSuccess(res, file, fileList) {
console.log("handleImgSuccess", file);
if (res.code === 0 && res.msg === "success") {
let format = file.name.split(".").pop();
let srcType = file.raw.type;
let type = "file";
console.log("==============================srcType: ", srcType);
if (srcType.indexOf("image") != -1) {
type = "image";
} else if (srcType.indexOf("video") != -1) {
type = "video";
}
this.dataForm.fileList.push({
format,
name: file.name,
size: file.size,
type,
url: res.data.url,
});
console.log(this.dataForm.fileList);
} else {
this.$message.error(res.msg);
}
},
handleImgPreview(file) {
console.log(file);
window.open(file.url || file.response.data.url);
},
handleImgRemove(file) {
console.log("handleImgRemove", file);
if (file.response) {
let index = this.dataForm.fileList.findIndex(
(item) => item.url == file.response.data.url
);
this.dataForm.fileList.splice(index, 1);
} else if (file.url) {
let index = this.dataForm.fileList.findIndex(
(item) => item.url == file.url
);
this.dataForm.fileList.splice(index, 1);
}
},
handleImgExceed() {
this.$message({
type: "warning",
message: "文件数量最多不超过三个",
});
},
//
dataFormSubmitHandle: debounce(function () {
this.$refs['dataForm'].validate((valid) => {
if (!valid) {
return false
}
this.$http[!this.dataForm.id ? 'post' : 'put']('/gov/icWorkLog/', this.dataForm).then(({ data: res }) => {
this.$http[!this.dataForm.id ? 'post' : 'put']('/gov/org/icWorkLog/', this.dataForm).then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
@ -185,3 +320,41 @@ export default {
}
}
</script>
<style lang="scss" scoped>
.item_width_1 {
width: 500px;
}
.item_width_2 {
width: 400px;
}
.item_width_3 {
margin-left: 10px;
width: 200px;
}
.item_width_4 {
width: 200px;
}
.div_map {
margin-top: 10px;
}
.div_btn {
// display: flex;
// justify-content: flex-end;
}
.el-tabs {
margin: 0 20px;
}
.el-upload__tip {
color: rgb(155, 155, 155);
margin: 0;
}
.form {
margin-top: 30px;
}
.attachement-list {
}
</style>

302
src/views/modules/worklog/icworklog.vue

@ -1,39 +1,100 @@
<template>
<el-card shadow="never" class="aui-card--fill">
<div class="mod-__icWorkLog}">
<div class="mod-__icWorkLog} resi-container">
<el-card ref="searchCard" class="search-card">
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()">
<el-form-item>
<el-input v-model="dataForm.id" placeholder="id" clearable></el-input>
<el-form-item prop="gridId" label="所属组织">
<div class="resi-cell-value">
<el-cascader class="customer_cascader"
ref="myCascader"
clearable
v-model="agencyIdArray"
:options="orgOptions"
:props="orgOptionProps"
:show-all-levels="false"
@change="handleChangeAgency"></el-cascader>
</div>
</el-form-item>
<el-form-item>
<el-button @click="getDataList()">{{ $t('query') }}</el-button>
<el-form-item label="日志类型"
prop="logType">
<el-select v-model="dataForm.logType"
placeholder="请选择"
size="small"
clearable>
<el-option v-for="item in logTypeArr"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="上报人姓名"
prop="createdUser">
<el-input v-model="dataForm.createdUser"
size="small"
clearable
placeholder="请输入上报人姓名">
</el-input>
</el-form-item>
<br/>
<el-form-item label="联系电话"
prop="createdUser">
<el-input v-model="dataForm.mobile"
size="small"
clearable
placeholder="请输入联系电话">
</el-input>
</el-form-item>
<el-form-item label="上报时间" prop="startTime" label-width="100px">
<el-date-picker v-model="dataForm.startTime"
type="date"
:picker-options="pickerBeginDateBefore"
value-format="yyyy-MM-dd"
format="yyyy-MM-dd"
placeholder="选择日期"
style="width:200px">
</el-date-picker>
</el-form-item>
<el-form-item label="至" prop="endTime">
<el-date-picker v-model="dataForm.endTime"
type="date"
:picker-options="pickerBeginDateAfter"
value-format="yyyy-MM-dd"
format="yyyy-MM-dd"
placeholder="选择日期"
style="width:200px">
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="addOrUpdateHandle()">{{ $t('add') }}</el-button>
<el-button type="primary" size="small" @click="getDataList()">{{ $t('query') }}</el-button>
</el-form-item>
<!-- <el-form-item>-->
<!-- <el-button type="primary" size="small" @click="addOrUpdateHandle()">{{ $t('add') }}</el-button>-->
<!-- </el-form-item>-->
<!-- <el-form-item>-->
<!-- <el-button type="danger" @click="deleteHandle()">{{ $t('deleteBatch') }}</el-button>-->
<!-- </el-form-item>-->
</el-form>
<el-table v-loading="dataListLoading" :data="dataList" border @selection-change="dataListSelectionChangeHandle" style="width: 100%">
</el-card>
<el-card class="resi-card-table">
<div class="resi-row-btn">
<el-button
class="diy-button--add"
size="small"
@click="addOrUpdateHandle()"
>{{ $t('add') }}</el-button
>
<el-button @click="exportHandle()" class="diy-button--reset" size="small"
>导出</el-button
>
</div>
<el-table class="resi-table" v-loading="dataListLoading" :data="dataList" border @selection-change="dataListSelectionChangeHandle" style="width: 100%">
<el-table-column type="selection" header-align="center" align="center" width="50"></el-table-column>
<el-table-column prop="id" label="唯一标识" header-align="center" align="center"></el-table-column>
<el-table-column prop="customerId" label="客户Id" header-align="center" align="center"></el-table-column>
<el-table-column prop="agencyId" label="组织Id" header-align="center" align="center"></el-table-column>
<el-table-column prop="pids" label="agency_id的所有上级" header-align="center" align="center"></el-table-column>
<el-table-column prop="gridId" label="网格Id【场所区域】" header-align="center" align="center"></el-table-column>
<el-table-column prop="title" label="标题" header-align="center" align="center"></el-table-column>
<el-table-column prop="logType" label="日志类型【admin库sys_dict_data表value值】" header-align="center" align="center"></el-table-column>
<el-table-column prop="logType" label="日志类型" :formatter="categoryCodeFormatter" header-align="center" align="center"></el-table-column>
<el-table-column prop="logDate" label="日志日期" header-align="center" align="center"></el-table-column>
<el-table-column prop="content" label="内容" header-align="center" align="center"></el-table-column>
<el-table-column prop="remark" label="备注" header-align="center" align="center"></el-table-column>
<el-table-column prop="createdUser" label="上报人" header-align="center" align="center"></el-table-column>
<el-table-column prop="mobile" label="手机" header-align="center" align="center"></el-table-column>
<el-table-column prop="delFlag" label="删除标识:0.未删除 1.已删除" header-align="center" align="center"></el-table-column>
<el-table-column prop="revision" label="乐观锁" header-align="center" align="center"></el-table-column>
<el-table-column prop="createdBy" label="创建人" header-align="center" align="center"></el-table-column>
<el-table-column prop="createdTime" label="创建时间" header-align="center" align="center"></el-table-column>
<el-table-column prop="updatedBy" label="更新人" header-align="center" align="center"></el-table-column>
<el-table-column prop="updatedTime" label="更新时间" header-align="center" align="center"></el-table-column>
<el-table-column :label="$t('handle')" fixed="right" header-align="center" align="center" width="150">
<template slot-scope="scope">
<el-button type="text" size="small" @click="addOrUpdateHandle(scope.row.id)">{{ $t('update') }}</el-button>
@ -50,6 +111,7 @@
@size-change="pageSizeChangeHandle"
@current-change="pageCurrentChangeHandle">
</el-pagination>
</el-card>
<!-- 弹窗, 新增 / 修改 -->
<add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList"></add-or-update>
</div>
@ -59,15 +121,27 @@
<script>
import mixinViewModule from '@/mixins/view-module'
import AddOrUpdate from './icworklog-add-or-update'
import { requestPost } from "@/js/dai/request";
export default {
mixins: [mixinViewModule],
data () {
return {
mixinViewModuleOptions: {
getDataListURL: '/gov/icWorkLog/page',
getDataListURL: '/gov/org/icWorkLog/page',
getDataListIsPage: true,
deleteURL: '/gov/icWorkLog',
deleteIsBatch: true
deleteURL: '/gov/org/icWorkLog',
deleteIsBatch: true,
exportURL: '/gov/org/icWorkLog/export'
},
agencyIdArray:[],
orgOptions: [],
logTypeArr: [],
orgOptionProps:{
multiple: false,
value: 'agencyId',
label: 'agencyName',
children: 'subAgencyList',
checkStrictly: true
},
dataForm: {
id: ''
@ -76,6 +150,186 @@ export default {
},
components: {
AddOrUpdate
},
created () {
this.getGridList()
this.getCategrayList()
},
methods: {
getGridList() {
const { user } = this.$store.state
this.$http
.post('/gov/org/customeragency/agencygridtree', {})
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
} else {
console.log('获取组织树成功', res.data)
this.orgOptions=[]
this.orgOptions .push( res.data)
}
})
.catch(() => {
return this.$message.error('网络错误')
})
},
exportHandle () {
const url = this.mixinViewModuleOptions.exportURL
this.$http({
method: 'GET',
url,
responseType: 'blob',
params: this.dataForm
}).then(res => {
// this.download(res.data, title + '.xls')
if (res.headers["content-disposition"]) {
let fileName = window.decodeURI(res.headers["content-disposition"].split(";")[1].split("=")[1])
console.log('filename', fileName)
let blob = new Blob([res.data], { type: 'application/vnd.ms-excel' })
var url = window.URL.createObjectURL(blob)
var aLink = document.createElement('a')
aLink.style.display = 'none'
aLink.href = url
aLink.setAttribute('download', fileName)
document.body.appendChild(aLink)
aLink.click()
document.body.removeChild(aLink) //
window.URL.revokeObjectURL(url) //blob
} else this.$message.error('下载失败')
}).catch(err => {
console.log('err', err)
return this.$message.error('网络错误')
})
},
//
async getCategrayList () {
console.log(localStorage.getItem('token'))
const url = "/sys/dict/data/dictlist"
let params = {
dictType: 'log_type'
}
const { data, code, msg } = await requestPost(url, params)
if (code === 0) {
this.logTypeArr = data
} else {
this.$message.error(msg)
}
},
categoryCodeFormatter (row) {
let ca = ''
this.logTypeArr.forEach((tagCategory) => {
if (tagCategory.value === row.logType) {
ca = tagCategory.label
}
})
return ca
},
handleChangeAgency(val) {
let obj = this.$refs["myCascader"].getCheckedNodes()[0].data
if (obj) {
if(obj.level === 'grid'){
this.dataForm.gridId = this.agencyIdArray.length > 0 ? this.agencyIdArray[this.agencyIdArray.length - 1] : '';
this.dataForm.agencyId=''
}else{
this.dataForm.agencyId = this.agencyIdArray.length > 0 ? this.agencyIdArray[this.agencyIdArray.length - 1] : '';
this.dataForm.gridId = ''
}
}else{
this.dataForm.agencyId=''
this.dataForm.gridId = ''
}
},
pickerBeginDateBefore: {
disabledDate: (time) => {
let beginDateVal = this.dataForm.endTime
if (beginDateVal) {
return time.getTime() > new Date(beginDateVal + ' 00:00:00').getTime()
}
}
},
pickerBeginDateAfter: {
disabledDate: (time) => {
let EndDateVal = this.dataForm.startTime
if (EndDateVal) {
return time.getTime() < new Date(EndDateVal + ' 00:00:00').getTime()
}
}
}
}
}
</script>
<style lang="scss" scoped>
@import "@/assets/scss/buttonstyle.scss";
.resi-container .resi-card-table {
::v-deep .el-table th {
color: #fff;
background-color: rgba(33, 149, 254, 1);
// border-right: 1px solid rgba(33, 149, 254, 1);
}
}
.resi-table {
::v-deep .el-button--text {
text-decoration: underline;
}
::v-deep .btn-color-del {
margin-left: 10px;
color: rgba(213, 16, 16, 1);
}
::v-deep .btn-color-edit {
color: rgba(0, 167, 169, 1);
}
}
.resi-row-btn {
margin-bottom: 13px;
.upload-btn {
display: inline-block;
margin: 0 10px;
}
}
.form-wr {
.input-width {
width: 260px;
}
.input-width-textarea {
width: 500px;
}
.imsg-list {
display: flex;
align-items: center;
.imgs-item {
position: relative;
margin-right: 10px;
.el-icon-delete {
position: absolute;
top: 0;
right: 0;
font-size: 18px;
color: red;
z-index: 3;
cursor: pointer;
}
}
}
}
.div-content {
width: 100%;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
</style>
<style>
.el-table .warning-row {
background: #ffe168;
}
</style>

159
src/views/modules/worklog/icworklogfile-add-or-update.vue

@ -1,159 +0,0 @@
<template>
<el-dialog :visible.sync="visible" :title="!dataForm.id ? $t('add') : $t('update')" :close-on-click-modal="false" :close-on-press-escape="false">
<el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="dataFormSubmitHandle()" :label-width="$i18n.locale === 'en-US' ? '120px' : '80px'">
<el-form-item label="客户Id" prop="customerId">
<el-input v-model="dataForm.customerId" placeholder="客户Id"></el-input>
</el-form-item>
<el-form-item label="日志Id" prop="logId">
<el-input v-model="dataForm.logId" placeholder="日志Id"></el-input>
</el-form-item>
<el-form-item label="地址" prop="url">
<el-input v-model="dataForm.url" placeholder="地址"></el-input>
</el-form-item>
<el-form-item label="文件名" prop="fileName">
<el-input v-model="dataForm.fileName" placeholder="文件名"></el-input>
</el-form-item>
<el-form-item label="文件类型,0图片" prop="fileType">
<el-input v-model="dataForm.fileType" placeholder="文件类型,0图片"></el-input>
</el-form-item>
<el-form-item label="内容" prop="sort">
<el-input v-model="dataForm.sort" placeholder="内容"></el-input>
</el-form-item>
<el-form-item label="删除标识:0.未删除 1.已删除" prop="delFlag">
<el-input v-model="dataForm.delFlag" placeholder="删除标识:0.未删除 1.已删除"></el-input>
</el-form-item>
<el-form-item label="乐观锁" prop="revision">
<el-input v-model="dataForm.revision" placeholder="乐观锁"></el-input>
</el-form-item>
<el-form-item label="创建人" prop="createdBy">
<el-input v-model="dataForm.createdBy" placeholder="创建人"></el-input>
</el-form-item>
<el-form-item label="创建时间" prop="createdTime">
<el-input v-model="dataForm.createdTime" placeholder="创建时间"></el-input>
</el-form-item>
<el-form-item label="更新人" prop="updatedBy">
<el-input v-model="dataForm.updatedBy" placeholder="更新人"></el-input>
</el-form-item>
<el-form-item label="更新时间" prop="updatedTime">
<el-input v-model="dataForm.updatedTime" placeholder="更新时间"></el-input>
</el-form-item>
</el-form>
<template slot="footer">
<el-button @click="visible = false">{{ $t('cancel') }}</el-button>
<el-button type="primary" @click="dataFormSubmitHandle()">{{ $t('confirm') }}</el-button>
</template>
</el-dialog>
</template>
<script>
import debounce from 'lodash/debounce'
export default {
data () {
return {
visible: false,
dataForm: {
id: '',
customerId: '',
logId: '',
url: '',
fileName: '',
fileType: '',
sort: '',
delFlag: '',
revision: '',
createdBy: '',
createdTime: '',
updatedBy: '',
updatedTime: ''
}
}
},
computed: {
dataRule () {
return {
customerId: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
logId: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
url: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
fileName: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
fileType: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
sort: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
delFlag: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
revision: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
createdBy: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
createdTime: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
updatedBy: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
updatedTime: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
]
}
}
},
methods: {
init () {
this.visible = true
this.$nextTick(() => {
this.$refs['dataForm'].resetFields()
if (this.dataForm.id) {
this.getInfo()
}
})
},
//
getInfo () {
this.$http.get(`/gov/icWorkLogFile/${this.dataForm.id}`).then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.dataForm = {
...this.dataForm,
...res.data
}
}).catch(() => {})
},
//
dataFormSubmitHandle: debounce(function () {
this.$refs['dataForm'].validate((valid) => {
if (!valid) {
return false
}
this.$http[!this.dataForm.id ? 'post' : 'put']('/gov/icWorkLogFile/', this.dataForm).then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.$message({
message: this.$t('prompt.success'),
type: 'success',
duration: 500,
onClose: () => {
this.visible = false
this.$emit('refreshDataList')
}
})
}).catch(() => {})
})
}, 1000, { 'leading': true, 'trailing': false })
}
}
</script>

77
src/views/modules/worklog/icworklogfile.vue

@ -1,77 +0,0 @@
<template>
<el-card shadow="never" class="aui-card--fill">
<div class="mod-__icWorkLogFile}">
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()">
<el-form-item>
<el-input v-model="dataForm.id" placeholder="id" clearable></el-input>
</el-form-item>
<el-form-item>
<el-button @click="getDataList()">{{ $t('query') }}</el-button>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="addOrUpdateHandle()">{{ $t('add') }}</el-button>
</el-form-item>
<!-- <el-form-item>-->
<!-- <el-button type="danger" @click="deleteHandle()">{{ $t('deleteBatch') }}</el-button>-->
<!-- </el-form-item>-->
</el-form>
<el-table v-loading="dataListLoading" :data="dataList" border @selection-change="dataListSelectionChangeHandle" style="width: 100%">
<el-table-column type="selection" header-align="center" align="center" width="50"></el-table-column>
<el-table-column prop="id" label="唯一标识" header-align="center" align="center"></el-table-column>
<el-table-column prop="customerId" label="客户Id" header-align="center" align="center"></el-table-column>
<el-table-column prop="logId" label="日志Id" header-align="center" align="center"></el-table-column>
<el-table-column prop="url" label="地址" header-align="center" align="center"></el-table-column>
<el-table-column prop="fileName" label="文件名" header-align="center" align="center"></el-table-column>
<el-table-column prop="fileType" label="文件类型,0图片" header-align="center" align="center"></el-table-column>
<el-table-column prop="sort" label="内容" header-align="center" align="center"></el-table-column>
<el-table-column prop="delFlag" label="删除标识:0.未删除 1.已删除" header-align="center" align="center"></el-table-column>
<el-table-column prop="revision" label="乐观锁" header-align="center" align="center"></el-table-column>
<el-table-column prop="createdBy" label="创建人" header-align="center" align="center"></el-table-column>
<el-table-column prop="createdTime" label="创建时间" header-align="center" align="center"></el-table-column>
<el-table-column prop="updatedBy" label="更新人" header-align="center" align="center"></el-table-column>
<el-table-column prop="updatedTime" label="更新时间" header-align="center" align="center"></el-table-column>
<el-table-column :label="$t('handle')" fixed="right" header-align="center" align="center" width="150">
<template slot-scope="scope">
<el-button type="text" size="small" @click="addOrUpdateHandle(scope.row.id)">{{ $t('update') }}</el-button>
<el-button type="text" size="small" @click="deleteHandle(scope.row.id)">{{ $t('delete') }}</el-button>
</template>
</el-table-column>
</el-table>
<el-pagination
:current-page="page"
:page-sizes="[10, 20, 50, 100]"
:page-size="limit"
:total="total"
layout="total, sizes, prev, pager, next, jumper"
@size-change="pageSizeChangeHandle"
@current-change="pageCurrentChangeHandle">
</el-pagination>
<!-- 弹窗, 新增 / 修改 -->
<add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList"></add-or-update>
</div>
</el-card>
</template>
<script>
import mixinViewModule from '@/mixins/view-module'
import AddOrUpdate from './icworklogfile-add-or-update'
export default {
mixins: [mixinViewModule],
data () {
return {
mixinViewModuleOptions: {
getDataListURL: '/gov/icWorkLogFile/page',
getDataListIsPage: true,
deleteURL: '/gov/icWorkLogFile',
deleteIsBatch: true
},
dataForm: {
id: ''
}
}
},
components: {
AddOrUpdate
}
}
</script>

130
src/views/modules/worklog/upload-image.vue

@ -0,0 +1,130 @@
<template>
<div class="upload-image">
<el-upload list-type="picture-card"
:action="uploadUrl"
:data="{ customerId: customerId }"
:file-list="fileList"
:limit="limit"
:on-success="(res, file) => handleImgSuccess(res, file)"
:on-error="(res, file) => handleImgError(res, file)"
:on-remove="(res) => handleImgRemove(res)"
:on-exceed="(res) => handleImgExceed(res)"
:before-upload="(file) => beforeImgUpload(file)">
<i slot="default" class="el-icon-plus"></i>
<div slot="file" slot-scope="{file}">
<img class="el-upload-list__item-thumbnail" :src="file.url" alt="">
<span class="el-upload-list__item-actions">
<span class="el-upload-list__item-preview" @click="handlePictureCardPreview(file)">
<i class="el-icon-zoom-in"></i>
</span>
<span v-if="!disabled" class="el-upload-list__item-delete" @click="handleRemove(file)">
<i class="el-icon-delete"></i>
</span>
</span>
</div>
</el-upload>
<el-dialog :visible.sync="dialogVisible">
<img width="100%" :src="dialogImageUrl" alt="">
</el-dialog>
</div>
</template>
<script>
export default {
props: {
limit: {
type: Number,
default: 3
},
rowIndex: {
type: Number,
default: 0
},
defaultFileList: {
type: Array
}
},
watch: {
defaultFileList: {
handler (newVal) {
newVal.forEach(item => {
item.url = item.fileUrl
})
this.fileList = newVal
},
deep: true,
immediate: true
}
},
data () {
return {
dialogImageUrl: '',
dialogVisible: false,
disabled: false,
uploadUrl: `${window.SITE_CONFIG['apiURL']}/oss/file/uploadqrcodeV2`,
customerId: localStorage.getItem("customerId"),
fileList: [],
imageUrls: []
}
},
created() {
console.log('xxxxxx', this.rowIndex)
},
methods: {
handleRemove(file) {
const delFile = file.url
this.fileList.forEach((item, key) => {
if (delFile == item.url) {
this.fileList.splice(key, 1)
}
})
},
handlePictureCardPreview(file) {
this.dialogImageUrl = file.url
this.dialogVisible = true
},
beforeImgUpload(file) {
// console.log(file)
},
handleImgExceed(res) {
console.log(res)
this.$message({
type: "warning",
message: `文件数量最多不超过${this.limit}`,
})
},
handleImgRemove(file) {
console.log("handleImgRemove", file)
},
handleImgSuccess(res, file) {
// console.log("handleImgSuccess", res, file)
if (res.code === 0 && res.msg === "success") {
this.fileList.push(file)
this.$emit('change', this.fileList, this.rowIndex)
} else {
this.$message.error(res.msg)
}
},
handleImgError(res, file) {
console.log(res)
},
}
}
</script>
<style lang="scss" scoped>
.upload-image {
// min-width: 120px;
// height: 80px;
}
/deep/ .el-upload--picture-card {
width: 60px;
height: 60px;
line-height: 70px;
}
/deep/ .el-upload-list--picture-card .el-upload-list__item {
width: 60px;
height: 60px;
}
</style>
Loading…
Cancel
Save