优化更新
This commit is contained in:
parent
7223ceca8a
commit
d082c08888
|
@ -5,7 +5,7 @@
|
|||
:limit="1"
|
||||
accept=".xlsx, .xls"
|
||||
:headers="headers"
|
||||
:action="uploadUrl + '?updateSupport=' + updateSupport"
|
||||
:action="uploadUrl"
|
||||
:disabled="isUploading"
|
||||
:on-progress="handleFileUploadProgress"
|
||||
:on-success="handleFileSuccess"
|
||||
|
@ -15,11 +15,12 @@
|
|||
<i class="el-icon-upload"></i>
|
||||
<div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
|
||||
<div class="el-upload__tip text-center" slot="tip">
|
||||
<div class="el-upload__tip" slot="tip">
|
||||
<el-checkbox v-model="updateSupport">更新已经存在的数据</el-checkbox>
|
||||
</div>
|
||||
<span>仅允许导入xls、xlsx格式文件。</span>
|
||||
<el-link type="primary" :underline="false" style="font-size:12px;vertical-align: baseline;" @click="importTemplate">下载模板</el-link>
|
||||
|
||||
<div class="el-upload__tip" slot="tip" style="margin-top: 8px;">
|
||||
<slot name="options"/>
|
||||
</div>
|
||||
</div>
|
||||
</el-upload>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
|
@ -57,7 +58,7 @@ export default {
|
|||
templateName: {
|
||||
type: String,
|
||||
default: "导入模板"
|
||||
}
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
|
@ -93,6 +94,7 @@ export default {
|
|||
this.$refs.upload.clearFiles();
|
||||
if (response.code === 200) {
|
||||
this.$message.success(`扫描到${response.data}条数据,正在导入中,可在导入日志中查看导入结果`);
|
||||
this.show = false;
|
||||
this.$emit('success');
|
||||
}
|
||||
},
|
||||
|
|
|
@ -15,12 +15,18 @@
|
|||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
<dept-tree-select v-else-if="type === 'dept'" v-model="queryParams[prop]" class="small-tree-select" width="200px" @change="handleQuery"/>
|
||||
<date-range-picker v-else-if="type === 'daterange'" v-model="queryParams[prop]" @change="handleQuery"/>
|
||||
</el-form-item>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import DeptTreeSelect from "@/components/Business/Dept/DeptTreeSelect.vue";
|
||||
import DateRangePicker from "@/components/DateRangePicker/index.vue";
|
||||
|
||||
export default {
|
||||
name: "SearchFormItem",
|
||||
components: {DateRangePicker, DeptTreeSelect},
|
||||
props: {
|
||||
queryParams: {
|
||||
type: Object,
|
||||
|
@ -40,7 +46,7 @@ export default {
|
|||
type: String,
|
||||
default: 'input',
|
||||
validator: function (value) {
|
||||
return ["custom", "input", "dict", 'date', "dateRange"].includes(value);
|
||||
return ["custom", "input", "dict", 'date', "daterange", 'dept'].includes(value);
|
||||
},
|
||||
},
|
||||
// 字典类型
|
||||
|
|
|
@ -1,11 +1,10 @@
|
|||
import Vue from 'vue'
|
||||
import Router from 'vue-router'
|
||||
|
||||
Vue.use(Router)
|
||||
|
||||
/* Layout */
|
||||
import Layout from '@/layout'
|
||||
|
||||
Vue.use(Router)
|
||||
|
||||
/**
|
||||
* Note: 路由配置项
|
||||
*
|
||||
|
@ -85,7 +84,7 @@ export const constantRoutes = [
|
|||
{
|
||||
path: 'report',
|
||||
component: () => import('@/views/yh/report/edit/edit.vue'),
|
||||
name: 'ReportEdit',
|
||||
name: 'ReportAdd',
|
||||
meta: { title: '新增报表', noCache: false}
|
||||
},
|
||||
]
|
||||
|
|
|
@ -34,6 +34,10 @@ export const PriceStatus = {
|
|||
canEnable(status) {
|
||||
return [this.PASS].includes(status);
|
||||
},
|
||||
// 允许删除
|
||||
canDel(status) {
|
||||
return [this.WAIT_SUBMIT, this.REJECT].includes(status);
|
||||
}
|
||||
}
|
||||
|
||||
// 工资模式
|
||||
|
|
|
@ -216,7 +216,7 @@ export default {
|
|||
{key: 'erpNumber', visible: true, label: '物料编码', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
|
||||
{key: 'erpName', visible: true, label: '名称', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
|
||||
{key: 'erpSpec', visible: true, label: '规格', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
|
||||
{key: 'workShops', visible: true, label: '车间', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
|
||||
// {key: 'workShops', visible: true, label: '车间', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
|
||||
{key: 'category', visible: true, label: '规格品类', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
|
||||
{key: 'size', visible: true, label: '大小', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
|
||||
{key: 'surface', visible: true, label: '表面处理', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
|
||||
|
|
|
@ -251,6 +251,14 @@
|
|||
v-has-permi="['yh:price:enable']"
|
||||
v-show="PriceStatus.canEnable(scope.row.status) && scope.row.disabled"
|
||||
>启用</el-button>
|
||||
<el-button
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-circle-delete"
|
||||
@click="handleDelete(scope.row)"
|
||||
v-has-permi="['yh:price:delete']"
|
||||
v-show="PriceStatus.canDel(scope.row.status)"
|
||||
>删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
@ -322,23 +330,29 @@
|
|||
<import-dialog
|
||||
:visible.sync="showImport"
|
||||
template-url="/yh/price/importTemplate"
|
||||
url="/yh/price/importData"
|
||||
:url="uploadUrl"
|
||||
@success="getList"
|
||||
template-name="单价导入模板"
|
||||
/>
|
||||
>
|
||||
<template #options>
|
||||
<el-checkbox v-model="uploadParams.updateSupport">更新已经存在的数据</el-checkbox>
|
||||
<el-checkbox v-model="uploadParams.verified" v-has-permi="['yh:price:verify']">无需审核,直接通过</el-checkbox>
|
||||
</template>
|
||||
</import-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {
|
||||
listPrice,
|
||||
getPrice,
|
||||
delPrice,
|
||||
addPrice,
|
||||
updatePrice,
|
||||
submitPrice,
|
||||
cancelPrice,
|
||||
delPrice,
|
||||
disablePrice,
|
||||
cancelPrice, enablePrice
|
||||
enablePrice,
|
||||
getPrice,
|
||||
listPrice,
|
||||
submitPrice,
|
||||
updatePrice
|
||||
} from "@/api/yh/price";
|
||||
import {$showColumns} from '@/utils/mixins';
|
||||
import DeptTreeSelect from "@/components/Business/Dept/DeptTreeSelect.vue";
|
||||
|
@ -348,6 +362,7 @@ import VerifyPriceDialog from "@/views/yh/price/components/VerifyPriceDialog.vue
|
|||
import FormCol from "@/components/FormCol/index.vue";
|
||||
import ImportDialog from "@/components/ImportDialog/index.vue";
|
||||
import {formatFraction} from "../../../utils";
|
||||
import {tansParams} from "@/utils/ruoyi";
|
||||
|
||||
// 默认排序字段
|
||||
const defaultSort = {
|
||||
|
@ -360,13 +375,13 @@ export default {
|
|||
mixins: [$showColumns],
|
||||
dicts: ['price_status'],
|
||||
components: {ImportDialog, FormCol, VerifyPriceDialog, BooleanTag, DeptTreeSelect},
|
||||
computed: {
|
||||
PriceStatus() {
|
||||
return PriceStatus
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
PriceStatus,
|
||||
uploadParams: {
|
||||
updateSupport: false,
|
||||
verified: false,
|
||||
},
|
||||
showImport: false,
|
||||
gutter: 8,
|
||||
span: 8,
|
||||
|
@ -468,6 +483,12 @@ export default {
|
|||
}
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
uploadUrl() {
|
||||
let url = `/yh/price/importData?${tansParams(this.uploadParams)}`;
|
||||
return url.slice(0, -1);
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getList();
|
||||
},
|
||||
|
@ -649,9 +670,8 @@ export default {
|
|||
},
|
||||
/** 删除按钮操作 */
|
||||
handleDelete(row) {
|
||||
const priceIds = row.priceId || this.ids;
|
||||
this.$modal.confirm('是否确认删除单价编号为"' + priceIds + '"的数据项?').then(function() {
|
||||
return delPrice(priceIds);
|
||||
this.$modal.confirm('是否确认删除单价ID为"' + row.priceId + '"的数据项?').then(function() {
|
||||
return delPrice(row.priceId);
|
||||
}).then(() => {
|
||||
this.getList();
|
||||
this.$modal.msgSuccess("删除成功");
|
||||
|
|
|
@ -132,6 +132,7 @@
|
|||
:visible.sync="showMore"
|
||||
:rules="rules"
|
||||
:user-query="userQuery"
|
||||
:price-query="priceQuery"
|
||||
@submit="onSubmitRow"
|
||||
/>
|
||||
|
||||
|
|
|
@ -8,12 +8,10 @@
|
|||
</form-col>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="产量" align="center" min-width="180" >
|
||||
<el-table-column :label="`产量 (${priceUnit})`" align="center" min-width="180" >
|
||||
<template slot-scope="d">
|
||||
<form-col table label-width="0" :prop="`orderProdList[${d.$index}].num`" :rules="rules.num">
|
||||
<el-input v-model.number="d.row.num" type="number" :min="0" placeholder="请输入订单产量">
|
||||
<template #suffix v-if="priceUnit != null">{{priceUnit}}</template>
|
||||
</el-input>
|
||||
<el-input-number v-model="d.row.num" type="number" :min="0" placeholder="请输入订单产量" controls-position="right" style="width: 100%"/>
|
||||
</form-col>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
<el-form :model="form" :rules="rules" ref="form" label-width="6em">
|
||||
<el-row>
|
||||
<form-col :span="span" label="工序" prop="priceId">
|
||||
<price-input v-model="form.priceId" open-type="dialog" @change="onChangePrice" placeholder="点击选择工序" title="选择工序"/>
|
||||
<price-input v-model="form.priceId" :query="priceQuery" open-type="dialog" @change="onChangePrice" placeholder="点击选择工序" title="选择工序"/>
|
||||
</form-col>
|
||||
<form-col :span="span" label="工序类型" prop="priceType">
|
||||
<el-select v-model="form.priceType" style="width: 100%">
|
||||
|
@ -17,18 +17,12 @@
|
|||
</el-select>
|
||||
</form-col>
|
||||
<form-col :span="span" label="良品数" prop="num">
|
||||
<el-input v-model.number="form.num" type="number" :min="0" placeholder="请输入良品数">
|
||||
<template #suffix>
|
||||
{{form.priceUnit}}
|
||||
</template>
|
||||
</el-input>
|
||||
<el-input-number v-model="form.num" type="number" :min="0" placeholder="请输入良品数" controls-position="right" style="width: calc(100% - 2em)"/>
|
||||
{{form.priceUnit}}
|
||||
</form-col>
|
||||
<form-col :span="span" label="不良品数" prop="defectNum">
|
||||
<el-input v-model.number="form.defectNum" type="number" :min="0" placeholder="请输入不良品数">
|
||||
<template #suffix>
|
||||
{{form.priceUnit}}
|
||||
</template>
|
||||
</el-input>
|
||||
<el-input-number v-model="form.defectNum" type="number" :min="0" placeholder="请输入不良品数" controls-position="right" style="width: calc(100% - 2em)"/>
|
||||
{{form.priceUnit}}
|
||||
</form-col>
|
||||
<form-col :span="span" label="单价">
|
||||
{{form.pricePrice | dv}} 元
|
||||
|
@ -100,6 +94,11 @@ export default {
|
|||
userQuery: {
|
||||
type: Object,
|
||||
default: () => ({})
|
||||
},
|
||||
// 工序查询条件
|
||||
priceQuery: {
|
||||
type: Object,
|
||||
default: () => ({})
|
||||
}
|
||||
},
|
||||
data() {
|
||||
|
|
|
@ -8,12 +8,10 @@
|
|||
</form-col>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="产量" align="center">
|
||||
<el-table-column :label="`产量 (${priceUnit})`" align="center">
|
||||
<template slot-scope="d">
|
||||
<form-col table label-width="0" :prop="`userProdList[${d.$index}].num`" :rules="rules.num">
|
||||
<el-input v-model.number="d.row.num" type="number" placeholder="请输入员工产量">
|
||||
<template #suffix v-if="priceUnit != null">{{priceUnit}}</template>
|
||||
</el-input>
|
||||
<el-input-number v-model="d.row.num" type="number" placeholder="请输入员工产量" controls-position="right" style="width: 100%"/>
|
||||
</form-col>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
|
|
@ -46,10 +46,10 @@
|
|||
</template>
|
||||
<template slot-scope="d">
|
||||
<form-col table label-width="0" v-if="form.mode === IncomeMode.COUNT" :prop="`list[${d.$index}].num`" :rules="rules.list.num">
|
||||
<el-input v-model="d.row.num" type="number" placeholder="请输入员工产量" :min="1"/>
|
||||
<el-input-number v-model="d.row.num" type="number" placeholder="请输入员工产量" :min="1" controls-position="right" style="width: 100%"/>
|
||||
</form-col>
|
||||
<form-col table label-width="0" v-if="form.mode === IncomeMode.SCORE" :prop="`list[${d.$index}].score`" :rules="rules.list.score">
|
||||
<el-input v-model="d.row.score" type="number" placeholder="请输入员工分数" :min="0"/>
|
||||
<el-input-number v-model="d.row.score" type="number" placeholder="请输入员工分数" :min="0" controls-position="right" style="width: 100%"/>
|
||||
</form-col>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
@ -80,7 +80,6 @@
|
|||
import FormCol from "@/components/FormCol/index.vue";
|
||||
import UserInput from "@/components/Business/User/UserInput.vue";
|
||||
import UserDialog from "@/components/Business/User/UserDialog.vue";
|
||||
import {isEmpty} from "@/utils";
|
||||
import {IncomeMode} from "@/utils/constants";
|
||||
import UserDrawer from "@/components/Business/User/UserDrawer.vue";
|
||||
import {listUserWithShift} from "@/api/system/user";
|
||||
|
|
|
@ -254,10 +254,12 @@ export default {
|
|||
},
|
||||
searchColumns: [
|
||||
{key: 'reportId', label: "报表编号", type: 'input', dictType: null},
|
||||
{key: 'priceType', label: "类型", type: 'dict', dictType: 'price_type'},
|
||||
{key: 'reportStatus', label: "报表状态", type: 'dict', dictType: 'report_status'},
|
||||
{key: 'priceDeptId', label: "车间", type: 'dept', dictType: null},
|
||||
{key: 'reportDateRange', label: "报表日期", type: 'daterange', dictType: null},
|
||||
{key: 'priceName', label: "工序", type: 'input', dictType: null},
|
||||
{key: 'priceSubName', label: "子工序", type: 'input', dictType: null},
|
||||
{key: 'priceType', label: "类型", type: 'dict', dictType: 'price_type'},
|
||||
{key: 'priceCategory', label: "类别", type: 'input', dictType: null},
|
||||
{key: 'priceSize', label: "大小", type: 'input', dictType: null},
|
||||
{key: 'pricePattern', label: "图案", type: 'input', dictType: null},
|
||||
|
@ -268,9 +270,10 @@ export default {
|
|||
span: 24,
|
||||
// 字段列表
|
||||
columns: [
|
||||
{key: 'id', visible: true, label: '编号', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
|
||||
{key: 'id', visible: true, label: '编号', minWidth: null, sortable: true, overflow: false, align: 'center', width: "80"},
|
||||
{key: 'reportId', visible: true, label: '报表编号', minWidth: null, sortable: true, overflow: false, align: 'center', width: "100"},
|
||||
{key: 'reportStatus', visible: true, label: '报表状态', minWidth: null, sortable: true, overflow: false, align: 'center', width: "100"},
|
||||
{key: 'priceDeptName', visible: true, label: '车间', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
|
||||
{key: 'priceName', visible: true, label: '工序', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
|
||||
{key: 'priceSubName', visible: true, label: '子工序', minWidth: null, sortable: true, overflow: false, align: 'center', width: "100"},
|
||||
{key: 'priceType', visible: true, label: '类型', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
|
||||
|
@ -494,7 +497,7 @@ export default {
|
|||
handleExport() {
|
||||
this.download('yh/reportProd/export', {
|
||||
...this.queryParams
|
||||
}, `reportProd_${new Date().getTime()}.xlsx`)
|
||||
}, `产量报表_${new Date().getTime()}.xlsx`)
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue
Block a user