Revert "fix:质检发货资料相关修复"

This reverts commit 913a017f3d.
This commit is contained in:
miguannan
2026-05-21 19:39:28 +08:00
parent 913a017f3d
commit ddf31f3fbe
5 changed files with 364 additions and 538 deletions

View File

@@ -55,7 +55,6 @@ class Material extends Common
$insert_info['create_time'] = $param['create_time']; $insert_info['create_time'] = $param['create_time'];
db('materials_info')->insert($insert_info); db('materials_info')->insert($insert_info);
return $this->sendSuccess('添加成功');
} }
@@ -80,44 +79,24 @@ class Material extends Common
//项目基础信息 //项目基础信息
else if (1 == $param['materials_class'] ) else if (1 == $param['materials_class'] )
{ {
$currPage = empty($param['currPage']) ? 1 : $param['currPage']; $MaterialsInfoList = db('materials_info')
$pageSize = empty($param['pageSize']) ? 10 : $param['pageSize']; ->alias('p')
$countQuery = db('materials_info')->alias('p')
->where('p.materials_class', $param['materials_class'])
->where('p.materials_owner', $param['materials_owner']);
$listQuery = db('materials_info')->alias('p')
->join('materials_type s', 's.type_id = p.materials_type', 'left') ->join('materials_type s', 's.type_id = p.materials_type', 'left')
->where('p.materials_class', $param['materials_class']) ->where('p.materials_class', $param['materials_class'])
->where('p.materials_owner', $param['materials_owner']); ->where('p.materials_owner', $param['materials_owner']);
if (!empty($param['materials_type'])) { if (isset($param['materials_type']) && is_array($param['materials_type']) && count($param['materials_type']) > 0) {
if (is_array($param['materials_type'])) { $MaterialsInfoList->whereIn('p.materials_type', $param['materials_type']);
$countQuery->whereIn('p.materials_type', $param['materials_type']); } elseif (isset($param['materials_type'])) {
$listQuery->whereIn('p.materials_type', $param['materials_type']); $MaterialsInfoList->where('p.materials_type', $param['materials_type']);
} else {
$countQuery->where('p.materials_type', $param['materials_type']);
$listQuery->where('p.materials_type', $param['materials_type']);
}
} }
if (!empty($param['start_time'])) { $MaterialsInfoList = $MaterialsInfoList
$countQuery->where('p.create_time', '>=', $param['start_time']);
$listQuery->where('p.create_time', '>=', $param['start_time']);
}
if (!empty($param['end_time'])) {
$countQuery->where('p.create_time', '<=', $param['end_time']);
$listQuery->where('p.create_time', '<=', $param['end_time']);
}
$total = $countQuery->count();
$list = $listQuery
->page($currPage, $pageSize)
->order('p.create_time desc') ->order('p.create_time desc')
->field('p.*, s.type_name as materials_type_name') ->field('p.*, s.type_name as materials_type_name')
->select(); ->select();
return $this->sendSuccess(['list' => $list, 'total' => $total]); return $this->sendSuccess($MaterialsInfoList);
} }
//问题单信息 //问题单信息

View File

@@ -56,7 +56,7 @@ class Role extends Common
$results = db('system_router')->alias('router') $results = db('system_router')->alias('router')
->join('system_role', 'system_role.router_id = router.id OR system_role.router_id LIKE concat(router.id, \',%\') OR system_role.router_id LIKE concat(\'%,\', router.id) OR system_role.router_id LIKE concat(\'%,\', router.id, \',%\') OR system_role.router_id LIKE concat(\'%,\', router.id, \',%\')', 'LEFT') ->join('system_role', 'system_role.router_id = router.id OR system_role.router_id LIKE concat(router.id, \',%\') OR system_role.router_id LIKE concat(\'%,\', router.id) OR system_role.router_id LIKE concat(\'%,\', router.id, \',%\') OR system_role.router_id LIKE concat(\'%,\', router.id, \',%\')', 'LEFT')
->field('router.*, GROUP_CONCAT(system_role.role_name) as roles') ->field('router.*, GROUP_CONCAT(system_role.role_name) as roles')
->group('router.id') ->group('router.path')
->select(); ->select();
$this->sendSuccess($results); $this->sendSuccess($results);
} }

