Browse Source

Merge remote-tracking branch 'origin/master'

master
wangpengfei 9 months ago
parent
commit
f6ac914651
  1. 12
      supervise-report-ui/src/api/portal/Upload.js
  2. 71
      supervise-report-ui/src/api/project/project.js
  3. 390
      supervise-report-ui/src/components/uploadFile/upload_yanchejianchaTuBiao.vue
  4. 12
      supervise-report-ui/src/layout/components/Sidebar/index.vue
  5. 3
      supervise-report-ui/src/main.js
  6. 46
      supervise-report-ui/src/views/project/projectDaily.vue
  7. 629
      supervise-report-ui/src/views/projectList/index.vue

12
supervise-report-ui/src/api/portal/Upload.js

@ -4,7 +4,7 @@ import qs from 'qs'
const base = process.env.VUE_APP_BASE_API
// 文件上传接口
export const uploadFile =base+ '/file/upload'
export const uploadFile = base + '/file/upload'
// export const uploadFile = process.env.VUE_APP_BASE_API + '/customer/file/upload'
@ -21,10 +21,10 @@ export const uploadFile =base+ '/file/upload'
// 移除图片
export function deleteFilesOss(data) {
return request({
url: '/base/v1/baseVehicleAppendixs/deleteFilesOss',
method: 'post',
return request({
url: '/base/v1/baseVehicleAppendixs/deleteFilesOss',
method: 'post',
data: qs.stringify(data),
// headers: { 'Content-Type': 'multipart/form-data' }
})
// headers: { 'Content-Type': 'multipart/form-data' }
})
}

71
supervise-report-ui/src/api/project/project.js

@ -147,6 +147,9 @@ export default {
method: 'get',
});
},
// 获取所有项目类型名称
getProjectType: function() {
return request({
@ -154,4 +157,72 @@ export default {
method: 'get',
});
},
// 获取项目进度
getNodeByProjectSid: function(data) {
return request({
url: '/v1/projectphase/getNodeByProjectSid',
method: 'get',
params: data
});
},
// 修改项目进度
updatePhase: function(data) {
return request({
url: '/v1/projectinformation/updatePhase',
method: 'post',
data: data
});
},
// 保存用还信记录
saveCreditRecord: function(data) {
return request({
url: '/v1/projectcreditbalance/save',
method: 'post',
data: data
});
},
// 保存项目报告
saveProjectReport: function(data) {
return request({
url: '/v1/ProjectFiles/save',
method: 'post',
data: data
});
},
// 查询商享通所有仓库
getSxtWarehouses: function(data) {
return request({
url: '/v1/projectinformation/warehouseList',
method: 'post',
data: data
});
},
// 初始化项目管理商享通仓库
initProjectWarehouses: function(data) {
return request({
url: '/v1/projectinformation/getWarehouseBySid/' + data,
method: 'get',
});
},
// 保存项目管理商享通仓库
saveSxtWarehouses: function(data) {
return request({
url: '/v1/projectinformation/saveSxt',
method: 'post',
data: data
});
},
}

390
supervise-report-ui/src/components/uploadFile/upload_yanchejianchaTuBiao.vue

