Merge branch 'ma-mall-ui' of http://192.168.0.56:3000/bonus/bonus-ui into ma-mall-ui

This commit is contained in:
jjLv 2024-11-25 18:23:57 +08:00
commit 9f8650b8cc
13 changed files with 498 additions and 302 deletions

View File

@ -1,10 +1,10 @@
# 页面标题 # 页面标题
VUE_APP_TITLE = 博诺思管理系统 VUE_APP_TITLE = 安徽机械化施工装备平台
# 开发环境配置 # 开发环境配置
ENV = 'development' ENV = 'development'
# 博诺思管理系统/开发环境 # 安徽机械化施工装备平台/开发环境
VUE_APP_BASE_API = '/dev-api' VUE_APP_BASE_API = '/dev-api'
# 路由懒加载 # 路由懒加载

View File

@ -1,8 +1,8 @@
# 页面标题 # 页面标题
VUE_APP_TITLE = 博诺思管理系统 VUE_APP_TITLE = 安徽机械化施工装备平台
# 生产环境配置 # 生产环境配置
ENV = 'production' ENV = 'production'
# 博诺思管理系统/生产环境 # 安徽机械化施工装备平台/生产环境
VUE_APP_BASE_API = '/prod-api' VUE_APP_BASE_API = '/prod-api'

View File

@ -1,10 +1,10 @@
# 页面标题 # 页面标题
VUE_APP_TITLE = 博诺思管理系统 VUE_APP_TITLE = 安徽机械化施工装备平台
NODE_ENV = production NODE_ENV = production
# 测试环境配置 # 测试环境配置
ENV = 'staging' ENV = 'staging'
# 博诺思管理系统/测试环境 # 安徽机械化施工装备平台/测试环境
VUE_APP_BASE_API = '/stage-api' VUE_APP_BASE_API = '/stage-api'

View File