View File

@@ -54,7 +54,6 @@ class Material extends Common
$insert_info['create_time'] = $param['create_time']; $insert_info['create_time'] = $param['create_time'];
db('materials_info')->insert($insert_info); db('materials_info')->insert($insert_info);
return $this->sendSuccess('添加成功');
} }
@@ -79,38 +78,15 @@ class Material extends Common
//项目基础信息 //项目基础信息
else if (1 == $param['materials_class'] ) else if (1 == $param['materials_class'] )
{ {
$currPage = empty($param['currPage']) ? 1 : $param['currPage']; $MaterialsInfoList = db('materials_info')->alias('p')
$pageSize = empty($param['pageSize']) ? 10 : $param['pageSize']; ->join('materials_type s', 's.type_id =p.materials_type', 'left')
->where('p.materials_class', $param['materials_class'])
$countQuery = db('materials_info')->alias('p') ->where('p.materials_owner', $param['materials_owner'])
->where('p.materials_class', $param['materials_class']) ->where('p.materials_type', $param['materials_type'])
->where('p.materials_owner', $param['materials_owner']); ->order('p.create_time desc')
$listQuery = db('materials_info')->alias('p') ->field('p.*, s.type_name as materials_type_name')
->join('materials_type s', 's.type_id = p.materials_type', 'left') ->select();
->where('p.materials_class', $param['materials_class']) return $this->sendSuccess($MaterialsInfoList);
->where('p.materials_owner', $param['materials_owner']);
if (!empty($param['materials_type'])) {
$countQuery->where('p.materials_type', $param['materials_type']);
$listQuery->where('p.materials_type', $param['materials_type']);
}
if (!empty($param['start_time'])) {
$countQuery->where('p.create_time', '>=', $param['start_time']);
$listQuery->where('p.create_time', '>=', $param['start_time']);
}
if (!empty($param['end_time'])) {
$countQuery->where('p.create_time', '<=', $param['end_time']);
$listQuery->where('p.create_time', '<=', $param['end_time']);
}
$total = $countQuery->count();
$list = $listQuery
->page($currPage, $pageSize)
->order('p.create_time desc')
->field('p.*, s.type_name as materials_type_name')
->select();
return $this->sendSuccess(['list' => $list, 'total' => $total]);
} }
//问题单信息 //问题单信息

View File

@@ -56,7 +56,7 @@ class Role extends Common
$results = db('system_router')->alias('router') $results = db('system_router')->alias('router')
->join('system_role', 'system_role.router_id = router.id OR system_role.router_id LIKE concat(router.id, \',%\') OR system_role.router_id LIKE concat(\'%,\', router.id) OR system_role.router_id LIKE concat(\'%,\', router.id, \',%\') OR system_role.router_id LIKE concat(\'%,\', router.id, \',%\')', 'LEFT') ->join('system_role', 'system_role.router_id = router.id OR system_role.router_id LIKE concat(router.id, \',%\') OR system_role.router_id LIKE concat(\'%,\', router.id) OR system_role.router_id LIKE concat(\'%,\', router.id, \',%\') OR system_role.router_id LIKE concat(\'%,\', router.id, \',%\')', 'LEFT')
->field('router.*, GROUP_CONCAT(system_role.role_name) as roles') ->field('router.*, GROUP_CONCAT(system_role.role_name) as roles')
->group('router.id') ->group('router.path')
->select(); ->select();
$this->sendSuccess($results); $this->sendSuccess($results);
} }

View File

