|
@@ -33,7 +33,7 @@
|
|
|
</el-col>
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
<el-col :span="12">
|
|
|
<el-form-item label="负责人:" prop="responsibleName">
|
|
<el-form-item label="负责人:" prop="responsibleName">
|
|
|
- {{ detailData.responsibleName }}
|
|
|
|
|
|
|
+ {{ form.responsibleName }}
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
<el-col :span="12">
|
|
@@ -44,7 +44,7 @@
|
|
|
|
|
|
|
|
<el-col :span="12">
|
|
<el-col :span="12">
|
|
|
<el-form-item label="需求部门:" prop="requireDeptName">
|
|
<el-form-item label="需求部门:" prop="requireDeptName">
|
|
|
- {{ detailData.requireDeptName }}
|
|
|
|
|
|
|
+ {{ form.requireDeptName }}
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
<el-col :span="12">
|
|
@@ -54,14 +54,15 @@
|
|
|
</el-col>
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
<el-col :span="12">
|
|
|
<el-form-item prop="remark" label="是否接受拆单:">
|
|
<el-form-item prop="remark" label="是否接受拆单:">
|
|
|
- {{
|
|
|
|
|
- form.acceptUnpack === 1
|
|
|
|
|
- ? '接受'
|
|
|
|
|
- : form.acceptUnpack === 1
|
|
|
|
|
- ? '不接受'
|
|
|
|
|
- : ''
|
|
|
|
|
- }}
|
|
|
|
|
|
|
+ {{form.acceptUnpack === 1 ? '接受' : '不接受'}}
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
|
|
+
|
|
|
|
|
+ </el-col>
|
|
|
|
|
+ <el-col :span="12">
|
|
|
|
|
+ <el-form-item prop="remark" label="是否需要核价:">
|
|
|
|
|
+ {{form.acceptUnpack === 1 ? '是' : '否'}}
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+
|
|
|
</el-col>
|
|
</el-col>
|
|
|
<!-- <el-col :span="12">
|
|
<!-- <el-col :span="12">
|
|
|
<el-form-item
|
|
<el-form-item
|
|
@@ -91,180 +92,225 @@
|
|
|
:underline="false"
|
|
:underline="false"
|
|
|
@click="downloadFile(form.files)"
|
|
@click="downloadFile(form.files)"
|
|
|
>
|
|
>
|
|
|
- {{ form.files.name }}</el-link
|
|
|
|
|
|
|
+ {{ form.files.name }}
|
|
|
|
|
+ </el-link
|
|
|
>
|
|
>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
</el-row>
|
|
</el-row>
|
|
|
|
|
+ <headerTitle title="计划清单" style="margin-top: 15px"></headerTitle>
|
|
|
|
|
+ <ele-pro-table
|
|
|
|
|
+ ref="table"
|
|
|
|
|
+ :needPage="false"
|
|
|
|
|
+ :columns="columns"
|
|
|
|
|
+ :toolkit="[]"
|
|
|
|
|
+ :datasource="form.detailList"
|
|
|
|
|
+ row-key="id"
|
|
|
|
|
+ >
|
|
|
|
|
+ <template v-slot:totalCount="scope">
|
|
|
|
|
+ <el-input-number :controls='false' :min="1" style="width: 100%" v-model="scope.row.totalCount"></el-input-number>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </ele-pro-table>
|
|
|
</el-form>
|
|
</el-form>
|
|
|
|
|
|
|
|
- <headerTitle title="计划清单" style="margin-top: 15px"></headerTitle>
|
|
|
|
|
- <ele-pro-table
|
|
|
|
|
- ref="table"
|
|
|
|
|
- :needPage="false"
|
|
|
|
|
- :columns="columns"
|
|
|
|
|
- :toolkit="[]"
|
|
|
|
|
- :datasource="detailData.detailList"
|
|
|
|
|
- row-key="id"
|
|
|
|
|
- >
|
|
|
|
|
- </ele-pro-table>
|
|
|
|
|
|
|
+
|
|
|
</div>
|
|
</div>
|
|
|
</template>
|
|
</template>
|
|
|
|
|
|
|
|
<script>
|
|
<script>
|
|
|
- import { getplanDetail } from '@/api/bpm/components/purchasingManage/purchasePlanManage';
|
|
|
|
|
|
|
+import {getplanDetail} from '@/api/bpm/components/purchasingManage/purchasePlanManage';
|
|
|
|
|
|
|
|
- import { getFile } from '@/api/system/file';
|
|
|
|
|
- import dictMixins from '@/mixins/dictMixins';
|
|
|
|
|
- import { copyObj } from '@/utils/util';
|
|
|
|
|
|
|
+import {getFile} from '@/api/system/file';
|
|
|
|
|
+import dictMixins from '@/mixins/dictMixins';
|
|
|
|
|
+import {getInventoryTotalAPI} from "@/api/bpm/components/wms";
|
|
|
|
|
|
|
|
- export default {
|
|
|
|
|
- mixins: [dictMixins],
|
|
|
|
|
- components: {},
|
|
|
|
|
- props: {
|
|
|
|
|
- businessId: {
|
|
|
|
|
- default: ''
|
|
|
|
|
- }
|
|
|
|
|
|
|
+export default {
|
|
|
|
|
+ mixins: [dictMixins],
|
|
|
|
|
+ components: {},
|
|
|
|
|
+ props: {
|
|
|
|
|
+ taskDefinitionKey: {
|
|
|
|
|
+ type: String,
|
|
|
|
|
+ default: 'starter',
|
|
|
},
|
|
},
|
|
|
- data() {
|
|
|
|
|
- return {
|
|
|
|
|
- visible: false,
|
|
|
|
|
- detailId: '',
|
|
|
|
|
- title: '详情',
|
|
|
|
|
- row: {},
|
|
|
|
|
- form: {},
|
|
|
|
|
- detailData: {},
|
|
|
|
|
- columns: [
|
|
|
|
|
- {
|
|
|
|
|
- width: 45,
|
|
|
|
|
- type: 'index',
|
|
|
|
|
- columnKey: 'index',
|
|
|
|
|
- align: 'center',
|
|
|
|
|
- fixed: 'left'
|
|
|
|
|
- },
|
|
|
|
|
- {
|
|
|
|
|
- width: 150,
|
|
|
|
|
- prop: 'productCategoryName',
|
|
|
|
|
- label: '分类',
|
|
|
|
|
- slot: 'productCategoryName'
|
|
|
|
|
- },
|
|
|
|
|
- {
|
|
|
|
|
- width: 140,
|
|
|
|
|
- prop: 'productCode',
|
|
|
|
|
- label: '编码',
|
|
|
|
|
- slot: 'productCode'
|
|
|
|
|
- },
|
|
|
|
|
- {
|
|
|
|
|
- width: 240,
|
|
|
|
|
- prop: 'productName',
|
|
|
|
|
- label: '名称',
|
|
|
|
|
- slot: 'productName'
|
|
|
|
|
- },
|
|
|
|
|
|
|
+ businessId: {
|
|
|
|
|
+ default: ''
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ data() {
|
|
|
|
|
+ return {
|
|
|
|
|
+ visible: false,
|
|
|
|
|
+ detailId: '',
|
|
|
|
|
+ title: '详情',
|
|
|
|
|
+ row: {},
|
|
|
|
|
+ form: {},
|
|
|
|
|
+ columns: [
|
|
|
|
|
+ {
|
|
|
|
|
+ width: 45,
|
|
|
|
|
+ type: 'index',
|
|
|
|
|
+ columnKey: 'index',
|
|
|
|
|
+ align: 'center',
|
|
|
|
|
+ fixed: 'left'
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ width: 150,
|
|
|
|
|
+ prop: 'productCategoryName',
|
|
|
|
|
+ label: '分类',
|
|
|
|
|
+ align: 'center',
|
|
|
|
|
+ slot: 'productCategoryName'
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ width: 140,
|
|
|
|
|
+ prop: 'productCode',
|
|
|
|
|
+ label: '编码',
|
|
|
|
|
+ align: 'center',
|
|
|
|
|
+ slot: 'productCode'
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ width: 240,
|
|
|
|
|
+ prop: 'productName',
|
|
|
|
|
+ label: '名称',
|
|
|
|
|
+ align: 'center',
|
|
|
|
|
+ slot: 'productName'
|
|
|
|
|
+ },
|
|
|
|
|
|
|
|
- {
|
|
|
|
|
- width: 150,
|
|
|
|
|
- prop: 'productBrand',
|
|
|
|
|
- label: '牌号',
|
|
|
|
|
- slot: 'productBrand'
|
|
|
|
|
- },
|
|
|
|
|
- {
|
|
|
|
|
- width: 80,
|
|
|
|
|
- prop: 'totalCount',
|
|
|
|
|
- label: '数量',
|
|
|
|
|
- slot: 'totalCount'
|
|
|
|
|
- },
|
|
|
|
|
- {
|
|
|
|
|
- width: 100,
|
|
|
|
|
- prop: 'measuringUnit',
|
|
|
|
|
- label: '单位',
|
|
|
|
|
- slot: 'measuringUnit'
|
|
|
|
|
- },
|
|
|
|
|
- {
|
|
|
|
|
- width: 130,
|
|
|
|
|
- prop: 'modelType',
|
|
|
|
|
- label: '型号',
|
|
|
|
|
- slot: 'modelType'
|
|
|
|
|
- },
|
|
|
|
|
|
|
+ {
|
|
|
|
|
+ width: 150,
|
|
|
|
|
+ prop: 'productBrand',
|
|
|
|
|
+ label: '牌号',
|
|
|
|
|
+ align: 'center',
|
|
|
|
|
+ slot: 'productBrand'
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ width: 100,
|
|
|
|
|
+ prop: 'totalCount',
|
|
|
|
|
+ label: '数量',
|
|
|
|
|
+ align: 'center',
|
|
|
|
|
+ slot: 'totalCount'
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ width: 80,
|
|
|
|
|
+ prop: 'availableCountBase',
|
|
|
|
|
+ label: '库存数量',
|
|
|
|
|
+ align: 'center',
|
|
|
|
|
+ slot: 'availableCountBase'
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ width: 100,
|
|
|
|
|
+ prop: 'measuringUnit',
|
|
|
|
|
+ label: '单位',
|
|
|
|
|
+ align: 'center',
|
|
|
|
|
+ slot: 'measuringUnit'
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ width: 130,
|
|
|
|
|
+ prop: 'modelType',
|
|
|
|
|
+ label: '型号',
|
|
|
|
|
+ align: 'center',
|
|
|
|
|
+ slot: 'modelType'
|
|
|
|
|
+ },
|
|
|
|
|
|
|
|
- {
|
|
|
|
|
- width: 120,
|
|
|
|
|
- prop: 'specification',
|
|
|
|
|
- label: '规格',
|
|
|
|
|
- slot: 'specification'
|
|
|
|
|
- },
|
|
|
|
|
- // {
|
|
|
|
|
- // width: 130,
|
|
|
|
|
- // prop: 'modelType',
|
|
|
|
|
- // label: '品牌',
|
|
|
|
|
- // slot: 'modelType'
|
|
|
|
|
- // },
|
|
|
|
|
- {
|
|
|
|
|
- width: 170,
|
|
|
|
|
- prop: 'receiveDate',
|
|
|
|
|
- label: '到货日期',
|
|
|
|
|
- slot: 'receiveDate'
|
|
|
|
|
- },
|
|
|
|
|
- {
|
|
|
|
|
- width: 140,
|
|
|
|
|
- prop: 'files',
|
|
|
|
|
- label: '附件',
|
|
|
|
|
- slot: 'files'
|
|
|
|
|
- },
|
|
|
|
|
- {
|
|
|
|
|
- width: 220,
|
|
|
|
|
- prop: 'remark',
|
|
|
|
|
- label: '备注',
|
|
|
|
|
- slot: 'remark'
|
|
|
|
|
- }
|
|
|
|
|
- ]
|
|
|
|
|
- };
|
|
|
|
|
|
|
+ {
|
|
|
|
|
+ width: 120,
|
|
|
|
|
+ prop: 'specification',
|
|
|
|
|
+ label: '规格',
|
|
|
|
|
+ align: 'center',
|
|
|
|
|
+ slot: 'specification'
|
|
|
|
|
+ },
|
|
|
|
|
+ // {
|
|
|
|
|
+ // width: 130,
|
|
|
|
|
+ // prop: 'modelType',
|
|
|
|
|
+ // label: '品牌',
|
|
|
|
|
+ // slot: 'modelType'
|
|
|
|
|
+ // },
|
|
|
|
|
+ {
|
|
|
|
|
+ width: 170,
|
|
|
|
|
+ prop: 'receiveDate',
|
|
|
|
|
+ label: '到货日期',
|
|
|
|
|
+ align: 'center',
|
|
|
|
|
+ slot: 'receiveDate'
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ width: 140,
|
|
|
|
|
+ prop: 'files',
|
|
|
|
|
+ label: '附件',
|
|
|
|
|
+ align: 'center',
|
|
|
|
|
+ slot: 'files'
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ width: 220,
|
|
|
|
|
+ prop: 'remark',
|
|
|
|
|
+ label: '备注',
|
|
|
|
|
+ align: 'center',
|
|
|
|
|
+ slot: 'remark'
|
|
|
|
|
+ }
|
|
|
|
|
+ ]
|
|
|
|
|
+ };
|
|
|
|
|
+ },
|
|
|
|
|
+ created() {
|
|
|
|
|
+ this.getPlanData(this.businessId);
|
|
|
|
|
+ },
|
|
|
|
|
+ methods: {
|
|
|
|
|
+ downloadFile(file) {
|
|
|
|
|
+ getFile({objectName: file.storePath}, file.name);
|
|
|
},
|
|
},
|
|
|
- created() {
|
|
|
|
|
- this.getPlanData(this.businessId);
|
|
|
|
|
|
|
+ async getPlanData(id) {
|
|
|
|
|
+ this.loading = true;
|
|
|
|
|
+ const data = await getplanDetail(id);
|
|
|
|
|
+ this.loading = false;
|
|
|
|
|
+ if (data) {
|
|
|
|
|
+ let codeList = data.detailList.map((item) => item.productCode);
|
|
|
|
|
+ let inventoryTotalList = await getInventoryTotalAPI(codeList);
|
|
|
|
|
+ data.detailList.forEach((item) => {
|
|
|
|
|
+ let find = inventoryTotalList.find((key) => key.code == item.productCode) || {};
|
|
|
|
|
+ item.availableCountBase = find.availableCountBase;
|
|
|
|
|
+ });
|
|
|
|
|
+ this.form = data;
|
|
|
|
|
+ if (data.files && data.files.length > 0) {
|
|
|
|
|
+ this.form.files = data.files[0];
|
|
|
|
|
+ } else {
|
|
|
|
|
+ this.form.files = null;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
},
|
|
},
|
|
|
- methods: {
|
|
|
|
|
- downloadFile(file) {
|
|
|
|
|
- getFile({ objectName: file.storePath }, file.name);
|
|
|
|
|
- },
|
|
|
|
|
- async getPlanData(id) {
|
|
|
|
|
- this.loading = true;
|
|
|
|
|
- const data = await getplanDetail(id);
|
|
|
|
|
- this.loading = false;
|
|
|
|
|
- if (data) {
|
|
|
|
|
- this.detailData = data;
|
|
|
|
|
- this.form = data;
|
|
|
|
|
|
|
|
|
|
- if (data.files && data.files.length > 0) {
|
|
|
|
|
- this.form.files = data.files[0];
|
|
|
|
|
- } else {
|
|
|
|
|
- this.form.files = null;
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ //查看详情
|
|
|
|
|
+ openDetail(row) {
|
|
|
|
|
+ this.$refs.contactDetailDialogRef.open(row);
|
|
|
|
|
+ },
|
|
|
|
|
+ async getTableValue() {
|
|
|
|
|
+ try {
|
|
|
|
|
+ if( this.form.detailList.some(item => !!item.totalCount == '')){
|
|
|
|
|
+ this.$message.warning('数量不能为空')
|
|
|
|
|
+ return ''
|
|
|
}
|
|
}
|
|
|
- },
|
|
|
|
|
-
|
|
|
|
|
- //查看详情
|
|
|
|
|
- openDetail(row) {
|
|
|
|
|
- console.log(row);
|
|
|
|
|
- this.$refs.contactDetailDialogRef.open(row);
|
|
|
|
|
|
|
+ // 表单验证通过,执行保存操作
|
|
|
|
|
+ this.loading = true;
|
|
|
|
|
+ return Object.assign({}, this.form);
|
|
|
|
|
+ } catch (error) {
|
|
|
|
|
+ console.log(error);
|
|
|
|
|
+ // 表单验证未通过,不执行保存操作
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- };
|
|
|
|
|
|
|
+ }
|
|
|
|
|
+};
|
|
|
</script>
|
|
</script>
|
|
|
|
|
|
|
|
<style scoped lang="scss">
|
|
<style scoped lang="scss">
|
|
|
- .ele-dialog-form {
|
|
|
|
|
- .el-form-item {
|
|
|
|
|
- margin-bottom: 10px;
|
|
|
|
|
- }
|
|
|
|
|
|
|
+.ele-dialog-form {
|
|
|
|
|
+ .el-form-item {
|
|
|
|
|
+ margin-bottom: 10px;
|
|
|
}
|
|
}
|
|
|
|
|
+}
|
|
|
|
|
|
|
|
- .headbox {
|
|
|
|
|
- display: flex;
|
|
|
|
|
- justify-content: space-between;
|
|
|
|
|
- align-items: center;
|
|
|
|
|
- .amount {
|
|
|
|
|
- font-size: 14px;
|
|
|
|
|
- font-weight: bold;
|
|
|
|
|
- }
|
|
|
|
|
|
|
+.headbox {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ justify-content: space-between;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+
|
|
|
|
|
+ .amount {
|
|
|
|
|
+ font-size: 14px;
|
|
|
|
|
+ font-weight: bold;
|
|
|
}
|
|
}
|
|
|
|
|
+}
|
|
|
</style>
|
|
</style>
|