@ -1,7 +1,7 @@
{ {
"name": "bonus", "name": "bonus",
"version": "3.6.4", "version": "3.6.4",
"description": "博诺思管理系统", "description": "安徽机械化施工装备平台",
"author": "博诺思", "author": "博诺思",
"license": "MIT", "license": "MIT",
"scripts": { "scripts": {

View File

@ -34,6 +34,15 @@ export function updateDevice(data) {
}) })
} }
//保存草稿
export function insertDraft(data) {
return request({
url: '/material-mall/dev/insertDraft',
method: 'post',
data: data,
})
}
//装备装备类目树结构数据 //装备装备类目树结构数据
export function getEquipmentType(query) { export function getEquipmentType(query) {
return request({ return request({
@ -61,7 +70,14 @@ export function updateUpDown(data) {
}) })
} }
//上下架(批量)
export function companyList(query) {
return request({
url: '/material-mall/dev/companyList',
method: 'get',
params: query
})
}

View File

@ -2,43 +2,10 @@
<div class="app-container home"> <div class="app-container home">
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :sm="24" :lg="12" style="padding-left: 20px"> <el-col :sm="24" :lg="12" style="padding-left: 20px">
<h2>博诺思后台管理框架</h2> <h2>安徽机械化施工装备平台</h2>
<p> <!-- <p>
<b>当前版本:</b> <span>v{{ version }}</span> <b>当前版本:</b> <span>v{{ version }}</span>
</p> </p> -->
</el-col>
<el-col :sm="24" :lg="12" style="padding-left: 50px">
<el-row>
<el-col :span="12">
<h2>技术选型</h2>
</el-col>
</el-row>
<el-row>
<el-col :span="6">
<h4>后端技术</h4>
<ul>
<li>SpringBoot</li>
<li>SpringCloud</li>
<li>Nacos</li>
<li>Sentinel</li>
<li>Seata</li>
<li>Minio</li>
<li>...</li>
</ul>
</el-col>
<el-col :span="6">
<h4>前端技术</h4>
<ul>
<li>Vue</li>
<li>Vuex</li>
<li>Element-ui</li>
<li>Axios</li>
<li>Echarts</li>
<li>Quill</li>
<li>...</li>
</ul>
</el-col>
</el-row>
</el-col> </el-col>
</el-row> </el-row>
<el-divider /> <el-divider />
@ -60,7 +27,7 @@
</el-card> </el-card>
</el-col> </el-col>
<el-col :xs="24" :sm="24" :md="12" :lg="8"> <el-col :xs="24" :sm="24" :md="12" :lg="8">
<el-card class="update-log"> <!-- <el-card class="update-log">
<div slot="header" class="clearfix"> <div slot="header" class="clearfix">
<span>更新日志</span> <span>更新日志</span>
</div> </div>
@ -83,7 +50,7 @@
</ol> </ol>
</el-collapse-item> </el-collapse-item>
</el-collapse> </el-collapse>
</el-card> </el-card> -->
</el-col> </el-col>
</el-row> </el-row>
</div> </div>

View File

@ -1,23 +1,22 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-row :gutter="10" class="mb8"> <el-row :gutter="10" class="mb8" style="display: flex;align-items: center;">
<el-col :span="1.5"> <el-col :span="2">
<el-button <el-button
type="primary" size="mini" type="primary" @click="backList"
icon="el-icon-back" @click="backList" icon="el-icon-back"
>取消</el-button> >取消</el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="2">
<el-button <el-button v-if="!isView"
type="warning" plain @click="addDev" type="warning" @click="saveTemp"
icon="el-icon-download" size="mini" icon="el-icon-download"
>存草稿</el-button> >存草稿</el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="2">
<el-button <el-button v-if="!isView"
type="success" type="success" @click="addDev"
icon="el-icon-check" icon="el-icon-check"
size="mini"
>上架</el-button> >上架</el-button>
</el-col> </el-col>
</el-row> </el-row>
@ -26,119 +25,123 @@
<span class="title-sign"></span> <span class="title-sign"></span>
<span class="title-text">基本信息</span> <span class="title-text">基本信息</span>
</div> </div>
<el-form :model="formData" ref="formData" size="small" :inline="true" label-width="130px" style="margin-left: 40px;margin-bottom: 20px;"> <el-form :model="formData" ref="dForm" :rules="rules" size="small" :inline="true" label-width="140px" style="margin-left: 40px;margin-bottom: 20px;width: 80%;">
<el-row :gutter="24" class="mb8"> <el-row :gutter="24" class="mb8">
<el-form-item label="装备名称:" prop="deviceName"> <el-form-item label="装备名称:" prop="deviceName">
<el-input <el-input
v-model="formData.deviceName" v-model="formData.deviceName"
placeholder="请输入装备名称" placeholder="请输入装备名称"
clearable maxlength="20" clearable maxlength="30"
style="width: 1100px;" style="width: 1100px;"
/> />
</el-form-item> </el-form-item>
</el-row> </el-row>
<el-row :gutter="24" class="mb8"> <el-form-item label="装备类目:" prop="deviceTypeList">
<el-col :span="10"> <el-cascader
<el-form-item label="装备类目:" prop="typeId"> v-model="formData.deviceTypeList"
:key="propsKey"
</el-form-item> :show-all-levels="false"
</el-col> :options="deviceTypeTree"
<el-col :span="10"> :props="partTypeTreeProps"
<el-form-item label="所属公司:" prop="companyId"> filterable clearable
collapse-tags
</el-form-item> style="width: 450px"
</el-col> placeholder="请选择装备类目"
</el-row> ref="deviceTypeCascader"
popper-class="popper-select"
<el-row :gutter="24" class="mb8"> @change="deviceTypeChange"
<el-col :span="10"> ></el-cascader>
<el-form-item label="装备编号:" prop="code"> </el-form-item>
<el-input <el-form-item label="设备数量:" prop="deviceCount">
v-model="formData.code" <el-input
placeholder="请输入装备编号" @input="(v)=>(formData.deviceCount=v.replace(/[^\d.]/g,''))"
clearable maxlength="20" v-model="formData.deviceCount"
style="width: 400px;" placeholder="请输入设备数量"
/> clearable maxlength="20"
</el-form-item> style="width: 450px;" :disabled="countDisabled"
</el-col> />
<el-col :span="10"> </el-form-item>
<el-form-item label="装备品牌:" prop="brand"> <el-form-item label="装备单位:" prop="unitName">
<el-input <el-input
v-model="formData.brand" v-model="formData.unitName"
placeholder="请输入装备品牌" placeholder="请输入装备单位"
clearable maxlength="20" clearable maxlength="20"
style="width: 400px;" style="width: 450px;" disabled
/> />
</el-form-item> </el-form-item>
</el-col> <el-form-item label="装备编号:" prop="code">
</el-row> <el-input
<el-row :gutter="24" class="mb8"> v-model="formData.code"
<el-col :span="10"> placeholder="请输入装备编号"
<el-form-item label="出厂日期:" prop="productionDate"> clearable maxlength="30"
<el-date-picker style="width: 450px;"
v-model="formData.productionDate" />
placeholder="请选择出厂日期" </el-form-item>
value-format="yyyy-MM-dd" <el-form-item label="所属公司:" prop="companyId">
type="date" style="width: 400px;"> <el-select
</el-date-picker> v-model="formData.companyId"
</el-form-item> placeholder="请选择所属公司"
</el-col> clearable style="width: 450px">
<el-col :span="10"> <el-option
<el-form-item label="租赁价格(天/元)" prop="dayLeasePrice"> v-for="item in companyDataList"
<el-input :key="item.companyId"
v-model="formData.dayLeasePrice" :label="item.companyName"
placeholder="请输入租赁价格" :value="item.companyId"
clearable maxlength="20" />
style="width: 400px;" </el-select>
/> </el-form-item>
</el-form-item> <el-form-item label="装备品牌:" prop="brand">
</el-col> <el-input
</el-row> v-model="formData.brand"
<el-row :gutter="24" class="mb8"> placeholder="请输入装备品牌"
<el-col :span="10"> clearable maxlength="30"
<el-form-item label="联系人:" prop="person"> style="width: 450px;"
<el-input />
v-model="formData.person" </el-form-item>
placeholder="请输入联系人" <el-form-item label="出厂日期:" prop="productionDate">
clearable maxlength="20" <el-date-picker
style="width: 400px;" v-model="formData.productionDate"
/> placeholder="请选择出厂日期"
</el-form-item> value-format="yyyy-MM-dd"
</el-col> type="date" style="width: 450px;">
<el-col :span="10"> </el-date-picker>
<el-form-item label="联系电话:" prop="personPhone"> </el-form-item>
<el-input <el-form-item label="租赁价格(天/元)" prop="dayLeasePrice">
v-model="formData.personPhone" <el-input
placeholder="请输入联系电话" @input="(v)=>(formData.dayLeasePrice=v.replace(/[^\d.]/g,''))"
clearable maxlength="20" v-model="formData.dayLeasePrice"
style="width: 400px;" placeholder="请输入租赁价格"
/> clearable maxlength="20"
</el-form-item> style="width: 450px;"
</el-col> />
</el-row> </el-form-item>
<el-row :gutter="24" class="mb8"> <el-form-item label="联系人:" prop="person">
<el-col :span="10"> <el-input
<el-form-item label="装备单位:" prop="unitName"> v-model="formData.person"
<el-input placeholder="请输入联系人"
v-model="formData.unitName" clearable maxlength="20"
placeholder="请输入装备单位" style="width: 450px;"
clearable maxlength="20" />
style="width: 400px;" disabled </el-form-item>
/> <el-form-item label="联系电话:" prop="personPhone">
</el-form-item> <el-input
</el-col> v-model="formData.personPhone"
<el-col :span="10"> placeholder="请输入联系电话"
<el-form-item label="整机重量(KG)" prop="deviceWeight"> clearable maxlength="20"
<el-input style="width: 450px;"
v-model="formData.deviceWeight" />
placeholder="请输入整机重量" </el-form-item>
clearable maxlength="20" <el-form-item label="整机重量(KG)" prop="deviceWeight">
style="width: 400px;" <el-input
/> @input="(v)=>(formData.deviceWeight=v.replace(/[^\d.]/g,''))"
</el-form-item> v-model="formData.deviceWeight"
</el-col> placeholder="请输入整机重量"
</el-row> clearable maxlength="20"
style="width: 450px;"
/>
</el-form-item>
<!-- 描述 -->
<!-- <el-row :gutter="24" class="mb8" style="margin-bottom: 20px;"> <!-- <el-row :gutter="24" class="mb8" style="margin-bottom: 20px;">
<span style="color: #606266;font-size: 14px;font-weight: 600;margin-left: 60px;">添加描述:</span> <span style="color: #606266;font-size: 14px;font-weight: 600;margin-left: 60px;">添加描述:</span>
<span style="color: rgb(255, 59, 48);font-size: 12px;margin-left: 10px;">:添加不少于2个关于装备性能外观等相关的描述如档位标定功率规格等</span> <span style="color: rgb(255, 59, 48);font-size: 12px;margin-left: 10px;">:添加不少于2个关于装备性能外观等相关的描述如档位标定功率规格等</span>
@ -183,8 +186,9 @@
</div> </div>
<div style="margin-left: 20px;"> <div style="margin-left: 20px;">
<el-upload ref="upload" :limit="6" :headers="upload.headers" <el-upload ref="upload" :limit="6" :headers="upload.headers"
:action="upload.url" :show-file-list="false" accept=".png, .jpg, .jpeg, .pdf, .doc, .docx" :action="upload.url" :show-file-list="false" accept=".png, .jpg, .jpeg"
:on-success="handleFileSuccess" :auto-upload="true" :on-success="handleFileSuccess" :auto-upload="true"
:before-upload="beforeUpload" :on-error="uploadError"
> >
<el-button icon="el-icon-folder-add">上传文件</el-button> <el-button icon="el-icon-folder-add">上传文件</el-button>
</el-upload> </el-upload>
@ -227,8 +231,9 @@
</div> </div>
<div style="margin-left: 20px;"> <div style="margin-left: 20px;">
<el-upload ref="upload" :limit="6" :headers="upload.headers" <el-upload ref="upload" :limit="6" :headers="upload.headers"
:action="upload.url" :show-file-list="false" accept=".png, .jpg, .jpeg, .pdf, .doc, .docx" :action="upload.url" :show-file-list="false" accept=".png, .jpg, .jpeg"
:on-success="handleFileSuccess2" :auto-upload="true" :on-success="handleFileSuccess2" :auto-upload="true"
:before-upload="beforeUpload" :on-error="uploadError"
> >
<el-button icon="el-icon-folder-add">上传文件</el-button> <el-button icon="el-icon-folder-add">上传文件</el-button>
</el-upload> </el-upload>
@ -276,8 +281,9 @@
</div> </div>
<div style="margin-left: 20px;"> <div style="margin-left: 20px;">
<el-upload ref="upload" :limit="6" :headers="upload.headers" <el-upload ref="upload" :limit="6" :headers="upload.headers"
:action="upload.url" :show-file-list="false" accept=".png, .jpg, .jpeg, .pdf, .doc, .docx" :action="upload.url" :show-file-list="false" accept=".png, .jpg, .jpeg"
:on-success="handleFileSuccess3" :auto-upload="true" :on-success="handleFileSuccess3" :auto-upload="true"
:before-upload="beforeUpload" :on-error="uploadError"
> >
<el-button icon="el-icon-folder-add">上传文件</el-button> <el-button icon="el-icon-folder-add">上传文件</el-button>
</el-upload> </el-upload>
@ -310,8 +316,9 @@
</div> </div>
<div style="margin-left: 20px;"> <div style="margin-left: 20px;">
<el-upload ref="upload" :limit="6" :headers="upload.headers" <el-upload ref="upload" :limit="6" :headers="upload.headers"
:action="upload.url" :show-file-list="false" accept=".png, .jpg, .jpeg, .pdf, .doc, .docx" :action="upload.url" :show-file-list="false" accept=".png, .jpg, .jpeg"
:on-success="handleFileSuccess4" :auto-upload="true" :on-success="handleFileSuccess4" :auto-upload="true"
:before-upload="beforeUpload" :on-error="uploadError"
> >
<el-button icon="el-icon-folder-add">上传文件</el-button> <el-button icon="el-icon-folder-add">上传文件</el-button>
</el-upload> </el-upload>
@ -348,7 +355,8 @@
<script> <script>
import { getToken } from "@/utils/auth"; import { getToken } from "@/utils/auth";
import { getDevDetail,addDevice,updateDevice} from "@/api/lessor/equipment"; import { getDevDetail,addDevice,updateDevice,getEquipmentType,companyList,insertDraft} from "@/api/lessor/equipment";
import { number } from "echarts";
export default { export default {
name: "", name: "",
// dicts: ["purchase_task_status"], // dicts: ["purchase_task_status"],
@ -356,13 +364,21 @@
return { return {
maId:"", maId:"",
isView: false, isView: false,
equipmentTypeList: [], // //
materialModelList: [], // companyDataList: [],
supplierList: [], // //
fixCodeList: ["否", "是"], deviceTypeTree: [],
formData: { //
typeId:644 partTypeTreeProps: {
children: "children",
label: "name",
multiple: false,
value: "id",
// multiple: true,
}, },
propsKey: 1000,
countDisabled: false,
formData: {},
// //
describeList:[ describeList:[
{label:"",describe:""},{label:"",describe:""} {label:"",describe:""},{label:"",describe:""}
@ -371,7 +387,50 @@
detailsFileList:[],// detailsFileList:[],//
insurancePdf:[],// insurancePdf:[],//
examinationPdf:[],// examinationPdf:[],//
//
rules: {
deviceName: [
{ required: true, message: "上架时装备名称不能为空", trigger: "blur" }
],
deviceTypeList: [
{ required: true, message: "上架时装备类目不能为空", trigger: "change" }
],
deviceCount: [
{ required: true, message: "上架时设备数量不能为空", trigger: "blur" }
],
companyId: [
{ required: true, message: "上架时所属公司不能为空", trigger: "change" }
],
code: [
{ required: true, message: "上架时装备编号不能为空", trigger: "blur" }
],
brand: [
{ required: true, message: "上架时装备品牌不能为空", trigger: "blur" }
],
productionDate: [
{ required: true, message: "上架时出厂日期不能为空", trigger: "blur" }
],
dayLeasePrice: [
{ required: true, message: "上架时租赁价格不能为空", trigger: "blur" }
],
person: [
{ required: true, message: "上架时联系人不能为空", trigger: "blur" }
],
personPhone: [
{ required: true, message: "上架时联系电话不能为空", trigger: "blur" },
{
pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
message: "请输入正确的手机号码",
trigger: "blur"
}
],
// unitName: [
// { required: true, message: "", trigger: "blur" }
// ],
deviceWeight: [//
{ required: true, message: "上架时整机重量不能为空", trigger: "blur" }
],
},
// //
dialogImageUrl: "", dialogImageUrl: "",
dialogVisible: false, dialogVisible: false,
@ -385,6 +444,8 @@
}; };
}, },
mounted() { mounted() {
this.getTypeTreeData()
this.getCompanyList()
const maId = this.$route.query && this.$route.query.maId; const maId = this.$route.query && this.$route.query.maId;
const isView = this.$route.query && this.$route.query.isView; const isView = this.$route.query && this.$route.query.isView;
this.maId = maId; this.maId = maId;
@ -395,11 +456,11 @@
this.isView = false; this.isView = false;
} }
if(this.maId&&this.maId!=""){ if(this.maId&&this.maId!=""){
this.getDevDetailInfo() setTimeout(()=>{
this.getDevDetailInfo()
},500)
} }
// this.resetForm("formData");
// console.log(this.isView);
// this.getSupplierList()
}, },
methods: { methods: {
// //
@ -407,66 +468,173 @@
const obj = { path: "/lessor/equipment" }; const obj = { path: "/lessor/equipment" };
this.$tab.closeOpenPage(obj); this.$tab.closeOpenPage(obj);
}, },
// //
// getDeviceType() { getCompanyList() {
// getDeviceType({ level: 4, skipPermission: 1 }).then((response) => { companyList().then((response) => {
// let matModelRes = response.data; this.companyDataList=response.data
// this.materialModelList = matModelRes.map((item) => { });
// return { },
// label: item.typeName, //
// value: item.typeId, async getTypeTreeData() {
// }; const params = {};
// }); const res = await getEquipmentType(params);
// }); console.log("treeData==========", res);
// }, this.deviceTypeTree = res.data;
// getSupplierList() {
// getManufacturerSelect().then((response) => {
// let arrRes = response.rows;
// this.supplierList = arrRes.map((item) => {
// return {
// label: item.supplier,
// value: item.supplierId,
// };
// });
// });
// },
},
//-change
deviceTypeChange(val){
const deviceTypeList = this.$refs.deviceTypeCascader.getCheckedNodes()
console.log(deviceTypeList)
this.formData.unitName = deviceTypeList[0].data.unitName
let manageType = deviceTypeList[0].data.manageType
if(manageType=='1'){//
this.formData.deviceCount=1
this.countDisabled=false
}else if(manageType=='0'){//
this.formData.deviceCount=1
this.countDisabled=true
}
console.log(this.formData)
},
//
getSelectId(list, id) {
for (let i in list) {
if (list[i].id == id) {
//value
return [list[i].id];
}
if (list[i].children) {
let node = this.getSelectId(list[i].children, id);
if (node !== undefined) {
//
node.unshift(list[i].id);
return node;
}
}
}
},
// //
getDevDetailInfo(){ getDevDetailInfo(){
console.log(this.maId) console.log(this.maId)
getDevDetail(this.maId).then((response) => { getDevDetail(this.maId).then((response) => {
console.log(response) console.log(response)
this.formData = response.data; this.formData = response.data;
this.$set(this.formData,"companyId",Number(response.data.companyId))
console.log(this.formData)
this.$forceUpdate();
this.mainFileList=response.data.mainFileList||[] // this.mainFileList=response.data.mainFileList||[] //
this.detailsFileList=response.data.detailsFileList||[] // this.detailsFileList=response.data.detailsFileList||[] //
this.insurancePdf=response.data.insurancePdf||[] // this.insurancePdf=response.data.insurancePdf||[] //
this.examinationPdf=response.data.examinationPdf||[] // this.examinationPdf=response.data.examinationPdf||[] //
//
this.formData.deviceTypeList = this.getSelectId(this.deviceTypeTree, this.formData.typeId);
console.log(this.formData.deviceTypeList)
this.$forceUpdate();
}) })
}, },
//稿 //稿
saveTemp(){
if (this.formData.deviceTypeList&&this.formData.deviceTypeList.length > 0) {
this.formData.typeId = this.formData.deviceTypeList[3]
} else {
this.formData.typeId = ""
}
let param = {
...this.formData,
mainFileList:this.mainFileList,//
detailsFileList:this.detailsFileList,//
insurancePdf:this.insurancePdf,//
examinationPdf:this.examinationPdf,//
}
console.log(param)
this.$modal.confirm('是否保存该装备草稿?').then(() => {
// if(this.maId&&this.maId!=""){
// updateDevice(param).then((response) => {
// if(response.code==200){
// this.$modal.msgSuccess("");
// this.backList()
// }else{
// this.$modal.msgError(response.msg);
// }
// })
// }else{
insertDraft(param).then((response) => {
if(response.code==200){
this.$modal.msgSuccess("保存成功");
this.backList()
}else{
this.$modal.msgError(response.msg);
}
})
// }
}).catch(() => {})
},
//
addDev(){ addDev(){
console.log(this.formData) console.log(this.formData)
let param = { console.log(this.formData.deviceTypeList)
...this.formData, this.$refs['dForm'].validate((valid) => {
mainFileList:this.mainFileList,// if (valid) {
detailsFileList:this.detailsFileList,// if (this.formData.deviceTypeList&&this.formData.deviceTypeList.length > 0) {
insurancePdf:this.insurancePdf,// this.formData.typeId = this.formData.deviceTypeList[3]
examinationPdf:this.examinationPdf,// } else {
this.formData.typeId = ""
}
if(this.mainFileList.length==0||this.mainFileList.length>6){
this.$modal.msgError("主展示图不得少于1张不得多于6张");
return
}
if(this.detailsFileList.length==0||this.detailsFileList.length>6){
this.$modal.msgError("详情展示图不得少于1张不得多于6张");
return
}
let param = {
...this.formData,
mainFileList:this.mainFileList,//
detailsFileList:this.detailsFileList,//
insurancePdf:this.insurancePdf,//
examinationPdf:this.examinationPdf,//
}
this.$modal.confirm('是否确认上架该装备?').then(() => {
// if(this.maId&&this.maId!=""){
// updateDevice(param).then((response) => {
// if(response.code==200){
// this.$modal.msgSuccess("");
// this.backList()
// }else{
// this.$modal.msgError(response.msg);
// }
// })
// }else{
// addDevice(param).then((response) => {
// if(response.code==200){
// this.$modal.msgSuccess("");
// this.backList()
// }else{
// this.$modal.msgError(response.msg);
// }
// })
// }
}).catch(() => {})
} }
if(this.maId&&this.maId!=""){ })
updateDevice(param).then((response) => { },
// -
beforeUpload(file) {
}) if (file.size / 1024 / 1024 > 2) {
}else{ this.$message.error({
addDevice(param).then((response) => { message: `上传文件大小不能超过2M!`,
});
return false;
}) }
} },
// addDevice //
uploadError() {
this.$message.error({
message: `上传文件失败!`,
});
}, },
// //
handleFileSuccess(response, file, fileList) { handleFileSuccess(response, file, fileList) {
if (response.code == 200) { if (response.code == 200) {
@ -537,6 +705,17 @@
handleRemove(list,index){ handleRemove(list,index){
list.splice(index,1) list.splice(index,1)
}, },
// //
addDescribe(){ addDescribe(){
this.describeList.push({label:"",describe:""}) this.describeList.push({label:"",describe:""})
@ -545,11 +724,6 @@
delDescribe(index){ delDescribe(index){
this.describeList.splice(index,1) this.describeList.splice(index,1)
}, },
}, },
}; };
</script> </script>
@ -650,5 +824,13 @@
display: none; display: none;
} }
} }
.popper-select {
.el-cascader-panel .el-scrollbar .el-checkbox {
display: none;
}
.el-cascader-panel .el-scrollbar:nth-child(4) .el-checkbox {
display: block !important;
}
}
</style> </style>