@ -1,222 +1,232 @@
<template>
<div>
<el-upload ref="imgUpload" v-loading="loadding" class="avatar-uploader" :headers="accessToken" :action="uploadFile" :accept="accept" list-type="picture-card" :limit="limit" :file-list="files" :on-remove="removeImage" :on-preview="handlePictureCardPreview" :on-progress="uploadProgrees" :on-error="uploadError" :on-success="uploadImgSuccess_FuJian">
<i class="el-icon-plus avatar-uploader-icon"/>
<el-upload ref="imgUpload" v-loading="loadding" class="avatar-uploader" :headers="accessToken" :action="uploadFile"
:accept="accept" list-type="picture-card" :limit="limit" :file-list="files" :on-remove="removeImage"
:on-preview="handlePictureCardPreview" :on-progress="uploadProgrees" :on-error="uploadError"
:on-success="uploadImgSuccess_FuJian">
<i class="el-icon-plus avatar-uploader-icon" />
</el-upload>
<el-dialog :visible.sync="dialogVisible" title="查看图片">
<el-dialog :visible.sync="dialogVisible" title="查看图片">
<img width="100%" :src="dialogImageUrl" alt="">
</el-dialog>
</div>
</template>
<script>
import { uploadFile_yanchejiancha } from '@/api/portal/Upload'
import { getStorage } from '@/utils/auth.js'
import {
uploadFile_yanchejiancha
} from '@/api/portal/Upload'
import {
getStorage
} from '@/utils/auth.js'
import {
uploadFile
} from '@/api/portal/Upload'
export default {
model: {
prop: 'name',
event: 'change'
},
props: {
placeholder: {
type: String,
default: ''
},
bucket: {
type: String,
default: 'abc'
},
//
width: {
type: String,
default: '270px'
},
limit: {
type: Number,
default: ''
},
accept: {
type: String,
default: '.jpg,.jpeg,.png,.JPG,.JPEG,'
},
//
name: {
type: Array,
required: true
},
uploadData: {
type: Object,
default: {}
}
},
data() {
return {
dialogImageUrl: '',
dialogVisible: false,
accessToken: null,
uploadFile: uploadFile_yanchejiancha,
fileList_FuJian: [],
enclosure: '',
file_add: '',
file_catch: '',
files: [],
files_list: [],
filedUrl: '',
// fileUrl: fileUrl,
// showpicture:false,
isview: false,
nameArr: '',
loadding: false
}
},
watch: {
name: {
deep: true,
immediate: true,
handler(newVal, oldVal) {
console.log('aaaa1', newVal)
this.files = newVal
console.log('aaaa2', this.files)
export default {
model: {
prop: 'name',
event: 'change'
},
props: {
placeholder: {
type: String,
default: ''
},
bucket: {
type: String,
default: 'abc'
},
//
width: {
type: String,
default: '270px'
},
limit: {
type: Number,
default: ''
},
accept: {
type: String,
default: '.jpg,.jpeg,.png,.JPG,.JPEG,'
},
//
name: {
type: Array,
required: true
},
uploadData: {
type: Object,
default: {}
}
}
},
mounted() {
this.$nextTick(() => {
this.Init()
})
},
created() {
this.uploadFile = uploadFile_yanchejiancha //
this.accessToken = {
token: getStorage()
}
},
methods: {
showImg(imgList) {
this.files = imgList
console.log('123123123', this.files)
},
view() {
// window.open(this.filedUrl)
},
//
Init() {
if (this.name !== undefined) {
this.files = []
for (var i = 0; i < this.name.length; i++) {
this.files.push({
name: this.name[i],
url: this.name[i]
})
}
data() {
return {
dialogImageUrl: '',
dialogVisible: false,
accessToken: null,
uploadFile: uploadFile,
fileList_FuJian: [],
enclosure: '',
file_add: '',
file_catch: '',
files: [],
files_list: [],
filedUrl: '',
// fileUrl: fileUrl,
// showpicture:false,
isview: false,
nameArr: '',
loadding: false
}
},
handlePictureCardPreview(file) {
this.dialogVisible = true
this.dialogImageUrl = file.url
},
// --
uploadImgSuccess_FuJian(response, file, fileList) {
console.log('您选择的file:', file)
if (file.response.code === '200') {
this.loadding = false
//
this.filedUrl = this.fileUrl + file.response.data
// var uid = file.response.data
this.files.push({
name: file.response.data.sourceFileName,
url: file.response.data.fullUrl,
size: file.response.data.size
})
this.$emit('change', this.files)
this.$emit('eett', this.files)
watch: {
name: {
deep: true,
immediate: true,
handler(newVal, oldVal) {
console.log('aaaa1', newVal)
this.files = newVal
console.log('aaaa2', this.files)
}
}
},
removeImage(file, ImageFileList) {
this.files.splice(this.files.indexOf(file), 1)
const imgFiles = []
this.files.forEach((o) => {
imgFiles.push(o.url)
mounted() {
this.$nextTick(() => {
this.Init()
})
this.$emit('fileChange', this.files)
},
handleRemove(file, fileList) {
console.log('file:' + JSON.stringify(file))
console.log('fileList:' + JSON.stringify(fileList))
this.enclosure = ''
// 1. id(this.file_add)
this.getNewFileId(fileList)
// 2. id(this.file_catch)
this.getCatchFileId(file)
// 3. id
this.getFileId()
// 4. id
this.$emit('change', this.enclosure)
},
// this.file_add(id)
getNewFileId(fileList) {
// debugger
this.file_add = ''
for (var i = 0; i < fileList.length; i++) {
if (fileList[i].response && fileList[i].response.code === '200') {
this.file_add = this.file_add + fileList[i].response.data + ','
}
created() {
this.uploadFile = uploadFile //
this.accessToken = {
token: getStorage()
}
if (this.file_add !== '') {
this.file_add = this.file_add.substring(0, this.file_add.length - 1)
}
// console.log('1. this.file_add: ' + this.file_add)
},
// this.file_catchid
getCatchFileId(file) {
for (var i = 0; i < this.files_list.length; i++) {
if (this.file_catch !== '') {
// 1. id
if (this.files_list[i].name === file.name) {
// 2. file_catchfils_arry
var fils_arry = this.file_catch.split(',')
// 3. fils_arry this.files_list[i].id
var arry = []
fils_arry.forEach((element) => {
//
if (element !== this.files_list[i].id) {
arry.push(element)
}
methods: {
showImg(imgList) {
this.files = imgList
console.log('123123123', this.files)
},
view() {
// window.open(this.filedUrl)
},
//
Init() {
if (this.name !== undefined) {
this.files = []
for (var i = 0; i < this.name.length; i++) {
this.files.push({
name: this.name[i],
url: this.name[i]
})
// 4. file_catch
this.file_catch = arry.join(',')
}
}
}
// console.log('2. this.file_catch:' + this.file_catch)
},
// id
getFileId() {
// console.log('3. this.file_catch:' + this.file_catch + ',this.file_add:' + this.file_add)
if (this.file_catch !== '') {
},
handlePictureCardPreview(file) {
this.dialogVisible = true
this.dialogImageUrl = file.url
},
// --
uploadImgSuccess_FuJian(response, file, fileList) {
console.log('您选择的file:', file)
if (file.response.code === '200') {
this.loadding = false
//
this.filedUrl = this.fileUrl + file.response.data
// var uid = file.response.data
this.files.push({
name: file.response.data.sourceFileName,
url: file.response.data.fullUrl,
size: file.response.data.size
})
this.$emit('change', this.files)
this.$emit('eett', this.files)
}
},
removeImage(file, ImageFileList) {
this.files.splice(this.files.indexOf(file), 1)
const imgFiles = []
this.files.forEach((o) => {
imgFiles.push(o.url)
})
this.$emit('fileChange', this.files)
},
handleRemove(file, fileList) {
console.log('file:' + JSON.stringify(file))
console.log('fileList:' + JSON.stringify(fileList))
this.enclosure = ''
// 1. id(this.file_add)
this.getNewFileId(fileList)
// 2. id(this.file_catch)
this.getCatchFileId(file)
// 3. id
this.getFileId()
// 4. id
this.$emit('change', this.enclosure)
},
// this.file_add(id)
getNewFileId(fileList) {
// debugger
this.file_add = ''
for (var i = 0; i < fileList.length; i++) {
if (fileList[i].response && fileList[i].response.code === '200') {
this.file_add = this.file_add + fileList[i].response.data + ','
}
}
if (this.file_add !== '') {
this.enclosure = this.file_catch + ',' + this.file_add
this.file_add = this.file_add.substring(0, this.file_add.length - 1)
}
// console.log('1. this.file_add: ' + this.file_add)
},
// this.file_catchid
getCatchFileId(file) {
for (var i = 0; i < this.files_list.length; i++) {
if (this.file_catch !== '') {
// 1. id
if (this.files_list[i].name === file.name) {
// 2. file_catchfils_arry
var fils_arry = this.file_catch.split(',')
// 3. fils_arry this.files_list[i].id
var arry = []
fils_arry.forEach((element) => {
//
if (element !== this.files_list[i].id) {
arry.push(element)
}
})
// 4. file_catch
this.file_catch = arry.join(',')
}
}
}
// console.log('2. this.file_catch:' + this.file_catch)
},
// id
getFileId() {
// console.log('3. this.file_catch:' + this.file_catch + ',this.file_add:' + this.file_add)
if (this.file_catch !== '') {
if (this.file_add !== '') {
this.enclosure = this.file_catch + ',' + this.file_add
} else {
this.enclosure = this.file_catch
}
} else {
this.enclosure = this.file_catch
this.enclosure = this.file_add
}
} else {
this.enclosure = this.file_add
}
},
//
uploadError() {
this.loadding = false
},
uploadProgrees(event, file, fileList) {
if (Number(event.percent) > 0) {
this.loadding = true
},
//
uploadError() {
this.loadding = false
},
uploadProgrees(event, file, fileList) {
if (Number(event.percent) > 0) {
this.loadding = true
}
// console.log('event:', event)
}
// console.log('event:', event)
}
}
}
</script>
<style scoped></style>

12
supervise-report-ui/src/layout/components/Sidebar/index.vue

@ -2,15 +2,9 @@
<div :class="{'has-logo':showLogo}">
<logo v-if="showLogo" :collapse="isCollapse" />
<el-scrollbar wrap-class="scrollbar-wrapper">
<el-menu
:default-active="activeMenu"
:background-color="variables.menuBg"
:text-color="variables.menuText"
:unique-opened="false"
:active-text-color="variables.menuActiveText"
:collapse-transition="false"
mode="vertical"
>
<el-menu :default-active="activeMenu" :background-color="variables.menuBg" :text-color="variables.menuText"
:unique-opened="false" :active-text-color="variables.menuActiveText" :collapse-transition="false"
mode="vertical">
<sidebar-item v-for="route in routes" :key="route.path" :item="route" :base-path="route.path" />
</el-menu>
</el-scrollbar>

3
supervise-report-ui/src/main.js

@ -50,7 +50,8 @@ VueAMap.initAMapApiLoader({
Vue.config.productionTip = false
let token = null
// let token = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyTm8iOiJkN2UxYzlkYy0xN2E3LTRlMjItYTIyYS02ZGFlYWZjNzUwOGEiLCJpc3MiOiJXQksiLCJleHAiOjE3MjAwNjA4MjN9.oO7Giw4M3khIOxNFw2VjNfOD1U6qC_mQzDeYtRi9n4Q'
// let token =
// 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyTm8iOiIwODZlMzg5Mi00Njc5LTRlNGQtYWUwYS02OTVjYTM5N2JiM2QiLCJpc3MiOiJXQksiLCJleHAiOjE3MjYwMTg0Mzh9.S7xDxYHZiRIHGo1eGC8fGb5-AjaR0BSLG7rUs_wVuRA'
token = GetQueryString('token')
if (token) {
setStorage(token)

46
supervise-report-ui/src/views/project/projectDaily.vue

@ -50,11 +50,11 @@
<div>{{ scope.row.pledgeRatePercent }}%</div>
</template>
</el-table-column>
<el-table-column label="操作" align="center" width="150">
<el-table-column label="操作" align="center" width="250">
<template slot-scope="scope">
<el-button type="primary" icon="el-icon-view" size="small" @click="showView(scope.row)">大屏</el-button>
<!-- <el-button type="primary" icon="el-icon-chat-dot-round" size="small"
@click="sendMess(scope.row)">发送通知</el-button> -->
<el-button type="primary" icon="el-icon-chat-dot-round" size="small"
@click="showView2(scope.row)">定制大屏</el-button>
</template>
</el-table-column>
</el-table>
@ -281,8 +281,8 @@
size: 10,
total: 0,
params: {
dataDateStart: getDateRang('yesterday'),
dataDateEnd: getDateRang('yesterday'),
dataDateStart: getDateRang('yesterday'),
dataDateEnd: getDateRang('yesterday'),
projectSid: ''
}
},
@ -632,10 +632,40 @@
// window.open('https://supervise.yxtsoft.com/map365/#/mortgage');
//
window.open('/map365/#/allData?projectSid=' + projectSid + '&projectName=' + projectName +
'&orderDate=' + orderDate);
'&orderDate=' + orderDate);
// window.open('http://192.168.0.112:9532/map365/#/allData?projectSid=' + projectSid + '&projectName=' +
// projectName +
// '&orderDate=' + orderDate);
},
showView2(row) {
console.log('showView2: ', row)
var projectSid = row.projectSid
var projectName = row.projectName
var orderDate = row.orderDate
//
// window.open('https://supervise.yxtsoft.com/map365/#/mortgage');
//
// window.open('https://supervise.yxtsoft.com/map365/#/mortgage');
//
// window.open('/map365/#/allData?projectSid=' + projectSid + '&projectName=' + projectName +
// '&orderDate=' + orderDate);
//
if (row.projectSid == 'd8bf7556-6db4-46b1-87eb-f3e9f93d330f') {
window.open('/map365/#/shanhaiGf?projectSid=' + projectSid + '&projectName=' +
projectName +
'&orderDate=' + orderDate);
} else {
this.$message({
showClose: true,
type: 'error',
message: '暂无定制大屏'
})
return
}
// window.open('http://192.168.0.117:9533/map365/#/allData?projectSid=' + projectSid + '&projectName=' + projectName +
// '&orderDate=' + orderDate);
},
sendMess(row) {
req.sendMess(row.projectSid, row.orderDate).then(res => {

629
supervise-report-ui/src/views/projectList/index.vue

@ -12,34 +12,23 @@
clearable />
</el-form-item>
<el-form-item label="项目类型">
<el-select v-model="listQuery.params.projectType" placeholder="请选择" >
<el-option
v-for="(item,i) in ProjectTypeList"
:key="i"
:label="item.projectType"
:value="item.projectType">
</el-option>
</el-select>
<el-select v-model="listQuery.params.projectType" placeholder="请选择">
<el-option v-for="(item,i) in ProjectTypeList" :key="i" :label="item.projectType"
:value="item.projectType">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="贷款行">
<el-select v-model="listQuery.params.bankSid" placeholder="请选择" >
<el-option
v-for="(item,i) in storehouseList"
:key="i"
:label="item.name"
:value="item.sid">
</el-option>
</el-select>
<el-select v-model="listQuery.params.bankSid" placeholder="请选择">
<el-option v-for="(item,i) in storehouseList" :key="i" :label="item.name" :value="item.sid">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="项目状态">
<el-select v-model="listQuery.params.stateName" placeholder="请选择" @change="getState">
<el-option
v-for="(item,i) in stateList"
:key="i"
:label="item.name"
:value="item.sid">
</el-option>
</el-select>
<el-select v-model="listQuery.params.stateName" placeholder="请选择" @change="getState">
<el-option v-for="(item,i) in stateList" :key="i" :label="item.name" :value="item.sid">
</el-option>
</el-select>
</el-form-item>
</el-form>
<div class="btn" style="text-align: center;">
@ -57,21 +46,23 @@
<el-table v-loading="listLoading" :data="list" border style="width: 100%;" :row-style="{height: '40px'}">
<!-- <el-table-column type="selection" align="center" width="50"/> -->
<el-table-column label="序号" type="index" width="80" :index="indexMethod" align="center" />
<!-- <el-table-column label="操作" wid align="center" width="180">
<el-table-column label="操作" wid align="center" width="400">
<template slot-scope="scope">
<el-button type="primary" size="mini" @click="toDetail(scope.row)">查看</el-button>
<el-button type="primary" size="mini" @click="toEdit(scope.row)">编辑</el-button>
<el-button type="primary" size="mini" @click="toProjectProgress(scope.row)">项目进度</el-button>
<el-button type="primary" size="mini" @click="toCreditLimit(scope.row)">用还信</el-button>
<el-button type="primary" size="mini" @click="toReport(scope.row)">项目报告</el-button>
<el-button type="primary" size="mini" @click="toTieUp(scope.row)">关联商享通仓库</el-button>
</template>
</el-table-column> -->
<el-table-column label="项目名称" prop="entryName" width="250" align="center" />
<el-table-column label="所属行业" prop="industryName" width="120" align="center" />
</el-table-column>
<el-table-column label="项目名称" prop="entryName" width="250" align="center" />
<el-table-column label="所属行业" prop="industryName" width="120" align="center" />
<el-table-column label="项目类型" prop="typeName" width="120" align="center" />
<el-table-column label="项目状态" prop="stateName" width="120" align="center" />
<el-table-column label="授信额度" prop="creditLimit" width="120" align="center" />
<el-table-column label="签约日期" prop="signingDate" width="120" align="center" />
<el-table-column label="到期日期" prop="endDate" width="120" align="center" />
<el-table-column label="用信总额" prop="useLimit" width="120" align="center" />
<el-table-column label="贷款行" prop="bankName"align="center" />
<el-table-column label="签约日期" prop="signingDate" width="120" align="center" />
<el-table-column label="到期日期" prop="endDate" width="120" align="center" />
<el-table-column label="用信总额" prop="useLimit" width="120" align="center" />
<el-table-column label="贷款行" prop="bankName" align="center" />
<el-table-column label="客户经理" prop="bmanagerName" width="120" align="center" />
<!-- <el-table-column label="企业名称" prop="enterpriseName" width="250" align="center" /> -->
<!-- <el-table-column label="联系人" prop="econtacts" width="100" align="center" /> -->
@ -86,6 +77,188 @@
</div>
<!-- <projectAdd v-show="viewState ==2 || viewState ==3" ref="divAdd" @doback="resetState" @reloadlist="getList" /> -->
<!-- <projectInfo v-show="viewState ==4" ref="divInfo" @doback="resetState" @reloadlist="getList"/> -->
<el-dialog title="项目进度" :close-on-click-modal="false" :visible.sync="dialogShow" width="15%"
:before-close="dialogClose">
<el-select v-model="projectState.nodeValue" placeholder="项目进度" style="margin-top: -30px;"
@change="seleProjectState">
<el-option v-for="item in options" :key="item.nodeKey" :label="item.nodeValue" :value="item.nodeKey">
</el-option>
</el-select>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogClose"> </el-button>
<el-button type="primary" @click="saveProjectState()"> </el-button>
</span>
</el-dialog>
<el-dialog title="用还信" :close-on-click-modal="false" :visible.sync="dialogShow2" width="60%"
:before-close="dialogClose2">
<el-form ref="form_daily" :model="formobj" label-position="right" class="formadd" style="margin-top: -30px;">
<el-row class="first_row">
<el-col :span="4" class="tleftb2">
<span>项目名称</span>
</el-col>
<el-col :span="8" class="trightb">
<el-form-item>
<span>{{formobj.projectname}}</span>
</el-form-item>
</el-col>
<el-col :span="4" class="tleftb2">
<span>填报日期</span>
</el-col>
<el-col :span="8" class="trightb">
<el-form-item> <el-date-picker v-model="formobj.tbdate" type="date" style="width: 100%;" placeholder="选择日期"
value-format="yyyy-MM-dd" /></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="4" class="tleftb2">
<span>类型</span>
</el-col>
<el-col :span="8" class="trightb">
<el-form-item>
<el-radio-group v-model="radio" @change="radioChange">
<el-radio :label="1">用信</el-radio>
<el-radio :label="2">还信</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="4" class="tleftb2">
<span>金额</span>
</el-col>
<el-col :span="8" class="trightb">
<el-form-item>
<el-form-item> <el-input v-model="formobj.money" placeholder="请输入金额" style="width:100%" class="addinputw"
oninput="value=value.replace(/[^\d.]/g, '').replace(/\.{2,}/g, '.').replace('.', '$#$').replace(/\./g, '').replace('$#$', '.').replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3').replace(/^\./g, '')"
clearable /></el-form-item>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="4" class="tleftb2">
<span>附件</span>
</el-col>
<el-col :span="20" class="trightb">
<el-form-item>
<upload style="margin-top: 10px;" ref="uploadImg2" v-model="imgList" :limit="9" @change="backData"
bucket="map" :upload-data="{ type: '0001' }"></upload>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="4" class="tleftb2">
<span>备注</span>
</el-col>
<el-col :span="20" class="trightb">
<el-form-item> <el-input v-model="formobj.remarks" placeholder="请输入备注" style="width:100%" class="addinputw"
clearable /></el-form-item>
</el-col>
</el-row>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogClose2"> </el-button>
<el-button type="primary" @click="saveFormobj()"> </el-button>
</span>
</el-dialog>
<el-dialog title="项目报告" :close-on-click-modal="false" :visible.sync="dialogShow3" width="60%"
:before-close="dialogClose3">
<el-form ref="form_daily" label-position="right" class="formadd" style="margin-top: -30px;">
<el-row class="first_row">
<el-col :span="4" class="tleftb2" style="padding-bottom: 10px;padding-top: 10px;">
<span>报告类型</span>
</el-col>
<el-col :span="8" class="trightb">
<el-form-item style="padding-bottom: 10px;padding-top: 10px;">
<el-select v-model="reportInfo.typeValue" placeholder="报告类型" @change="seleReportType">
<el-option v-for="item in options" :key="item.nodeKey" :label="item.nodeValue" :value="item.nodeKey">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="4" class="tleftb2" style="padding-bottom: 10px;padding-top: 10px;">
<span>上传报告</span>
</el-col>
<el-col :span="8" class="trightb">
<el-form-item style="padding-bottom: 10px;padding-top: 10px;">
<el-upload class="upload-demo" :action="updateAction" :on-success="handleSuccess"
:on-remove="handleRemove" :file-list="uploadFileList">
<el-button size="small" type="primary" v-show="reportInfo.typeKey!=''">点击上传报告</el-button>
</el-upload>
</el-form-item>
</el-col>
</el-row>
<!-- <el-row>
<el-col :span="4" class="tleftb2" style="padding-bottom: 10px;padding-top: 10px;">
<span>竣工报告</span>
</el-col>
<el-col :span="8" class="trightb">
<el-form-item style="padding-bottom: 10px;padding-top: 10px;">
<el-upload class="upload-demo" :action="updateAction" :on-success="handleSuccess3"
:on-remove="handleRemove3" :file-list="uploadFileList3">
<el-button size="small" type="primary">点击上传报告</el-button>
</el-upload>
</el-form-item>
</el-col>
<el-col :span="4" class="tleftb2">
<span></span>
</el-col>
<el-col :span="8" class="trightb">
<el-form-item></el-form-item>
</el-col>
</el-row> -->
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogClose3"> </el-button>
<el-button type="primary" @click="saveReport()"> </el-button>
</span>
</el-dialog>
<el-dialog title="关联仓库" :close-on-click-modal="false" :visible.sync="dialogShow4" width="60%"
:before-close="dialogClose4">
<div class="step2Item" style="margin-top: -30px;">
<el-select v-model="warehouseName" class="addinputw" placeholder="请选择仓库" style="width:20%" @change="getCangku">
<el-option v-for="item in seleWarehouseList" :label="item.warehouseName" :value="item.sid" />
</el-select>
<el-button type="primary" style="margin-left: 20px;" @click="addCangku()">添加</el-button>
</div>
<el-table :data="tieUpWarehouses.warehouse" border style="width: 98%;margin-left: 15px;margin-top: 10px;">
<!-- <el-table-column type="selection" align="center" width="50"/> -->
<el-table-column label="操作" wid align="center" width="116">
<template slot-scope="scope">
<el-button type="primary" size="mini" @click="doDel(scope.$index)">删除</el-button>
</template>
</el-table-column>
<el-table-column label="仓库名称" prop="name" width="400" align="center" />
<el-table-column label="仓库地址" prop="address" align="center" />
<el-table-column label="联系人" prop="linkerName" width="120" align="center" />
<el-table-column label="联系电话" prop="linkerPhone" width="150" align="center" />
</el-table>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogClose4"> </el-button>
<el-button type="primary" @click="saveSxtWarehouses()"> </el-button>
</span>
</el-dialog>
</div>
</template>
@ -96,19 +269,21 @@
import ButtonBar from '@/components/ButtonBar'
// import projectAdd from './projectAdd2.vue'
// import projectInfo from './projectInfo2.vue'
import upload from '@/components/uploadFile/upload_yanchejianchaTuBiao.vue'
export default {
name: 'CustomerManagement',
components: {
Pagination,
pageye,
ButtonBar,
upload
// projectAdd,
// projectInfo,
},
data() {
return {
listLoading: false,
listLoading: false,
btndisabled: false,
btnList: [
// {
@ -143,9 +318,47 @@
total: 0
},
viewState: 1,
storehouseList:[],
ProjectTypeList:[],
stateList: [],
storehouseList: [],
ProjectTypeList: [],
stateList: [],
dialogShow: false,
dialogShow2: false,
dialogShow3: false,
dialogShow4: false,
options: [],
projectState: {
sid: "",
nodeKey: "",
nodeValue: ""
},
radio: 1,
formobj: {
usersid: window.sessionStorage.getItem('userSid'),
projectname: "",
projectsid: "",
tbdate: "",
type: 1,
money: "",
pzfiles: [],
remarks: ""
},
imgList: [],
updateAction: process.env.VUE_APP_BASE_API + '/projectdaily/uploadfile',
uploadFileList: [],
reportFileList: [],
warehouseName: '',
cangKu: {},
seleWarehouseList: [],
tieUpWarehouses: {
sid: "",
warehouse: []
},
reportInfo: {
mainsid: "",
typeKey: '',
typeValue: '',
reportList: [],
},
}
},
mounted() {
@ -156,10 +369,253 @@
//
},
methods: {
getState(value){
seleProjectState(val) {
const choose = this.options.filter((item) => item.nodeKey == val)
console.log('>>>>>>>>>seleProjectState', choose)
this.projectState.nodeValue = choose[0].nodeValue
this.projectState.nodeKey = choose[0].nodeKey
},
toProjectProgress(row) {
this.projectState = {
sid: row.sid,
nodeKey: row.nodeKey,
nodeValue: row.nodeValue
}
req.getNodeByProjectSid({
projectSid: row.sid
}).then((res) => {
console.log(">>>>>>>>>getNodeByProjectSid", res.data)
this.options = res.data
this.dialogShow = true
})
},
dialogClose() {
console.log(">>>>>>>>>dialogClose", this.projectState)
this.projectState = {
sid: "",
nodeKey: "",
nodeValue: ""
}
this.dialogShow = false
},
saveProjectState() {
req.updatePhase(this.projectState).then((res) => {
console.log(">>>>>>>>>updatePhase", res.data)
this.dialogShow = false
})
},
toCreditLimit(row) {
this.formobj.projectsid = row.sid
this.formobj.projectname = row.entryName
this.dialogShow2 = true
},
dialogClose2() {
console.log("formobj", this.formobj)
this.dialogShow2 = false
},
radioChange(val) {
console.log("radioChange", val)
this.formobj.type = val
},
backData(value) {
console.log(value, 999)
console.log("imgList", this.imgList)
const aa = []
if (value.length > 0 && value != null && value != undefined) {
for (var i = 0; i < value.length; i++) {
aa.push(value[i].url)
}
}
this.formobj.pzfiles = aa
},
saveFormobj() {
console.log("formobj", this.formobj)
req.saveCreditRecord(this.formobj).then((res) => {
console.log(">>>>>>>>>saveCreditRecord", res.data)
this.dialogShow2 = false
this.imgList = []
this.formobj = {
usersid: window.sessionStorage.getItem('userSid'),
projectname: "",
projectsid: "",
tbdate: "",
type: 1,
money: "",
pzfiles: [],
remarks: ""
}
})
},
toReport(row) {
this.reportInfo.mainsid = row.sid
req.getNodeByProjectSid({
projectSid: row.sid
}).then((res) => {
console.log(">>>>>>>>>getNodeByProjectSid", res.data)
this.options = res.data
this.dialogShow3 = true
})
},
seleReportType(val) {
console.log(">>>>>>>>>seleReportType1111", val)
const choose = this.options.filter((item) => item.nodeKey == val)
console.log('>>>>>>>>>seleReportType', choose)
this.reportInfo.typeKey = choose[0].nodeKey
this.reportInfo.typeValue = choose[0].nodeValue
},
dialogClose3() {
this.dialogShow3 = false
},
saveReport() {
var fileTypeName = ''
if (this.reportInfo.typeValue == '在途') {
fileTypeName = "到货验收报告"
}
if (this.reportInfo.typeValue == '在建') {
fileTypeName = "在建查验报告"
}
if (this.reportInfo.typeValue == '竣工') {
fileTypeName = "竣工报告"
}
for (var i = 0; i < this.reportFileList.length; i++) {
var item = {
url: this.reportFileList[i].fullUrl,
absolutePath: this.reportFileList[i].filePath,
name: fileTypeName,
fileSrcName: this.reportFileList[i].fileSrcName,
}
this.reportInfo.reportList.push(item)
}
console.log('saveReport', this.reportInfo)
req.saveProjectReport(this.reportInfo).then((res) => {
this.uploadFileList = []
this.reportFileList = []
this.reportInfo.reportList = []
this.dialogShow3 = false
})
},
handleSuccess(resp, file, fileList) {
console.log('handleSuccess----', resp)
const _this = this
const upfile = {
fileTypeId: 6, // ': 1=;2=;3=;4=;5=;',
fileTypeName: '项目报告', // ': 1=;2=;3=;4=;5=',
fileSrcName: resp.data.sourceFileName, // '',
filePath: resp.data.filePath, // '',
fullUrl: resp.data.fullUrl, // '访URL',
fileuid: file.uid // '访URL',
}
_this.reportFileList.push(upfile)
},
handleRemove(file, fileList) {
const _this = this
let delete_index = 0
for (let i = 0, len = _this.reportFileList.length; i < len; i++) {
if (file.uid === _this.reportFileList[i].fileuid) {
delete_index = i
break
}
}
_this.reportFileList.splice(delete_index, 1)
},
getSxtWarehouses(sid) {
req.getSxtWarehouses({
sid: sid
}).then((res) => {
console.log(">>>>>>>>>getSxtWarehouses", res.data)
this.seleWarehouseList = res.data
})
},
toTieUp(row) {
this.tieUpWarehouses.sid = row.sid
req.initProjectWarehouses(row.sid).then((res) => {
console.log(">>>>>>>>>initProjectWarehouses", res.data)
this.tieUpWarehouses.warehouse = res.data.warehouse
this.dialogShow4 = true
})
this.getSxtWarehouses(row.sid)
},
getCangku(value) {
const choose = this.seleWarehouseList.filter((item) => item.sid === value)
this.cangKu.name = choose[0].warehouseName
this.cangKu.shSid = choose[0].sid
this.cangKu.address = choose[0].address
this.cangKu.linkerName = choose[0].contacts
this.cangKu.linkerPhone = choose[0].mob
},
addCangku() {
console.log(">>>>>>>>>addCangku", this.cangKu)
console.log(">>>>>>>>>addCangku", this.tieUpWarehouses.warehouse)
var info = {
shSid: this.cangKu.shSid,
name: this.cangKu.name,
address: this.cangKu.address,
linkerName: this.cangKu.linkerName,
linkerPhone: this.cangKu.linkerPhone,
}
const choose = this.tieUpWarehouses.warehouse.filter((item) => item.shSid === info.shSid)
console.log(">>>>>>>>>addCangku", choose)
if (choose.length == 0)
this.tieUpWarehouses.warehouse.push(info)
else
this.$message({
showClose: true,
type: 'error',
message: "请勿重复添加!"
})
},
doDel(index) {
this.tieUpWarehouses.warehouse.splice(index, 1)
},
dialogClose4() {
this.dialogShow4 = false
},
saveSxtWarehouses() {
req.saveSxtWarehouses(this.tieUpWarehouses).then((res) => {
console.log(">>>>>>>>>saveSxtWarehouses", res.data)
this.dialogShow4 = false
this.warehouseName = ''
})
},
getState(value) {
console.log(">>>>>>>>>getState", value)
const choose = this.stateList.filter((item) => item.sid === value)
console.log(">>>>>>>>>getState", choose)
console.log(">>>>>>>>>getState", choose)
this.listQuery.params.stateSid = choose[0].sid
},
@ -196,23 +652,23 @@
var pageindex = index + 1 + pagestart
return pageindex
},
getBankName(){
req.getUserListByOrg().then((res)=>{
console.log(">>>>>>>>>getBankName", res.data)
this.storehouseList=res.data
getBankName() {
req.getUserListByOrg().then((res) => {
console.log(">>>>>>>>>getBankName", res.data)
this.storehouseList = res.data
})
req.getProjectType().then((res)=>{
console.log(">>>>>>>>>getProjectType", res.data)
this.ProjectTypeList=res.data
req.getProjectType().then((res) => {
console.log(">>>>>>>>>getProjectType", res.data)
this.ProjectTypeList = res.data
})
req.getProjtypedstated().then((res)=>{
console.log(">>>>>>>>>getProjtypedstated", res.data)
this.stateList=res.data
this.stateList.unshift({
name:'全部',
sid:'',
})
req.getProjtypedstated().then((res) => {
console.log(">>>>>>>>>getProjtypedstated", res.data)
this.stateList = res.data
this.stateList.unshift({
name: '全部',
sid: '',
})
})
},
//
@ -220,7 +676,7 @@
this.listLoading = true
req.listPage(this.listQuery).then((response) => {
this.listLoading = false
console.log(">>>>>>>>>listPage", response.data)
console.log(">>>>>>>>>listPage", response.data)
if (response.success) {
this.list = response.data.records
this.listQuery.total = response.data.total
@ -246,7 +702,7 @@
projectType: '',
bankSid: '',
stateSid: 'b2a9f856-016e-4880-ba1c-261ac4edc8ec',
stateName: '正式监管',
stateName: '正式监管',
}
}
this.getList()
@ -262,7 +718,7 @@
this.$refs['divAdd'].showEdit(row)
},
// ID
doDel(row) {
doDelss(row) {
const tip = '请确认是否删除所选记录?'
this.$confirm(tip, '提示', {
confirmButtonText: '确定',
@ -295,11 +751,11 @@
this.viewState = 1
},
jump(sid) {
console.log("jump",sid)
console.log("jump", sid)
this.viewState = 2
this.$refs['divAdd'].showAdd(sid)
this.$refs['divAdd'].showAdd(sid)
},
close(sid){
close(sid) {
this.viewState = 4
this.$refs['divInfo'].showAdd(sid)
},
@ -311,4 +767,57 @@
}
</script>
<style scoped>
.wenjiantit {
font-size: 16px;
font-weight: bold;
margin: 25px 0 10px 0;
}
.forminfo {
margin: 0;
padding: 0;
}
.listcon {
height: calc(100vh - 250px);
overflow-y: auto;
overflow-x: hidden;
}
.tleftb2 {
text-align: center;
font-size: 14px;
color: #606266;
line-height: 40px !important;
font-weight: 600;
}
.tleftb3 {
display: flex;
height: 100%;
flex-direction: row;
align-items: center;
justify-content: center;
text-align: center;
font-size: 14px;
color: #666666;
}
.step2Item {
display: flex;
flex-direction: row;
align-items: center;
margin-left: 20px;
padding-top: 15px;
padding-bottom: 15px;
}
.step2ItemBtn {
margin-left: 20px;
color: #fff;
background-color: #0294D7;
padding: 5px 15px;
border-radius: 5px;
}
</style>

Loading…
Cancel
Save