@@ -1,3 +1,10 @@ | |||
### | |||
# @Author: zwq | |||
# @Date: 2023-09-14 13:44:22 | |||
# @LastEditors: zwq | |||
# @LastEditTime: 2023-10-26 14:40:04 | |||
# @Description: | |||
### | |||
# 生产环境配置 | |||
ENV = 'production' | |||
@@ -9,7 +16,7 @@ VUE_APP_BASE_API = '/prod-api' | |||
# 根据服务器或域名修改 | |||
# PUBLIC_PATH = 'http://my-pi.com:8888/yudao-admin/' | |||
PUBLIC_PATH = 'http://192.168.0.33:8888/' | |||
PUBLIC_PATH = 'http://192.168.0.127:8888/' | |||
# 二级部署路径 | |||
VUE_APP_APP_NAME ='yudao-admin' | |||
@@ -7,7 +7,7 @@ | |||
<meta | |||
name="viewport" | |||
content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" /> | |||
<link rel="icon" href="<%= BASE_URL %>favicon.ico" /> | |||
<link rel="icon" href="<%= BASE_URL %>loge_ys1.svg" /> | |||
<title><%= webpackConfig.name %></title> | |||
<!--[if lt IE 11]> | |||
<script> | |||
@@ -0,0 +1,11 @@ | |||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 29.83"> | |||
<defs> | |||
<style>.cls-1{fill:#0075c2;}.cls-2{fill:#1e2380;}</style> | |||
</defs> | |||
<title>资源 1</title> | |||
<g id="图层_2" data-name="图层 2"> | |||
<g id="图层_1-2" data-name="图层 1"> | |||
<polygon class="cls-1" points="21.5 11.91 41.38 23.71 34.7 0 25.65 0 21.5 2.87 17.37 0 8.3 0 1.68 23.73 21.5 11.91"/> | |||
<polygon class="cls-2" points="21.5 14.87 0 29.77 21.5 29.77 43 29.77 21.5 14.87"/> | |||
</g></g> | |||
</svg> |
@@ -32,7 +32,7 @@ export function getTask(id) { | |||
url: '/axl/task/get?id=' + id, | |||
method: 'get' | |||
}) | |||
}// 获得出入库任务 | |||
}// 执行任务 | |||
export function runTask(id) { | |||
return request({ | |||
url: '/axl/task/runtask?id=' + id, | |||
@@ -1,3 +1,10 @@ | |||
/* | |||
* @Author: zwq | |||
* @Date: 2023-09-13 16:08:14 | |||
* @LastEditors: zwq | |||
* @LastEditTime: 2023-11-01 16:16:19 | |||
* @Description: | |||
*/ | |||
import request from '@/utils/request' | |||
// 创建立库库位 | |||
@@ -33,7 +40,20 @@ export function getWarehousestorehouse(id) { | |||
method: 'get' | |||
}) | |||
} | |||
// 获得立库库位上货物列表 | |||
export function getProductList(id) { | |||
return request({ | |||
url: '/axl/warehousestorehouse/getProductList?id=' + id, | |||
method: 'get' | |||
}) | |||
} | |||
// 出库 | |||
export function outWare(id) { | |||
return request({ | |||
url: '/axl/warehousestorehouse/out?id=' + id, | |||
method: 'get' | |||
}) | |||
} | |||
// 获得立库库位分页 | |||
export function getWarehousestorehousePage(query) { | |||
return request({ | |||
@@ -43,6 +63,13 @@ export function getWarehousestorehousePage(query) { | |||
}) | |||
} | |||
// 获得立库库位分页 | |||
export function getWarehousestorehouseList() { | |||
return request({ | |||
url: '/axl/warehousestorehouse/list', | |||
method: 'get', | |||
}) | |||
} | |||
// 导出立库库位 Excel | |||
export function exportWarehousestorehouseExcel(query) { | |||
return request({ | |||
@@ -0,0 +1,11 @@ | |||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 29.83"> | |||
<defs> | |||
<style>.cls-1{fill:#0075c2;}.cls-2{fill:#1e2380;}</style> | |||
</defs> | |||
<title>资源 1</title> | |||
<g id="图层_2" data-name="图层 2"> | |||
<g id="图层_1-2" data-name="图层 1"> | |||
<polygon class="cls-1" points="21.5 11.91 41.38 23.71 34.7 0 25.65 0 21.5 2.87 17.37 0 8.3 0 1.68 23.73 21.5 11.91"/> | |||
<polygon class="cls-2" points="21.5 14.87 0 29.77 21.5 29.77 43 29.77 21.5 14.87"/> | |||
</g></g> | |||
</svg> |
@@ -151,7 +151,7 @@ export default { | |||
this.fontPos.splice(0, this.fontPos.length) | |||
this.checkPosArr.splice(0, this.checkPosArr.length) | |||
this.num = 1 | |||
this.getPictrue() | |||
//this.getPictrue() | |||
this.$nextTick(() => { | |||
this.setSize = this.resetSize(this) // 重新设置宽度高度 | |||
this.$parent.$emit('ready', this) | |||
@@ -222,7 +222,7 @@ export default { | |||
this.fontPos.splice(0, this.fontPos.length) | |||
this.checkPosArr.splice(0, this.checkPosArr.length) | |||
this.num = 1 | |||
this.getPictrue() | |||
//this.getPictrue() | |||
this.showRefresh = true | |||
}, | |||
@@ -184,7 +184,7 @@ export default { | |||
methods: { | |||
init() { | |||
this.text = this.explain | |||
this.getPictrue() | |||
//this.getPictrue() | |||
this.$nextTick(() => { | |||
const setSize = this.resetSize(this) // 重新设置宽度高度 | |||
for (const key in setSize) { | |||
@@ -344,7 +344,7 @@ export default { | |||
this.iconClass = 'icon-right' | |||
this.isEnd = false | |||
this.getPictrue() | |||
//this.getPictrue() | |||
setTimeout(() => { | |||
this.transitionWidth = '' | |||
this.transitionLeft = '' | |||
@@ -46,7 +46,7 @@ | |||
</template> | |||
<script> | |||
import logoImg from '@/assets/logo/logo.png'; | |||
import logoImg from '@/assets/loge_ys1.svg'; | |||
import variables from '@/assets/styles/variables.scss'; | |||
export default { | |||
@@ -67,7 +67,7 @@ export default { | |||
}, | |||
data() { | |||
return { | |||
title: '中建材智能化院', | |||
title: '中国联合工程', | |||
logo: logoImg, | |||
}; | |||
}, | |||
@@ -98,7 +98,7 @@ export default { | |||
width: 100%; | |||
& .sidebar-logo { | |||
width: 32px; | |||
width: 45px; | |||
height: 40px; | |||
vertical-align: middle; | |||
margin-right: 12px; | |||
@@ -1,6 +1,7 @@ | |||
<template> | |||
<div class="app-container"> | |||
<search-bar | |||
:isFold="true" | |||
:formConfigs="formConfig" | |||
ref="searchBarForm" | |||
@headBtnClick="buttonClick" /> | |||
@@ -22,6 +23,7 @@ | |||
import basicPage from '../mixins/basic-page'; | |||
import { parseTime } from '../mixins/code-filter'; | |||
import { getAlarmLogPage } from "@/api/axl/alarmLog"; | |||
import {getDictDatas} from "@/utils/dict"; | |||
const tableProps = [ | |||
{ | |||
@@ -146,7 +148,17 @@ export default { | |||
}; | |||
}, | |||
components: {}, | |||
created() {}, | |||
created() { | |||
// let mainTaskType = [] | |||
// this.getDictDatas('alarmType').forEach(item => { | |||
// const obj = { | |||
// name: item.label, | |||
// id: item.value | |||
// } | |||
// mainTaskType.push(obj) | |||
// }); | |||
// this.formConfig[2].selectOptions = mainTaskType | |||
}, | |||
methods: { | |||
buttonClick(val) { | |||
switch (val.btnName) { | |||
@@ -11,23 +11,20 @@ | |||
</el-form-item> | |||
<el-form-item label="报警类型" prop="alarmType"> | |||
<el-select v-model="queryParams.alarmType" placeholder="请选择报警类型" clearable size="small"> | |||
<el-option label="请选择字典生成" value="" /> | |||
<el-option v-for="dict in this.getDictDatas(DICT_TYPE.ALARMTYPE)" | |||
:key="dict.value" :label="dict.label" :value="dict.value"/> | |||
</el-select> | |||
</el-form-item> | |||
<el-form-item label="报警内容" prop="alarmContent"> | |||
<el-input v-model="queryParams.alarmContent" placeholder="请输入报警内容" clearable @keyup.enter.native="handleQuery"/> | |||
</el-form-item> | |||
<el-form-item label="备注" prop="remark"> | |||
<el-input v-model="queryParams.remark" placeholder="请输入备注" clearable @keyup.enter.native="handleQuery"/> | |||
</el-form-item> | |||
<el-form-item label="创建时间" prop="createTime"> | |||
<el-date-picker v-model="queryParams.createTime" style="width: 240px" value-format="yyyy-MM-dd HH:mm:ss" type="daterange" | |||
range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" :default-time="['00:00:00', '23:59:59']" /> | |||
</el-form-item> | |||
<el-form-item label="更新时间" prop="updateDate"> | |||
<el-date-picker v-model="queryParams.updateDate" style="width: 240px" value-format="yyyy-MM-dd HH:mm:ss" type="daterange" | |||
range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" :default-time="['00:00:00', '23:59:59']" /> | |||
</el-form-item> | |||
<el-form-item label="备注" prop="remark"> | |||
<el-input v-model="queryParams.remark" placeholder="请输入备注" clearable @keyup.enter.native="handleQuery"/> | |||
</el-form-item> | |||
<el-form-item> | |||
<el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button> | |||
<el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button> | |||
@@ -52,20 +49,19 @@ | |||
<el-table-column label="id 主键" align="center" prop="id" /> | |||
<el-table-column label="报警编码" align="center" prop="alarmCode" /> | |||
<el-table-column label="报警级别" align="center" prop="alarmGrade" /> | |||
<el-table-column label="报警类型" align="center" prop="alarmType" /> | |||
<el-table-column label="报警类型" align="center" prop="alarmType"> | |||
<template v-slot="scope"> | |||
<dict-tag :type="DICT_TYPE.ALARMTYPE" :value="scope.row.alarmType" /> | |||
</template> | |||
</el-table-column> | |||
<el-table-column label="报警内容" align="center" prop="alarmContent" /> | |||
<el-table-column label="解决办法" align="center" prop="solution" /> | |||
<el-table-column label="备注" align="center" prop="remark" /> | |||
<el-table-column label="创建时间" align="center" prop="createTime" width="180"> | |||
<template v-slot="scope"> | |||
<span>{{ parseTime(scope.row.createTime) }}</span> | |||
</template> | |||
</el-table-column> | |||
<el-table-column label="更新时间" align="center" prop="updateDate" width="180"> | |||
<template v-slot="scope"> | |||
<span>{{ parseTime(scope.row.updateDate) }}</span> | |||
</template> | |||
</el-table-column> | |||
<el-table-column label="备注" align="center" prop="remark" /> | |||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"> | |||
<template v-slot="scope"> | |||
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" | |||
@@ -90,7 +86,8 @@ | |||
</el-form-item> | |||
<el-form-item label="报警类型" prop="alarmType"> | |||
<el-select v-model="form.alarmType" placeholder="请选择报警类型"> | |||
<el-option label="请选择字典生成" value="" /> | |||
<el-option v-for="dict in this.getDictDatas(DICT_TYPE.ALARMTYPE)" | |||
:key="dict.value" :label="dict.label" :value="dict.value" /> | |||
</el-select> | |||
</el-form-item> | |||
<el-form-item label="报警内容" prop="alarmContent"> | |||
@@ -99,12 +96,6 @@ | |||
<el-form-item label="解决办法" prop="solution"> | |||
<el-input v-model="form.solution" type="textarea" placeholder="请输入内容" /> | |||
</el-form-item> | |||
<el-form-item label="创建时间" prop="createTime"> | |||
<el-date-picker clearable v-model="form.createTime" type="date" value-format="timestamp" placeholder="选择创建时间" /> | |||
</el-form-item> | |||
<el-form-item label="更新时间" prop="updateDate"> | |||
<el-date-picker clearable v-model="form.updateDate" type="date" value-format="timestamp" placeholder="选择更新时间" /> | |||
</el-form-item> | |||
<el-form-item label="备注" prop="remark"> | |||
<el-input v-model="form.remark" placeholder="请输入备注" /> | |||
</el-form-item> | |||
@@ -149,9 +140,8 @@ export default { | |||
alarmType: null, | |||
alarmContent: null, | |||
solution: null, | |||
createTime: [], | |||
updateDate: [], | |||
remark: null, | |||
createTime: [], | |||
}, | |||
// 表单参数 | |||
form: {}, | |||
@@ -190,8 +180,6 @@ export default { | |||
alarmType: undefined, | |||
alarmContent: undefined, | |||
solution: undefined, | |||
createTime: undefined, | |||
updateDate: undefined, | |||
remark: undefined, | |||
}; | |||
this.resetForm("form"); | |||
@@ -2,7 +2,7 @@ | |||
* @Author: zwq | |||
* @Date: 2022-08-24 11:19:43 | |||
* @LastEditors: zwq | |||
* @LastEditTime: 2023-09-25 14:17:42 | |||
* @LastEditTime: 2023-11-01 16:46:42 | |||
* @Description: | |||
*/ | |||
export default { | |||
@@ -2,7 +2,7 @@ | |||
/* | |||
* @Date: 2020-12-29 16:49:28 | |||
* @LastEditors: zwq | |||
* @LastEditTime: 2023-09-25 14:12:33 | |||
* @LastEditTime: 2023-10-30 16:24:02 | |||
* @FilePath: \basic-admin\src\filters\basicData\index.js | |||
* @Description: | |||
*/ | |||
@@ -48,8 +48,8 @@ const table = { | |||
2: '是', | |||
}, | |||
postition:{ | |||
1: '外面', | |||
0: '里面', | |||
1: '外侧', | |||
0: '内侧', | |||
}, | |||
empty:{ | |||
1: '占用', | |||
@@ -2,7 +2,7 @@ | |||
* @Author: zwq | |||
* @Date: 2023-09-22 14:23:44 | |||
* @LastEditors: zwq | |||
* @LastEditTime: 2023-09-25 14:50:41 | |||
* @LastEditTime: 2023-10-30 16:46:29 | |||
* @Description: | |||
--> | |||
<template> | |||
@@ -36,12 +36,12 @@ | |||
</el-form-item> | |||
</el-col> | |||
<el-col :span="12"> | |||
<el-form-item label="类型" prop="mainTaskType"> | |||
<el-form-item label="任务类型" prop="mainTaskType"> | |||
<el-select | |||
v-model="dataForm.mainTaskType" | |||
style="width: 100%" | |||
:disabled="isdetail" | |||
placeholder="请选择类型"> | |||
placeholder="请选择任务类型"> | |||
<el-option | |||
v-for="item in mainTaskType" | |||
:key="item.id" | |||
@@ -50,6 +50,14 @@ | |||
</el-select> | |||
</el-form-item> | |||
</el-col> | |||
<el-col :span="12"> | |||
<el-form-item label="货物类型" prop="productType"> | |||
<el-input | |||
v-model="dataForm.productType" | |||
:disabled="isdetail" | |||
placeholder="请输入货物类型" /> | |||
</el-form-item> | |||
</el-col> | |||
<el-col :span="12"> | |||
<el-form-item label="状态" prop="status" v-if="dataForm.id"> | |||
<el-select | |||
@@ -65,7 +73,7 @@ | |||
</el-select> | |||
</el-form-item> | |||
</el-col> | |||
<el-col :span="12"> | |||
<el-col :span="12" v-if='false'> | |||
<el-form-item label="任务来源" prop="source"> | |||
<el-select | |||
v-model="dataForm.source" | |||
@@ -112,6 +120,14 @@ | |||
</el-select> | |||
</el-form-item> | |||
</el-col> | |||
<el-col :span="24"> | |||
<el-form-item label="备注" prop="remark"> | |||
<el-input | |||
v-model="dataForm.remark" | |||
:disabled="isdetail" | |||
placeholder="请输入备注" /> | |||
</el-form-item> | |||
</el-col> | |||
</el-row> | |||
</el-form> | |||
@@ -191,6 +207,18 @@ const tableProps = [ | |||
align: 'center', | |||
subcomponent: inputArea, | |||
}, | |||
{ | |||
prop: 'dateNum', | |||
label: '批次号', | |||
align: 'center', | |||
subcomponent: inputArea, | |||
}, | |||
{ | |||
prop: 'remark', | |||
label: '备注', | |||
align: 'center', | |||
subcomponent: inputArea, | |||
}, | |||
]; | |||
const mainTaskType = [ | |||
@@ -206,6 +234,14 @@ const mainTaskType = [ | |||
name: '移库', | |||
id: 3, | |||
}, | |||
{ | |||
name: '越库', | |||
id: 4, | |||
}, | |||
{ | |||
name: '盘点', | |||
id: 5, | |||
}, | |||
]; | |||
const mainTaskStatus = [ | |||
{ | |||
@@ -248,11 +284,13 @@ export default { | |||
dataForm: { | |||
id: null, | |||
mainTaskType: '', | |||
productType: '', | |||
mainTaskCode: '', | |||
startInfo: '', | |||
endInfo: '', | |||
status: '', | |||
source: 2, | |||
remark: '', | |||
// source: 2, | |||
}, | |||
listQuery: { | |||
pageSize: 10, | |||
@@ -424,6 +462,9 @@ export default { | |||
padding: 0; | |||
} | |||
.drawer >>> .el-form-item { | |||
margin: 0; | |||
} | |||
.drawer >>> .el-drawer__header { | |||
margin: 0; | |||
padding: 32px 32px 24px; | |||
@@ -78,6 +78,7 @@ export default { | |||
}, | |||
// 表单提交 | |||
dataFormSubmit() { | |||
this.dataForm.productInfo.remark = '' | |||
this.$refs['dataForm'].validate((valid) => { | |||
if (valid) { | |||
this.dataForm.productInfo.productId = this.dataForm.productInfo.id | |||
@@ -1,6 +1,7 @@ | |||
<template> | |||
<div class="app-container"> | |||
<search-bar | |||
:isFold="true" | |||
:formConfigs="formConfig" | |||
ref="searchBarForm" | |||
@headBtnClick="buttonClick" /> | |||
@@ -34,6 +35,10 @@ | |||
? '出库' | |||
: scope.row.mainTaskType === 3 | |||
? '移库' | |||
: scope.row.mainTaskType === 4 | |||
? '越库' | |||
: scope.row.mainTaskType === 5 | |||
? '盘点' | |||
: '-' | |||
}} | |||
</span> | |||
@@ -56,6 +61,7 @@ | |||
</span> | |||
</template> | |||
</el-table-column> | |||
<el-table-column label="货物类型" align="center" prop="productType" /> | |||
<el-table-column label="任务来源" align="center" prop="source"> | |||
<template slot-scope="scope"> | |||
<span> | |||
@@ -74,6 +80,7 @@ | |||
<span>{{ parseTime(scope.row.createTime) }}</span> | |||
</template> | |||
</el-table-column> | |||
<el-table-column label="备注" align="center" prop="remark" /> | |||
<el-table-column label="操作" align="center"> | |||
<template v-slot="scope"> | |||
<el-button | |||
@@ -244,7 +251,7 @@ export default { | |||
this.dataListLoading = true; | |||
this.urlOptions.getDataListURL(this.listQuery).then((response) => { | |||
this.tableData = response.data.list; | |||
this.total = response.data.total; | |||
this.listQuery.total = response.data.total; | |||
this.dataListLoading = false; | |||
}); | |||
}, | |||
@@ -0,0 +1,79 @@ | |||
<!-- | |||
* @Author: zwq | |||
* @Date: 2021-11-18 14:16:25 | |||
* @LastEditors: zwq | |||
* @LastEditTime: 2023-11-01 16:35:29 | |||
* @Description: | |||
--> | |||
<template> | |||
<base-table | |||
:table-props="tableProps" | |||
:page="listQuery.pageNo" | |||
:limit="listQuery.pageSize" | |||
:height="300" | |||
:table-data="tableData" /> | |||
</template> | |||
<script> | |||
import { getProductList,outWare } from '@/api/axl/warehousestorehouse'; | |||
const tableProps = [ | |||
{ | |||
prop: 'productName', | |||
label: '货物名', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'productCode', | |||
label: '货物编码', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'number', | |||
label: '数量', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'dateNum', | |||
label: '批次号', | |||
align: 'center', | |||
}, | |||
{ | |||
prop: 'remark', | |||
label: '备注', | |||
align: 'center', | |||
}, | |||
]; | |||
export default { | |||
data() { | |||
return { | |||
tableData: [], | |||
tableProps, | |||
listQuery: { | |||
pageSize: 10, | |||
pageNo: 1, | |||
total: 1, | |||
}, | |||
wareId: '', | |||
dataListLoading: false, | |||
}; | |||
}, | |||
methods: { | |||
// 获取数据列表 | |||
init(id) { | |||
this.wareId = id; | |||
this.dataListLoading = true; | |||
getProductList(id).then((response) => { | |||
this.tableData = response.data; | |||
this.dataListLoading = false; | |||
}); | |||
}, | |||
outWare() { | |||
outWare(this.wareId).then((response) => { | |||
this.visible = false; | |||
this.$emit('refreshDataList'); | |||
}); | |||
}, | |||
}, | |||
}; | |||
</script> |
@@ -0,0 +1,278 @@ | |||
<!-- | |||
* @Author: zwq | |||
* @Date: 2023-08-21 14:26:23 | |||
* @LastEditors: zwq | |||
* @LastEditTime: 2023-11-01 16:55:35 | |||
* @Description: | |||
--> | |||
<template> | |||
<div class="app-container"> | |||
<search-bar | |||
:formConfigs="formConfig" | |||
ref="searchBarForm" | |||
@headBtnClick="buttonClick" /> | |||
<div class="tips"> | |||
<el-tag effect="dark" color="#16DC09" style="border: none">空</el-tag> | |||
<el-tag effect="dark" color="#FFA08F" style="border: none">锁</el-tag> | |||
<el-tag effect="dark" color="#7362F3" style="border: none">满</el-tag> | |||
</div> | |||
<div class="mainbody"> | |||
<div v-for="i in Object.keys(wareData)" :key="i"> | |||
<el-row> | |||
<el-col :span="24"> | |||
<el-row type="flex" class="flex-warp"> | |||
<div | |||
@click=" | |||
getProductList(a.id, a.warehouseStorehouseName, a.status) | |||
" | |||
class="dashboard-layout-item" | |||
v-for="a in wareData[i][4]" | |||
:key="a.id + a.warehouseStorehouseCode" | |||
:title="a.warehouseStorehouseName" | |||
style="background: #fff8e8; float: left"> | |||
<div | |||
class="dashboard-layout-item-cricle" | |||
:style="{ | |||
background: bgColor[a.status], | |||
}" /> | |||
<p class="p-name">{{ a.warehouseStorehouseName }}</p> | |||
</div> | |||
</el-row> | |||
<el-row type="flex" class="flex-warp"> | |||
<div | |||
@click=" | |||
getProductList(a.id, a.warehouseStorehouseName, a.status) | |||
" | |||
class="dashboard-layout-item" | |||
v-for="a in wareData[i][3]" | |||
:key="a.id + a.warehouseStorehouseCode" | |||
:title="a.warehouseStorehouseName" | |||
style="background: #fff8e8; float: left"> | |||
<div | |||
class="dashboard-layout-item-cricle" | |||
:style="{ | |||
background: bgColor[a.status], | |||
}" /> | |||
<p class="p-name">{{ a.warehouseStorehouseName }}</p> | |||
</div> | |||
</el-row> | |||
</el-col> | |||
</el-row> | |||
<el-divider class="divider" content-position="left"> | |||
第{{ i }}层 | |||
</el-divider> | |||
<el-row> | |||
<el-col :span="24"> | |||
<el-row type="flex" class="flex-warp"> | |||
<div | |||
@click=" | |||
getProductList(a.id, a.warehouseStorehouseName, a.status) | |||
" | |||
class="dashboard-layout-item" | |||
v-for="a in wareData[i][2]" | |||
:style="{ marginRight: a.id === 1 ? '131px' : '' }" | |||
:key="a.id + a.warehouseStorehouseCode" | |||
:title="a.warehouseStorehouseName" | |||
style="background: #fff8e8; float: left"> | |||
<div | |||
class="dashboard-layout-item-cricle" | |||
:style="{ | |||
background: bgColor[a.status], | |||
}" /> | |||
<p class="p-name">{{ a.warehouseStorehouseName }}</p> | |||
</div> | |||
</el-row> | |||
<el-row type="flex" class="flex-warp"> | |||
<div | |||
@click=" | |||
getProductList(a.id, a.warehouseStorehouseName, a.status) | |||
" | |||
class="dashboard-layout-item" | |||
v-for="a in wareData[i][1]" | |||
:key="a.id + a.warehouseStorehouseCode" | |||
:title="a.warehouseStorehouseName" | |||
style="background: #fff8e8; float: left"> | |||
<div | |||
class="dashboard-layout-item-cricle" | |||
:style="{ | |||
background: bgColor[a.status], | |||
}" /> | |||
<p class="p-name">{{ a.warehouseStorehouseName }}</p> | |||
</div> | |||
</el-row> | |||
</el-col> | |||
</el-row> | |||
</div> | |||
</div> | |||
<base-dialog | |||
:dialogTitle="addOrEditTitle" | |||
:dialogVisible="addOrUpdateVisible" | |||
:before-close="handleCancel" | |||
width="40%"> | |||
<add-or-update | |||
ref="addOrUpdate" | |||
@refreshDataList="successSubmit"></add-or-update> | |||
<slot name="footer"> | |||
<el-row slot="footer" type="flex" justify="end"> | |||
<el-col :span="24"> | |||
<el-button size="small" class="btnTextStyle" @click="handleCancel"> | |||
取消 | |||
</el-button> | |||
<el-button | |||
type="primary" | |||
class="btnTextStyle" | |||
size="small" | |||
:disabled="!isOut" | |||
@click="outWare"> | |||
出库 | |||
</el-button> | |||
</el-col> | |||
</el-row> | |||
</slot> | |||
</base-dialog> | |||
</div> | |||
</template> | |||
<script> | |||
import AddOrUpdate from './add-or-updata'; | |||
import basicPage from '../mixins/basic-page'; | |||
import { getWarehousestorehouseList } from '@/api/axl/warehousestorehouse'; | |||
export default { | |||
mixins: [basicPage], | |||
data() { | |||
return { | |||
urlOptions: { | |||
getDataListURL: getWarehousestorehouseList, | |||
}, | |||
listQuery: { | |||
pageSize: 500, | |||
}, | |||
wareData: {}, | |||
isOut: false, | |||
bgColor: ['#16DC09', '#FFA08F', '#7362F3'], | |||
formConfig: [ | |||
{ | |||
type: 'button', | |||
btnName: '刷新', | |||
name: 'search', | |||
color: 'primary', | |||
}, | |||
], | |||
}; | |||
}, | |||
components: { AddOrUpdate }, | |||
created() {}, | |||
methods: { | |||
// 获取数据列表 | |||
getDataList() { | |||
this.dataListLoading = true; | |||
(this.wareData = {}), | |||
this.urlOptions.getDataListURL(this.listQuery).then((response) => { | |||
this.wareData = response.data; | |||
this.dataListLoading = false; | |||
}); | |||
}, | |||
buttonClick(val) { | |||
switch (val.btnName) { | |||
case 'search': | |||
this.getDataList(); | |||
break; | |||
case 'export': | |||
this.handleExport(); | |||
break; | |||
default: | |||
console.log(val); | |||
} | |||
}, | |||
getProductList(id, name, status) { | |||
if (status === 2) { | |||
this.isOut = true; | |||
} else { | |||
this.isOut = false; | |||
} | |||
this.addOrEditTitle = name + ' -库位详情'; | |||
this.addOrUpdateVisible = true; | |||
this.$nextTick(() => { | |||
this.$refs.addOrUpdate.init(id); | |||
}); | |||
}, | |||
handleCancel() { | |||
this.addOrUpdateVisible = false; | |||
this.addOrEditTitle = ''; | |||
}, | |||
outWare() { | |||
this.$confirm(`确定对此库位进行出库操作?`, '提示', { | |||
confirmButtonText: '确定', | |||
cancelButtonText: '取消', | |||
type: 'warning', | |||
}) | |||
.then(() => { | |||
this.$refs.addOrUpdate.outWare(); | |||
}) | |||
.catch(() => {}); | |||
}, | |||
}, | |||
}; | |||
</script> | |||
<style lang="scss" scoped> | |||
.mainbody { | |||
display: flex; | |||
gap: 55px; | |||
flex-direction: column; | |||
} | |||
.flex-warp { | |||
flex-wrap: nowrap; | |||
justify-content: flex-end; | |||
} | |||
.dashboard-layout-item { | |||
width: 100px; | |||
text-align: center; | |||
height: 32px; | |||
box-shadow: 0px 3px 6px 0px rgba(166, 174, 190, 0.8); | |||
border-radius: 2px 4px 4px 2px; | |||
margin: 0 3px 8px 0; | |||
display: flex; | |||
align-items: center; | |||
justify-content: center; | |||
position: relative; | |||
.dashboard-layout-item-cricle { | |||
display: inline-block; | |||
width: 12px; | |||
height: 12px; | |||
border-radius: 6px; | |||
position: absolute; | |||
top: 10px; | |||
left: 3px; | |||
} | |||
.p-name { | |||
overflow: hidden; | |||
white-space: nowrap; | |||
text-overflow: ellipsis; | |||
margin-left: 15px; | |||
} | |||
&:hover { | |||
cursor: pointer; | |||
z-index: 10; | |||
transform: scale(1.3) translateZ(0); | |||
} | |||
&:nth-child(n) { | |||
margin-right: 15px; | |||
} | |||
&:last-child { | |||
margin-right: 8%; | |||
} | |||
} | |||
.el-divider--horizontal { | |||
margin: 10px 0; | |||
} | |||
.el-divider { | |||
background-color: black; | |||
} | |||
.tips { | |||
position: absolute; | |||
top: 22px; | |||
left: 120px; | |||
} | |||
</style> |
@@ -2,7 +2,7 @@ | |||
* @Author: zwq | |||
* @Date: 2023-08-24 14:47:58 | |||
* @LastEditors: zwq | |||
* @LastEditTime: 2023-09-25 13:54:35 | |||
* @LastEditTime: 2023-11-01 16:48:22 | |||
* @Description: | |||
--> | |||
<template> | |||
@@ -81,7 +81,7 @@ export default { | |||
this.dataListLoading = true; | |||
this.urlOptions.getDataListURL(this.listQuery).then((response) => { | |||
this.tableData = response.data.list; | |||
this.total = response.data.total; | |||
this.listQuery.total = response.data.total; | |||
this.dataListLoading = false; | |||
}); | |||
}, | |||
@@ -30,7 +30,7 @@ | |||
<span>{{ parseTime(scope.row.createTime) }}</span> | |||
</template> | |||
</el-table-column> | |||
<el-table-column label="类型" align="center" prop="type"> | |||
<el-table-column label="任务类型" align="center" prop="type"> | |||
<template v-slot="scope"> | |||
<span> | |||
{{ | |||
@@ -45,6 +45,7 @@ | |||
</span> | |||
</template> | |||
</el-table-column> | |||
<el-table-column label="货物类型" align="center" prop="productType" /> | |||
<el-table-column label="起点库位名称" align="center" prop="startName" /> | |||
<el-table-column label="终点库位名称" align="center" prop="endName" /> | |||
<el-table-column label="备注" align="center" prop="remark" /> | |||
@@ -87,12 +88,20 @@ const mainTaskType = [ | |||
id: 1, | |||
}, | |||
{ | |||
name: '移库', | |||
name: '出库', | |||
id: 2, | |||
}, | |||
{ | |||
name: '出库', | |||
id: 0, | |||
name: '移库', | |||
id: 3, | |||
}, | |||
{ | |||
name: '越库', | |||
id: 4, | |||
}, | |||
{ | |||
name: '盘点', | |||
id: 5, | |||
}, | |||
]; | |||
export default { | |||
@@ -165,7 +174,7 @@ export default { | |||
this.dataListLoading = true; | |||
this.urlOptions.getDataListURL(this.listQuery).then((response) => { | |||
this.tableData = response.data.list; | |||
this.total = response.data.total; | |||
this.listQuery.total = response.data.total; | |||
this.dataListLoading = false; | |||
}); | |||
}, | |||
@@ -130,19 +130,15 @@ const tableProps = [ | |||
const mainTaskType = [ | |||
{ | |||
name: '预入库', | |||
name: '锁定', | |||
id: 1, | |||
}, | |||
{ | |||
name: '存储', | |||
name: '满', | |||
id: 2, | |||
}, | |||
{ | |||
name: '预出库', | |||
id: 3, | |||
}, | |||
{ | |||
name: '默认', | |||
name: '空闲', | |||
id: 0, | |||
}, | |||
]; | |||
@@ -17,8 +17,8 @@ | |||
<el-tabs class="form" v-model="loginForm.loginType" style=" float:none;"> | |||
<el-tab-pane label="账号密码登录" name="uname"> | |||
</el-tab-pane> | |||
<el-tab-pane label="短信验证码登录" name="sms"> | |||
</el-tab-pane> | |||
<!-- <el-tab-pane label="短信验证码登录" name="sms"> | |||
</el-tab-pane> --> | |||
</el-tabs> | |||
<div> | |||
<el-form ref="loginForm" :model="loginForm" :rules="LoginRules" class="login-form"> | |||
@@ -126,7 +126,7 @@ export default { | |||
data() { | |||
return { | |||
codeUrl: "", | |||
captchaEnable: true, | |||
captchaEnable: false, | |||
tenantEnable: true, | |||
mobileCodeTimer: 0, | |||
loginForm: { | |||
@@ -137,7 +137,7 @@ export default { | |||
mobile: "", | |||
mobileCode: "", | |||
rememberMe: false, | |||
tenantName: "芋道源码", | |||
tenantName: "爱协林热处理", | |||
}, | |||
scene: 21, | |||
@@ -198,7 +198,7 @@ export default { | |||
}); | |||
} | |||
// 验证码开关 | |||
this.captchaEnable = getCaptchaEnable(); | |||
this.captchaEnable = false; | |||
// 重定向地址 | |||
this.redirect = this.$route.query.redirect ? decodeURIComponent(this.$route.query.redirect) : undefined; | |||
this.getCookie(); | |||