View File

@ -1,7 +1,7 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="100px">
<el-form-item prop="deviceName"> <el-form-item label="装备名称:" prop="deviceName">
<el-input <el-input
v-model="queryParams.deviceName" v-model="queryParams.deviceName"
placeholder="请输入装备名称" placeholder="请输入装备名称"
@ -10,7 +10,7 @@
maxlength="20" maxlength="20"
/> />
</el-form-item> </el-form-item>
<el-form-item prop="code"> <el-form-item label="装备编码:" prop="code">
<el-input <el-input
v-model="queryParams.code" v-model="queryParams.code"
placeholder="请输入装备编码" placeholder="请输入装备编码"
@ -19,7 +19,7 @@
maxlength="20" maxlength="20"
/> />
</el-form-item> </el-form-item>
<el-form-item prop="maStatus"> <el-form-item label="装备状态:" prop="maStatus">
<el-select <el-select
v-model="queryParams.maStatus" v-model="queryParams.maStatus"
placeholder="请选择装备状态" placeholder="请选择装备状态"
@ -34,27 +34,24 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item prop="status"> <br>
<el-select v-model="queryParams.status" placeholder="请选择装备分类" clearable> <el-form-item label="装备类目:" prop="deviceTypeList">
<el-option <el-cascader
v-for="item in statusList" v-model="deviceTypeList"
:key="item.id" :key="propsKey"
:label="item.name" :show-all-levels="false"
:value="item.id" :options="deviceTypeTree"
/> :props="partTypeTreeProps"
</el-select> filterable clearable
collapse-tags
style="width:240px"
placeholder="请选择装备类目"
ref="deviceTypeCascader"
popper-class="popper-select"
@change="deviceTypeChange"
></el-cascader>
</el-form-item> </el-form-item>
<el-form-item prop="status"> <el-form-item label="更新时间:" prop="dateRange">
<el-select v-model="queryParams.status" placeholder="请选择装备型号" clearable>
<el-option
v-for="item in statusList"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select>
</el-form-item>
<el-form-item prop="dateRange">
<el-date-picker <el-date-picker
v-model="dateRange" v-model="dateRange"
type="datetimerange" type="datetimerange"
@ -72,14 +69,14 @@
<el-row :gutter="10" class="mb8"> <el-row :gutter="10" class="mb8">
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button
type="success" plain type="success"
size="mini" @click="equipmentAdd" size="mini" @click="equipmentAdd"
>装备新建 >装备新建
</el-button> </el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button
type="warning" plain type="warning"
icon="el-icon-download" icon="el-icon-download"
size="mini" size="mini"
@click="handleUpdateUpDown(null,2)" @click="handleUpdateUpDown(null,2)"
@ -87,10 +84,10 @@
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button
type="warning" plain type="warning"
icon="el-icon-download" icon="el-icon-download"
size="mini" size="mini"
@click="handleUpdateUpDown(null,3)" @click="handleUpdateUpDown(null,1)"
>批量下架 >批量下架
</el-button> </el-button>
</el-col> </el-col>
@ -103,42 +100,46 @@
<span>{{ (queryParams.pageNum - 1) * queryParams.pageSize + scope.$index + 1 }}</span> <span>{{ (queryParams.pageNum - 1) * queryParams.pageSize + scope.$index + 1 }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="装备名称" align="center" prop="deviceName" width="150" :show-overflow-tooltip="true"/> <el-table-column label="装备名称" align="center" prop="deviceName" :show-overflow-tooltip="true"/>
<el-table-column label="装备编码" align="center" prop="code" width="150" :show-overflow-tooltip="true"/> <el-table-column label="装备编码" align="center" prop="code" :show-overflow-tooltip="true"/>
<el-table-column label="装备类目" align="center" prop="groupName" width="150" :show-overflow-tooltip="true"/> <el-table-column label="装备类目" align="center" width="250" :show-overflow-tooltip="true">
<el-table-column label="装备型号" align="center" prop="modelName" :show-overflow-tooltip="true"/> <template slot-scope="scope">
<el-table-column label="装备状态" align="center" prop="maStatus" :show-overflow-tooltip="true"> <span>{{ scope.row.firstName }} <span v-show="scope.row.firstName">></span> {{ scope.row.secondName }}<span v-show="scope.row.secondName">></span>{{ scope.row.thirdName }}</span>
</template>
</el-table-column>
<el-table-column label="装备型号" align="center" width="200" prop="typeName" :show-overflow-tooltip="true"/>
<el-table-column label="装备状态" align="center" width="100" prop="maStatus" :show-overflow-tooltip="true">
<template slot-scope="scope"> <template slot-scope="scope">
<dict-tag :options="dict.type.ma_machine_status" :value="scope.row.maStatus"/> <dict-tag :options="dict.type.ma_machine_status" :value="scope.row.maStatus"/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="更新时间" align="center" prop="updateTime" width="150" :show-overflow-tooltip="true"/> <el-table-column label="更新时间" align="center" prop="updateTime" width="200" :show-overflow-tooltip="true"/>
<el-table-column label="操作" align="center" width="250"> <el-table-column label="操作" align="center" width="300">
<template slot-scope="scope"> <template slot-scope="scope">
<!-- <el-button <el-button
size="mini" size="mini"
@click="handleView(scope.row)"> @click="handleView(scope.row)">
查看 查看
</el-button> --> </el-button>
<el-button <el-button v-if="scope.row.maStatus == 0||scope.row.maStatus == 1"
size="mini" type="primary" size="mini" type="primary"
@click="handleUpdate(scope.row)"> @click="handleUpdate(scope.row)">
编辑 编辑
</el-button> </el-button>
<el-button <el-button v-if="scope.row.maStatus == 0||scope.row.maStatus == 1||scope.row.maStatus == 2"
size="mini" type="warning"> size="mini" type="warning">
<span <span
v-if="scope.row.maStatus == 2" v-if="scope.row.maStatus == 2"
@click="handleUpdateUpDown(scope.row,3)"> @click="handleUpdateUpDown(scope.row,1)">
下架 下架
</span> </span>
<span <span
v-if="scope.row.maStatus == 3" v-if="scope.row.maStatus == 0||scope.row.maStatus == 1"
@click="handleUpdateUpDown(scope.row,2)"> @click="handleUpdateUpDown(scope.row,2)">
上架 上架
</span> </span>
</el-button> </el-button>
<el-button size="mini" type="danger" @click="delDev(scope.row)"> <el-button size="mini" type="danger" @click="delDev(scope.row)" v-if="scope.row.maStatus == 0||scope.row.maStatus == 1">
删除 删除
</el-button> </el-button>
</template> </template>
@ -156,7 +157,7 @@
</template> </template>
<script> <script>
import {getDevList, removeDevice,updateUpDown} from "@/api/lessor/equipment"; import {getEquipmentType, getDevList, removeDevice, updateUpDown} from "@/api/lessor/equipment";
export default { export default {
name: "", name: "",
@ -171,6 +172,19 @@ export default {
multiple: true, multiple: true,
// //
showSearch: true, showSearch: true,
//
deviceTypeTree: [],
//
deviceTypeList: [],
//
partTypeTreeProps: {
children: "children",
label: "name",
multiple: false,
value: "id",
// multiple: true,
},
propsKey: 1000,
statusList: [{id: '1', name: '状态1'}, {id: '2', name: '状态2'}, {id: '3', name: '状态3'}], statusList: [{id: '1', name: '状态1'}, {id: '2', name: '状态2'}, {id: '3', name: '状态3'}],
ids: [], ids: [],
// //
@ -189,15 +203,31 @@ export default {
pageSize: 10, pageSize: 10,
deviceName: undefined, deviceName: undefined,
code: undefined, code: undefined,
keyWord: undefined,
status: undefined, status: undefined,
typeId: undefined,
}, },
}; };
}, },
created() { created() {
this.getTypeTreeData()
this.getList(); this.getList();
}, },
methods: { methods: {
//
async getTypeTreeData() {
const params = {};
const res = await getEquipmentType(params);
console.log("treeData==========", res);
this.deviceTypeTree = res.data;
},
deviceTypeChange(val){
console.log(val)
if(val.length > 0) {
this.queryParams.typeId = val[3]
} else {
this.queryParams.typeId = ""
}
},
/** 查询列表 */ /** 查询列表 */
getList() { getList() {
this.loading = true; this.loading = true;
@ -209,8 +239,8 @@ export default {
this.queryParams.endTime = undefined this.queryParams.endTime = undefined
} }
getDevList(this.queryParams).then(response => { getDevList(this.queryParams).then(response => {
this.tableList = response.rows; this.tableList = response.data.rows;
this.total = response.total; this.total = response.data.total;
this.loading = false; this.loading = false;
}); });
}, },
@ -218,7 +248,8 @@ export default {
resetQuery() { resetQuery() {
this.resetForm("queryForm"); this.resetForm("queryForm");
this.dateRange = [] this.dateRange = []
this.queryParams.keyWord = null; this.deviceTypeList = []
this.queryParams.typeId = null;
this.handleQuery(); this.handleQuery();
}, },
/** 搜索按钮操作 */ /** 搜索按钮操作 */
@ -267,15 +298,15 @@ export default {
this.handleQuery() this.handleQuery()
}).catch(() => { }).catch(() => {
}) })
}, },
// //
handleView(row) { handleView(row) {
console.log(row) console.log(row)
// let query = { Id:row.id,taskId: row.taskId,isView:"true" } let query = {maId: row.maId, isView: "true"}
// this.$tab.closeOpenPage({ this.$tab.closeOpenPage({
// path: '/purchase/goodsAcceptDetail', path: '/lessor/equipmentDetail',
// query, query,
// }) })
}, },
handleExport() { handleExport() {
// this.download('/material/ma_machine/export', { // this.download('/material/ma_machine/export', {

View File

@ -1,7 +1,7 @@
<template> <template>
<div class="login"> <div class="login">
<el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form"> <el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form">
<h3 class="title">博诺思后台管理系统</h3> <h3 class="title">安徽机械化施工装备平台</h3>
<el-form-item prop="username"> <el-form-item prop="username">
<el-input <el-input
v-model="loginForm.username" v-model="loginForm.username"

View File

@ -8,7 +8,7 @@
:rules="loginRules" :rules="loginRules"
class="login-form" class="login-form"
> >
<h3 class="title">博诺思后台管理系统</h3> <h3 class="title">安徽机械化施工装备平台</h3>
<template v-if="loginMethod === 'password'"> <template v-if="loginMethod === 'password'">
<el-form-item prop="username"> <el-form-item prop="username">
<el-input <el-input

View File

@ -1,7 +1,7 @@
<template> <template>
<div class="register"> <div class="register">
<el-form ref="registerForm" :model="registerForm" :rules="registerRules" class="register-form"> <el-form ref="registerForm" :model="registerForm" :rules="registerRules" class="register-form">
<h3 class="title">博诺思后台管理系统</h3> <h3 class="title">安徽机械化施工装备平台</h3>
<el-form-item prop="username"> <el-form-item prop="username">
<el-input v-model="registerForm.username" type="text" auto-complete="off" placeholder="账号"> <el-input v-model="registerForm.username" type="text" auto-complete="off" placeholder="账号">
<svg-icon slot="prefix" icon-class="user" class="el-input__icon input-icon" /> <svg-icon slot="prefix" icon-class="user" class="el-input__icon input-icon" />

View File

@ -2,7 +2,7 @@
<div class="container"> <div class="container">
<div class="register"> <div class="register">
<el-form ref="registerForm" :model="registerForm" :rules="registerRules" class="register-form"> <el-form ref="registerForm" :model="registerForm" :rules="registerRules" class="register-form">
<h3 class="title">博诺思后台管理系统</h3> <h3 class="title">安徽机械化施工装备平台</h3>
<el-form-item prop="nickName"> <el-form-item prop="nickName">
<el-input v-model="registerForm.nickName" type="text" auto-complete="off" placeholder="请输入姓名"> <el-input v-model="registerForm.nickName" type="text" auto-complete="off" placeholder="请输入姓名">

View File

@ -7,7 +7,7 @@ function resolve(dir) {
const CompressionPlugin = require("compression-webpack-plugin"); const CompressionPlugin = require("compression-webpack-plugin");
const name = process.env.VUE_APP_TITLE || "博诺思管理系统"; // 网页标题 const name = process.env.VUE_APP_TITLE || "安徽机械化施工装备平台"; // 网页标题
const port = process.env.port || process.env.npm_config_port || 80; // 端口 const port = process.env.port || process.env.npm_config_port || 80; // 端口