@@ -1,202 +1,124 @@
<template> <template>
<div> <div>
<div slot="header" class="clearfix" style="display: flex; align-items: center; justify-content: space-between;"> <div slot="header" class="clearfix" v-if="edid_authority == true">
<div class="filter-bar"> <el-button style="float: right; " size="mini" class="el-icon-circle-plus-outline" type="primary"
<el-date-picker @click="createMaterials">添加</el-button>
v-model="filter.dateRange" </div>
type="daterange" <el-table :data="materials_info_list" border fit highlight-current-row
range-separator="" style="width: 100%; margin-left: 2px; margin-top: 20px;" height="80vh">
start-placeholder="开始日期" <el-table-column prop="materials_id" label="ID" align="left">
end-placeholder="结束日期" </el-table-column>
value-format="yyyy-MM-dd" <el-table-column prop="materials_type_name" label="资料类型" align="left">
size="small" </el-table-column>
style="width: 240px;"/> <el-table-column prop="materials_intro" label="资料简介" align="left">
<el-select v-model="filter.materials_type" placeholder="资料类型" clearable size="small" style="width: 160px; margin-left: 10px;"> </el-table-column>
<el-option label="全部" value=""/> <el-table-column prop="create_time" label="时间" align="left">
<el-option v-for="item in materials_type_list" :key="item.type_id" :label="item.type_name" :value="item.type_id"/> </el-table-column>
</el-select>
<el-button type="primary" size="small" icon="el-icon-search" style="margin-left: 10px;" @click="handleQuery">查询</el-button>
<el-button size="small" icon="el-icon-refresh" style="margin-left: 4px;" @click="handleReset">重置</el-button>
</div>
<div v-if="edid_authority == true">
<el-button size="mini" class="el-icon-circle-plus-outline" type="primary" @click="createMaterials">添加</el-button>
</div>
</div>
<el-table
v-if="query_triggered"
:data="materials_info_list"
border
fit
highlight-current-row
style="width: 100%; margin-left: 2px; margin-top: 20px;"
height="80vh">
<el-table-column prop="materials_id" label="ID" align="left"/>
<el-table-column prop="materials_type_name" label="资料类型" align="left"/>
<el-table-column prop="materials_intro" label="资料简介" align="left"/>
<el-table-column prop="create_time" label="时间" align="left"/>
<el-table-column fixed="right" label="操作" width="250px"> <el-table-column fixed="right" label="操作" width="250px">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <el-button class="el-icon-view" v-if="scope.row.contract_url != ''" @click="showImg(scope.row)"
v-if="scope.row.contract_url != ''" size="mini" type="primary"></el-button>
class="el-icon-view" <el-button @click="update(scope.row)" size="mini" class="el-icon-edit" type="primary"
size="mini" v-if="edid_authority == true"></el-button>
type="primary" <el-button class="el-icon-delete" @click="handleClick(scope.row)" size="mini"
@click="showImg(scope.row)"/> type="danger"></el-button>
<el-button </template>
v-if="edid_authority == true" </el-table-column>
size="mini" </el-table>
class="el-icon-edit"
type="primary"
@click="update(scope.row)"/>
<el-button
class="el-icon-delete"
size="mini"
type="danger"
@click="handleClick(scope.row)"/>
</template>
</el-table-column>
</el-table>
<el-pagination
v-if="query_triggered"
:total="total"
:page-size="pageSize"
:current-page.sync="currPage"
:page-sizes="[10, 20, 50, 100]"
style="margin-top: 15px; text-align: right;"
background
layout="total, prev, pager, next, sizes, jumper"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"/>
<div v-if="!query_triggered" style="text-align: center; margin-top: 80px; color: #909399;">
请选择筛选条件后点击查询
</div>
<!-- 添加合同信息对话框 --> <!-- 添加合同信息对话框 -->
<el-dialog <el-dialog title="添加文件" :visible.sync="dialogVisibleCreateMaterials" :close-on-click-modal="false" width="30%"
:visible.sync="dialogVisibleCreateMaterials" append-to-body>
:close-on-click-modal="false" <el-form :model="newMaterials" label-width="80px">
title="添加文件" <el-form-item label="文件简介">
width="30%" <el-input v-model="newMaterials.materials_intro"></el-input>
append-to-body> </el-form-item>
<el-form :model="newMaterials" label-width="80px">
<el-form-item label="文件简介">
<el-input v-model="newMaterials.materials_intro"/>
</el-form-item>
<el-form-item label="资料类型"> <el-form-item label="资料类型">
<el-select v-model="newMaterials.materials_type" filterable placeholder="资料类型" style="width: 100%;"> <el-select v-model="newMaterials.materials_type" filterable placeholder="资料类型" style="width: 100%;">
<el-option <el-option v-for="item in materials_type_list" :key="item.type_id" :label="item.type_name"
v-for="item in materials_type_list" :value="item.type_id">
:key="item.type_id" </el-option>
:label="item.type_name" </el-select>
:value="item.type_id"/> </el-form-item>
</el-select>
</el-form-item>
<el-form-item label="文件时间"> <el-form-item label="文件时间">
<el-date-picker <el-date-picker v-model="newMaterials.create_time" type="date" format="yyyy-MM-dd"
v-model="newMaterials.create_time" value-format="yyyy-MM-dd" placeholder="选择日期时间">
type="date" </el-date-picker>
format="yyyy-MM-dd" </el-form-item>
value-format="yyyy-MM-dd"
placeholder="选择日期时间"/>
</el-form-item>
<el-form-item label="添加文件"> <el-form-item label="添加文件">
<el-upload <el-upload class="upload-demo" :action="upload_url" :on-preview="handlePreview"
:action="upload_url" :on-remove="handleRemove" :on-success="handleNewSuccess" :before-upload="beforeUpload"
:on-preview="handlePreview" :file-list="fileList" accept=".jpg,.jpeg,.png,.pdf,.pptx,.xlsx,.xls,.docx,.doc,.ppt,.zip,.rar">
:on-remove="handleRemove" <el-button size="small" type="primary">点击上传</el-button>
:on-success="handleNewSuccess" <div slot="tip" class="el-upload__tip">
:before-upload="beforeUpload" 支持jpg/jpeg/png/pdf/pptx/xlsx/xls/docx/doc/ppt/zip/rar文件不超过100MB
:file-list="fileList" </div>
class="upload-demo" </el-upload>
accept=".jpg,.jpeg,.png,.pdf,.pptx,.xlsx,.xls,.docx,.doc,.ppt,.zip,.rar"> </el-form-item>
<el-button size="small" type="primary">点击上传</el-button> </el-form>
<div slot="tip" class="el-upload__tip"> <span slot="footer" class="dialog-footer">
支持jpg/jpeg/png/pdf/pptx/xlsx/xls/docx/doc/ppt/zip/rar文件不超过100MB <el-button @click="dialogVisibleCreateMaterials = false"> </el-button>
</div> <el-button type="primary" @click="confirmAddMaterials"> </el-button>
</el-upload> </span>
</el-form-item> </el-dialog>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisibleCreateMaterials = false"> </el-button>
<el-button type="primary" @click="confirmAddMaterials"> </el-button>
</span>
</el-dialog>
<!-- 编辑协议对话框 --> <!-- 编辑协议对话框 -->
<el-dialog <el-dialog title="编辑协议信息" :visible.sync="dialogVisibleEditMaterials" :close-on-click-modal="false" width="30%"
:visible.sync="dialogVisibleEditMaterials" append-to-body>
:close-on-click-modal="false" <el-form :model="editMaterials" label-width="80px">
title="编辑协议信息" <el-form-item label="文件简介">
width="30%" <el-input v-model="editMaterials.materials_intro"></el-input>
append-to-body> </el-form-item>
<el-form :model="editMaterials" label-width="80px">
<el-form-item label="文件简介">
<el-input v-model="editMaterials.materials_intro"/>
</el-form-item>
<el-form-item label="文件时间"> <el-form-item label="文件时间">
<el-date-picker <el-date-picker v-model="editMaterials.create_time" type="date" format="yyyy-MM-dd"
v-model="editMaterials.create_time" value-format="yyyy-MM-dd" placeholder="选择日期时间">
type="date" </el-date-picker>
format="yyyy-MM-dd" </el-form-item>
value-format="yyyy-MM-dd"
placeholder="选择日期时间"/>
</el-form-item>
<el-form-item label="资料类型"> <el-form-item label="资料类型">
<el-select <el-select v-model="editMaterials.materials_type" filterable placeholder="资料类型"
v-model="editMaterials.materials_type" style="width: 100%;">
filterable <el-option v-for="item in materials_type_list" :key="item.type_id" :label="item.type_name"
placeholder="资料类型" :value="item.type_id">
style="width: 100%;"> </el-option>
<el-option </el-select>
v-for="item in materials_type_list" </el-form-item>
:key="item.type_id"
:label="item.type_name"
:value="item.type_id"/>
</el-select>
</el-form-item>
<el-form-item label="添加文件"> <el-form-item label="添加文件">
<el-upload <el-upload class="upload-demo" :action="upload_url" :on-preview="handlePreview"
:action="upload_url" :on-remove="handleRemove" :on-success="handleNewSuccess" :before-upload="beforeUpload"
:on-preview="handlePreview" :file-list="fileList" accept=".jpg,.jpeg,.png,.pdf,.pptx,.xlsx,.xls,.docx,.doc,.ppt,.zip,.rar">
:on-remove="handleRemove" <el-button size="small" type="primary">点击上传</el-button>
:on-success="handleNewSuccess" <div slot="tip" class="el-upload__tip">
:before-upload="beforeUpload" 支持jpg/jpeg/png/pdf/pptx/xlsx/xls/docx/doc/ppt/zip/rar文件不超过100MB
:file-list="fileList" </div>
class="upload-demo" </el-upload>
accept=".jpg,.jpeg,.png,.pdf,.pptx,.xlsx,.xls,.docx,.doc,.ppt,.zip,.rar"> </el-form-item>
<el-button size="small" type="primary">点击上传</el-button> </el-form>
<div slot="tip" class="el-upload__tip"> <span slot="footer" class="dialog-footer">
支持jpg/jpeg/png/pdf/pptx/xlsx/xls/docx/doc/ppt/zip/rar文件不超过100MB <el-button @click="dialogVisibleEditMaterials = false"> </el-button>
</div> <el-button type="primary" @click="confirmEdit"> </el-button>
</el-upload> </span>
</el-form-item> </el-dialog>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisibleEditMaterials = false"> </el-button>
<el-button type="primary" @click="confirmEdit"> </el-button>
</span>
</el-dialog>
<!-- 显示文件对话框 --> <!-- 显示文件对话框 -->
<el-dialog :visible.sync="dialogVisibleShowFile" title="文件信息" width="80%" append-to-body> <el-dialog title="文件信息" :visible.sync="dialogVisibleShowFile" width="80%" append-to-body>
<img v-if="isImage" :src="previewUrl" alt="Preview" style="max-width: 40%; max-height: 30%;"> <img v-if="isImage" :src="previewUrl" alt="Preview" style="max-width: 40%; max-height: 30%;">
<iframe v-else-if="isPDF" :src="previewUrl" frameborder="0" style="width: 100%; height: 600px;"/> <iframe v-else-if="isPDF" :src="previewUrl" frameborder="0" style="width: 100%; height: 600px;"></iframe>
<div v-else> <div v-else>
<p>该文件类型{{ fileExtension }}需要下载后查看</p> <p>该文件类型{{ fileExtension }}需要下载后查看</p>
<el-button type="primary" @click="downloadFile(previewUrl)"> <el-button type="primary" @click="downloadFile(previewUrl)">
立即下载 {{ fileExtension.toUpperCase() }} 文件 立即下载 {{ fileExtension.toUpperCase() }} 文件
</el-button> </el-button>
</div> </div>
</el-dialog> </el-dialog>
</div> </div>
</template> </template>
<script> <script>
@@ -204,315 +126,264 @@
import project from '@/api/project' import project from '@/api/project'
import material from '@/api/material' import material from '@/api/material'
export default { export default {
name: 'Materials', name: 'Materials',
// materials_class 资料分类 1项目 2问题 3story 4task //materials_class 资料分类 1项目 2问题 3story 4task
// materials_type 具体文件属性,技术文件,会议纪要,问题描述等 //materials_type 具体文件属性,技术文件,会议纪要,问题描述等
// materials_owner:资料属于那个项目或问题或story或task //materials_owner:资料属于那个项目或问题或story或task
props: { props: ['materials_class', 'materials_owner', 'materials_type', 'edid_authority'],
materials_class: { type: Number, default: 1 },
materials_owner: { type: [Number, String], default: 0 },
materials_type: { type: [Number, Array], default: undefined },
edid_authority: { type: Boolean, default: false }
},
data() { data() {
return { return {
upload_url: process.env.BASE_WMS_API + '/upload/uploadFile', upload_url: process.env.BASE_WMS_API + '/upload/uploadFile',
materials_info_list: [], materials_info_list: [],
fileExtension: '', fileExtension: '', // 新增文件类型显示
isImage: false, isImage: false,
isPDF: false, isPDF: false,
materials_type_list: [], materials_type_list: [],
materials_url: '', materials_url: '',
fileName: '', fileName: '',
currentFileName: '', currentFileName: '',
query_triggered: false, newMaterials: {
total: 0, materials_intro: '',
currPage: 1, materials_intro: 0,
pageSize: 10, create_time: '',
filter: { project_id: 0
dateRange: null, },
materials_type: '' editMaterials: {
}, materials_id: '',
newMaterials: { materials_intro: 0,
materials_intro: '', materials_intro: '',
create_time: '', create_time: '',
project_id: 0 project_id: 0,
}, materials_type: 0
editMaterials: { },
materials_id: '', dialogVisibleCreateMaterials: false,
materials_intro: '', dialogVisibleEditMaterials: false,
create_time: '', dialogVisibleShowFile: false,
project_id: 0, };
materials_type: 0 },
}, mounted() {
dialogVisibleCreateMaterials: false, this.get_materials_info_list()
dialogVisibleEditMaterials: false, this.get_material_type_list()
dialogVisibleShowFile: false },
} created() {
},
mounted() {
this.get_material_type_list()
if (!Array.isArray(this.materials_type)) {
this.filter.materials_type = this.materials_type
}
},
created() {
}, },
methods: { methods: {
handleClick(row) { handleClick(row) {
console.log(row) console.log(row)
this.$confirm('您确定要删除当前记录吗?').then(() => { this.$confirm('您确定要删除当前记录吗?').then(() => {
project.DelProMaterialsInfo({ materials_id: row.materials_id }).then(res => { project.DelProMaterialsInfo({ materials_id: row.materials_id }).then(res => {
if (res.data.code === 20000) { if (res.data.code === 20000) {
this.$message({ this.$message({
message: res.data.message, message: res.data.message,
type: 'success' type: 'success'
}) });
this.get_materials_info_list() this.get_materials_info_list()
} else { } else {
this.$message({ this.$message({
message: res.data.message, message: res.data.message,
type: 'error' type: 'error'
}) });
} }
}) })
}).catch(() => { }).catch(() => {
this.$message({ this.$message({
type: 'info', type: 'info',
message: '已取消删除' message: '已取消删除'
}) });
}) });
}, },
downloadFile(url) { // 新增下载方法
const link = document.createElement('a') // 在下载方法中添加文件名保留
link.href = url downloadFile(url) {
link.setAttribute('download', this.currentFileName) const link = document.createElement('a');
document.body.appendChild(link) link.href = url;
link.click() link.setAttribute('download', this.currentFileName); // 使用数据库中的文件名
document.body.removeChild(link) document.body.appendChild(link);
}, link.click();
handleQuery() { document.body.removeChild(link);
this.currPage = 1 },
this.query_triggered = true confirmEdit() {
this.get_materials_info_list() // 获取表单数据
}, const formData = {
handleReset() { materials_id: this.editMaterials.materials_id,
this.filter.dateRange = null create_time: this.editMaterials.create_time,
this.filter.materials_type = '' materials_url: this.materials_url,
this.currPage = 1 materials_intro: this.editMaterials.materials_intro,
this.pageSize = 10 materials_type: this.editMaterials.materials_type,
this.total = 0 materials_file_name: this.fileName
this.query_triggered = false };
this.materials_info_list = []
},
handleSizeChange(val) {
this.pageSize = val
this.currPage = 1
this.get_materials_info_list()
},
handleCurrentChange(val) {
this.currPage = val
this.get_materials_info_list()
},
confirmEdit() {
const formData = {
materials_id: this.editMaterials.materials_id,
create_time: this.editMaterials.create_time,
materials_url: this.materials_url,
materials_intro: this.editMaterials.materials_intro,
materials_type: this.editMaterials.materials_type,
materials_file_name: this.fileName
}
console.log(formData) console.log(formData);
project.EditProjectMaterialsInfo(formData).then(response => { // 调用后端接口更新数据
if (response.data.code === 20000) { project.EditProjectMaterialsInfo(formData).then(response => {
this.$message.success('更新成功') if (response.data.code === 20000) {
this.dialogVisibleEditMaterials = false this.$message.success('更新成功')
this.get_materials_info_list() this.dialogVisibleEditMaterials = false
} else { this.get_materials_info_list() // 刷新资产列表
this.$message.error('更新失败:' + response.data.message) } else {
} this.$message.error('更新失败:' + response.data.message)
}).catch(error => { }
console.error(error) }).catch(error => {
this.$message.error('请求失败,请稍后重试') this.$message.error('请求失败,请稍后重试')
}) });
}, },
update(row) { update(row) {
this.editMaterials.project_id = row.project_id this.editMaterials.project_id = row.project_id
this.editMaterials.materials_intro = row.materials_intro this.editMaterials.materials_intro = row.materials_intro
this.editMaterials.materials_url = '' this.editMaterials.materials_url = ''
this.editMaterials.create_time = row.create_time this.editMaterials.create_time = row.create_time
this.editMaterials.materials_id = row.materials_id this.editMaterials.materials_id = row.materials_id
this.editMaterials.materials_type = row.materials_type this.editMaterials.materials_type = row.materials_type
this.dialogVisibleEditMaterials = true this.dialogVisibleEditMaterials = true
this.fileList = [] // 清空文件列表
this.fileList = [];
const url = this.editMaterials.materials_url const url = this.editMaterials.materials_url
const ext = url.split('.').pop().toLowerCase() const ext = url.split('.').pop().toLowerCase();
if (ext === 'jpg' || ext === 'jpeg' || ext === 'png') { if (ext === 'jpg' || ext === 'jpeg' || ext === 'png') {
this.isImage = true this.isImage = true
this.isPDF = false this.isPDF = false
} else if (ext === 'pdf') { } else if (ext === 'pdf') {
this.isImage = false this.isImage = false
this.isPDF = true this.isPDF = true
} else { } else if (ext === '') {
this.$message.error('不支持的文件类型预览')
}
},
handleNewSuccess(file, fileList) { } else {
this.materials_url = file.url this.$message.error('不支持的文件类型预览')
this.fileName = file.name }
console.log(file.url) },
console.log(file.name)
},
handleEditSuccess(file, fileList) { handleNewSuccess(file, fileList) {
this.materials_url = file.url this.materials_url = file.url
this.fileName = file.name this.fileName = file.name
}, console.log(file.url)
console.log(file.name)
},
handleRemove(file, fileList) { handleEditSuccess(file, fileList) {
console.log(file, fileList) this.materials_url = file.url
}, this.fileName = file.name
handlePreview(file) { },
console.log(file)
},
beforeUpload(file) {
const allowedExtensions = [
'jpg', 'jpeg', 'png', 'pdf',
'pptx', 'xlsx', 'xls', 'docx',
'doc', 'ppt', 'zip', 'rar'
]
const extension = file.name.split('.').pop().toLowerCase()
const isAllowed = allowedExtensions.includes(extension)
const isLt100M = file.size / 1024 / 1024 < 100
if (!isAllowed) { handleRemove(file, fileList) {
this.$message.error('不支持的文件类型!') console.log(file, fileList)
return false },
} handlePreview(file) {
if (!isLt100M) { console.log(file)
this.$message.error('文件大小不能超过100MB') },
return false beforeUpload(file) {
} const allowedExtensions = [
return true 'jpg', 'jpeg', 'png', 'pdf',
}, 'pptx', 'xlsx', 'xls', 'docx',
'doc', 'ppt', 'zip', 'rar'
];
const extension = file.name.split('.').pop().toLowerCase();
const isAllowed = allowedExtensions.includes(extension);
const isLt100M = file.size / 1024 / 1024 < 100;
showImg(row) { if (!isAllowed) {
const url = row.materials_url this.$message.error('不支持的文件类型!');
const ext = url.split('.').pop().toLowerCase() return false;
this.currentFileName = row.materials_file_name }
this.isImage = false if (!isLt100M) {
this.isPDF = true this.$message.error('文件大小不能超过100MB');
this.isPDF = false return false;
this.fileExtension = ext }
return true;
},
if (['jpg', 'jpeg', 'png'].includes(ext)) { showImg(row) {
this.previewUrl = process.env.BASE_WMS_FILE + url const url = row.materials_url
this.isImage = true const ext = url.split('.').pop().toLowerCase()
} else if (ext === 'pdf') { this.currentFileName = row.materials_file_name
this.previewUrl = process.env.BASE_WMS_FILE + url this.isImage = false
this.isPDF = true this.isPDF = false
} else { this.fileExtension = ext // 记录文件扩展名
this.previewUrl = process.env.BASE_WMS_FILE + url
}
this.dialogVisibleShowFile = true
},
confirmAddMaterials() { if (['jpg', 'jpeg', 'png'].includes(ext)) {
if (this.newMaterials.materials_intro.trim() === '') { this.previewUrl = process.env.BASE_WMS_FILE + url
this.$message.warning('请输入文件描述') this.isImage = true
return } else if (ext === 'pdf') {
} this.previewUrl = process.env.BASE_WMS_FILE + url
console.log(this.materials_url) this.isPDF = true
if (this.materials_url.trim() === '') { } else {
this.$message.warning('请选择文件') this.previewUrl = process.env.BASE_WMS_FILE + url // 必须设置预览URL
return }
} this.dialogVisibleShowFile = true
},
var param = { confirmAddMaterials() {
materials_class: this.materials_class, if (this.newMaterials.materials_intro.trim() === '') {
materials_owner: this.materials_owner, this.$message.warning('请输入文件描述');
materials_type: this.newMaterials.materials_type, return;
materials_intro: this.newMaterials.materials_intro, }
materials_url: this.materials_url, console.log(this.materials_url)
materials_file_name: this.fileName, if (this.materials_url.trim() === '') {
create_time: this.newMaterials.create_time this.$message.warning('请选择文件');
} return;
}
material.AddMaterialsInfo(param).then(response => { var param = {
this.$message({ materials_class: this.materials_class,
type: 'success', materials_owner: this.materials_owner,
message: '添加成功' materials_type: this.newMaterials.materials_type,
}) materials_intro: this.newMaterials.materials_intro,
this.dialogVisibleCreateMaterials = false materials_url: this.materials_url,
this.query_triggered = true materials_file_name: this.fileName,
this.currPage = 1 create_time: this.newMaterials.create_time
this.get_materials_info_list() };
}).catch(error => {
console.error(error)
this.$message({
type: 'error',
message: '添加失败,请重试' + error.toString()
})
})
},
get_materials_info_list() { material.AddMaterialsInfo(param).then(response => {
var param = { this.$message({
materials_owner: this.materials_owner, type: 'success',
materials_class: this.materials_class, message: '添加成功'
currPage: this.currPage, });
pageSize: this.pageSize this.get_materials_info_list()
} }).catch(error => {
this.$message({
type: 'error',
message: '添加失败,请重试' + error.toString()
});
});
this.dialogVisibleCreateMaterials = false;
},
if (this.filter.materials_type !== '') { get_materials_info_list() {
param.materials_type = this.filter.materials_type var param = {
} else if (!Array.isArray(this.materials_type)) { materials_owner: this.materials_owner,
param.materials_type = this.materials_type materials_class: this.materials_class,
} materials_type: this.materials_type
}
material.GetMaterialsInfo(param).then(response => {
this.materials_info_list = response.data.data
console.log(this.materials_info_list);
})
},
if (this.filter.dateRange && this.filter.dateRange.length === 2) { get_material_type_list() {
param.start_time = this.filter.dateRange[0] material.GetMaterialsType().then(response => {
param.end_time = this.filter.dateRange[1] this.materials_type_list = response.data.data
} //console.log(this.issue_type_list);
})
},
material.GetMaterialsInfo(param).then(response => { createMaterials() {
const data = response.data.data this.newMaterials.materials_intro = ''
if (data && data.list !== undefined) { this.newMaterials.create_time = ''
this.materials_info_list = data.list this.materials_url = ''
this.total = data.total this.fileList = [];
} else { this.dialogVisibleCreateMaterials = true
this.materials_info_list = data }
}
})
},
get_material_type_list() { }
material.GetMaterialsType().then(response => {
this.materials_type_list = response.data.data
})
},
createMaterials() {
this.newMaterials.materials_intro = ''
this.newMaterials.create_time = ''
this.newMaterials.materials_type = this.filter.materials_type || ''
this.materials_url = ''
this.fileList = []
this.dialogVisibleCreateMaterials = true
}
}
} }
</script> </script>
<style> <style>